Deploy ovs-dpdk to pod18 66/68566/42
authorRoy Tang <roy.s.tang@att.com>
Wed, 2 Oct 2019 19:33:33 +0000 (19:33 +0000)
committerRoy Tang <roy.s.tang@att.com>
Wed, 4 Dec 2019 19:59:09 +0000 (19:59 +0000)
This ps creates artifacts needed to support deployment
of ovs-dpdk.  Most of the common artifacts are under
cntt umbrella, but currently only deploys to pod18.

Signed-off-by: Roy Tang <roy.s.tang@att.com>
Change-Id: Id02abc1b907ad33b423466acae21ad6c88dbd246

17 files changed:
site/intel-pod18/baremetal/nodes.yaml
site/intel-pod18/profiles/genesis.yaml [new file with mode: 0644]
site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml [new file with mode: 0644]
site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml [deleted file]
type/cntt/network/common-addresses-ovsdpdk.yaml [new file with mode: 0644]
type/cntt/profiles/genesis.yaml
type/cntt/profiles/hardware/intel-s2600wt.yaml
type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml [new file with mode: 0644]
type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml [new file with mode: 0644]
type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml [new file with mode: 0644]
type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml [moved from site/intel-pod18/software/charts/osh/openstack-compute-kit/libvirt.yaml with 95% similarity]
type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml [new file with mode: 0644]
type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml [moved from site/intel-pod18/software/charts/osh/openstack-compute-kit/neutron.yaml with 96% similarity]
type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml [new file with mode: 0644]
type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml [moved from site/intel-pod17/software/charts/osh/openstack-compute-kit/nova.yaml with 96% similarity]
type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml [new file with mode: 0644]
type/cntt/software/config/versions.yaml

index 1a9de66..b7c7fb4 100644 (file)
 #
 # TODO: Include the hostname naming convention
 #
+# OVS-DPDK NOTE: Use the following host_profile for your nodes:
+#   For ovs kernel: cp-intel-s2600wt or dp-intel-s2600wt
+#   For ovs dpdk:   cp-intel-s2600wt-dpdk or dp-intel-s2600wt-dpdk
+#
 schema: 'drydock/BaremetalNode/v1'
 metadata:
   schema: 'metadata/Document/v1'
@@ -102,7 +106,7 @@ data:
   # including Genesis. Note Genesis won't actually be listed in this file as a
   # BaremetalNode, but the rest are.
   # This is the second "primary" control plane node after Genesis.
-  host_profile: cp-intel-s2600wt
+  host_profile: cp-intel-s2600wt-dpdk
   metadata:
     tags:
       # NEWSITE-CHANGEME: See previous comment. Apply 'masters' tag for control
@@ -141,7 +145,7 @@ data:
       address: 10.10.184.23
   # NEWSITE-CHANGEME: The next node's host profile
   # This is the third "primary" control plane profile after genesis
-  host_profile: cp-intel-s2600wt
+  host_profile: cp-intel-s2600wt-dpdk
   metadata:
     # NEWSITE-CHANGEME: The next node's rack designation
     rack: pod18-rack
@@ -176,7 +180,7 @@ data:
       address: 10.10.184.24
   # NEWSITE-CHANGEME: The next node's host profile
   # This is the one and only appearance of the "secondary" control plane profile
-  host_profile: dp-intel-s2600wt
+  host_profile: dp-intel-s2600wt-dpdk
   metadata:
     # NEWSITE-CHANGEME: The next node's rack designation
     rack: pod18-rack
@@ -210,7 +214,7 @@ data:
     - network: management
       address: 10.10.184.25
   # NEWSITE-CHANGEME: The next node's host profile
-  host_profile: dp-intel-s2600wt
+  host_profile: dp-intel-s2600wt-dpdk
   metadata:
     # NEWSITE-CHANGEME: The next node's rack designation
     rack: pod18-rack
diff --git a/site/intel-pod18/profiles/genesis.yaml b/site/intel-pod18/profiles/genesis.yaml
new file mode 100644 (file)
index 0000000..bb655d9
--- /dev/null
@@ -0,0 +1,50 @@
+---
+# OVS-DPDK NOTE:
+#   To support ovs-dpdk deployment, need to add dynamic label "sriov=enabled"
+#   to genesis node, hence the need for this override here.
+schema: promenade/Genesis/v1
+metadata:
+  schema: metadata/Document/v1
+  name: genesis
+  replacement: true
+  layeringDefinition:
+    abstract: false
+    layer: site
+    parentSelector:
+      name: genesis-cntt
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+data:
+  labels:
+    dynamic:
+      - beta.kubernetes.io/fluentd-ds-ready=true
+      - calico-etcd=enabled
+      - ceph-mds=enabled
+      - ceph-mon=enabled
+      - ceph-osd=enabled
+      - ceph-rgw=enabled
+      - ceph-mgr=enabled
+      - ceph-bootstrap=enabled
+      - tenant-ceph-control-plane=enabled
+      - tenant-ceph-mon=enabled
+      - tenant-ceph-rgw=enabled
+      - tenant-ceph-mgr=enabled
+      - kube-dns=enabled
+      - kube-ingress=enabled
+      - kubernetes-apiserver=enabled
+      - kubernetes-controller-manager=enabled
+      - kubernetes-etcd=enabled
+      - kubernetes-scheduler=enabled
+      - promenade-genesis=enabled
+      - ucp-control-plane=enabled
+      - maas-rack=enabled
+      - maas-region=enabled
+      - ceph-osd-bootstrap=enabled
+      - openstack-control-plane=enabled
+      - openvswitch=enabled
+      - openstack-l3-agent=enabled
+      - node-exporter=enabled
+      - sriov=enabled
+...
diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml b/site/intel-pod18/software/charts/osh/openstack-compute-kit/chart-group.yaml
new file mode 100644 (file)
index 0000000..73396e7
--- /dev/null
@@ -0,0 +1,26 @@
+---
+# OVS-DPDK NOTE:
+#   This replacement chartgroup deploys libvirt, openvswitch, neutron and nova
+#   that contains config changes needed to support ovs-dpdk deployment.
+schema: armada/ChartGroup/v1
+metadata:
+  schema: metadata/Document/v1
+  name: openstack-compute-kit
+  replacement: true
+  layeringDefinition:
+    abstract: false
+    layer: site
+    parentSelector:
+      name: openstack-compute-kit-chart-group-global
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+data:
+  description: Deploy Nova, Neutron, Openvswitch, and Libvirt for DPDK
+  chart_group:
+    - libvirt-ovsdpdk
+    - openvswitch-dpdk
+    - neutron-ovsdpdk
+    - nova-ovsdpdk
+...
diff --git a/site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml b/site/intel-pod18/software/charts/osh/openstack-compute-kit/nova.yaml
deleted file mode 100644 (file)
index b730f0d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
----
-# This file defines hardware-specific settings for nova. If you use the same
-# hardware profile as this environment, you should not need to change this file.
-# Otherwise, you should review the settings here and adjust for your hardware.
-# In particular:
-# 1. vcpu_pin_set will change if the number of logical CPUs on the hardware
-#    changes.
-# 2. pci alias / passthrough_whitelist could change if the NIC type or NIC
-#    slotting changes.
-# TODO: Should move to global layer and become tied to the hardware profile
-schema: armada/Chart/v1
-metadata:
-  schema: metadata/Document/v1
-  name: nova
-  layeringDefinition:
-    abstract: false
-    layer: site
-    parentSelector:
-      name: nova-global
-    actions:
-      - method: merge
-        path: .
-  storagePolicy: cleartext
-  substitutions:
-    - src:
-        schema: drydock/HardwareProfile/v1
-        name: intel-s2600wt
-        path: .cpu_sets.kvm
-      dest:
-        path: .values.conf.nova.DEFAULT.vcpu_pin_set
-data:
-  values:
-    network:
-      backend:
-       - openvswitch
-       - sriov
-    conf:
-      nova:
-        filter_scheduler:
-          available_filters: "nova.scheduler.filters.all_filters"
-          enabled_filters:  "RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter,AggregateCoreFilter,AggregateRamFilter,AggregateMultiTenancyIsolation,JsonFilter,IoOpsFilter,AggregateDiskFilter,AllHostsFilter,IsolatedHostsFilter,AggregateImagePropertiesIsolation,PciPassthroughFilter,AggregateIoOpsFilter,NumInstancesFilter,AggregateNumInstancesFilter,MetricsFilter,SimpleCIDRAffinityFilter,AggregateTypeAffinityFilter,NUMATopologyFilter,ComputeCapabilitiesFilter,DifferentHostFilter,SameHostFilter"
-        pci:
-          alias: '{"name": "numa0", "capability_type": "pci", "product_id": "154c", "vendor_id": "8086", "device_type": "type-PCI"}'
-          passthrough_whitelist: |
-              [{"address": "0000:05:06.*", "physical_network": "sriovnet1"},{"address": "0000:05:07.*", "physical_network": "sriovnet1"},{"address": "0000:05:08.*", "physical_network": "sriovnet1"},{"address": "0000:05:09.*", "physical_network": "sriovnet1"}]
-...
diff --git a/type/cntt/network/common-addresses-ovsdpdk.yaml b/type/cntt/network/common-addresses-ovsdpdk.yaml
new file mode 100644 (file)
index 0000000..18168d3
--- /dev/null
@@ -0,0 +1,15 @@
+---
+# OVS-DPDK NOTE:
+#   This file provides common network config needed for ovs-dpdk
+#
+schema: pegleg/CommonAddresses/v1
+metadata:
+  schema: metadata/Document/v1
+  name: common-addresses-ovsdpdk
+  layeringDefinition:
+    abstract: false
+    layer: type
+  storagePolicy: cleartext
+data:
+  bridge_for_ovsdpdk: 'br-phy-bond0'
+...
index 54c5276..d90f000 100644 (file)
@@ -6,10 +6,12 @@
 schema: promenade/Genesis/v1
 metadata:
   schema: metadata/Document/v1
-  name: genesis-site
+  name: genesis
+  labels:
+    name: genesis-cntt
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       name: genesis-global
     actions:
index 94fba0e..e023254 100644 (file)
@@ -107,9 +107,31 @@ data:
       dev_type: 'ST91000640NS'
       bus_type: 'scsi'
   cpu_sets:
-    kvm: '4-43,48-87'
+    # CPUS pinning
+    # Host OS CPUs are inferred, and will be the remaining cores
+    kvm: '2-21,24-43,46-65,68-87'
+    # Kernel config
+    # Reduce OS jitter on the offloaded CPUs.
+    rcu_nocbs: '2-21,24-43,46-65,68-87'
+    # Nova config
+    # CPUs dedicated to tenant workload.
+    vcpu_pin_set: '4-21,26-43,48-65,70-87'
+    # OVS config
+    # CPUs used by OVS-DPDK processes, same as CPUs used by host OS.
+    # For this lab, the CPU/Numa allocation is as followed:
+    #   NUMA node0 CPU(s):     0-21,44-65
+    #   NUMA node1 CPU(s):     22-43,66-87
+    # So to spread them about both numa, the following is assigned:
+    # VCPUs 0,44,1,45,22,66,23,67 = first 4 CPU cores
+    dpdk-lcore-mask: '0x0C0000300000C00003'
+    # OVS config
+    # CPUs used by dpdk Poll Mode Drivers (PMD)
+    # OVS configu paramter for DPDK.
+    # VCPUs 2,46,3,47,24,68,25,69 CPU cores 4-7
+    pmd-cpu-mask: '0x300000C0000300000C'
   hugepages:
     dpdk:
       size: '1G'
       count: 32
+      socket-mem: '4096,4096'
 ...
diff --git a/type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml b/type/cntt/profiles/host/cp-intel-s2600wt-dpdk.yaml
new file mode 100644 (file)
index 0000000..c8301df
--- /dev/null
@@ -0,0 +1,127 @@
+---
+# The primary control plane host profile for Airship for DELL R720s, and
+# should not need to be altered if you are using matching HW. The active
+# participants in the Ceph cluster run on this profile. Other control plane
+# services are not affected by primary vs secondary designation.
+#
+# OVS-DPDK NOTE:
+#   This host profile updated to support ovs-dpdk deployment.
+
+schema: drydock/HostProfile/v1
+metadata:
+  schema: metadata/Document/v1
+  name: cp-intel-s2600wt-dpdk
+  storagePolicy: cleartext
+  layeringDefinition:
+    abstract: false
+    layer: site
+    parentSelector:
+      hosttype: cp-global
+    actions:
+      - method: replace
+        path: .interfaces
+      - method: replace
+        path: .storage
+      - method: merge
+        path: .
+  substitutions:
+    - dest:
+        path: .interfaces.data2.sriov.device
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .device_aliases.data_nic2.address
+    - dest:
+        path: .platform.kernel_params.dpdk-socket-mem
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .hugepages.dpdk.socket-mem
+data:
+  hardware_profile: intel-s2600wt
+
+  primary_network: dmz
+  interfaces:
+    dmz:
+      device_link: dmz
+      slaves:
+        - ctrl_nic1
+      networks:
+        - dmz
+    admin:
+      device_link: admin
+      slaves:
+        - ctrl_nic2
+      networks:
+        - admin
+    data1:
+      device_link: data1
+      slaves:
+        - data_nic1
+      networks:
+        - private
+        - management
+    data2:
+      device_link: data2
+      slaves:
+        - data_nic2
+      networks:
+        - storage
+        - public
+      sriov:
+        num_vfs: 32
+        promisc: false
+      ovs_dpdk:
+        vf_index: 0
+
+  storage:
+    physical_devices:
+      bootdisk:
+        labels:
+          bootdrive: 'true'
+        partitions:
+          - name: 'root'
+            size: '30g'
+            bootable: true
+            filesystem:
+              mountpoint: '/'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'boot'
+            size: '1g'
+            filesystem:
+              mountpoint: '/boot'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'var_log'
+            size: '100g'
+            filesystem:
+              mountpoint: '/var/log'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'var'
+            size: '>100g'
+            filesystem:
+              mountpoint: '/var'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+
+  platform:
+    image: 'xenial'
+    kernel: 'hwe-16.04'
+    kernel_params:
+      kernel_package: 'linux-image-4.15.0-46-generic'
+      intel_iommu: 'on'
+      iommu: 'pt'
+      amd_iommu: 'on'
+      cgroup_disable: 'hugetlb'
+      transparent_hugepage: 'never'
+      hugepagesz: 'hardwareprofile:hugepages.dpdk.size'
+      hugepages: 'hardwareprofile:hugepages.dpdk.count'
+      default_hugepagesz: 'hardwareprofile:hugepages.dpdk.size'
+
+  metadata:
+    owner_data:
+      openstack-l3-agent: enabled
+      sriov: enabled
+...
diff --git a/type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml b/type/cntt/profiles/host/dp-intel-s2600wt-dpdk.yaml
new file mode 100644 (file)
index 0000000..1028d94
--- /dev/null
@@ -0,0 +1,144 @@
+---
+# The data plane host profile for Airship for DELL R720s, and should
+# not need to be altered if you are using matching HW. The host profile is setup
+# for cpu isolation (for nova pinning), hugepages, and sr-iov.
+#
+# OVS-DPDK NOTE:
+#   This host profile updated to support ovs-dpdk deployment.
+
+schema: drydock/HostProfile/v1
+metadata:
+  schema: metadata/Document/v1
+  name: dp-intel-s2600wt-dpdk
+  storagePolicy: cleartext
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      hosttype: dp-global
+    actions:
+      - method: replace
+        path: .interfaces
+      - method: replace
+        path: .storage
+      - method: merge
+        path: .
+  substitutions:
+    - dest:
+        path: .interfaces.data2.sriov.device
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .device_aliases.data_nic2.address
+    - dest:
+        path: .platform.kernel_params.dpdk-socket-mem
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .hugepages.dpdk.socket-mem
+    - dest:
+        path: .platform.kernel_params.rcu_nocbs
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .cpu_sets.rcu_nocbs
+    - dest:
+        path: .platform.kernel_params.isolcpus
+      src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .cpu_sets.kvm
+data:
+  hardware_profile: intel-s2600wt
+
+  primary_network: dmz
+  interfaces:
+    dmz:
+      device_link: dmz
+      slaves:
+        - ctrl_nic1
+      networks:
+        - dmz
+    admin:
+      device_link: admin
+      slaves:
+        - ctrl_nic2
+      networks:
+        - admin
+    data1:
+      device_link: data1
+      slaves:
+        - data_nic1
+      networks:
+        - private
+        - management
+    data2:
+      device_link: data2
+      slaves:
+        - data_nic2
+      networks:
+        - storage
+        - public
+      sriov:
+        num_vfs: 32
+        promisc: false
+      ovs_dpdk:
+        vf_index: 0
+  storage:
+    physical_devices:
+      bootdisk:
+        labels:
+          bootdrive: 'true'
+        partitions:
+          - name: 'root'
+            size: '30g'
+            bootable: true
+            filesystem:
+              mountpoint: '/'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'boot'
+            size: '1g'
+            filesystem:
+              mountpoint: '/boot'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'log'
+            size: '100g'
+            filesystem:
+              mountpoint: '/var/log'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+          - name: 'var'
+            size: '>100g'
+            filesystem:
+              mountpoint: '/var'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+
+      datadisk:
+        partitions:
+          - name: 'nova'
+            size: '99%'
+            filesystem:
+              mountpoint: '/var/lib/nova'
+              fstype: 'ext4'
+              mount_options: 'defaults'
+
+  platform:
+    image: 'xenial'
+    kernel: 'hwe-16.04'
+    kernel_params:
+      kernel_package: 'linux-image-4.15.0-46-generic'
+      intel_iommu: 'on'
+      iommu: 'pt'
+      amd_iommu: 'on'
+      cgroup_disable: 'hugetlb'
+      transparent_hugepage: 'never'
+      hugepagesz: 'hardwareprofile:hugepages.dpdk.size'
+      hugepages: 'hardwareprofile:hugepages.dpdk.count'
+      default_hugepagesz: 'hardwareprofile:hugepages.dpdk.size'
+  metadata:
+    owner_data:
+      sriov: enabled
+...
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt-ovsdpdk.yaml
new file mode 100644 (file)
index 0000000..bb09f4a
--- /dev/null
@@ -0,0 +1,70 @@
+---
+# OVS-DPDK NOTE:
+#   This chart is created to support deployment of ovs-dpdk.
+#   Do not use for env that uses regular ovs kernel.
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: libvirt-ovsdpdk
+  labels:
+    name: libvirt-ovsdpdk-cntt
+    component: libvirt
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      name: libvirt-global
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+  substitutions:
+    # Chart source
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .charts.osh.libvirt
+      dest:
+        path: .source
+    # Images
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.images.osh.libvirt
+      dest:
+        path: .values.images.tags
+data:
+  values:
+    network:
+      backend:
+        - openvswitch
+        - sriov
+  dependencies:
+    - libvirt-htk-ovsdpdk
+...
+---
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: libvirt-htk-ovsdpdk
+  labels:
+    name: libvirt-htk-ovsdpdk-cntt
+    component: libvirt
+  layeringDefinition:
+    abstract: false
+    layer: type
+  storagePolicy: cleartext
+  substitutions:
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .charts.osh.libvirt-htk
+      dest:
+        path: .source
+data:
+  chart_name: libvirt-htk
+  release: libvirt-htk
+  namespace: libvirt-htk
+  values: {}
+  dependencies: []
+...
@@ -6,7 +6,7 @@ metadata:
   replacement: true
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       name: libvirt-global
     actions:
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/neutron-ovsdpdk.yaml
new file mode 100644 (file)
index 0000000..c22f7d1
--- /dev/null
@@ -0,0 +1,239 @@
+---
+# This file defines hardware-specific settings for neutron. If you use the same
+# hardware profile as this environment, you should not need to change this file.
+# Otherwise, you should review the settings here and adjust for your hardware.
+# In particular:
+# 1. logical network interface names
+# 2. physical device mappigns
+# TODO: Should move to global layer and become tied to the hardware profile
+#
+# OVS-DPDK NOTE:
+#   This chart is created to support deployment of ovs-dpdk.
+#   Do not use for env that uses regular ovs kernel.
+
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: neutron-ovsdpdk
+  labels:
+    name: neutron-ovsdpdk-cntt
+    component: neutron
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      name: neutron-global
+      component: neutron
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+  substitutions:
+    # Chart source
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.neutron
+      dest:
+        path: .source
+    # Images
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.images.osh.neutron
+      dest:
+        path: .values.images.tags
+
+    # OVS-DPDK settings for neutron
+    - src:
+        schema: pegleg/CommonAddresses/v1
+        name: common-addresses-ovsdpdk
+        path: .bridge_for_ovsdpdk
+      dest:
+        - path: .values.conf.ovs_dpdk.bridges[0].name
+          pattern: TUNNEL_BRIDGE
+        - path: .values.conf.ovs_dpdk.bonds[0].bridge
+          pattern: TUNNEL_BRIDGE
+        - path: .values.conf.plugins.openvswitch_agent.ovs.bridge_mappings
+          pattern: TUNNEL_BRIDGE
+        - path: .values.network.interface.tunnel
+          pattern: TUNNEL_BRIDGE
+    ## OVS-DPDK NOTE: Using storage network for dpdk work for now
+    - src:
+        schema: drydock/Network/v1
+        name: storage
+        path: .mtu
+      dest:
+        path: .values.conf.ovs_dpdk.bonds[0].mtu
+    - src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .device_aliases.data_nic2.address
+      dest:
+        path: .values.conf.ovs_dpdk.bonds[0].nics[0].pci_id
+    - src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .device_aliases.data_nic3.address
+      dest:
+        path: .values.conf.ovs_dpdk.bonds[0].nics[1].pci_id
+data:
+  wait:
+    timeout: 1800
+  test:
+    timeout: 900
+  values:
+    labels:
+      sriov:
+        node_selector_key: sriov
+        node_selector_value: enabled
+    pod:
+      security_context:
+        neutron_sriov_agent:
+          pod:
+            runAsUser: 42424
+          container:
+            neutron_sriov_agent_init:
+              privileged: true
+              runAsUser: 0
+              readOnlyRootFilesystem: false
+            neutron_sriov_agent:
+              readOnlyRootFilesystem: true
+              privileged: true
+      probes:
+        dhcp_agent:
+          dhcp_agent:
+            readiness:
+              enabled: false
+            liveness:
+              enabled: false
+        l3_agent:
+          l3_agent:
+            readiness:
+              enabled: false
+            liveness:
+              enabled: false
+        metadata_agent:
+          metadata_agent:
+            readiness:
+              enabled: false
+            liveness:
+              enabled: false
+        ovs_agent:
+          ovs_agent:
+            liveness:
+              enabled: false
+        sriov_agent:
+          sriov_agent:
+            readiness:
+              enabled: false
+    network:
+      interface:
+        sriov:
+          - device: ens785f1
+            num_vfs: 32
+            promisc: false
+          - device: ens785f2
+            num_vfs: 32
+            promisc: false
+        tunnel: TUNNEL_BRIDGE
+      backend:
+        - openvswitch
+        - sriov
+    conf:
+      # api-paste entrypoint neutron.api.versions:Versions.factory was deprecated in Queens
+      # See https://docs.openstack.org/releasenotes/neutron/queens.html:
+      paste:
+        app:neutronversions:
+          paste.app_factory: neutron.pecan_wsgi.app:versions_factory
+      ovs_dpdk:
+        enabled: true
+        driver: vfio-pci
+        nics: []
+        bridges:
+          - name: TUNNEL_BRIDGE
+        bonds:
+          - name: dpdkbond0
+            bridge: TUNNEL_BRIDGE
+            # The IP from the first nic in nics list shall be used
+            migrate_ip: false
+            n_rxq: 4
+            n_txq: 4
+            n_rxq_size: 1024
+            n_txq_size: 1024
+            ovs_options: "bond_mode=active-backup"
+            nics:
+              - name: dpdk_b0s0
+                vf_index: 0
+              - name: dpdk_b0s1
+                vf_index: 0
+      plugins:
+        openvswitch_agent:
+          default:
+            ovs_vsctl_timeout: 30
+          agent:
+            tunnel_types: ""
+          securitygroup:
+            enable_security_group: False
+            firewall_driver: neutron.agent.firewall.NoopFirewallDriver
+          ovs:
+            bridge_mappings: ovsnet:TUNNEL_BRIDGE
+            datapath_type: netdev
+            of_connect_timeout: 60
+            of_request_timeout: 30
+            vhostuser_socket_dir: /var/run/openvswitch/vhostuser
+        ml2_conf:
+          ml2:
+            mechanism_drivers: l2population,openvswitch,sriovnicswitch
+          ml2_type_vlan:
+            ## NOTE: Must have at least 1 sriov network defined
+            network_vlan_ranges: external,sriovnet1:100:4000,sriovnet2:100:4000,ovsnet:2:4094
+        sriov_agent:
+          securitygroup:
+            firewall_driver: neutron.agent.firewall.NoopFirewallDriver
+          sriov_nic:
+            ## NOTE: Must have at least 1 sriov network to physical device
+            ##       mapping, otherwise sriov agent readiness check
+            ##       will fail.
+            physical_device_mappings: sriovnet1:ens785f1,sriovnet2:ens785f2
+            exclude_devices: ens785f1:0000:05:06.0,ens785f2:05:0a.0
+    # Need to wait for sriov agent to come up and configure VFs first
+    dependencies:
+      dynamic:
+        targeted:
+          openvswitch:
+            ovs_agent:
+              pod:
+                - requireSameNode: true
+                  labels:
+                    application: neutron
+                    component: neutron-sriov-agent
+  dependencies:
+    - neutron-htk-ovsdpdk
+...
+---
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: neutron-htk-ovsdpdk
+  labels:
+    name: neutron-htk-ovsdpdk-cntt
+    component: neutron
+  layeringDefinition:
+    abstract: false
+    layer: type
+  storagePolicy: cleartext
+  substitutions:
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.neutron-htk
+      dest:
+        path: .source
+data:
+  chart_name: neutron-htk
+  release: neutron-htk
+  namespace: neutron-htk
+  values: {}
+  dependencies: []
+...
@@ -9,11 +9,14 @@
 schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
-  replacement: true
   name: neutron
+  replacement: true
+  labels:
+    name: neutron-cntt
+    component: neutron
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       name: neutron-global
     actions:
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/nova-ovsdpdk.yaml
new file mode 100644 (file)
index 0000000..8d8c5c2
--- /dev/null
@@ -0,0 +1,87 @@
+---
+# OVS-DPDK NOTE:
+#   This chart is created to support deployment of ovs-dpdk.
+#   Do not use for env that uses regular ovs kernel.
+
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: nova-ovsdpdk
+  labels:
+    name: nova-ovsdpdk-cntt
+    component: nova
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      name: nova-global
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+  substitutions:
+    # Chart source
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.nova
+      dest:
+        path: .source
+    # Images
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.images.osh.nova
+      dest:
+        path: .values.images.tags
+    - src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .cpu_sets.kvm
+      dest:
+        path: .values.conf.nova.DEFAULT.vcpu_pin_set
+data:
+  values:
+    network:
+      backend:
+       - openvswitch
+       - sriov
+    conf:
+      nova:
+        filter_scheduler:
+          available_filters: "nova.scheduler.filters.all_filters"
+          enabled_filters:  "RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter,AggregateCoreFilter,AggregateRamFilter,AggregateMultiTenancyIsolation,JsonFilter,IoOpsFilter,AggregateDiskFilter,AllHostsFilter,IsolatedHostsFilter,AggregateImagePropertiesIsolation,PciPassthroughFilter,AggregateIoOpsFilter,NumInstancesFilter,AggregateNumInstancesFilter,MetricsFilter,SimpleCIDRAffinityFilter,AggregateTypeAffinityFilter,NUMATopologyFilter,ComputeCapabilitiesFilter,DifferentHostFilter,SameHostFilter"
+        pci:
+          alias: '{"name": "numa0", "capability_type": "pci", "product_id": "154c", "vendor_id": "8086", "device_type": "type-PCI"}'
+          ## OVS-DPDK NOTE: Exclude vf0 from each of the sriov nic, vf0 is reserved for used by ovs to create dpdk bond.
+          passthrough_whitelist: |
+              [{"address": {"domain":"0000","bus":"05","slot":"06","function":"[1-7]"}, "physical_network": "sriovnet1"},{"address": "0000:05:07.*", "physical_network": "sriovnet1"},{"address": "0000:05:08.*", "physical_network": "sriovnet1"},{"address": "0000:05:09.*", "physical_network": "sriovnet1"}]
+  dependencies:
+    - nova-htk-ovsdpdk
+...
+---
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: nova-htk-ovsdpdk
+  labels:
+    name: nova-htk-ovsdpdk-cntt
+    component: nova
+  layeringDefinition:
+    abstract: false
+    layer: type
+  storagePolicy: cleartext
+  substitutions:
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.nova-htk
+      dest:
+        path: .source
+data:
+  chart_name: nova-htk
+  release: nova-htk
+  namespace: nova-htk
+  values: {}
+  dependencies: []
+...
@@ -12,11 +12,15 @@ schema: armada/Chart/v1
 metadata:
   schema: metadata/Document/v1
   name: nova
+  labels:
+    name: nova-cntt
+    component: nova
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       name: nova-global
+      component: nova
     actions:
       - method: merge
         path: .
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/openvswitch-dpdk.yaml
new file mode 100644 (file)
index 0000000..7fe5e40
--- /dev/null
@@ -0,0 +1,115 @@
+---
+# OVS-DPDK NOTE:
+#   This chart is created to support deployment of ovs-dpdk.
+#   Do not use for env that uses regular ovs kernel.
+
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: openvswitch-dpdk
+  labels:
+    name: openvswitch-dpdk-cntt
+    component: openswitch
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      name: openvswitch-global
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+  substitutions:
+    # Chart source
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.openvswitch
+      dest:
+        path: .source
+    # Images
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.images.osh.openvswitch
+      dest:
+        path: .values.images.tags
+    # OVS-DPDK config
+    - src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .cpu_sets.dpdk-lcore-mask
+      dest:
+        path: .values.conf.ovs_dpdk.lcore_mask
+    - src:
+        schema: drydock/HardwareProfile/v1
+        name: intel-s2600wt
+        path: .cpu_sets.pmd-cpu-mask
+      dest:
+        path: .values.conf.ovs_dpdk.pmd_cpu_mask
+    - src:
+        schema: pegleg/CommonAddresses/v1
+        name: common-addresses-ovsdpdk
+        path: .bridge_for_ovsdpdk
+      dest:
+        - path: .values.network.external_bridge
+        - path: .values.network.interface.external
+data:
+  values:
+    pod:
+      resources:
+        enabled: true
+        ovs:
+          vswitchd_dpdk:
+            requests:
+              memory: "2Gi"
+              cpu: "2"
+            limits:
+              memory: "2Gi"
+              cpu: "2"
+              hugepages-1Gi: "1Gi"
+    conf:
+      ovs_dpdk:
+        enabled: true
+        socket_memory: 4096,4096
+        vhostuser_socket_dir: vhostuser
+        hugepages_mountpath: /dev/hugepages
+    # OVS-DPDK NOTE: Need to wait for sriov agent to come up and configure VFs first
+    dependencies:
+      static:
+        vswitchd:
+          pod:
+            - requireSameNode: true
+              labels:
+                application: neutron
+                component: neutron-sriov-agent
+  dependencies:
+    - openvswitch-htk-dpdk
+...
+---
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: openvswitch-htk-dpdk
+  labels:
+    name: openvswitch-htk-dpdk-cntt
+    component: openvswitch
+  layeringDefinition:
+    abstract: false
+    layer: type
+  storagePolicy: cleartext
+  substitutions:
+    - src:
+        schema: pegleg/SoftwareVersions/v1
+        name: software-versions
+        path: .ovs-dpdk.charts.osh.openvswitch-htk
+      dest:
+        path: .source
+data:
+  chart_name: openvswitch-htk
+  release: openvswitch-htk
+  namespace: openvswitch-htk
+  values: {}
+  dependencies: []
+...
+
index 887aa64..929a182 100644 (file)
@@ -1,4 +1,8 @@
 ---
+# OVS-DPDK NOTE:
+#   Add ovs-dpdk section to specify images and charts needed
+#   to support deployment of ovs-dpdk
+
 schema: pegleg/SoftwareVersions/v1
 metadata:
   schema: metadata/Document/v1
@@ -14,6 +18,81 @@ metadata:
         path: .
   storagePolicy: cleartext
 data:
+  ovs-dpdk:
+    charts:
+      osh:
+        neutron:
+          location: https://opendev.org/openstack/openstack-helm
+          reference: d2abe39d498f48c4721e26aca19e81189bc8891b
+          subpath: neutron
+          type: git
+        neutron-htk:
+          location: https://opendev.org/openstack/openstack-helm-infra
+          reference: d0b32ed88ad652d9c2226466a13bac8b28038399
+          subpath: helm-toolkit
+          type: git
+        nova:
+          location: https://opendev.org/openstack/openstack-helm
+          reference: d2abe39d498f48c4721e26aca19e81189bc8891b
+          subpath: nova
+          type: git
+        nova-htk:
+          location: https://opendev.org/openstack/openstack-helm-infra
+          reference: d0b32ed88ad652d9c2226466a13bac8b28038399
+          subpath: helm-toolkit
+          type: git
+        openvswitch:
+          location: https://opendev.org/openstack/openstack-helm-infra
+          reference: d0b32ed88ad652d9c2226466a13bac8b28038399
+          subpath: openvswitch
+          type: git
+        openvswitch-htk:
+          location: https://opendev.org/openstack/openstack-helm-infra
+          reference: d0b32ed88ad652d9c2226466a13bac8b28038399
+          subpath: helm-toolkit
+          type: git
+    images:
+      osh:
+        nova:
+          bootstrap: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          db_drop: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          db_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_user: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_service: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_endpoints: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          nova_api: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_cell_setup: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_cell_setup_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          nova_compute: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_compute_ssh: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_conductor: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_consoleauth: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_db_sync: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_novncproxy: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_novncproxy_assets: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_placement: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_scheduler: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_spiceproxy: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+          nova_spiceproxy_assets: "docker.io/openstackhelm/nova:stein-ubuntu_bionic"
+        neutron:
+          bootstrap: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          db_init: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          db_drop: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_user: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_service: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          ks_endpoints: "docker.io/openstackhelm/heat:stein-ubuntu_bionic"
+          neutron_db_sync: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_dhcp: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_l3: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_linuxbridge_agent: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_metadata: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_openvswitch_agent: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+          neutron_server: "docker.io/openstackhelm/neutron:stein-ubuntu_bionic"
+        openvswitch:
+          openvswitch_db_server: docker.io/openstackhelm/openvswitch:latest-ubuntu_bionic-dpdk
+          openvswitch_vswitchd: docker.io/openstackhelm/openvswitch:latest-ubuntu_bionic-dpdk
+        libvirt:
+          libvirt: docker.io/openstackhelm/libvirt:latest-ubuntu_bionic
   kernel_drivers:
     i40e_driver:
       type: tar
@@ -22,4 +101,3 @@ data:
       type: tar
       location: https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.6.3/ixgbe-5.6.3.tar.gz
 ...
-