Best Python code snippet using localstack_python
redshift_cross_region_snapshots.py
Source:redshift_cross_region_snapshots.py  
...99                ClusterIdentifier=self.cluster_name,100                DestinationRegion=destination_region,101                RetentionPeriod=retention_period,102            )103    def disable_snapshot_copy(self):104        self.client.disable_snapshot_copy(105            ClusterIdentifier=self.cluster_name106        )107    def modify_snapshot_copy_retention_period(self, retention_period):108        self.client.modify_snapshot_copy_retention_period(109            ClusterIdentifier=self.cluster_name,110            RetentionPeriod=retention_period111        )112def requesting_unsupported_modifications(actual, requested):113    if (actual['SnapshotCopyGrantName'] != requested['snapshot_copy_grant'] or114            actual['DestinationRegion'] != requested['destination_region']):115        return True116    return False117def needs_update(actual, requested):118    if actual['RetentionPeriod'] != requested['snapshot_retention_period']:119        return True120    return False121def run_module():122    argument_spec = ec2_argument_spec()123    argument_spec.update(124        dict(125            cluster_name=dict(type='str', required=True, aliases=['cluster']),126            state=dict(type='str', choices=['present', 'absent'], default='present'),127            region=dict(type='str', required=True, aliases=['source']),128            destination_region=dict(type='str', required=True, aliases=['destination']),129            snapshot_copy_grant=dict(type='str', aliases=['copy_grant']),130            snapshot_retention_period=dict(type='int', required=True, aliases=['retention_period']),131        )132    )133    module = AnsibleAWSModule(134        argument_spec=argument_spec,135        supports_check_mode=True136    )137    result = dict(138        changed=False,139        message=''140    )141    connection = module.client('redshift')142    snapshot_controller = SnapshotController(client=connection,143                                             cluster_name=module.params.get('cluster_name'))144    current_config = snapshot_controller.get_cluster_snapshot_copy_status()145    if current_config is not None:146        if module.params.get('state') == 'present':147            if requesting_unsupported_modifications(current_config, module.params):148                message = 'Cannot modify destination_region or grant_name. ' \149                          'Please disable cross-region snapshots, and re-run.'150                module.fail_json(msg=message, **result)151            if needs_update(current_config, module.params):152                result['changed'] = True153                if not module.check_mode:154                    snapshot_controller.modify_snapshot_copy_retention_period(155                        module.params.get('snapshot_retention_period')156                    )157        else:158            result['changed'] = True159            if not module.check_mode:160                snapshot_controller.disable_snapshot_copy()161    else:162        if module.params.get('state') == 'present':163            result['changed'] = True164            if not module.check_mode:165                snapshot_controller.enable_snapshot_copy(module.params.get('destination_region'),166                                                         module.params.get('snapshot_copy_grant'),167                                                         module.params.get('snapshot_retention_period'))168    module.exit_json(**result)169def main():170    run_module()171if __name__ == '__main__':...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
