diff --git a/deployment/nova/nova-compute-container-puppet.yaml b/deployment/nova/nova-compute-container-puppet.yaml index ac49979cd1..bbf224b8d5 100644 --- a/deployment/nova/nova-compute-container-puppet.yaml +++ b/deployment/nova/nova-compute-container-puppet.yaml @@ -368,6 +368,30 @@ parameters: default: 0.0 tags: - role_specific + NovaPMEMMappings: + type: string + description: > + PMEM namespace mappings as backend for vPMEM feature. This parameter + sets Nova's `pmem_namespaces` configuration options. PMEM namespaces + needs to be create manually or with conjunction with `NovaPMEMNamespaces` + parameter. + Requires format: $LABEL:$NSNAME[|$NSNAME][,$LABEL:$NSNAME[|$NSNAME]]. + default: "" + tags: + - role_specific + NovaPMEMNamespaces: + type: string + description: > + Creates PMEM namespaces on the host server using `ndctl` tool + through Ansible. + Requires format: $SIZE:$NSNAME[,$SIZE:$NSNAME...]. + $SIZE supports the suffixes "k" or "K" for KiB, "m" or "M" for MiB, "g" + or "G" for GiB and "t" or "T" for TiB. + NOTE: This requires properly configured NVDIMM regions and enough space + for requested namespaces. + default: "" + tags: + - role_specific # DEPRECATED: the following options are deprecated and are currently maintained # for backwards compatibility. They will be removed in future release. @@ -464,6 +488,8 @@ resources: nova::cpu_allocation_ratio: NovaCPUAllocationRatio nova::ram_allocation_ratio: NovaRAMAllocationRatio nova::disk_allocation_ratio: NovaDiskAllocationRatio + nova::compute::libvirt::pmem_namespaces: NovaPMEMMappings + nova_pmem_namespaces: NovaPMEMNamespaces - values: {get_param: [RoleParameters]} - values: NovaVcpuPinSet: {get_param: NovaVcpuPinSet} @@ -535,6 +561,8 @@ resources: NovaCPUAllocationRatio: {get_param: NovaCPUAllocationRatio} NovaRAMAllocationRatio: {get_param: NovaRAMAllocationRatio} NovaDiskAllocationRatio: {get_param: NovaDiskAllocationRatio} + NovaPMEMMappings: {get_param: NovaPMEMMappings} + NovaPMEMNamespaces: {get_param: NovaPMEMNamespaces} conditions: enable_instance_ha: {equals: [{get_param: EnableInstanceHA}, true]} @@ -1040,6 +1068,14 @@ outputs: fail: msg: nova-compute isn't working (healthcheck failed) when: nova_compute_healthcheck_state.status.ExecMainStatus != '0' + - name: manage PMEM namespaces for vPMEM + include_role: + name: tripleo_nvdimm + vars: + tripleo_nvdimm_pmem_namespaces: {get_attr: [RoleParametersValue, value, nova_pmem_namespaces]} + when: + - step|int == 1 + - tripleo_nvdimm_pmem_namespaces != '' external_post_deploy_tasks: {get_attr: [NovaComputeCommon, nova_compute_common_deploy_steps_tasks]} upgrade_tasks: - name: Remove openstack-nova-compute and python-nova package during upgrade diff --git a/releasenotes/notes/new-pmem-params-18fb9c25808a7fe6.yaml b/releasenotes/notes/new-pmem-params-18fb9c25808a7fe6.yaml new file mode 100644 index 0000000000..0cdc8bfe8b --- /dev/null +++ b/releasenotes/notes/new-pmem-params-18fb9c25808a7fe6.yaml @@ -0,0 +1,14 @@ +--- +features: + - | + Adding two parameters to manage vPMEM [0] configuration parameters. + `NovaPMEMMappings` parameter set Nova's configuration option + `pmem_namespaces` that reflects mappings between vPMEM + and physical PMEM namespaces. `NovaPMEMNamespaces` creates + and manages physical backend PMEM namespaces which win + be used as backend for vPMEM. + `NovaPMEMMappings` example: 6GB:ns0|ns1|ns2,LARGE:ns3 + will expose namespaces ns0, ns1, ns2 using label `6GB` + and namespace ns3 using label `LARGE`. + `NovaPMEMNamespaces` example: 100G:ns0|14096M:ns1 + will create two namespaces: ns0 - size 100G, ns1 - size 14096M. \ No newline at end of file