cs_vpc: fix disabled or wrong vpc offering taken (#42465)

This commit is contained in:
René Moser 2018-07-09 08:31:13 +02:00 committed by GitHub
parent 3301a0b530
commit d7c3d5501b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 4 deletions

View file

@ -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:

View file

@ -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: