Пример #1
0
def remove_failed_deploy_resources(deploy_name, bundle_name,
                                   clean_only_resources=None,
                                   clean_only_types=None,
                                   excluded_resources=None,
                                   excluded_types=None):
    output = load_failed_deploy_output(bundle_name, deploy_name)
    _LOG.info('Failed output file was loaded successfully')

    # TODO make filter chain
    if clean_only_resources:
        output = dict((k, v) for (k, v) in output.items() if
                      v['resource_name'] in clean_only_resources)

    if excluded_resources:
        output = dict((k, v) for (k, v) in output.items() if
                      v['resource_name'] not in excluded_resources)

    if clean_only_types:
        output = dict((k, v) for (k, v) in output.items() if
                      v['resource_meta']['resource_type'] in clean_only_types)

    if excluded_types:
        output = dict((k, v) for (k, v) in output.items() if
                      v['resource_meta'][
                          'resource_type'] not in excluded_types)

    # sort resources with priority
    resources_list = list(output.items())
    resources_list.sort(key=cmp_to_key(_compare_clean_resources))

    _LOG.info('Going to clean AWS resources')
    clean_resources(resources_list)
    # remove output from bucket
    remove_failed_deploy_output(bundle_name, deploy_name)
Пример #2
0
def continue_deployment_resources(deploy_name,
                                  bundle_name,
                                  deploy_only_resources=None,
                                  deploy_only_types=None,
                                  excluded_resources=None,
                                  excluded_types=None,
                                  replace_output=False):
    output = load_failed_deploy_output(bundle_name, deploy_name)
    _LOG.info('Failed output file was loaded successfully')

    resources = resolve_meta(load_meta_resources(bundle_name))
    _LOG.debug('Names were resolved')
    _LOG.debug(prettify_json(resources))

    # TODO make filter chain
    if deploy_only_resources:
        resources = dict((k, v) for (k, v) in resources.items()
                         if k in deploy_only_resources)

    if excluded_resources:
        resources = dict((k, v) for (k, v) in resources.items()
                         if k not in excluded_resources)
    if deploy_only_types:
        resources = dict((k, v) for (k, v) in resources.items()
                         if v['resource_type'] in deploy_only_types)

    if excluded_types:
        resources = dict((k, v) for (k, v) in resources.items()
                         if v['resource_type'] not in excluded_types)

    # sort resources with priority
    resources_list = list(resources.items())
    resources_list.sort(key=cmp_to_key(_compare_deploy_resources))

    success, updated_output = continue_deploy_resources(resources_list, output)
    _LOG.info('AWS resources were deployed successfully')
    if success:
        # apply dynamic changes that uses ARNs
        _LOG.info('Going to apply dynamic changes')
        _apply_dynamic_changes(resources, updated_output)
        _LOG.info('Dynamic changes were applied successfully')

    # remove failed output from bucket
    remove_failed_deploy_output(bundle_name, deploy_name)
    _LOG.info('Going to create deploy output')
    create_deploy_output(bundle_name=bundle_name,
                         deploy_name=deploy_name,
                         output=updated_output,
                         success=success,
                         replace_output=replace_output)
    return success