@@ -31,13 +31,15 @@ def get_proxmox_args():
31
31
subnet = dict (type = "str" , required = True ),
32
32
type = dict (type = "str" , choices = ['subnet' ], default = 'subnet' , required = False ),
33
33
vnet = dict (type = "str" , required = True ),
34
+ zone = dict (type = "str" , required = False ),
34
35
dhcp_dns_server = dict (type = "str" , required = False ),
35
36
dhcp_range = dict (
36
37
type = 'list' ,
37
38
elements = 'dict' ,
39
+ required = False ,
38
40
options = dict (
39
- start = dict (type = 'str' ),
40
- end = dict (type = 'str' )
41
+ start = dict (type = 'str' , required = True ),
42
+ end = dict (type = 'str' , required = True )
41
43
)
42
44
),
43
45
dnszoneprefix = dict (type = 'str' , required = False ),
@@ -55,6 +57,7 @@ def get_ansible_module():
55
57
argument_spec = module_args ,
56
58
required_if = [
57
59
('state' , 'present' , ['subnet' , 'type' , 'vnet' ]),
60
+ ('state' , 'update' , ['zone' , 'vnet' , 'subnet' ]),
58
61
]
59
62
)
60
63
@@ -80,7 +83,9 @@ def run(self):
80
83
}
81
84
82
85
if state == 'present' :
83
- self .subnet_present (force = force , ** subnet_params )
86
+ self .subnet_present (** subnet_params )
87
+ elif state == 'update' :
88
+ self .subnet_update (** subnet_params )
84
89
85
90
def get_dhcp_range (self ):
86
91
if self .params .get ('dhcp_range' ) is None :
@@ -106,6 +111,32 @@ def subnet_present(self, **subnet_params):
106
111
msg = f'Failed to create subnet. Rolling back all changes. : { e } '
107
112
)
108
113
114
+ def subnet_update (self , ** subnet_params ):
115
+ lock = subnet_params ['lock-token' ]
116
+ vnet_id = subnet_params ['vnet' ]
117
+ subnet_id = f"{ self .params ['zone' ]} -{ subnet_params ['subnet' ].replace ('/' , '-' )} "
118
+
119
+ subnet_params ['delete' ] = self .params .get ('delete' )
120
+ del subnet_params ['type' ]
121
+ del subnet_params ['subnet' ]
122
+
123
+ try :
124
+ vnet = getattr (self .proxmox_api .cluster ().sdn ().vnets (), vnet_id )
125
+ subnet = getattr (vnet ().subnets (), subnet_id )
126
+
127
+ subnet_params ['digest' ] = subnet .get ()['digest' ]
128
+
129
+ subnet .put (** subnet_params )
130
+ self .apply_sdn_changes_and_release_lock (lock = lock )
131
+ self .module .exit_json (
132
+ changed = True , subnet = subnet_id , msg = f'Updated subnet { subnet_id } '
133
+ )
134
+ except Exception as e :
135
+ self .rollback_sdn_changes_and_release_lock (lock = lock )
136
+ self .module .fail_json (
137
+ msg = f'Failed to update subnet. Rolling back all changes. : { e } '
138
+ )
139
+
109
140
110
141
def main ():
111
142
module = get_ansible_module ()
0 commit comments