Пример #1
0
def main():
    global results
    suma_params = {}

    module = AnsibleModule(argument_spec=dict(
        action=dict(required=False,
                    choices=[
                        'download', 'preview', 'list', 'edit', 'unschedule',
                        'delete', 'config', 'default'
                    ],
                    type='str',
                    default='preview'),
        targets=dict(required=False, type='list', elements='str'),
        oslevel=dict(required=False, type='str', default='Latest'),
        lpp_source_name=dict(required=False, type='str'),
        download_dir=dict(required=False, type='path'),
        download_only=dict(required=False, type='bool', default=False),
        extend_fs=dict(required=False, type='bool', default=True),
        task_id=dict(required=False, type='str'),
        sched_time=dict(required=False, type='str'),
        description=dict(required=False, type='str'),
        metadata_dir=dict(required=False,
                          type='path',
                          default='/var/adm/ansible/metadata'),
    ),
                           required_if=[
                               ['action', 'edit', ['task_id']],
                               ['action', 'delete', ['task_id']],
                               ['action', 'unschedule', ['task_id']],
                               ['action', 'preview', ['oslevel']],
                               ['action', 'download', ['oslevel']],
                           ],
                           supports_check_mode=True)

    results = dict(
        changed=False,
        msg='',
        stdout='',
        stderr='',
        meta={'messages': []},
        target_list=(),
    )

    module.debug('*** START ***')

    # Get Module params
    action = module.params['action']
    suma_params['action'] = action

    suma_params['LppSource'] = ''
    suma_params['target_clients'] = ()

    # switch action
    if action == 'list':
        suma_params['task_id'] = module.params['task_id']
        suma_list(module, suma_params)

    elif action == 'edit':
        suma_params['task_id'] = module.params['task_id']
        suma_params['sched_time'] = module.params['sched_time']
        suma_edit(module, suma_params)

    elif action == 'unschedule':
        suma_params['task_id'] = module.params['task_id']
        suma_unschedule(module)

    elif action == 'delete':
        suma_params['task_id'] = module.params['task_id']
        suma_delete(module, suma_params)

    elif action == 'config':
        suma_config(module)

    elif action == 'default':
        suma_default(module)

    elif action == 'download' or action == 'preview':
        suma_params['targets'] = module.params['targets']
        suma_params['download_dir'] = module.params['download_dir']
        suma_params['download_only'] = module.params['download_only']
        suma_params['lpp_source_name'] = module.params['lpp_source_name']
        suma_params['extend_fs'] = module.params['extend_fs']
        if suma_params['req_oslevel'].upper() == 'LATEST':
            suma_params['req_oslevel'] = 'Latest'
        else:
            suma_params['req_oslevel'] = module.params['oslevel']
        if module.params['description']:
            suma_params['description'] = module.params['description']
        else:
            suma_params['description'] = "{} request for oslevel {}".format(
                action, suma_params['req_oslevel'])
        suma_params['metadata_dir'] = module.params['metadata_dir']
        suma_download(module, suma_params)

    # Exit
    msg = 'Suma {} completed successfully'.format(action)
    module.info(msg)
    results['msg'] = msg
    results['lpp_source_name'] = suma_params['LppSource']
    results['target_list'] = suma_params['target_clients']
    module.exit_json(**results)