ГОРЯЧИЙ шаблон для объема золы с или без Volume_type

Я пытаюсь написать ГОРЯЧИЙ шаблон для тома Openstack, и мне нужно иметь Volume_type в качестве параметра. Мне также нужно поддерживать случай, когда параметр не задан, и по умолчанию используется тип тома Cinder по умолчанию.

Первая попытка состояла в том, чтобы передать значение null в Volume_type, надеясь, что это даст тип тома по умолчанию. Однако независимо от того, что я передаю (null, ~, default, ), похоже, нет способа получить тип тома по умолчанию.

type: OS::Cinder::Volume
properties:
  name: test
  size: 1
  volume_type: { if: ["voltype_given" , {get_param:[typename]} , null] }

Есть ли способ получить тип тома по умолчанию, когда у вас определено свойство volume_type?

В качестве альтернативы, есть ли способ иметь свойство volume_type за условным выражением? Я пробовал несколько способов, но не повезло. Что-то типа:

type: OS::Cinder::Volume
properties:
  if: ["voltype_given" , [ volume_type: {get_param:[typename]} ] , ""]
  name: test
  size: 1

ОШИБКА: TypeError: : resources.kk-test-vol: : 'Если' объект не является итерируемым


person kjk    schedule 11.09.2020    source источник


Ответы (1)


Не могли бы вы сделать что-то подобное?

---
parameters:
  typename:
    type: string

conditions:

  use_default_type: {equals: [{get_param: typename}, '']}

resources:
  MyVolumeWithDefault:
    condition: use_default_type
    type: OS::Cinder::Volume
    properties:
      name: test
      size: 1

  MyVolumeWithExplicit:
    condition: {not: use_default_type}
    type: OS::Cinder::Volume
    properties:
      name: test
      size: 1
      volume_type: {get_param: typename}

  # e.g. if you need to refer to the volume from another resource
  MyVolumeAttachment:
    type: OS::Cinder::VolumeAttachment
    properties:
      instance_uid: some-instance-uuid
      volume_id:
        if:
          - use_default_type
          - get_resource: MyVolumeWithDefault
          - get_resource: MyVolumeWithExplicit
person larsks    schedule 11.09.2020