Skip to content

Commit ba37695

Browse files
JanaHochThulium-Drake
authored andcommitted
proxmox_vnet: Added vnet_update()
1 parent f2a6b6d commit ba37695

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed

plugins/modules/proxmox_vnet.py

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ def get_proxmox_args():
3535
lock_token=dict(type="str", required=False),
3636
tag=dict(type="int", required=False),
3737
type=dict(type="str", choices=['vnet'], required=False),
38-
vlanaware=dict(type="str", required=False)
38+
vlanaware=dict(type="str", required=False),
39+
delete=dict(type="str", required=False)
3940
)
4041

4142
def get_ansible_module():
@@ -71,9 +72,7 @@ def run(self):
7172
if state == 'present':
7273
self.vnet_present(force=force, **vnet_params)
7374
elif state == 'update':
74-
self.vnet_update(
75-
76-
)
75+
self.vnet_update(**vnet_params)
7776
elif state == 'absent':
7877
self.vnet_absent(
7978

@@ -109,13 +108,37 @@ def vnet_present(self, force, **vnet_args):
109108
changed=True, vnet=vnet, msg=f'Create new vnet {vnet}'
110109
)
111110
except Exception as e:
111+
self.module.warn(f'Failed to create vnet - {e}')
112112
self.rollback_sdn_changes_and_release_lock(lock)
113113
self.module.fail_json(
114114
msg=f'Failed to create vnet - {e}. Rolling back all changes.'
115115
)
116116

117-
def vnet_update(self):
118-
pass
117+
def vnet_update(self, **vnet_params):
118+
available_vnets = {vnet['vnet']: vnet['digest'] for vnet in self.get_vnet_detail()}
119+
lock = vnet_params['lock-token']
120+
vnet_name = vnet_params['vnet']
121+
122+
if vnet_name not in available_vnets.keys():
123+
self.vnet_present(force=False, **vnet_params)
124+
else:
125+
vnet_params['digest'] = available_vnets[vnet_name]
126+
vnet_params['delete'] = self.params.get('delete')
127+
del vnet_params['type']
128+
129+
try:
130+
vnet = getattr(self.proxmox_api.cluster().sdn().vnets(), vnet_name)
131+
vnet.put(**vnet_params)
132+
self.apply_sdn_changes_and_release_lock(lock)
133+
self.module.exit_json(
134+
changed=True, vnet=vnet_name, msg=f'updated vnet {vnet_name}'
135+
)
136+
except Exception as e:
137+
self.module.warn(f'Failed to update vnet - {e}')
138+
self.rollback_sdn_changes_and_release_lock(lock)
139+
self.module.fail_json(
140+
msg=f'Failed to update vnet - {e}. Rolling back all changes.'
141+
)
119142

120143
def vnet_absent(self):
121144
pass

0 commit comments

Comments
 (0)