Exemple #1
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        user=dict(type='str', required=True),
        state=dict(type='str',
                   choices=['present', 'absent'],
                   required=False,
                   default='present'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    user = params['user']
    state = params['state']

    session = common_koji.get_session(profile)

    try:
        cgs = list_cgs(session)
        result = ensure_cg(session, user, name, state, cgs, check_mode)
    except UnknownCGsError:
        if check_mode:
            msg = 'check mode does not work without listCGs'
            result = {'changed': False, 'msg': msg}
        else:
            result = ensure_unknown_cg(session, user, name, state)

    module.exit_json(**result)
Exemple #2
0
def run_module():
    module_args = dict(
        koji=dict(),
        name=dict(required=True),
        state=dict(choices=['present', 'absent'], default='present'),
        build_tag=dict(),
        dest_tag=dict(),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']
    build_tag = params['build_tag']
    dest_tag = params['dest_tag']

    session = common_koji.get_session(profile)

    if state == 'present':
        if not build_tag:
            module.fail_json(msg='build_tag is required')
        if not dest_tag:
            module.fail_json(msg='dest_tag is required')
        result = ensure_target(session, name, check_mode, build_tag, dest_tag)
    elif state == 'absent':
        result = delete_target(session, name, check_mode)

    module.exit_json(**result)
Exemple #3
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
        build_tag=dict(type='str', required=True),
        dest_tag=dict(type='str', required=True),
    )
    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True
    )

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']
    build_tag = params['build_tag']
    dest_tag = params['dest_tag']

    session = common_koji.get_session(profile)

    if state == 'present':
        result = ensure_target(session, name, check_mode, build_tag, dest_tag)
    elif state == 'absent':
        result = delete_target(session, name, check_mode)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False, rc=1)

    module.exit_json(**result)
Exemple #4
0
def run_module():
    module_args = dict(
        koji=dict(),
        name=dict(required=True),
        state=dict(choices=['present', 'absent'], default='present'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']

    session = common_koji.get_session(profile)

    result = {'changed': False}

    if state == 'present':
        btypes = session.listBTypes(query={'name': name})
        if not btypes:
            result['changed'] = True
            if not check_mode:
                common_koji.ensure_logged_in(session)
                session.addBType(name)
    elif state == 'absent':
        module.fail_json(msg="Cannot remove Koji build types.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #5
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
        url=dict(type='str', required=False, default=None),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']
    url = params['url']

    session = common_koji.get_session(profile)

    if state == 'present':
        if not url:
            module.fail_json(msg='you must set a url for this external_repo')
        result = ensure_external_repo(session, name, check_mode, url)
    elif state == 'absent':
        result = delete_external_repo(session, name, check_mode)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #6
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        permissions=dict(type='list', required=True),
        krb_principal=dict(type='str', required=False, default=None),
        state=dict(type='str', required=False, default='enabled'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']

    session = common_koji.get_session(profile)

    if state not in ('enabled', 'disabled'):
        module.fail_json(msg="State must be 'enabled' or 'disabled'.",
                         changed=False,
                         rc=1)

    result = ensure_user(session,
                         name,
                         check_mode,
                         state,
                         permissions=params['permissions'],
                         krb_principal=params['krb_principal'])

    module.exit_json(**result)
Exemple #7
0
def run_module():
    module_args = dict(
        koji=dict(),
        name=dict(required=True),
        args=dict(type='raw', default=[]),
        login=dict(type='bool', default=False),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    params = module.params
    profile = params['koji']
    name = params['name']
    args = params['args']
    login = params['login']

    if args and not isinstance(args, (dict, list)):
        msg = "args must be a list or dictionary, not %s" % type(args)
        module.fail_json(msg=msg, changed=False, rc=1)

    session = common_koji.get_session(profile)

    if module.check_mode:
        result = check_mode_call(name, args)
    else:
        result = do_call(session, name, args, login)

    module.exit_json(**result)
def run_module():
    module_args = dict(
        koji=dict(),
        tag=dict(required=True),
        state=dict(choices=['present', 'absent'], default='present'),
        packages=dict(type='dict', required=True),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    tag_name = params['tag']
    state = params['state']
    packages = params['packages']

    session = common_koji.get_session(profile)
    tag_info = session.getTag(tag_name)

    if state == 'present':
        # ensure packages are there
        result = ensure_packages(session, tag_name, tag_info['id'], check_mode,
                                 packages)
    elif state == 'absent':
        # delete packages
        result = remove_packages(session, tag_name, check_mode, packages)

    module.exit_json(**result)
Exemple #9
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        user=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
    )
    module = AnsibleModule(
        argument_spec=module_args,
        # check mode needs https://pagure.io/koji/pull-request/1160
        supports_check_mode=False
    )

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    params = module.params
    profile = params['koji']
    name = params['name']
    user = params['user']
    state = params['state']

    session = common_koji.get_session(profile)

    result = {'changed': False}

    # There are no "get" methods for content generator information, so we must
    # send the changes to Koji every time.
    # in-progress "listCGs" pull request:
    # https://pagure.io/koji/pull-request/1160

    common_koji.ensure_logged_in(session)

    if state == 'present':
        # The "grant" method will at least raise an error if the permission was
        # already granted, so we can set the "changed" result based on that.
        try:
            session.grantCGAccess(user, name, create=True)
            result['changed'] = True
        except common_koji.koji.GenericError as e:
            if 'User already has access to content generator' not in str(e):
                raise
    elif state == 'absent':
        # There's no indication whether this changed anything, so we're going
        # to be pessimistic and say we're always changing it.
        session.revokeCGAccess(user, name)
        result['changed'] = True
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False, rc=1)

    module.exit_json(**result)
Exemple #10
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
        inheritance=dict(type='raw', required=False, default=None),
        external_repos=dict(type='raw', required=False, default=None),
        packages=dict(type='raw', required=False, default=None),
        groups=dict(type='raw', required=False, default=None),
        arches=dict(type='str', required=False, default=None),
        perm=dict(type='str', required=False, default=None),
        locked=dict(type='bool', required=False, default=False),
        maven_support=dict(type='bool', required=False, default=False),
        maven_include_all=dict(type='bool', required=False, default=False),
        extra=dict(type='dict', required=False, default=None),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']

    session = common_koji.get_session(profile)

    if state == 'present':
        result = ensure_tag(session,
                            name,
                            check_mode,
                            inheritance=params['inheritance'],
                            external_repos=params['external_repos'],
                            packages=params['packages'],
                            groups=params['groups'],
                            arches=params['arches'],
                            perm=params['perm'] or None,
                            locked=params['locked'],
                            maven_support=params['maven_support'],
                            maven_include_all=params['maven_include_all'],
                            extra=params['extra'])
    elif state == 'absent':
        result = delete_tag(session, name, check_mode)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #11
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        child_tag=dict(type='str', required=True),
        parent_tag=dict(type='str', required=True),
        priority=dict(type='int', required=False),
        maxdepth=dict(type='int', required=False, default=None),
        pkg_filter=dict(type='str', required=False, default=''),
        intransitive=dict(type='bool', required=False, default=False),
        noconfig=dict(type='bool', required=False, default=False),
        state=dict(type='str', required=False, default='present'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    state = params['state']
    profile = params['koji']

    session = common_koji.get_session(profile)

    if state == 'present':
        if 'priority' not in params:
            module.fail_json(msg='specify a "priority" integer')
        result = add_tag_inheritance(session,
                                     child_tag=params['child_tag'],
                                     parent_tag=params['parent_tag'],
                                     priority=params['priority'],
                                     maxdepth=params['maxdepth'],
                                     pkg_filter=params['pkg_filter'],
                                     intransitive=params['intransitive'],
                                     noconfig=params['noconfig'],
                                     check_mode=check_mode)
    elif state == 'absent':
        result = remove_tag_inheritance(session,
                                        child_tag=params['child_tag'],
                                        parent_tag=params['parent_tag'],
                                        check_mode=check_mode)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #12
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        description=dict(type='str', required=True),
        extensions=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
    )
    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True
    )

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    description = params['description']
    extensions = params['extensions']
    state = params['state']

    session = common_koji.get_session(profile)

    result = {'changed': False}

    if state == 'present':
        if not session.getArchiveType(type_name=name):
            result['changed'] = True
            if not check_mode:
                common_koji.ensure_logged_in(session)
                session.addArchiveType(name, description, extensions)
    elif state == 'absent':
        module.fail_json(msg="Cannot remove Koji archive types.",
                         changed=False, rc=1)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False, rc=1)

    module.exit_json(**result)
Exemple #13
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        state=dict(type='str', required=False, default='present'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']

    session = common_koji.get_session(profile)

    result = {'changed': False}

    if state == 'present':
        btype_data = session.listBTypes()
        btypes = [data['name'] for data in btype_data]
        if name not in btypes:
            result['changed'] = True
            if not check_mode:
                common_koji.ensure_logged_in(session)
                session.addBType(name)
    elif state == 'absent':
        module.fail_json(msg="Cannot remove Koji build types.",
                         changed=False,
                         rc=1)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #14
0
def run_module():
    module_args = dict(
        koji=dict(),
        name=dict(required=True),
        permissions=dict(type='list', required=True),
        krb_principal=dict(),
        krb_principals=dict(type='list', elements='str'),
        state=dict(choices=['enabled', 'disabled'], default='enabled'),
    )
    module = AnsibleModule(argument_spec=module_args,
                           mutually_exclusive=[('krb_principal',
                                                'krb_principals')],
                           supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']
    if params['krb_principals'] is not None:
        krb_principals = params['krb_principals']
    elif params['krb_principal'] is not None:
        krb_principals = [params['krb_principal']]
    else:
        krb_principals = None

    session = common_koji.get_session(profile)

    result = ensure_user(session,
                         name,
                         check_mode,
                         state,
                         permissions=params['permissions'],
                         krb_principals=krb_principals)

    module.exit_json(**result)
Exemple #15
0
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        name=dict(type='str', required=True),
        arches=dict(type='list', required=True),
        channels=dict(type='list', required=False, default=None),
        krb_principal=dict(type='str', required=False, default=None),
        capacity=dict(type='float', required=False, default=None),
        description=dict(type='str', required=False, default=None),
        comment=dict(type='str', required=False, default=None),
        state=dict(type='str',
                   choices=['enabled', 'disabled'],
                   required=False,
                   default='enabled'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    profile = params['koji']
    name = params['name']
    state = params['state']

    session = common_koji.get_session(profile)

    result = ensure_host(session,
                         name,
                         check_mode,
                         state,
                         arches=params['arches'],
                         channels=params['channels'],
                         krb_principal=params['krb_principal'],
                         capacity=params['capacity'],
                         description=params['description'],
                         comment=params['comment'])
    module.exit_json(**result)
def run_module():
    module_args = dict(
        koji=dict(type='str', required=False),
        child_tag=dict(type='str', required=True),
        parent_tag=dict(type='str', required=True),
        priority=dict(type='int', required=True),
        state=dict(type='str', required=False, default='present'),
    )
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    if not common_koji.HAS_KOJI:
        module.fail_json(msg='koji is required for this module')

    check_mode = module.check_mode
    params = module.params
    state = params['state']
    profile = params['koji']

    session = common_koji.get_session(profile)

    if state == 'present':
        result = add_tag_inheritance(session,
                                     child_tag=params['child_tag'],
                                     parent_tag=params['parent_tag'],
                                     priority=params['priority'],
                                     check_mode=check_mode)
    elif state == 'absent':
        result = remove_tag_inheritance(session,
                                        child_tag=params['child_tag'],
                                        parent_tag=params['parent_tag'],
                                        priority=params['priority'],
                                        check_mode=check_mode)
    else:
        module.fail_json(msg="State must be 'present' or 'absent'.",
                         changed=False,
                         rc=1)

    module.exit_json(**result)
Exemple #17
0
 def test_anonymous(self):
     profile = 'testkoji'
     session = get_session(profile)
     assert session.logged_in is False