ranger/orm/tests/unit/rds/services/test_customer_yaml.py
Chi Lo 8366b10bef Add customer's domain attribute in CMS API call
When CMS API call is made for either create and update customer, a

A new optional customer domain field is introduced for CMS API call
to create or update customer. The customer domain value will be used
by Rds to set the customer and users domain value when generating the
heat template.  In the event customer domain is not provided by the
CMS API call, a default value will be retrieved from the config file.

Change-Id: I58dbae760d56b756b72c5d9eaf7c0b61cf193847
2020-09-01 09:15:04 -07:00

353 lines
25 KiB
Python
Executable File

"""unittests create customer yaml module."""
from mock import patch
import unittest
import yaml
from orm.services.resource_distributor.rds.services import yaml_customer_builder as CustomerBuild
alldata = {
'uuid': '1e24981a-fa51-11e5-86aa-5e5517507c66',
'metadata': [{'my_server_name': 'Apache1'}, {'ocx_cust': '123456889'}],
'default_region': {'users': [{'id': 'userId1zzzz',
'roles': ['adminzzzz', 'otherzzzzz']},
{'id': 'userId2zzz',
'roles': ['storagezzzzz']}],
'name': 'regionnamezzzz',
'quotas': [{'storage': {'gigabytes': '111',
'volumes': '111',
'snapshots': '111'},
'compute': {'instances': '111',
'ram': '111',
'keypairs': '111'},
'network': {'port': '111',
'router': '111',
'subnet': '111',
'network': '111',
'floatingip': '111'}}]},
'description': 'this is a description', 'enabled': 1,
'customer_domain': 'default',
'regions': [{'users': [{'id': 'userId1', 'roles': ['admin', 'other']},
{'id': 'userId2', 'roles': ['storage']}],
'name': 'regionname',
'quotas': []},
{'users': [], 'name': 'regionnametest',
'quotas': [{'storage': {'gigabytes': '10',
'volumes': '10',
'snapshots': '10'},
'compute': {'instances': '10', 'ram': '10',
'keypairs': '10'},
'network': {'port': '10', 'router': '10',
'subnet': '10', 'network': '10',
'floatingip': '10'}}]}],
'name': 'welcome_man'}
region_quotas = {'users':
[],
'name': 'regionnametest',
'rangerAgentVersion': 3.0,
'domain_name': 'default',
'quotas': [{'storage': {'gigabytes': '10',
'volumes': '10', 'snapshots': '10'},
'compute': {'instances': '10', 'ram': '10',
'keypairs': '10'},
'network': {'port': '10',
'router': '10',
'subnet': '10',
'network': '10',
'floatingip': '10'}}]}
region_users = {'users': [{'id': 'userId1', 'roles': ['admin', 'other']},
{'id': 'userId2', 'roles': ['storage']}],
'domain_name': 'default',
'name': 'regionname', 'rangerAgentVersion': 3.0, 'quotas': []}
region_users_v4 = {'users': [{'id': 'userId1', 'roles': ['admin', 'other']},
{'id': 'userId2', 'roles': ['storage']}],
'domain_name': 'default',
'name': 'regionname', 'rangerAgentVersion': 4.0, 'quotas': []}
full_region = {'users': [{'id': 'userId1', 'roles': ['admin', 'other']},
{'id': 'userId2', 'roles': ['storage']}],
'name': 'regionnametest',
'rangerAgentVersion': 3.0,
'domain_name': 'default',
'quotas': [{'storage': {'gigabytes': '10',
'volumes': '10', 'snapshots': '10'},
'compute': {'instances': '10', 'ram': '10',
'keypairs': '10'},
'network': {'port': '10', 'router': '10',
'subnet': '10',
'network': '10', 'floatingip': '10'}}]}
fullyaml_with_users_quotasoff = \
'heat_template_version: 2015-1-2\n\ndescription: yaml file for region - ' \
'regionname\n\nresources:\n userId1:\n ' \
'properties:\n groups:\n - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group}\n ' \
'name: userId1\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: admin\n - project: {get_resource: ' \
'1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: other\n type: OS::Keystone::User\n\n' \
' \n userId2:\n properties:\n groups:\n - ' \
'{get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group}\n name: userId2\n roles:\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: storage\n' \
' type: OS::Keystone::User\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n ' \
'description: this is a description\n domain: default\n enabled: true\n ' \
'tags: [my_server_name=Apache1,ocx_cust=123456889]\n ' \
'name: welcome_man\n project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n type: OS::Keystone::Project\n\n ' \
'\n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group:\n properties:\n description: dummy\n ' \
'domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group\n roles:\n - ' \
'project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: {get_resource: other}\n ' \
'type: OS::Keystone::Group\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group:\n properties:\n ' \
' description: dummy\n domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group\n ' \
'roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: {get_resource: storage}\n type: OS::Keystone::Group\n\n ' \
'\n\noutputs:\n userId1_id:\n value: {get_resource: userId1}\n' \
' userId2_id:\n value: {get_resource: userId2}\n ' \
'1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'
fullyaml_no_users_quotasoff = \
'heat_template_version: 2015-1-1\n\ndescription: yaml file for region ' \
'- regionnametest\n\nresources:\n userId1zzzz:\n properties:\n ' \
'groups:\n - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group}\n ' \
'name: userId1zzzz\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: adminzzzz\n - ' \
'project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: otherzzzzz\n' \
' type: OS::Keystone::User\n\n \n userId2zzz:\n properties:\n ' \
'groups:\n - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group}\n ' \
'name: userId2zzz\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: storagezzzzz\n type: OS::Keystone::User\n\n ' \
'\n 1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n description: this is a description\n' \
' tags: [my_server_name=Apache1,ocx_cust=123456889]\n' \
' enabled: true\n name: welcome_man\n' \
' domain: default\n ' \
'project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n type: OS::Keystone::Project\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group:\n ' \
'properties:\n description: dummy\n domain: default\n ' \
'name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: {get_resource: otherzzzzz}\n type: OS::Keystone::Group\n\n' \
' \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group:\n properties:\n description: dummy\n ' \
'domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group\n roles:\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: {get_resource: storagezzzzz}\n' \
' type: OS::Keystone::Group\n\n \n\noutputs:\n userId1zzzz_id:\n' \
' value: {get_resource: userId1zzzz}\n userId2zzz_id:\n ' \
'value: {get_resource: userId2zzz}\n 1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n ' \
'value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'
full_yaml_default_quotas = 'heat_template_version: 2015-1-1\n\ndescription: yaml file for region ' \
'- regionname\n\nresources:\n cinder_quota:\n properties:\n ' \
'gigabytes: 111\n snapshots: 111\n project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' volumes: 111\n type: OS::Cinder::Quota\n\n ' \
' \n neutron_quota:\n properties:\n floatingip: 111\n' \
' network: 111\n port: 111\n router: 111\n subnet: 111\n' \
' project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n type: OS::Neutron::Quota\n\n' \
' \n nova_quota:\n properties:\n ' \
'instances: 111\n keypairs: 111\n ram: 111\n ' \
'project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'type: OS::Nova::Quota\n\n \n userId1:\n' \
' properties:\n groups:\n ' \
'- {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group}\n name: userId1\n' \
' roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: admin\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: other\n type: OS::Keystone::User\n\n' \
' \n userId2:\n properties:\n groups:\n' \
' - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group}\n ' \
'name: userId2\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: storage\n type: OS::Keystone::User\n\n ' \
'\n 1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n description: this is a description\n' \
' domain: default\n' \
' tags: [my_server_name=Apache1,ocx_cust=123456889]\n' \
' enabled: true\n name: welcome_man\n' \
' project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n ' \
'type: OS::Keystone::Project\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group:\n' \
' properties:\n description: dummy\n domain: default\n' \
' name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group\n roles:\n' \
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: {get_resource: other}\n type: OS::Keystone::Group\n\n ' \
'\n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group:\n properties:\n ' \
'description: dummy\n domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group\n ' \
'roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: {get_resource: storage}\n type: OS::Keystone::Group\n\n ' \
'\n\noutputs:\n userId1_id:\n ' \
'value: {get_resource: userId1}\n userId2_id:\n ' \
'value: {get_resource: userId2}\n 1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n ' \
'value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'
full_yaml_quotas = 'heat_template_version: 2015-1-1\n\ndescription: yaml file for region - ' \
'regionnametest\n\nresources:\n cinder_quota:\n ' \
'properties:\n gigabytes: 10\n snapshots: 10\n ' \
'project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n volumes: 10\n ' \
'type: OS::Cinder::Quota\n\n \n neutron_quota:\n ' \
'properties:\n floatingip: 10\n network: 10\n ' \
'port: 10\n router: 10\n subnet: 10\n ' \
'project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'type: OS::Neutron::Quota\n\n \n nova_quota:\n ' \
'properties:\n instances: 10\n ' \
'keypairs: 10\n ram: 10\n project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'type: OS::Nova::Quota\n\n \n userId1zzzz:\n properties:\n ' \
'groups:\n - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group}\n ' \
'name: userId1zzzz\n roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n' \
' role: adminzzzz\n - project: ' \
'{get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n role: ' \
'otherzzzzz\n type: OS::Keystone::User\n\n \n ' \
'userId2zzz:\n properties:\n groups:\n - {get_resource:' \
' 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group}\n name: userId2zzz\n roles:\n' \
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: storagezzzzz\n type: OS::Keystone::User\n\n' \
' \n 1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n ' \
'description: this is a description\n ' \
'domain: default\n ' \
'tags: [my_server_name=Apache1,ocx_cust=123456889]\n ' \
'enabled: true\n name: welcome_man\n ' \
'project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n ' \
'type: OS::Keystone::Project\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group:\n' \
' properties:\n description: dummy\n ' \
'domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1zzzz_group\n roles:\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: {get_resource: otherzzzzz}\n type: OS::Keystone::Group\n\n' \
' \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group:\n properties:\n ' \
'description: dummy\n domain: default\n name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2zzz_group\n' \
' roles:\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: {get_resource: storagezzzzz}\n type: OS::Keystone::Group\n\n' \
' \n\noutputs:\n userId1zzzz_id:\n ' \
'value: {get_resource: userId1zzzz}\n userId2zzz_id:\n ' \
'value: {get_resource: userId2zzz}\n 1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n ' \
'value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'
full_yaml_ldap = 'heat_template_version: 2015-1-2\n\ndescription: yaml file' \
' for region - regionname\n\nresources:\n userId1:\n ' \
'properties:\n roles:\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: admin\n - project: ' \
'{get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: other\n user: userId1{default}\n ' \
'type: OS::Keystone::UserRoleAssignment\n\n \n ' \
'userId2:\n properties:\n roles:\n ' \
'- project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n ' \
'role: storage\n user: userId2{default}\n ' \
'type: OS::Keystone::UserRoleAssignment\n\n \n ' \
'1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n ' \
'description: this is a description\n ' \
'domain: default\n ' \
'tags: [my_server_name=Apache1,ocx_cust=123456889]\n ' \
'enabled: true\n name: welcome_man\n ' \
'project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n ' \
'type: OS::Keystone::Project\n\n \n\noutputs:\n ' \
'userId1_id:\n ' \
'value: {get_resource: userId1}\n userId2_id:\n ' \
'value: {get_resource: userId2}\n 1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n ' \
'value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'
fullyaml_aic4 = \
'heat_template_version: 2015-1-2\n\n'\
'description: yaml file for region - regionname\n\nresources:\n'\
' 1e24981a-fa51-11e5-86aa-5e5517507c66:\n properties:\n'\
' description: "this is a description"\n domain: default\n enabled: true\n'\
' name: welcome_man\n project_id: 1e24981a-fa51-11e5-86aa-5e5517507c66\n'\
' tags: [my_server_name=Apache1,ocx_cust=123456889]\n'\
' type: OS::Keystone::Project\n\n \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group:\n'\
' properties:\n description: dummy\n domain: default\n'\
' name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group\n roles:\n'\
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' role: {get_resource: other}\n type: OS::Keystone::Group\n\n'\
' \n 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group:\n properties:\n'\
' description: dummy\n domain: default\n'\
' name: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group\n roles:\n'\
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' role: {get_resource: storage}\n type: OS::Keystone::Group\n\n'\
' \n cinder_quota:\n properties:\n gigabytes: 111\n snapshots: 111\n'\
' project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n volumes: 111\n'\
' type: OS::Cinder::Quota\n\n \n neutron_quota:\n properties:\n'\
' floatingip: 111\n network: 111\n port: 111\n router: 111\n'\
' subnet: 111\n project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' type: OS::Neutron::Quota\n\n \n nova_quota:\n properties:\n'\
' instances: 111\n keypairs: 111\n'\
' ram: 111\n project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' type: OS::Nova::Quota\n\n \n userId1:\n properties:\n groups:\n'\
' - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId1_group}\n'\
' name: userId1\n roles:\n'\
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' role: admin\n - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' role: other\n type: OS::Keystone::User\n\n \n userId2:\n properties:\n'\
' groups:\n - {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66_userId2_group}\n'\
' name: userId2\n roles:\n'\
' - project: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n'\
' role: storage\n type: OS::Keystone::User\n\n \n\noutputs:\n'\
' 1e24981a-fa51-11e5-86aa-5e5517507c66_id:\n'\
' value: {get_resource: 1e24981a-fa51-11e5-86aa-5e5517507c66}\n userId1_id:\n'\
' value: {get_resource: userId1}\n userId2_id:\n value: {get_resource: userId2}\n'
class CreateResource(unittest.TestCase):
"""class metohd."""
maxDiff = None
@patch.object(CustomerBuild, 'conf')
def test_create_customer_yaml_nousers(self, mock_conf):
"""test valid dict to yaml output as expected without users."""
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-1'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = False
yamlfile = CustomerBuild.yamlbuilder(alldata, region_quotas)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(fullyaml_no_users_quotasoff))
@patch.object(CustomerBuild, 'conf')
def test_create_flavor_yaml_noquotas(self, mock_conf):
"""test valid dict to yaml output as expected with users."""
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-2'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = False
yamlfile = CustomerBuild.yamlbuilder(alldata, region_users)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(fullyaml_with_users_quotasoff))
@patch.object(CustomerBuild, 'conf')
def test_create_customer_yaml_noquotas_on(self, mock_conf):
"""test valid dict to yaml output as expected with default regions."""
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-1'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = True
yamlfile = CustomerBuild.yamlbuilder(alldata, region_users)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(full_yaml_default_quotas))
@patch.object(CustomerBuild, 'conf')
def test_create_customer_yaml_withquotas_on(self, mock_conf):
"""valid dict to yaml output as expect with regions default users."""
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-1'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = True
yamlfile = CustomerBuild.yamlbuilder(alldata, region_quotas)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(full_yaml_quotas))
@patch.object(CustomerBuild, 'conf')
def test_create_flavor_yaml_ldap(self, mock_conf):
"""test valid dict to yaml output as expected with ldap system."""
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-2'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.rds.project_domain = 'default'
mock_conf.authentication.user_domain_name = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = False
mock_conf.yaml_configs.customer_yaml.yaml_options.type = "ldap"
yamlfile = CustomerBuild.yamlbuilder(alldata, region_users)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(full_yaml_ldap))
@patch.object(CustomerBuild, 'conf')
def test_create_aicV4_customer_yaml(self, mock_conf):
ver = mock_conf.yaml_configs.customer_yaml.yaml_version = '2015-1-2'
domain = mock_conf.yaml_configs.customer_yaml.customer_domain = 'default'
mock_conf.yaml_configs.customer_yaml.yaml_options.quotas = True
yamlfile = CustomerBuild.yamlbuilder(alldata, region_users_v4)
yamlfile_as_json = yaml.safe_load(yamlfile)
self.assertEqual(yamlfile_as_json['heat_template_version'], ver)
self.assertEqual(yaml.safe_load(yamlfile), yaml.safe_load(fullyaml_aic4))