Пример #1
0
def main():
    module = AnsibleModule(
        argument_spec=dict(server_url=dict(required=True),
                           username=dict(required=True, no_log=True),
                           password=dict(required=True, no_log=True),
                           verify_ssl=dict(type='bool', default=True),
                           name=dict(required=True),
                           organization=dict(required=True),
                           from_environment=dict(),
                           version=dict(),
                           to_environment=dict(required=True),
                           force=dict(type='bool'),
                           force_yum_metadata_regeneration=dict(type='bool')),
        required_one_of=[['from_environment', 'version']],
        mutually_exclusive=[['from_environment', 'version']],
        supports_check_mode=True,
    )

    if has_import_error:
        module.fail_json(msg=import_error_msg)

    set_task_timeout(3600000)  # 60 minutes

    server_url = module.params['server_url']
    username = module.params['username']
    password = module.params['password']
    verify_ssl = module.params['verify_ssl']
    name = module.params['name']
    organization = module.params['organization']
    from_environment = module.params['from_environment']
    version = module.params['version']
    to_environment = module.params['to_environment']
    force = module.params['force']
    force_yum_metadata_regeneration = module.params[
        'force_yum_metadata_regeneration']

    create_server(server_url, (username, password), verify_ssl)
    ping_server(module)

    try:
        changed = content_view_promote(
            module,
            name,
            organization,
            to_environment,
            from_environment=from_environment,
            version=version,
            force=force,
            force_yum_metadata_regeneration=force_yum_metadata_regeneration)
        module.exit_json(changed=changed)
    except Exception as e:
        module.fail_json(msg=e)
Пример #2
0
def main():
    module = AnsibleModule(
        argument_spec=dict(
            server_url=dict(required=True),
            username=dict(required=True, no_log=True),
            password=dict(required=True, no_log=True),
            verify_ssl=dict(type='bool', default=True),
            organization=dict(required=True),
            manifest_path=dict(),
            state=dict(default='present',
                       choices=['absent', 'present', 'refreshed']),
            redhat_repository_url=dict(),
        ),
        required_if=[
            ['state', 'present', ['manifest_path']],
        ],
        supports_check_mode=True,
    )

    if has_import_error:
        module.fail_json(msg=import_error_msg)

    set_task_timeout(300000)  # 5 minutes

    server_url = module.params['server_url']
    username = module.params['username']
    password = module.params['password']
    verify_ssl = module.params['verify_ssl']
    organization = module.params['organization']
    manifest_path = module.params['manifest_path']
    redhat_repository_url = module.params['redhat_repository_url']
    state = module.params['state']

    validate_params(module, state=state, manifest_path=manifest_path)

    create_server(server_url, (username, password), verify_ssl)
    ping_server(module)

    try:
        changed = manifest(module,
                           organization,
                           state,
                           manifest_path,
                           redhat_repository_url=redhat_repository_url)
        module.exit_json(changed=changed)
    except Exception as e:
        module.fail_json(msg=e)
def main():
    module = AnsibleModule(
        argument_spec=dict(
            server_url=dict(required=True),
            username=dict(required=True, no_log=True),
            password=dict(required=True, no_log=True),
            verify_ssl=dict(type='bool', default=True),
            content_view=dict(required=True),
            organization=dict(required=True),
            state=dict(default='present', choices=['present', 'absent']),
            version=dict(),
            lifecycle_environments=dict(type='list', default=['Library']),
            force=dict(type='bool', aliases=['force_promote'], default=False),
            force_yum_metadata_regeneration=dict(type='bool', default=False),
            synchronous=dict(type='bool', default=True),
            current_lifecycle_environment=dict(),
        ),
        mutually_exclusive=[['current_lifecycle_environment', 'version']],
        supports_check_mode=True,
    )

    if has_import_error:
        module.fail_json(msg=import_error_msg)

    set_task_timeout(3600000)  # 60 minutes

    params_dict = dict([(k, v) for (k, v) in module.params.items()
                        if v is not None])

    server_url = module.params['server_url']
    username = module.params['username']
    password = module.params['password']
    verify_ssl = module.params['verify_ssl']
    state = module.params['state']

    try:
        create_server(server_url, (username, password), verify_ssl)
    except Exception as e:
        module.fail_json(msg="Failed to connect to Foreman server: %s " % e)

    ping_server(module)

    organization = find_organization(module, params_dict['organization'])
    content_view = find_content_view(module,
                                     name=params_dict['content_view'],
                                     organization=organization)

    if 'current_lifecycle_environment' in params_dict:
        params_dict[
            'current_lifecycle_environment'] = find_lifecycle_environment(
                module,
                name=params_dict['current_lifecycle_environment'],
                organization=organization)
        content_view_version = find_content_view_version(
            module,
            content_view,
            environment=params_dict['current_lifecycle_environment'])
    elif 'version' in params_dict:
        content_view_version = find_content_view_version(
            module,
            content_view,
            version=params_dict['version'],
            failsafe=True)
    else:
        content_view_version = None

    changed = False
    if state == 'present':
        if content_view_version is None:
            kwargs = dict(data=dict())
            if 'description' in params_dict:
                kwargs['data'].update(description=params_dict['description'])
            if 'force_metadata_regeneration' in params_dict:
                kwargs['data'].update(
                    force_yum_metadata_regeneration=params_dict[
                        'force_metadata_regeneration'])
            if 'version' in params_dict:
                kwargs['data'].update(
                    major=map(int,
                              str(params_dict['version']).split('.'))[0])
                kwargs['data'].update(
                    minor=map(int,
                              str(params_dict['version']).split('.'))[1])

            response = content_view.publish(params_dict['synchronous'],
                                            **kwargs)
            changed = True
            content_view_version = ContentViewVersion(
                id=response['output']['content_view_version_id']).read()

        if 'lifecycle_environments' in params_dict:
            lifecycle_environments = find_lifecycle_environments(
                module,
                names=params_dict['lifecycle_environments'],
                organization=organization)
            le_changed = promote_content_view_version(
                module,
                content_view_version,
                organization,
                lifecycle_environments,
                params_dict['synchronous'],
                force=params_dict['force'],
                force_yum_metadata_regeneration=params_dict[
                    'force_yum_metadata_regeneration'])
    elif state == 'absent':
        changed = naildown_entity_state(ContentViewVersion, dict(),
                                        content_view_version, state, module)

    module.exit_json(changed=changed or le_changed)