Skip to content

Commit e1caf60

Browse files
committed
cs_network_offering: add tags support
1 parent e6e11e4 commit e1caf60

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

plugins/modules/cs_network_offering.py

+25-9
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,14 @@
119119
description:
120120
- Whether the offering is meant to be used for VPC or not.
121121
type: bool
122+
tags:
123+
description:
124+
- List of tags. Tags are a list of dictionaries having keys I(key) and I(value).
125+
- "To delete all tags, set an empty list e.g. I(tags: [])."
126+
type: list
127+
elements: dict
128+
aliases: [ tag ]
129+
version_added: 2.2.0
122130
extends_documentation_fragment:
123131
- ngine_io.cloudstack.cloudstack
124132
'''
@@ -213,6 +221,12 @@
213221
returned: success
214222
type: bool
215223
sample: false
224+
tags:
225+
description: List of resource tags associated with the network offering.
226+
returned: success
227+
type: list
228+
sample: '[ { "key": "foo", "value": "bar" } ]'
229+
version_added: 2.2.0
216230
'''
217231

218232
from ansible.module_utils.basic import AnsibleModule
@@ -270,13 +284,17 @@ def get_network_offering(self):
270284

271285
return self.network_offering
272286

273-
def create_or_update(self):
287+
def present(self):
274288
network_offering = self.get_network_offering()
275289

276290
if not network_offering:
277291
network_offering = self.create_network_offering()
278292

279-
return self.update_network_offering(network_offering=network_offering)
293+
if network_offering:
294+
network_offering = self.ensure_tags(resource=network_offering, resource_type='NetworkOffering')
295+
network_offering = self.update_network_offering(network_offering=network_offering)
296+
297+
return network_offering
280298

281299
def create_network_offering(self):
282300
network_offering = None
@@ -320,7 +338,7 @@ def create_network_offering(self):
320338

321339
return network_offering
322340

323-
def delete_network_offering(self):
341+
def absent(self):
324342
network_offering = self.get_network_offering()
325343

326344
if network_offering:
@@ -331,9 +349,6 @@ def delete_network_offering(self):
331349
return network_offering
332350

333351
def update_network_offering(self, network_offering):
334-
if not network_offering:
335-
return network_offering
336-
337352
args = {
338353
'id': network_offering['id'],
339354
'state': self.module.params.get('state'),
@@ -397,6 +412,7 @@ def main():
397412
specify_ip_ranges=dict(type='bool'),
398413
specify_vlan=dict(type='bool'),
399414
for_vpc=dict(type='bool'),
415+
tags=dict(type='list', elements='dict', aliases=['tag']),
400416
))
401417

402418
module = AnsibleModule(
@@ -408,10 +424,10 @@ def main():
408424
acs_network_offering = AnsibleCloudStackNetworkOffering(module)
409425

410426
state = module.params.get('state')
411-
if state in ['absent']:
412-
network_offering = acs_network_offering.delete_network_offering()
427+
if state == "absent":
428+
network_offering = acs_network_offering.absent()
413429
else:
414-
network_offering = acs_network_offering.create_or_update()
430+
network_offering = acs_network_offering.present()
415431

416432
result = acs_network_offering.get_result(network_offering)
417433

0 commit comments

Comments
 (0)