def main()

in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_rds_backup.py [0:0]


def main():
    argument_spec = common_argument_spec()
    argument_spec.update(dict(
        state=dict(default='present', choices=['present', 'absent']),
        db_instance_id=dict(type='str', aliases=['instance_id'], required=True),
        db_name=dict(type='list', elements='str'),
        backup_id=dict(type='list', elements='str'),
        backup_method=dict(type='str', default='Physical'),
        backup_strategy=dict(type='str', default="instance"),
        backup_type=dict(type='str', default='Auto')
    ))

    module = AnsibleModule(argument_spec=argument_spec)
    rds = rds_connect(module)

    if HAS_FOOTMARK is False:
        module.fail_json(msg="Footmark required for this module")

    # Get values of variable
    state = module.params['state']
    backup_id = module.params['backup_id']
    db_name = module.params['db_name']
    if backup_id:
        module.params['backup_id'] = ','.join(backup_id)
    if db_name:
        module.params['db_name'] = ','.join(db_name)

    if state == 'absent':
        try:
            # changed = rds.delete_backup(**module.params)
            module.exit_json(changed=True, backup={})
        except Exception as e:
            module.fail_json(msg=str("Unable to delete backup error:{0}".format(e)))

    if state == 'present':
        try:
            kwargs_filter = {
                    "backup_status": "Success",
                    "db_instance_id": module.params["db_instance_id"]
                }
            backup = rds.describe_backups(**kwargs_filter)
            original_backups_count = len(backup)
            create_backup = rds_create_backup(module, rds)
            time_sleep = 10
            i = 1
            create = False
            while time_sleep * i < time_sleep * 6 *10:
                backup_now = rds.describe_backups(**kwargs_filter)
                if len(backup_now) > original_backups_count:
                    create = True
                    break
                time.sleep(10)
                i += 1
            if create:
                module.exit_json(changed=True, backup=create_backup)
            else:
                module.fail_json(msg=str("Unable to create backup error"))
        except Exception as e:
            module.fail_json(msg=str("Unable to create backup error:{0}".format(e)))