From ddfdc7834d2431fab9ca21e9446d7703b81afaf3 Mon Sep 17 00:00:00 2001
From: Roy Tang <roy.s.tang@att.com>
Date: Mon, 16 Sep 2019 20:41:13 +0000
Subject: Add SRIOV related updates to cntt

Summary:
- Update config of openstack libvirt, nova and neutron components
- Add required kernel parameters to grub
- Add new label to data plane host profile
- Add large hugepages to data plane nodes

Signed-off-by: Roy Tang <roy.s.tang@att.com>
Change-Id: I5ffa00f71c890edf96ca1b72659903640c54549b
---
 type/cntt/profiles/hardware/intel-s2600wt.yaml     |  6 +++
 type/cntt/profiles/host/dp-intel-s2600wt.yaml      | 14 ++++++-
 .../charts/osh/openstack-compute-kit/libvirt.yaml  | 21 +++++++++++
 .../charts/osh/openstack-compute-kit/neutron.yaml  | 44 ++++++++++++++++++++++
 .../charts/osh/openstack-compute-kit/nova.yaml     | 25 +++++++++++-
 5 files changed, 107 insertions(+), 3 deletions(-)
 create mode 100644 type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml

diff --git a/type/cntt/profiles/hardware/intel-s2600wt.yaml b/type/cntt/profiles/hardware/intel-s2600wt.yaml
index 07836ef..94fba0e 100644
--- a/type/cntt/profiles/hardware/intel-s2600wt.yaml
+++ b/type/cntt/profiles/hardware/intel-s2600wt.yaml
@@ -106,4 +106,10 @@ data:
       address: '5:0.0.0'
       dev_type: 'ST91000640NS'
       bus_type: 'scsi'
+  cpu_sets:
+    kvm: '4-43,48-87'
+  hugepages:
+    dpdk:
+      size: '1G'
+      count: 32
 ...
diff --git a/type/cntt/profiles/host/dp-intel-s2600wt.yaml b/type/cntt/profiles/host/dp-intel-s2600wt.yaml
index 49ece45..fbf304d 100644
--- a/type/cntt/profiles/host/dp-intel-s2600wt.yaml
+++ b/type/cntt/profiles/host/dp-intel-s2600wt.yaml
@@ -9,7 +9,7 @@ metadata:
   storagePolicy: cleartext
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       hosttype: dp-global
     actions:
@@ -97,4 +97,16 @@ data:
     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'
+      isolcpus: 'hardwareprofile:cpuset.kvm'
+  metadata:
+    owner_data:
+      sriov: enabled
 ...
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml
new file mode 100644
index 0000000..07be883
--- /dev/null
+++ b/type/cntt/software/charts/osh/openstack-compute-kit/libvirt.yaml
@@ -0,0 +1,21 @@
+schema: armada/Chart/v1
+metadata:
+  schema: metadata/Document/v1
+  name: libvirt
+  replacement: true
+  layeringDefinition:
+    abstract: false
+    layer: type
+    parentSelector:
+      name: libvirt-global
+    actions:
+      - method: merge
+        path: .
+  storagePolicy: cleartext
+data:
+  values:
+    network:
+      backend:
+        - openvswitch
+        - sriov
+...
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml
index 8d47efd..6cced90 100644
--- a/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml
+++ b/type/cntt/software/charts/osh/openstack-compute-kit/neutron.yaml
@@ -25,4 +25,48 @@ data:
     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
+    network:
+      interface:
+        sriov:
+          - device: ens785f1
+            num_vfs: 32
+            promisc: false
+      backend:
+        - openvswitch
+        - sriov
+    conf:
+      plugins:
+        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
+        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
+            exclude_devices: ""
 ...
diff --git a/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml b/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml
index 32f94b8..dd9c02c 100644
--- a/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml
+++ b/type/cntt/software/charts/osh/openstack-compute-kit/nova.yaml
@@ -14,12 +14,33 @@ metadata:
   name: nova
   layeringDefinition:
     abstract: false
-    layer: site
+    layer: type
     parentSelector:
       name: nova-global
     actions:
       - method: merge
         path: .
   storagePolicy: cleartext
-data: {}
+  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"}]
 ...
-- 
cgit