Browse Source
This patch adds support for running the neutron SR-IOV agent in a container. Depends-On: I4a63845a97c890d7d408731ec5509c320289f18f Depends-On: Ie5d8cd7863c0d042cc6a4e1fc52602d8a03a1935 Depends-On: I1b5ab0a64ae1f5735f1bd5a68e6ae8bdcf47ddec Closes-Bug: #1715388 Change-Id: I7ee603b32eddacd02d846dff00dd1b786d4a7ad9changes/66/469066/23
12 changed files with 224 additions and 13 deletions
@ -0,0 +1,108 @@
|
||||
heat_template_version: pike |
||||
|
||||
description: > |
||||
OpenStack Neutron SR-IOV service |
||||
|
||||
parameters: |
||||
DockerNeutronSriovImage: |
||||
description: The container image to use for the Neutron SR-IOV agent |
||||
type: string |
||||
DockerNeutronConfigImage: |
||||
description: The container image to use for the neutron config_volume |
||||
type: string |
||||
ServiceData: |
||||
default: {} |
||||
description: Dictionary packing service data |
||||
type: json |
||||
ServiceNetMap: |
||||
default: {} |
||||
description: Mapping of service_name -> network name. Typically set |
||||
via parameter_defaults in the resource registry. This |
||||
mapping overrides those in ServiceNetMapDefaults. |
||||
type: json |
||||
DefaultPasswords: |
||||
default: {} |
||||
type: json |
||||
RoleName: |
||||
default: '' |
||||
description: Role name on which the service is applied |
||||
type: string |
||||
RoleParameters: |
||||
default: {} |
||||
description: Parameters specific to the role |
||||
type: json |
||||
EndpointMap: |
||||
default: {} |
||||
description: Mapping of service endpoint -> protocol. Typically set |
||||
via parameter_defaults in the resource registry. |
||||
type: json |
||||
|
||||
resources: |
||||
|
||||
ContainersCommon: |
||||
type: ./containers-common.yaml |
||||
|
||||
NeutronSriovAgentBase: |
||||
type: ../../puppet/services/neutron-sriov-agent.yaml |
||||
properties: |
||||
EndpointMap: {get_param: EndpointMap} |
||||
ServiceData: {get_param: ServiceData} |
||||
ServiceNetMap: {get_param: ServiceNetMap} |
||||
DefaultPasswords: {get_param: DefaultPasswords} |
||||
RoleName: {get_param: RoleName} |
||||
RoleParameters: {get_param: RoleParameters} |
||||
|
||||
outputs: |
||||
role_data: |
||||
description: Role data for Neutron sriov service |
||||
value: |
||||
service_name: {get_attr: [NeutronSriovAgentBase, role_data, service_name]} |
||||
config_settings: {get_attr: [NeutronSriovAgentBase, role_data, config_settings]} |
||||
step_config: &step_config |
||||
get_attr: [NeutronSriovAgentBase, role_data, step_config] |
||||
puppet_config: |
||||
config_volume: neutron |
||||
puppet_tags: neutron_config,neutron_agent_sriov_numvfs,neutron_sriov_agent_config |
||||
step_config: *step_config |
||||
config_image: {get_param: DockerNeutronConfigImage} |
||||
kolla_config: |
||||
/var/lib/kolla/config_files/neutron_sriov_agent.json: |
||||
command: /usr/bin/neutron-sriov-nic-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/sriov_agent.ini --config-dir /etc/neutron/conf.d/common |
||||
config_files: |
||||
- source: "/var/lib/kolla/config_files/src/*" |
||||
dest: "/" |
||||
merge: true |
||||
preserve_properties: true |
||||
permissions: |
||||
- path: /var/log/neutron |
||||
owner: neutron:neutron |
||||
recurse: true |
||||
docker_config: |
||||
step_4: |
||||
neutron_sriov_agent: |
||||
image: {get_param: DockerNeutronSriovImage} |
||||
net: host |
||||
pid: host |
||||
privileged: true |
||||
restart: always |
||||
volumes: |
||||
list_concat: |
||||
- {get_attr: [ContainersCommon, volumes]} |
||||
- |
||||
- /var/lib/kolla/config_files/neutron_sriov_agent.json:/var/lib/kolla/config_files/config.json:ro |
||||
- /var/lib/config-data/puppet-generated/neutron/:/var/lib/kolla/config_files/src:ro |
||||
- /lib/modules:/lib/modules:ro |
||||
- /run:/run |
||||
- /var/log/containers/neutron:/var/log/neutron |
||||
- /sys/class/net:/sys/class/net:rw |
||||
environment: |
||||
- KOLLA_CONFIG_STRATEGY=COPY_ALWAYS |
||||
host_prep_tasks: |
||||
- name: create persistent logs directory |
||||
file: |
||||
path: /var/log/containers/neutron |
||||
state: directory |
||||
upgrade_tasks: |
||||
- name: Stop and disable neutron_sriov_agent service |
||||
tags: step2 |
||||
service: name=neutron-sriov-nic-agent state=stopped enabled=no |
@ -0,0 +1,12 @@
|
||||
# EXPERIMENTAL: The configuration enabled by this environment is not considered |
||||
# production-ready. |
||||
# |
||||
# A Heat environment that can be used to enable SR-IOV support in neutron. |
||||
resource_registry: |
||||
OS::TripleO::Services::NeutronSriovAgent: ../../docker/services/neutron-sriov-agent.yaml |
||||
OS::TripleO::Services::NeutronSriovHostConfig: ../../puppet/services/neutron-sriov-host-config.yaml |
||||
|
||||
parameter_defaults: |
||||
NeutronMechanismDrivers: ['sriovnicswitch','openvswitch'] |
||||
NovaSchedulerDefaultFilters: ['RetryFilter','AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter'] |
||||
NovaSchedulerAvailableFilters: ["nova.scheduler.filters.all_filters","nova.scheduler.filters.pci_passthrough_filter.PciPassthroughFilter"] |
@ -0,0 +1,78 @@
|
||||
heat_template_version: pike |
||||
|
||||
description: > |
||||
OpenStack Neutron SR-IOV host configuration |
||||
|
||||
parameters: |
||||
ServiceData: |
||||
default: {} |
||||
description: Dictionary packing service data |
||||
type: json |
||||
ServiceNetMap: |
||||
default: {} |
||||
description: > |
||||
Mapping of service_name -> network name. Typically set via |
||||
parameter_defaults in the resource registry. This mapping overrides those |
||||
in ServiceNetMapDefaults. |
||||
type: json |
||||
DefaultPasswords: |
||||
default: {} |
||||
type: json |
||||
RoleName: |
||||
default: '' |
||||
description: Role name on which the service is applied |
||||
type: string |
||||
RoleParameters: |
||||
default: {} |
||||
description: Parameters specific to the role |
||||
type: json |
||||
EndpointMap: |
||||
default: {} |
||||
description: Mapping of service endpoint -> protocol. Typically set |
||||
via parameter_defaults in the resource registry. |
||||
type: json |
||||
NeutronSriovNumVFs: |
||||
description: > |
||||
Provide the list of VFs to be reserved for each SR-IOV interface. |
||||
Format "<interface_name1>:<numvfs1>,<interface_name2>:<numvfs2>" |
||||
Example "eth1:4096,eth2:128" |
||||
type: comma_delimited_list |
||||
default: "" |
||||
|
||||
resources: |
||||
|
||||
NeutronBase: |
||||
type: ./neutron-base.yaml |
||||
properties: |
||||
ServiceData: {get_param: ServiceData} |
||||
ServiceNetMap: {get_param: ServiceNetMap} |
||||
DefaultPasswords: {get_param: DefaultPasswords} |
||||
EndpointMap: {get_param: EndpointMap} |
||||
RoleName: {get_param: RoleName} |
||||
RoleParameters: {get_param: RoleParameters} |
||||
|
||||
# Merging role-specific parameters (RoleParameters) with the default parameters. |
||||
# RoleParameters will have the precedence over the default parameters. |
||||
RoleParametersValue: |
||||
type: OS::Heat::Value |
||||
properties: |
||||
type: json |
||||
value: |
||||
map_replace: |
||||
- map_replace: |
||||
- tripleo::host::sriov::number_of_vfs: NeutronSriovNumVFs |
||||
- values: {get_param: [RoleParameters]} |
||||
- values: |
||||
NeutronSriovNumVFs: {get_param: NeutronSriovNumVFs} |
||||
|
||||
outputs: |
||||
role_data: |
||||
description: Role data for the Neutron SR-IOV nic agent service. |
||||
value: |
||||
service_name: neutron_sriov_host_config |
||||
config_settings: |
||||
map_merge: |
||||
- get_attr: [NeutronBase, role_data, config_settings] |
||||
- get_attr: [RoleParametersValue, value] |
||||
step_config: | |
||||
include ::tripleo::host::sriov |
Loading…
Reference in new issue