cs_vpc: fix disabled or wrong vpc offering taken (#42465)
This commit is contained in:
parent
3301a0b530
commit
d7c3d5501b
2 changed files with 31 additions and 4 deletions
|
@ -219,16 +219,28 @@ class AnsibleCloudStackVpc(AnsibleCloudStack):
|
||||||
|
|
||||||
def get_vpc_offering(self, key=None):
|
def get_vpc_offering(self, key=None):
|
||||||
vpc_offering = self.module.params.get('vpc_offering')
|
vpc_offering = self.module.params.get('vpc_offering')
|
||||||
args = {}
|
args = {
|
||||||
|
'state': 'Enabled',
|
||||||
|
}
|
||||||
if vpc_offering:
|
if vpc_offering:
|
||||||
args['name'] = vpc_offering
|
args['name'] = vpc_offering
|
||||||
|
fail_msg = "VPC offering not found or not enabled: %s" % vpc_offering
|
||||||
else:
|
else:
|
||||||
args['isdefault'] = True
|
args['isdefault'] = True
|
||||||
|
fail_msg = "No enabled default VPC offering found"
|
||||||
|
|
||||||
vpc_offerings = self.query_api('listVPCOfferings', **args)
|
vpc_offerings = self.query_api('listVPCOfferings', **args)
|
||||||
if vpc_offerings:
|
if vpc_offerings:
|
||||||
return self._get_by_key(key, vpc_offerings['vpcoffering'][0])
|
# The API name argument filter also matches substrings, we have to
|
||||||
self.module.fail_json(msg="VPC offering not found: %s" % vpc_offering)
|
# iterate over the results to get an exact match
|
||||||
|
for vo in vpc_offerings['vpcoffering']:
|
||||||
|
if 'name' in args:
|
||||||
|
if args['name'] == vo['name']:
|
||||||
|
return self._get_by_key(key, vo)
|
||||||
|
# Return the first offering found, if not queried for the name
|
||||||
|
else:
|
||||||
|
return self._get_by_key(key, vo)
|
||||||
|
self.module.fail_json(msg=fail_msg)
|
||||||
|
|
||||||
def get_vpc(self):
|
def get_vpc(self):
|
||||||
if self.vpc:
|
if self.vpc:
|
||||||
|
|
|
@ -45,7 +45,22 @@
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- vpc is failed
|
- vpc is failed
|
||||||
- 'vpc.msg == "VPC offering not found: does_not_exist"'
|
- 'vpc.msg == "VPC offering not found or not enabled: does_not_exist"'
|
||||||
|
|
||||||
|
- name: test fail name substring match
|
||||||
|
cs_vpc:
|
||||||
|
name: "{{ cs_resource_prefix }}_vpc"
|
||||||
|
# Full name is "Redundant VPC offering"
|
||||||
|
vpc_offering: "Redundant"
|
||||||
|
zone: "{{ cs_common_zone_adv }}"
|
||||||
|
cidr: 10.10.1.0/16
|
||||||
|
ignore_errors: true
|
||||||
|
register: vpc
|
||||||
|
- name: verify test fail name substring match
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- vpc is failed
|
||||||
|
- 'vpc.msg == "VPC offering not found or not enabled: Redundant"'
|
||||||
|
|
||||||
- name: test create vpc with custom offering in check mode
|
- name: test create vpc with custom offering in check mode
|
||||||
cs_vpc:
|
cs_vpc:
|
||||||
|
|
Loading…
Reference in a new issue