@@ -240,6 +240,7 @@ def __init__(self, module):
240240 self .public_loadbalancer = self ._get_param ('public_loadbalancer' )
241241 self .ip_ranges = self ._get_param ('ip_ranges' )
242242 self .persist = self ._get_param ('persist' )
243+ self .force = self ._get_param ('force' )
243244
244245 self .state = self ._get_param ('state' )
245246 self .wait = self ._get_param ('wait' )
@@ -251,30 +252,33 @@ def __init__(self, module):
251252
252253 # Initialize internal values
253254 self .target = None
255+ self .env_crn = None
254256
255257 # Execute logic process
256258 self .process ()
257259
258260 @CdpModule ._Decorators .process_debug
259261 def process (self ):
260- self .name = self .cdpy .environments .resolve_environment_crn (self .name )
261- self .target = self .cdpy .df .describe_environment (env_crn = self .name )
262+ self .env_crn = self .cdpy .environments .resolve_environment_crn (self .name )
263+ if self .env_crn is not None :
264+ self .target = self .cdpy .df .describe_environment (env_crn = self .name )
262265
263266 if self .target is not None :
264267 # DF Database Entry exists
265268 if self .state in ['absent' ]:
266269 if self .module .check_mode :
267270 self .service = self .target
268271 else :
269- if self .target ['status' ]['state' ] != 'NOT_ENABLED' :
272+ if self .target ['status' ]['state' ] in self . cdpy . sdk . REMOVABLE_STATES :
270273 self .service = self .cdpy .df .disable_environment (
271- env_crn = self .name ,
272- persist = self .persist
274+ env_crn = self .env_crn ,
275+ persist = self .persist ,
276+ force = self .force
273277 )
274- if self .wait :
275- self .service = self ._wait_for_disabled ()
276- else :
277- self .service = self .target
278+ if self .wait :
279+ self .service = self ._wait_for_disabled ()
280+ else :
281+ self .service = self .cdpy . df . describe_environment ( env_crn = self . name )
278282 elif self .state in ['present' ]:
279283 self .module .warn (
280284 "Dataflow Service already enabled and configuration validation and reconciliation is not supported;" +
@@ -288,33 +292,36 @@ def process(self):
288292 # Environment does not have DF database entry, and probably doesn't exist
289293 if self .state in ['absent' ]:
290294 self .module .log (
291- "Dataflow Service %s already disabled in CDP Environment" % self .name )
295+ "Dataflow Service %s already disabled in CDP Environment %s " % ( self .name , self . env_crn ) )
292296 elif self .state in ['present' ]:
293- # create DF Service
294- if not self .module .check_mode :
295- self .service = self .cdpy .df .enable_environment (
296- env_crn = self .name ,
297- authorized_ips = self .ip_ranges ,
298- min_nodes = self .nodes_min ,
299- max_nodes = self .nodes_max ,
300- enable_public_ip = self .public_loadbalancer
301- )
302- if self .wait :
303- self .service = self ._wait_for_enabled ()
297+ if self .env_crn is None :
298+ self .module .fail_json (msg = "Could not retrieve CRN for CDP Environment %s" % self .env )
299+ else :
300+ # create DF Service
301+ if not self .module .check_mode :
302+ self .service = self .cdpy .df .enable_environment (
303+ env_crn = self .env_crn ,
304+ authorized_ips = self .ip_ranges ,
305+ min_nodes = self .nodes_min ,
306+ max_nodes = self .nodes_max ,
307+ enable_public_ip = self .public_loadbalancer
308+ )
309+ if self .wait :
310+ self .service = self ._wait_for_enabled ()
304311 else :
305312 self .module .fail_json (
306313 msg = "State %s is not valid for this module" % self .state )
307314
308315 def _wait_for_enabled (self ):
309316 return self .cdpy .sdk .wait_for_state (
310- describe_func = self .cdpy .df .describe_environment , params = dict (env_crn = self .name ),
317+ describe_func = self .cdpy .df .describe_environment , params = dict (env_crn = self .env_crn ),
311318 field = ['status' , 'state' ], state = self .cdpy .sdk .STARTED_STATES ,
312319 delay = self .delay , timeout = self .timeout
313320 )
314321
315322 def _wait_for_disabled (self ):
316323 return self .cdpy .sdk .wait_for_state (
317- describe_func = self .cdpy .df .describe_environment , params = dict (env_crn = self .name ), state = None ,
324+ describe_func = self .cdpy .df .describe_environment , params = dict (env_crn = self .env_crn ), field = None ,
318325 delay = self .delay , timeout = self .timeout
319326 )
320327
@@ -331,6 +338,7 @@ def main():
331338 persist = dict (required = False , type = 'bool' , default = False ),
332339 state = dict (required = False , type = 'str' , choices = ['present' , 'absent' ],
333340 default = 'present' ),
341+ force = dict (required = False , type = 'bool' , default = False , aliases = ['force_delete' ]),
334342 wait = dict (required = False , type = 'bool' , default = True ),
335343 delay = dict (required = False , type = 'int' , aliases = ['polling_delay' ], default = 15 ),
336344 timeout = dict (required = False , type = 'int' , aliases = ['polling_timeout' ], default = 3600 )
0 commit comments