@@ -35,7 +35,8 @@ def get_proxmox_args():
35
35
lock_token = dict (type = "str" , required = False ),
36
36
tag = dict (type = "int" , required = False ),
37
37
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 )
39
40
)
40
41
41
42
def get_ansible_module ():
@@ -71,9 +72,7 @@ def run(self):
71
72
if state == 'present' :
72
73
self .vnet_present (force = force , ** vnet_params )
73
74
elif state == 'update' :
74
- self .vnet_update (
75
-
76
- )
75
+ self .vnet_update (** vnet_params )
77
76
elif state == 'absent' :
78
77
self .vnet_absent (
79
78
@@ -109,13 +108,37 @@ def vnet_present(self, force, **vnet_args):
109
108
changed = True , vnet = vnet , msg = f'Create new vnet { vnet } '
110
109
)
111
110
except Exception as e :
111
+ self .module .warn (f'Failed to create vnet - { e } ' )
112
112
self .rollback_sdn_changes_and_release_lock (lock )
113
113
self .module .fail_json (
114
114
msg = f'Failed to create vnet - { e } . Rolling back all changes.'
115
115
)
116
116
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
+ )
119
142
120
143
def vnet_absent (self ):
121
144
pass
0 commit comments