Add parameters for vPMEM features
This change adds two new parameters to manage vPMEM configuration
option and PMEM namespaces on the host server.
* `NovaPMEMMappings` sets Nova's `pmem_namespaces` conf option.
* `NovaPMEMNamespaces` creates PMEM namespaces on the host
using `ndctl` tool and ansible tripleo_nvdimm role.
Depends-On: https://review.opendev.org/730782
Closes-Bug: #1870455
Conflicts:
deployment/nova/nova-compute-container-puppet.yaml
Change-Id: I270cb624a33a739aa06bba5e4faee4b01fb3cfb3
(cherry picked from commit 9001136dd9
)
This commit is contained in:
parent
e6542a1b26
commit
ae28b12468
|
@ -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
|
||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue