Как добавить условное значение в раздел шаблона в повторном разделе yaml? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть тепловой шаблон для openstack, и в этом есть свойство allow_address_pairs. Недавно я обновился до версии openstack rocky, и у меня появилась проблема для allow_address_pairs с запросом нотации cidr, то есть 172.27.44.32/32.
В моем документе YAML я принимаю IP-адреса в виде списка через запятую и анализирую его, используя следующий код

 allowed_address_pairs:
          repeat:
            for_each:
                <%ipaddr%>: {get_param: mrfp_bearer_ips }
            template:
                ip_address: <%ipaddr%>
        replacement_policy: AUTO

где mrfp_bearer_ips - это список через запятую.

Я хочу добавить cidr к каждому ip-адресу в этом списке, например 172.27.44.32/32. Я пытался с помощью следующего кода

  allowed_address_pairs:
          repeat:
            for_each:
                <%ipaddr%>: {get_param: mrfp_bearer_ips }
            template:
                ip_address: 
                     str_replace:   
                          template:<%ipaddr%>/$cidr
                          params:
                              $cidr: { if: [ "mode","32","128" ] }
        replacement_policy: AUTO

где режим - условие, которое оценивается как истинное или ложное. Но это вызывает проблему, связанную с картой.

Я получаю ошибку:

WorkflowHeatOperationError: Ошибка операции стека! Идентификатор стека: 412a908d-2a63-46d8-b790-a8e341d8feca, ожидаемый статус: COMPLETE, фактический статус: FAILED, причина: сбой ресурса CREATE: resources 1 : resources.mrfp_group.Property error: resources.sig_port.properties .allowed_address_pairs [0]: "[{u'ip_address ': u'10.204.9.178 / 32'}]" не является картой

Как добавить cidr к каждому элементу в списке, созданном из повторяющегося раздела. Я новичок в YAML. Я также нашел одну ссылку , которая может быть полезной, но я не смог ее понять:

...