1+ ##################
2+ # Waiting for scaleway merge fix https://github.com/scaleway/ansible/pull/47
3+ ##################
4+
5+
16#!/usr/bin/python
27# -*- coding: utf-8 -*-
38# Copyright: (c) 2023, Scaleway
2530 state:
2631 description:
2732 - Indicate desired state of the target.
28- - C(present) will create the resource.
33+ - C(present) will create the resource, or update if 'pool_id' is present
2934 - C(absent) will delete the resource, if it exists.
3035 default: present
3136 choices: ["present", "absent"]
137142 autohealing: true
138143 root_volume_type: "aaaaaa"
139144 public_ip_disabled: true
145+
146+ - name: Update a pool
147+ scaleway.scaleway.scaleway_k8s_pool:
148+ access_key: "{{ scw_access_key }}"
149+ secret_key: "{{ scw_secret_key }}"
150+ cluster_id: "aaaaaa"
151+ pool_id: "my_pool"
152+ size: 3
140153"""
141154
142155RETURN = r"""
201214def create (module : AnsibleModule , client : "Client" ) -> None :
202215 api = K8SV1API (client )
203216
204- id = module .params .pop ("id" , None )
217+ obj = lambda : None
218+ obj .stop = None
219+ obj .timeout = 600
220+ obj .min_delay = 1
221+ obj .max_delay = 30
222+
223+ id = module .params ["pool_id" ]
205224 if id is not None :
206- resource = api .get_pool (pool_id = id )
225+ resource = api .get_pool (pool_id = id , region = module . params [ "region" ] )
207226
208227 if module .check_mode :
209228 module .exit_json (changed = False )
210229
211- module .exit_json (changed = False , data = resource )
230+ not_none_params = {
231+ key : value for key , value in module .params .items () if value is not None
232+ }
233+ not_none_params .pop ("cluster_id" )
234+ resource = api .update_pool (** not_none_params )
235+ resource = api .wait_for_pool (pool_id = resource .id , options = obj , region = module .params ["region" ])
236+
237+ del resource .upgrade_policy
238+ module .exit_json (changed = True , data = vars (resource ))
212239
213240 if module .check_mode :
214241 module .exit_json (changed = True )
@@ -217,15 +244,16 @@ def create(module: AnsibleModule, client: "Client") -> None:
217244 key : value for key , value in module .params .items () if value is not None
218245 }
219246 resource = api .create_pool (** not_none_params )
220- resource = api .wait_for_pool (pool_id = resource .id , region = module .params ["region" ])
247+ resource = api .wait_for_pool (pool_id = resource .id , options = obj , region = module .params ["region" ])
221248
222- module .exit_json (changed = True , data = resource .__dict__ )
249+ del resource .upgrade_policy
250+ module .exit_json (changed = True , data = vars (resource ))
223251
224252
225253def delete (module : AnsibleModule , client : "Client" ) -> None :
226254 api = K8SV1API (client )
227255
228- id = module .params .pop ("id " , None )
256+ id = module .params .pop ("pool_id " , None )
229257 name = module .params .pop ("name" , None )
230258
231259 if id is not None :
@@ -276,35 +304,35 @@ def main() -> None:
276304 argument_spec .update (scaleway_waitable_resource_argument_spec ())
277305 argument_spec .update (
278306 state = dict (type = "str" , default = "present" , choices = ["absent" , "present" ]),
279- pool_id = dict (type = "str" ),
307+ pool_id = dict (type = "str" , default = None ),
280308 cluster_id = dict (
281309 type = "str" ,
282310 required = True ,
283311 ),
284312 node_type = dict (
285313 type = "str" ,
286- required = True ,
314+ required = False ,
287315 ),
288316 autoscaling = dict (
289317 type = "bool" ,
290- required = True ,
318+ required = False ,
291319 ),
292320 size = dict (
293321 type = "int" ,
294- required = True ,
322+ required = False ,
295323 ),
296324 container_runtime = dict (
297325 type = "str" ,
298- required = True ,
326+ required = False ,
299327 choices = ["unknown_runtime" , "docker" , "containerd" , "crio" ],
300328 ),
301329 autohealing = dict (
302330 type = "bool" ,
303- required = True ,
331+ required = False ,
304332 ),
305333 root_volume_type = dict (
306334 type = "str" ,
307- required = True ,
335+ required = False ,
308336 choices = ["default_volume_type" , "l_ssd" , "b_ssd" , "sbs_5k" , "sbs_15k" ],
309337 ),
310338 region = dict (
@@ -351,13 +379,16 @@ def main() -> None:
351379 ),
352380 public_ip_disabled = dict (
353381 type = "bool" ,
354- required = True ,
382+ required = False ,
355383 ),
356384 )
357385
358386 module = AnsibleModule (
359387 argument_spec = argument_spec ,
360388 required_one_of = (["pool_id" , "name" ],),
389+ required_by = {
390+ 'name' : ('node_type' ,'root_volume_type' ,'autohealing' ,'container_runtime' ,'size' ,'autoscaling' ,'public_ip_disabled' ,),
391+ },
361392 supports_check_mode = True ,
362393 )
363394
0 commit comments