diff --git a/lib/ansible/modules/cloud/cloudstack/cs_serviceoffer.py b/lib/ansible/modules/cloud/cloudstack/cs_serviceoffer.py index 26a085b4abe..7a0177e6aed 100644 --- a/lib/ansible/modules/cloud/cloudstack/cs_serviceoffer.py +++ b/lib/ansible/modules/cloud/cloudstack/cs_serviceoffer.py @@ -374,19 +374,17 @@ class AnsibleCloudStackServiceOffering(AnsibleCloudStack): 'systemvmtype': 'system_vm_type', 'tags': 'storage_tags', } - self.service_offering = None def get_service_offering(self): - if not self.service_offering: - args = { - 'name': self.module.params.get('name'), - 'domainid': self.get_domain(key='id'), - 'issystem': self.module.params.get('is_system'), - 'systemvmtype': self.module.params.get('system_vm_type'), - } - service_offerings = self.query_api('listServiceOfferings', **args) - if service_offerings: - return service_offerings['serviceoffering'][0] + args = { + 'name': self.module.params.get('name'), + 'domainid': self.get_domain(key='id'), + 'issystem': self.module.params.get('is_system'), + 'systemvmtype': self.module.params.get('system_vm_type'), + } + service_offerings = self.query_api('listServiceOfferings', **args) + if service_offerings: + return service_offerings['serviceoffering'][0] def present_service_offering(self): service_offering = self.get_service_offering() @@ -395,12 +393,6 @@ class AnsibleCloudStackServiceOffering(AnsibleCloudStack): else: service_offering = self._update_offering(service_offering) - if service_offering: - service_offering = self.ensure_tags( - resource=service_offering, - resource_type='ServiceOffering' - ) - return service_offering def absent_service_offering(self): @@ -422,7 +414,7 @@ class AnsibleCloudStackServiceOffering(AnsibleCloudStack): required_params = [] if is_system and not system_vm_type: - required_params.add('system_vm_type') + required_params.append('system_vm_type') self.module.fail_on_missing_params(required_params=required_params) args = { diff --git a/test/integration/targets/cs_serviceoffer/tasks/system_vm_service_offering.yml b/test/integration/targets/cs_serviceoffer/tasks/system_vm_service_offering.yml index cbb49670cdb..d7a0adfd7f3 100644 --- a/test/integration/targets/cs_serviceoffer/tasks/system_vm_service_offering.yml +++ b/test/integration/targets/cs_serviceoffer/tasks/system_vm_service_offering.yml @@ -10,6 +10,26 @@ that: - so|success +- name: fail missing storage type and is_system + cs_serviceoffer: + name: System Offering for Ansible + cpu_number: 1 + cpu_speed: 500 + memory: 512 + host_tag: perf + storage_tag: perf + storage_type: shared + offer_ha: true + limit_cpu_usage: false + is_system: true + register: so + ignore_errors: true +- name: verify create system service offering in check mode + assert: + that: + - so|failed + - so.msg.startswith('missing required arguments:') + - name: create system service offering in check mode cs_serviceoffer: name: System Offering for Ansible