133133    default: 3600 
134134    aliases: 
135135      - polling_timeout 
136+   raz: 
137+     description: 
138+       - Flag indicating if Ranger RAZ fine grained access should be enabled for the datalake 
139+     type: bool 
140+     required: False 
141+     default: False 
136142extends_documentation_fragment: 
137143  - cloudera.cloud.cdp_sdk_options 
138144  - cloudera.cloud.cdp_auth_options 
209215      sample: 
210216        - AWS 
211217        - AZURE 
218+     enableRangerRaz: 
219+       description: Whether or not RAZ is enabled 
220+       returned: always 
221+       type: bool 
212222    clouderaManager: 
213223      description: The Cloudera Manager details. 
214224      returned: when supported 
@@ -394,6 +404,7 @@ def __init__(self, module):
394404        self .delay  =  self ._get_param ('delay' )
395405        self .timeout  =  self ._get_param ('timeout' )
396406        self .force  =  self ._get_param ('force' )
407+         self .raz  =  self ._get_param ("raz" )
397408
398409        # Initialize the return values 
399410        self .datalake  =  dict ()
@@ -473,7 +484,7 @@ def process(self):
473484    def  create_datalake (self , environment ):
474485        self ._validate_datalake_name ()
475486
476-         payload  =  self ._configure_payload ()
487+         payload  =  self ._configure_payload (environment )
477488
478489        if  environment ['cloudPlatform' ] ==  'AWS' :
479490            if  self .instance_profile  is  None  or  self .storage  is  None :
@@ -525,7 +536,7 @@ def delete_datalake(self):
525536                timeout = self .timeout 
526537            )
527538
528-     def  _configure_payload (self ):
539+     def  _configure_payload (self ,  environment ):
529540        payload  =  dict (
530541            datalakeName = self .name ,
531542            environmentName = self .environment ,
@@ -537,6 +548,14 @@ def _configure_payload(self):
537548        if  self .scale :
538549            payload .update (scale = self .scale )
539550
551+         if  self .raz :
552+             if  environment ['cloudPlatform' ] ==  'AWS'  or  environment ['cloudPlatform' ] ==  'AZURE' :
553+                 payload .update (enableRangerRaz = self .raz )
554+             else :
555+                 self .module .fail_json (msg = 'GCP Datalakes do not currently support RAZ' )
556+         else :
557+             payload .update (enableRangerRaz = self .raz )
558+ 
540559        if  self .tags  is  not None :
541560            payload ['tags' ] =  list ()
542561            for  k  in  self .tags :
@@ -576,6 +595,12 @@ def _reconcile_existing_state(self, existing):
576595                             "need to change the tags, explicitly delete " 
577596                             "and recreate the Datalake." )
578597
598+         if  self .raz :
599+             self .module .warn ("Updating an existing Datalake's 'enableRangerRaz' " 
600+                              "directly is not supported at this time. If you " 
601+                              "need to change the enableRangerRaz, explicitly delete " 
602+                              "and recreate the Datalake." )
603+ 
579604        return  mismatched 
580605
581606    def  _validate_datalake_name (self ):
@@ -603,7 +628,8 @@ def main():
603628            force = dict (required = False , type = 'bool' , default = False ),
604629            wait = dict (required = False , type = 'bool' , default = True ),
605630            delay = dict (required = False , type = 'int' , aliases = ['polling_delay' ], default = 15 ),
606-             timeout = dict (required = False , type = 'int' , aliases = ['polling_timeout' ], default = 3600 )
631+             timeout = dict (required = False , type = 'int' , aliases = ['polling_timeout' ], default = 3600 ),
632+             raz = dict (required = False , type = "bool" , default = False )
607633        ),
608634        supports_check_mode = True 
609635    )
0 commit comments