bstinson / centos / releng

Forked from centos/releng 3 years ago
Clone

Blame koji-tags/library/koji_archivetype.py

6e61fb
#!/usr/bin/python
6e61fb
from ansible.module_utils.basic import AnsibleModule
6e61fb
from ansible.module_utils import common_koji
6e61fb
6e61fb
6e61fb
ANSIBLE_METADATA = {
6e61fb
    'metadata_version': '1.0',
6e61fb
    'status': ['preview'],
6e61fb
    'supported_by': 'community'
6e61fb
}
6e61fb
6e61fb
6e61fb
DOCUMENTATION = '''
6e61fb
---
6e61fb
module: koji_archivetype
6e61fb
6e61fb
short_description: Create and manage Koji archive types
6e61fb
description:
6e61fb
   - Create and manage Koji archive types
6e61fb
   - Your Koji Hub must be version 1.20 or newer in order to use the new
6e61fb
     ``addArchiveType`` RPC.
6e61fb
6e61fb
options:
6e61fb
   name:
6e61fb
     description:
6e61fb
       - The name of the Koji archive type to create and manage.
6e61fb
       - 'Example: "deb".'
6e61fb
     required: true
6e61fb
   description:
6e61fb
     description:
6e61fb
       - The human-readable description of this Koji archive type.  Koji uses
6e61fb
         this value in the UI tooling that display a build's files.
6e61fb
       - 'Example: "Debian packages".'
6e61fb
     required: true
6e61fb
   extensions:
6e61fb
     description:
6e61fb
       - The file extensions for this Koji archive type.
6e61fb
       - 'Example: "deb" means Koji will apply this archive type to files that
6e61fb
         end in ".deb".'
6e61fb
     required: true
6e61fb
requirements:
6e61fb
  - "python >= 2.7"
6e61fb
  - "koji"
6e61fb
'''
6e61fb
6e61fb
EXAMPLES = '''
6e61fb
- name: Add deb archive types into koji
6e61fb
  hosts: localhost
6e61fb
  tasks:
6e61fb
    - name: Add deb archive type
6e61fb
      koji_archivetype:
6e61fb
        name: deb
6e61fb
        description: Debian packages
6e61fb
        extensions: deb
6e61fb
        state: present
6e61fb
6e61fb
    - name: Add dsc archive type
6e61fb
      koji_archivetype:
6e61fb
        name: dsc
6e61fb
        description: Debian source control files
6e61fb
        extensions: dsc
6e61fb
        state: present
6e61fb
'''
6e61fb
6e61fb
RETURN = ''' # '''
6e61fb
6e61fb
6e61fb
def run_module():
6e61fb
    module_args = dict(
6e61fb
        koji=dict(type='str', required=False),
6e61fb
        name=dict(type='str', required=True),
6e61fb
        description=dict(type='str', required=True),
6e61fb
        extensions=dict(type='str', required=True),
6e61fb
        state=dict(type='str', choices=[
6e61fb
                   'present', 'absent'], required=False, default='present'),
6e61fb
    )
6e61fb
    module = AnsibleModule(
6e61fb
        argument_spec=module_args,
6e61fb
        supports_check_mode=True
6e61fb
    )
6e61fb
6e61fb
    if not common_koji.HAS_KOJI:
6e61fb
        module.fail_json(msg='koji is required for this module')
6e61fb
6e61fb
    check_mode = module.check_mode
6e61fb
    params = module.params
6e61fb
    profile = params['koji']
6e61fb
    name = params['name']
6e61fb
    description = params['description']
6e61fb
    extensions = params['extensions']
6e61fb
    state = params['state']
6e61fb
6e61fb
    session = common_koji.get_session(profile)
6e61fb
6e61fb
    result = {'changed': False}
6e61fb
6e61fb
    if state == 'present':
6e61fb
        if not session.getArchiveType(type_name=name):
6e61fb
            result['changed'] = True
6e61fb
            if not check_mode:
6e61fb
                common_koji.ensure_logged_in(session)
6e61fb
                session.addArchiveType(name, description, extensions)
6e61fb
    elif state == 'absent':
6e61fb
        module.fail_json(msg="Cannot remove Koji archive types.",
6e61fb
                         changed=False, rc=1)
6e61fb
6e61fb
    module.exit_json(**result)
6e61fb
6e61fb
6e61fb
def main():
6e61fb
    run_module()
6e61fb
6e61fb
6e61fb
if __name__ == '__main__':
6e61fb
    main()