# A Heat environment that can be used to deploy OpenDaylight with Honeycomb Agent
 resource_registry:
+  OS::TripleO::NodeExtraConfig: ../puppet/extraconfig/all_nodes/vpp-admin-ip.yaml
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
   OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/neutron-plugin-ml2-odl.yaml
   OS::TripleO::Services::OpenDaylightApi: ../puppet/services/opendaylight-api.yaml
   OS::TripleO::Services::NeutronHoneycombAgent: ../puppet/services/neutron-odl-honeycomb-agent.yaml
-  OS::TripleO::Services::Vpp: ../puppet/services/vpp-ctlplane-ip.yaml
+  OS::TripleO::Services::Vpp: ../puppet/services/vpp.yaml
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronMetadataAgent: ../puppet/services/neutron-metadata.yaml
 
   NeutronL3HA: false
   #NUMATopologyFilter is required for vhostuser interfaces
   #NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
-  OpenDaylightFeatures: "odl-restconf,odl-netconf-all,odl-groupbasedpolicy-neutron-vpp-mapper,odl-lispflowmapping-msmr"
+  OpenDaylightFeatures: "odl-restconf,odl-netconf,odl-vbd,odl-groupbasedpolicy-neutron-vpp-mapper,odl-groupbasedpolicy-vpp,odl-lispflowmapping-msmr,odl-lispflowmapping-mappingservice-shell"
   NeutronEnableForceMetadata: true
   NeutronMechanismDrivers: 'opendaylight_v2'
   NeutronServicePlugins: 'odl-router_v2'
 
   NeutronL3HA: false
   #NUMATopologyFilter is required for vhostuser interfaces
   #NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
-  OpenDaylightFeatures: "odl-netconf-all,odl-vbd,odl-groupbasedpolicy-neutron-vpp-mapper,odl-restconf"
+  OpenDaylightFeatures: "odl-restconf,odl-netconf,odl-vbd,odl-groupbasedpolicy-neutron-vpp-mapper,odl-groupbasedpolicy-vpp"
   NeutronEnableForceMetadata: true
   NeutronMechanismDrivers: 'opendaylight_v2'
   NeutronServicePlugins: 'odl-router_v2'
 
           - midonet_data # Optionally provided by AllNodesExtraConfig
           - neutron_opencontrail_data  # Optionally provided by ComputeExtraConfigPre
           - cisco_aci_data # Optionally provided by ComputeExtraConfigPre
+          - vpp_data # Optionally provided by NodeExtraConfig
           - common # provided by os-net-config
         merge_behavior: deeper
         datafiles:
 
           - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
           - midonet_data #Optionally provided by AllNodesExtraConfig
           - cisco_aci_data # Optionally provided by ControllerExtraConfigPre
+          - vpp_data # Optionally provided by NodeExtraConfig
           - common # provided by os-net-config
         merge_behavior: deeper
         datafiles:
 
--- /dev/null
+heat_template_version: ocata
+
+description: Configure hieradata for Network Cisco configuration
+
+parameters:
+  # Parameters passed from the parent template
+  server:
+    type: string
+
+resources:
+  VppCtlplaneIp:
+    type: OS::Neutron::Port
+    properties:
+      network: ctlplane
+      name: 'VPP IP'
+      replacement_policy: AUTO
+
+  VppAdminIpConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: hiera
+      config:
+        datafiles:
+          vpp_data:
+            map_merge:
+              - vpp_ctlplane_cidr:
+                  list_join:
+                    - ''
+                    - - {get_attr: [VppCtlplaneIp, fixed_ips, 0, ip_address]}
+                      - '/'
+                      - {str_split: ['/', {get_attr: [VppCtlplaneIp, subnets, 0, cidr]}, 1]}
+
+  VppAdminIpDeployment:
+    type: OS::Heat::SoftwareDeployment
+    depends_on: VppCtlplaneIp
+    properties:
+      name: VppAdminIpDeployment
+      config: {get_resource: VppAdminIpConfig}
+      server:  {get_param: server}
+      actions: ['CREATE'] # Only do this on CREATE