26
26
27
27
def get_proxmox_args ():
28
28
return dict (
29
- state = dict (type = "str" , choices = ["present" , "absent" , "update" ], required = False ),
29
+ state = dict (type = "str" , choices = ["present" , "absent" , "update" ], default = 'present' , required = False ),
30
30
force = dict (type = "bool" , default = False , required = False ),
31
31
vnet = dict (type = "str" , required = False ),
32
32
zone = dict (type = "str" , required = False ),
@@ -46,6 +46,9 @@ def get_ansible_module():
46
46
return AnsibleModule (
47
47
argument_spec = module_args ,
48
48
required_if = [
49
+ ('state' , 'present' , ['vnet' , 'zone' ]),
50
+ ('state' , 'update' , ['vnet' ]),
51
+ ('state' , 'absent' , ['vnet' ])
49
52
]
50
53
)
51
54
@@ -74,9 +77,7 @@ def run(self):
74
77
elif state == 'update' :
75
78
self .vnet_update (** vnet_params )
76
79
elif state == 'absent' :
77
- self .vnet_absent (
78
-
79
- )
80
+ self .vnet_absent (vnet_params ['vnet' ], vnet_params ['lock-token' ])
80
81
81
82
def get_vnet_detail (self ):
82
83
try :
@@ -140,9 +141,28 @@ def vnet_update(self, **vnet_params):
140
141
msg = f'Failed to update vnet - { e } . Rolling back all changes.'
141
142
)
142
143
143
- def vnet_absent (self ):
144
- pass
144
+ def vnet_absent (self , vnet_name , lock ):
145
+ vnet_params = {'vnet' : vnet_name , 'lock-token' : lock }
146
+ available_vnets = [vnet ['vnet' ] for vnet in self .get_vnet_detail ()]
145
147
148
+ if vnet_name not in available_vnets :
149
+ self .module .exit_json (
150
+ changed = False , vnet = vnet_name , msg = f"vnet already doesn't exist { vnet_name } "
151
+ )
152
+ else :
153
+ try :
154
+ vnet = getattr (self .proxmox_api .cluster ().sdn ().vnets (), vnet_name )
155
+ vnet .delete (** vnet_params )
156
+ self .apply_sdn_changes_and_release_lock (lock )
157
+ self .module .exit_json (
158
+ changed = True , msg = f'Deleted vnet { vnet_name } '
159
+ )
160
+ except Exception as e :
161
+ self .module .warn (f'Failed to update vnet - { e } ' )
162
+ self .rollback_sdn_changes_and_release_lock (lock )
163
+ self .module .fail_json (
164
+ msg = f'Failed to delete vnet - { e } . Rolling back all changes.'
165
+ )
146
166
147
167
def main ():
148
168
module = get_ansible_module ()
0 commit comments