Added a new composable service for enabling DPDK on compute nodes.
authorSaravanan KR <skramaja@redhat.com>
Mon, 18 Jul 2016 09:08:40 +0000 (14:38 +0530)
committerSaravanan KR <skramaja@redhat.com>
Thu, 25 Aug 2016 06:40:18 +0000 (12:10 +0530)
ComputeNeutronOvsAgent should be overriden to neutron-ovs-dpdk-agent
service instead of neutron-ovs-agent (default) in order to enable
DPDK in OVS. This new service provides all the required parameters
for enabling DPDK with OVS (vswitch::dpdk).

Implements: blueprint tripleo-ovs-dpdk
Depends-On: I6cfd13d4979731696b09da52b2618fa33042403d

Change-Id: I538043b780a55006c54160cc7b33ddf52684ebf4

overcloud-resource-registry-puppet.yaml
puppet/services/neutron-ovs-dpdk-agent.yaml [new file with mode: 0644]

index 817ff2c..5c8b77c 100644 (file)
@@ -165,6 +165,7 @@ resource_registry:
   OS::TripleO::Services::NeutronCorePluginOpencontrail: puppet/services/neutron-plugin-opencontrail.yaml
   OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml
   OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
+  # ComputeNeutronOvsAgent can be overriden to puppet/services/neutron-ovs-dpdk-agent.yaml also to enable DPDK
   OS::TripleO::Services::ComputeNeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
   OS::TripleO::Services::Pacemaker: OS::Heat::None
   OS::TripleO::Services::RabbitMQ: puppet/services/rabbitmq.yaml
diff --git a/puppet/services/neutron-ovs-dpdk-agent.yaml b/puppet/services/neutron-ovs-dpdk-agent.yaml
new file mode 100644 (file)
index 0000000..1f1e14a
--- /dev/null
@@ -0,0 +1,73 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron OVS DPDK configured with Puppet for Compute Role
+
+parameters:
+  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
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NeutronDpdkCoreList:
+    default: ""
+    description: List of cores to be used for DPDK Poll Mode Driver
+    type: string
+  NeutronDpdkMemoryChannels:
+    default: ""
+    description: Number of memory channels to be used for DPDK
+    type: string
+  NeutronDpdkSocketMemory:
+    default: ""
+    description: Memory allocated for each socket
+    type: string
+  NeutronDpdkDriverType:
+    default: "vfio-pci"
+    description: DPDK Driver type
+    type: string
+  # below parameters has to be set in neutron agent only for compute nodes.
+  # as of now there is no other usecase for these parameters except dpdk.
+  # should be moved to compute only ovs agent in case of any other usecases.
+  NeutronDatapathType:
+    default: ""
+    description: Datapath type for ovs bridges
+    type: string
+  NeutronVhostuserSocketDir:
+    default: ""
+    description: The vhost-user socket directory for OVS
+    type: string
+
+resources:
+
+  NeutronOvsAgent:
+    type: ./neutron-ovs-agent.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron OVS DPDK Agent service.
+    value:
+      service_name: neutron_ovs_dpdk_agent
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronOvsAgent, role_data, config_settings]
+            neutron::agents::ml2::ovs::enable_dpdk: true
+            neutron::agents::ml2::ovs::datapath_type: {get_param: NeutronDatapathType}
+            neutron::agents::ml2::ovs::vhostuser_socket_dir: {get_param: NeutronVhostuserSocketDir}
+            vswitch::dpdk::core_list: {get_param: NeutronDpdkCoreList}
+            vswitch::dpdk::memory_channels: {get_param: NeutronDpdkMemoryChannels}
+            vswitch::dpdk::socket_mem: {get_param: NeutronDpdkSocketMemory}
+            vswitch::dpdk::driver_type: {get_param: NeutronDpdkDriverType}
+      step_config: {get_attr: [NeutronOvsAgent, role_data, step_config]}