Merge "Start redis service after upgrade"
[apex-tripleo-heat-templates.git] / puppet / services / neutron-sriov-agent.yaml
index 700b44c..3c18209 100644 (file)
@@ -1,9 +1,13 @@
-heat_template_version: 2016-04-08
+heat_template_version: pike
 
 description: >
   OpenStack Neutron SR-IOV nic agent configured with Puppet
 
 parameters:
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
   ServiceNetMap:
     default: {}
     description: >
@@ -14,12 +18,26 @@ parameters:
   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
   NeutronPhysicalDevMappings:
     description: >
       List of <physical_network>:<physical device>
       All physical networks listed in network_vlan_ranges
       on the server should have mappings to appropriate
       interfaces on each agent.
+      Example "tenant0:ens2f0,tenant1:ens2f1"
     type: comma_delimited_list
     default: ""
   NeutronExcludeDevices:
@@ -32,11 +50,43 @@ parameters:
       physical_device_mappings list.
     type: comma_delimited_list
     default: ""
-  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:
+            - neutron::agents::ml2::sriov::physical_device_mappings: NeutronPhysicalDevMappings
+              neutron::agents::ml2::sriov::exclude_devices: NeutronExcludeDevices
+              tripleo::host::sriov::number_of_vfs: NeutronSriovNumVFs
+            - values: {get_param: [RoleParameters]}
+          - values:
+              NeutronPhysicalDevMappings: {get_param: NeutronPhysicalDevMappings}
+              NeutronExcludeDevices: {get_param: NeutronExcludeDevices}
+              NeutronSriovNumVFs: {get_param: NeutronSriovNumVFs}
 
 outputs:
   role_data:
@@ -44,7 +94,8 @@ outputs:
     value:
       service_name: neutron_sriov_agent
       config_settings:
-        neutron::agents::ml2::sriov::physical_device_mappings: {get_param: NeutronPhysicalDevMappings}
-        neutron::agents::ml2::sriov::exclude_devices: {get_param: NeutronExcludeDevices}
+        map_merge:
+          - get_attr: [NeutronBase, role_data, config_settings]
+          - get_attr: [RoleParametersValue, value]
       step_config: |
         include ::tripleo::profile::base::neutron::sriov