From aa7bf02e6b5de8141d9bdc5555a8a7b46184fbd6 Mon Sep 17 00:00:00 2001 From: rferraz <RogerioOliveira.Ferraz@windriver.com> Date: Tue, 9 Nov 2021 05:02:58 -0300 Subject: [PATCH] PCI IRQ affinity mask metadata This patch introduces the hw:pci_irq_affinity_mask metadata. The metadata hw:pci_irq_affinity_mask specifies which CPU cores are interrupted due to PCI IRQ requests. It can be set as a compute flavor extra spec, as well as a compute image or volume metadata. Test Plan Status 1. New metadata is added to the supported metadata list PASSED on compute flavor, compute image and volume metadata 2. New metadata can be set to a value PASSED on compute flavor, compute image and/or volume metadata 3. New metadata can be changed value and/or deleted PASSED on compute flavor, compute image and/or volume metadata 4. New metadata persists when re-applying OpenStack PASSED Regression 1. New metadata is added to the supported metadata list PASSED on compute flavor, compute image and volume metadata 2. New metadata can be set a value, changed valued and deleted PASSED on compute flavor, compute image and volume metadata Story: 2009299 Task: 43861 Signed-off-by: rferraz <RogerioOliveira.Ferraz@windriver.com> Change-Id: I0f94e8cddcff744306a01ce275c697cb39f8c5e7 --- openstack-helm/centos/openstack-helm.spec | 2 + ...-extra-spec-hw-pci_irq_affinity_mask.patch | 75 +++++++++++++++++++ .../manifests/manifest.yaml | 20 +++++ 3 files changed, 97 insertions(+) create mode 100644 openstack-helm/files/0010-Add-flavor-extra-spec-hw-pci_irq_affinity_mask.patch diff --git a/openstack-helm/centos/openstack-helm.spec b/openstack-helm/centos/openstack-helm.spec index 8d08003d..47f5cdf1 100644 --- a/openstack-helm/centos/openstack-helm.spec +++ b/openstack-helm/centos/openstack-helm.spec @@ -28,6 +28,7 @@ Patch06: 0006-Allow-set-public-endpoint-url-for-keystone-endpoints.patch Patch07: 0007-Wrong-usage-of-rbd_store_chunk_size.patch Patch08: 0008-Add-stx_admin-account.patch Patch09: 0009-Disabling-helm3_hook.patch +Patch10: 0010-Add-flavor-extra-spec-hw-pci_irq_affinity_mask.patch BuildRequires: helm BuildRequires: openstack-helm-infra @@ -48,6 +49,7 @@ Openstack Helm charts %patch07 -p1 %patch08 -p1 %patch09 -p1 +%patch10 -p1 %build # Stage helm-toolkit in the local repo diff --git a/openstack-helm/files/0010-Add-flavor-extra-spec-hw-pci_irq_affinity_mask.patch b/openstack-helm/files/0010-Add-flavor-extra-spec-hw-pci_irq_affinity_mask.patch new file mode 100644 index 00000000..4d0673c9 --- /dev/null +++ b/openstack-helm/files/0010-Add-flavor-extra-spec-hw-pci_irq_affinity_mask.patch @@ -0,0 +1,75 @@ +From 6d54af3aa180b3b82614ebc0cedd8b4d7d9f5db6 Mon Sep 17 00:00:00 2001 +From: rferraz <RogerioOliveira.Ferraz@windriver.com> +Date: Wed, 17 Nov 2021 11:32:23 -0300 +Subject: [PATCH] Add-flavor-extra-spec-hw-pci_irq_affinity_mask + +--- + glance/templates/configmap-etc.yaml | 3 +++ + glance/templates/deployment-api.yaml | 6 ++++++ + glance/templates/job-metadefs-load.yaml | 6 ++++++ + glance/values.yaml | 1 + + 4 files changed, 16 insertions(+) + +diff --git a/glance/templates/configmap-etc.yaml b/glance/templates/configmap-etc.yaml +index 97f19fbc..f9be6bfb 100644 +--- a/glance/templates/configmap-etc.yaml ++++ b/glance/templates/configmap-etc.yaml +@@ -195,6 +195,9 @@ data: + glance-api-paste.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | b64enc }} + glance-registry.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.glance_registry | b64enc }} + glance-registry-paste.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.paste_registry | b64enc }} ++{{- range $key, $val := .Values.conf.extra_metadata }} ++ compute_{{ $key }}.json: {{ toJson $val | b64enc }} ++{{- end }} + policy.yaml: {{ toYaml .Values.conf.policy | b64enc }} + api_audit_map.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.api_audit_map | b64enc }} + {{- include "helm-toolkit.snippets.values_template_renderer" ( dict "envAll" $envAll "template" .Values.conf.swift_store "key" "swift-store.conf" "format" "Secret" ) | indent 2 }} +diff --git a/glance/templates/deployment-api.yaml b/glance/templates/deployment-api.yaml +index 78e16715..81711967 100644 +--- a/glance/templates/deployment-api.yaml ++++ b/glance/templates/deployment-api.yaml +@@ -183,6 +183,12 @@ spec: + mountPath: /etc/glance/glance-api.conf + subPath: glance-api.conf + readOnly: true ++ {{- range $key, $val := .Values.conf.extra_metadata }} ++ - name: glance-etc ++ mountPath: /var/lib/openstack/etc/glance/metadefs/compute_{{ $key }}.json ++ subPath: compute_{{ $key }}.json ++ readOnly: true ++ {{- end }} + {{- if .Values.conf.glance.DEFAULT.log_config_append }} + - name: glance-etc + mountPath: {{ .Values.conf.glance.DEFAULT.log_config_append }} +diff --git a/glance/templates/job-metadefs-load.yaml b/glance/templates/job-metadefs-load.yaml +index 5c162a5f..47c4286a 100644 +--- a/glance/templates/job-metadefs-load.yaml ++++ b/glance/templates/job-metadefs-load.yaml +@@ -64,6 +64,12 @@ spec: + mountPath: /tmp/metadefs-load.sh + subPath: metadefs-load.sh + readOnly: true ++ {{- range $key, $val := .Values.conf.extra_metadata }} ++ - name: glance-etc ++ mountPath: /var/lib/openstack/etc/glance/metadefs/compute_{{ $key }}.json ++ subPath: compute_{{ $key }}.json ++ readOnly: true ++ {{- end }} + - name: etcglance + mountPath: /etc/glance + - name: glance-etc +diff --git a/glance/values.yaml b/glance/values.yaml +index 459f04bc..0d1c2fdb 100644 +--- a/glance/values.yaml ++++ b/glance/values.yaml +@@ -193,6 +193,7 @@ conf: + oslo_config_program: glance-api + filter:http_proxy_to_wsgi: + paste.filter_factory: oslo_middleware:HTTPProxyToWSGI.factory ++ extra_metadata: {} + policy: + metadef_default: '' + metadef_admin: 'role:admin' +-- +2.17.1 + diff --git a/stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml b/stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml index 02f6af20..10afc8bc 100644 --- a/stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml +++ b/stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml @@ -765,6 +765,26 @@ data: identity: force_public_endpoint: true conf: + extra_metadata: + pci_irq_affinity: + description: Properties for the handling of PCI IRQ Affinity. These properties may be specified to flavor, image and/or volume (refer to metadata description). + display_name: PCI IRQ Affinity + namespace: OS::Compute::PCIIRQAffinity + properties: + pci_irq_affinity_mask: + description: The metadata hw:pci_irq_affinity_mask specifies which CPU cores are interrupted due to PCI IRQ requests. It can be set as a compute flavor extra spec. + title: PCI IRQ Affinity Mask + type: string + protected: true + resource_type_associations: + - name: OS::Nova::Flavor + prefix: 'hw:' + - name: OS::Glance::Image + prefix: 'hw_' + - name: OS::Cinder::Volume + prefix: 'hw_' + properties_target: image + visibility: public glance: DEFAULT: bind_host: "::"