def main():
    module = FabricAnsibleModule(argument_spec=dict(
        authtoken=dict(required=True),
        authurl=dict(required=True),
        user=dict(required=True),
        key=dict(required=True),
        tenant_name=dict(required=False, default="admin"),
        user_domain_name=dict(required=False, default="Default"),
        project_domain_name=dict(required=False, default="Default"),
        auth_version=dict(required=False, default='3.0'),
        temp_url_key=dict(required=True),
        temp_url_key_2=dict(required=True),
        chosen_temp_url_key=dict(required=False, default="temp_url_key"),
        container_name=dict(required=True),
        filename=dict(required=True),
        device_image_file_uri=dict(required=True),
        connection_retry_count=dict(required=False, default=5, type='int')),
                                 supports_check_mode=False)

    m_args = module.params
    authtoken = m_args['authtoken']
    authurl = m_args['authurl']
    user = m_args['user']
    key = m_args['key']
    tenant_name = m_args['tenant_name']
    user_domain_name = m_args['user_domain_name']
    project_domain_name = m_args['project_domain_name']
    auth_version = m_args['auth_version']
    temp_url_key = m_args['temp_url_key']
    temp_url_key_2 = m_args['temp_url_key_2']
    chosen_temp_url_key = m_args['chosen_temp_url_key']
    container_name = m_args['container_name']
    filename = m_args['filename']  # noqa: F841
    connection_retry_count = m_args['connection_retry_count']
    device_image_file_uri = m_args['device_image_file_uri']

    url = None
    error_msg = ''
    try:
        fileutil = FileSvcUtil(authtoken, authurl, user, key, tenant_name,
                               user_domain_name, project_domain_name,
                               auth_version, container_name, temp_url_key,
                               temp_url_key_2, connection_retry_count,
                               chosen_temp_url_key)

        url = fileutil.getObjUrl(device_image_file_uri)

        fileutil.close()

    except Exception as e:
        error_msg = "Exception occurred in swift_fileutil: " + str(e)

    results = {}
    results['url'] = url
    results['error_msg'] = error_msg

    module.exit_json(**results)
def main():
    module = FabricAnsibleModule(argument_spec=dict(
        job_ctx=dict(required=True, type=dict),
        message=dict(required=True, type=str),
        status=dict(required=True, type=int),
        result=dict(type=dict),
    ),
                                 supports_check_mode=True)

    module.execute(process_module)
Beispiel #3
0
def main():

    module = FabricAnsibleModule(argument_spec=dict(
        prouter_fqname=dict(required=True, type=list),
        job_ctx=dict(required=True, type=dict),
        os_version=dict(type=str),
        serial_num=dict(type=str),
        onboarding_state=dict(required=True, type=str),
    ),
                                 supports_check_mode=True)

    module.execute(process_module)
def main():
    module = FabricAnsibleModule(
        argument_spec=dict(
            job_ctx=dict(required=True, type=dict),
            message=dict(required=True, type=str),
            status=dict(required=True, type=str),
            result=dict(type=dict),
            device_name=dict(type=str),
            details=dict(type=dict),
        ),
        supports_check_mode=True)

    module.execute(process_module)
def main():

    module = FabricAnsibleModule(
        argument_spec=dict(
            prouter_fqname=dict(required=True, type=list),
            job_ctx=dict(required=True, type=dict),
            os_version=dict(type=str),
            serial_num=dict(type=str),
            onboarding_state=dict(required=True, type=str),
        ),
        supports_check_mode=True)

    module.execute(process_module)
def main():
    """ module main """

    # Create the module instance
    module = FabricAnsibleModule(argument_spec=dict(
        job_ctx=dict(type='dict', required=True),
        object_type=dict(type='str', required=True),
        object_op=dict(type='str',
                       required=True,
                       choices=[
                           'create', 'update', 'delete', 'read', 'list',
                           'bulk_create', 'bulk_update', 'ref_update',
                           'ref_delete', 'fq_name_to_id', 'id_to_fq_name'
                       ]),
        object_dict=dict(type='dict', required=False),
        object_list=dict(type='list', required=False),
        update_obj_if_present=dict(type='bool', required=False, default=True),
        enable_job_ctx=dict(type='bool', required=False, default=True)),
                                 supports_check_mode=True)

    # looging initialization
    logging.basicConfig(level=logging.INFO)

    try:
        # vnc operations
        vnc_mod = VncMod(module)
        results = vnc_mod.do_oper()
    except Exception as ex:
        results = dict(failed=True, msg=str(ex))

    if results.get('failed'):
        logging.error(results.get('msg'))

        enable_job_ctx = module.params['enable_job_ctx']

        # log to sandesh only when enable_job_ctx is set to true
        if enable_job_ctx:
            job_ctx = module.params['job_ctx']
            object_log = None
            try:
                object_log = ObjectLogUtil(job_ctx)
                object_log.send_job_object_log(results.get('msg'),
                                               VncMod.JOB_IN_PROGRESS, None)
            except Exception as e:
                logging.error("Unable to log sandesh job logs: %s", str(e))
            finally:
                if object_log:
                    object_log.close_sandesh_conn()

    # Return response
    module.exit_json(**results)
def main():
    module = FabricAnsibleModule(
        argument_spec=dict(
            authtoken=dict(required=True),
            authurl=dict(required=True),
            user=dict(required=True),
            key=dict(required=True),
            tenant_name=dict(required=False, default="admin"),
            auth_version=dict(required=False, default='3.0'),
            temp_url_key=dict(required=True),
            temp_url_key_2=dict(required=True),
            chosen_temp_url_key=dict(required=False, default="temp_url_key"),
            container_name=dict(required=True),
            filename=dict(required=True),
            connection_retry_count=dict(required=False, default=5, type='int')),
        supports_check_mode=False)

    m_args = module.params
    authtoken = m_args['authtoken']
    authurl = m_args['authurl']
    user = m_args['user']
    key = m_args['key']
    tenant_name = m_args['tenant_name']
    auth_version = m_args['auth_version']
    temp_url_key = m_args['temp_url_key']
    temp_url_key_2 = m_args['temp_url_key_2']
    chosen_temp_url_key = m_args['chosen_temp_url_key']
    container_name = m_args['container_name']
    filename = m_args['filename']
    connection_retry_count = m_args['connection_retry_count']

    url = None
    error_msg = ''
    try:
        fileutil = FileSvcUtil(authtoken, authurl, user, key, tenant_name,
                               auth_version, container_name, temp_url_key,
                               temp_url_key_2, connection_retry_count, chosen_temp_url_key)

        url = fileutil.getObjUrl(filename)

        fileutil.close()

    except Exception as e:
        error_msg = "Exception occurred in swift_fileutil: " + str(e)

    results = {}
    results['url'] = url
    results['error_msg'] = error_msg

    module.exit_json(**results)
def main():
    module = FabricAnsibleModule(argument_spec=dict(
        authtoken=dict(required=True),
        authurl=dict(required=True),
        user=dict(required=True),
        key=dict(required=True),
        tenant_name=dict(required=False, default="admin"),
        auth_version=dict(required=False, default='3.0'),
        temp_url_key=dict(required=True),
        temp_url_key_2=dict(required=True),
        chosen_temp_url_key=dict(required=False, default="temp_url_key"),
        container_name=dict(required=True),
        filename=dict(required=False, default=""),
        connection_retry_count=dict(required=False, default=5, type='int')),
                                 supports_check_mode=False)
    m_args = module.params
    authtoken = m_args['authtoken']
    authurl = m_args['authurl']
    user = m_args['user']
    key = m_args['key']
    tenant_name = m_args['tenant_name']
    auth_version = m_args['auth_version']
    temp_url_key = m_args['temp_url_key']
    temp_url_key_2 = m_args['temp_url_key_2']
    chosen_temp_url_key = m_args['chosen_temp_url_key']
    container_name = m_args['container_name']
    filename = m_args['filename']
    connection_retry_count = m_args['connection_retry_count']

    error_msg = ''
    try:
        fileutil = FileSvcUtil(authtoken, authurl, user, key, tenant_name,
                               auth_version, container_name, filename,
                               temp_url_key, temp_url_key_2,
                               connection_retry_count, chosen_temp_url_key)

        fileutil.container_cleanup(container_name, filename)

        fileutil.close()

    except Exception as e:
        error_msg = "Exception occurred in swift_fileutil: " + str(e)

    results = {}
    results['error_msg'] = error_msg

    module.exit_json(**results)
def main():

    module = FabricAnsibleModule(argument_spec=dict(
        prouter_fqname=dict(required=True, type=list),
        job_ctx=dict(required=True, type=dict),
        os_version=dict(type=str),
        serial_num=dict(type=str),
        onboarding_state=dict(required=True, type=str),
    ),
                                 supports_check_mode=True)

    # Fetch module params
    prouter_fqname = module.params['prouter_fqname']
    job_ctx = module.params['job_ctx']
    os_version = module.params['os_version']
    serial_num = module.params['serial_num']
    onboarding_state = module.params['onboarding_state']

    results = dict()
    results['failed'] = False

    object_log = None
    try:
        object_log = ObjectLogUtil(job_ctx)
        object_log.send_prouter_object_log(prouter_fqname, os_version,
                                           serial_num, onboarding_state)
    except ValueError as ve:
        results['msg'] = str(ve)
        results['failed'] = True
    except Exception as e:
        msg = "Failed to create following physical router object log due to " \
              "error: %s\n\t \
               job name: %s\n\t \
               job execution id: %s\n\t \
               device name: %s\n\t \
               onboarding_state: %s\n" \
               % (str(e), job_ctx['job_template_fqname'],
                 job_ctx['job_execution_id'], str(prouter_fqname),
                 onboarding_state)
        results['msg'] = msg
        results['failed'] = True
    finally:
        if object_log:
            object_log.close_sandesh_conn()

    module.exit_json(**results)
def main():
    """module main"""
    module = FabricAnsibleModule(argument_spec=dict(
        fabric_uuid=dict(required=True),
        job_ctx=dict(type='dict', required=True),
        credentials=dict(required=True, type='list'),
        hosts=dict(type='list'),
        subnets=dict(type='list'),
        version=dict(required=True, choices=['v2', 'v2c', 'v3']),
        community=dict(required=True),
        device_family_info=dict(required=True, type='list'),
        vendor_mapping=dict(required=True, type='list'),
        pool_size=dict(default=500, type='int')),
                                 supports_check_mode=True,
                                 required_one_of=[['hosts', 'subnets']])

    module.execute(module_process)
def main():
    """ module main """

    # Create the module instance
    module = FabricAnsibleModule(
        argument_spec=dict(
            job_ctx=dict(type='dict', required=True),
            object_type=dict(type='str', required=True),
            object_op=dict(
                type='str', required=True,
                choices=[
                    'create', 'update', 'delete', 'read', 'list',
                    'bulk_create', 'bulk_update', 'bulk_query',
                    'ref_update', 'ref_delete', 'bulk_ref_update',
                    'fq_name_to_id', 'id_to_fq_name'
                ]
            ),
            object_dict=dict(type='dict', required=False),
            object_list=dict(type='list', required=False),
            update_obj_if_present=dict(
                type='bool', required=False, default=True
            ),
            enable_job_ctx=dict(type='bool', required=False, default=True)
        ),
        supports_check_mode=True
    )

    try:
        # vnc operations
        vnc_mod = VncMod(module)
        results = vnc_mod.do_oper()
    except Exception as ex:
        results = dict(failed=True, msg=str(ex))

    if results.get('failed'):
        module.logger.error(results.get('msg'))

        enable_job_ctx = module.params['enable_job_ctx']

        # log to sandesh only when enable_job_ctx is set to true
        if enable_job_ctx:
            module.execute(module_process, results.get('msg'))

    # Return response
    module.exit_json(**results)
def main():
    module = FabricAnsibleModule(argument_spec=dict(
        job_ctx=dict(required=True, type=dict),
        message=dict(required=True, type=str),
        status=dict(required=True, type=int),
        result=dict(type=dict),
    ),
                                 supports_check_mode=True)

    # Fetch module params
    job_ctx = module.params['job_ctx']
    message = module.params['message']
    status = module.params['status']
    job_result = module.params['result']

    results = dict()
    results['failed'] = False

    object_log = None
    try:
        object_log = ObjectLogUtil(job_ctx)
        object_log.send_job_object_log(message, status, job_result)
    except ValueError as ve:
        results['msg'] = str(ve)
        results['failed'] = True
    except Exception as e:
        msg = "Failed to create following job log due to error: %s\n\t \
               job name: %s\n\t \
               job execution id: %s\n\t \
               job status: %s\n\t, \
               log message: %s\n" \
               % (str(e), job_ctx['job_template_fqname'],
                 job_ctx['job_execution_id'], status, message)
        results['msg'] = msg
        results['failed'] = True
    finally:
        if object_log:
            object_log.close_sandesh_conn()

    module.exit_json(**results)
def main():
    """module main"""
    module = FabricAnsibleModule(
        argument_spec=dict(
            fabric_uuid=dict(required=True),
            job_ctx=dict(type='dict', required=True),
            credentials=dict(type='list'),
            hosts=dict(type='list'),
            subnets=dict(type='list'),
            host_list=dict(type='list'),
            version=dict(required=True, choices=['v2', 'v2c', 'v3']),
            community=dict(required=True),
            device_family_info=dict(required=True, type='list'),
            vendor_mapping=dict(required=True, type='list'),
            pool_size=dict(default=500, type='int'),
            total_retry_timeout=dict(type='int')
        ),
        supports_check_mode=True,
        required_one_of=[['hosts', 'subnets', 'host_list']]
    )

    module.execute(module_process)
Beispiel #14
0
def main():
    """Module main."""
    # Create the module instance
    module = FabricAnsibleModule(
        argument_spec=dict(
            job_ctx=dict(type='dict', required=True),
            object_type=dict(type='str', required=True),
            object_op=dict(
                type='str', required=True,
                choices=[
                    'create', 'update', 'delete', 'read', 'list',
                    'bulk_create', 'bulk_update', 'bulk_query',
                    'ref_update', 'ref_delete', 'bulk_ref_update',
                    'fq_name_to_id', 'id_to_fq_name'
                ]
            ),
            object_dict=dict(type='dict', required=False),
            object_list=dict(type='list', required=False),
            update_obj_if_present=dict(
                type='bool', required=False, default=True
            ),
            enable_job_ctx=dict(type='bool', required=False, default=True)
        ),
        supports_check_mode=True
    )

    try:
        # vnc operations
        vnc_mod = VncMod(module)
        results = vnc_mod.do_oper()
    except Exception as ex:
        results = dict(failed=True, msg=str(ex))

    if results.get('failed'):
        module.logger.error(results.get('msg'))

        enable_job_ctx = module.params['enable_job_ctx']

        # log to sandesh only when enable_job_ctx is set to true
        if enable_job_ctx:
            module.execute(module_process, results.get('msg'))

    # Return response
    module.exit_json(**results)
Beispiel #15
0
def main():
    """module main"""
    module = FabricAnsibleModule(
        argument_spec=dict(
            fabric_uuid=dict(required=True),
            job_ctx=dict(type='dict', required=True),
            credentials=dict(required=True, type='list'),
            hosts=dict(type='list'),
            subnets=dict(type='list'),
            version=dict(required=True, choices=['v2', 'v2c', 'v3']),
            community=dict(required=True),
            device_family_info=dict(required=True, type='list'),
            vendor_mapping=dict(required=True, type='list'),
            pool_size=dict(default=500, type='int')
        ),
        supports_check_mode=True,
        required_one_of=[['hosts', 'subnets']]
    )
    concurrent = module.params['pool_size']
    fabric_uuid = module.params['fabric_uuid']
    all_hosts = []
    job_ctx = module.params['job_ctx']
    object_log = ObjectLogUtil(job_ctx)

    if module.params['subnets']:
        for subnet in module.params['subnets']:
            try:
                ip_net = IPNetwork(subnet)
                all_hosts.extend(list(ip_net))
            except Exception as ex:
                _result['failed'] = True
                _result['msg'] = "ERROR: Invalid subnet \"%s\" (%s)" % \
                                 (subnet, str(ex))
                _send_sandesh_log(object_log, _result.get('msg'),
                                  module.logger, True)
                module.exit_json(**_result)

    if module.params['hosts']:
        for host in module.params['hosts']:
            try:
                ipaddr = socket.gethostbyname(host)
                all_hosts.append(ipaddr)
            except Exception as ex:
                _result['failed'] = True
                _result['msg'] = "ERROR: Invalid ip address \"%s\" (%s)" % \
                                 (host, str(ex))
                _send_sandesh_log(object_log, _result.get('msg'),
                                  module.logger, True)
                module.exit_json(**_result)

    # Verify that we receive a community when using snmp v2
    if module.params['version'] == "v2" or module.params['version'] == "v2c":
        if module.params['community'] is None:
            _result['failed'] = True
            _result['msg'] = "ERROR: Community not set when using \
                             snmp version 2"
            _send_sandesh_log(object_log, _result.get('msg'), module.logger,
                              True)
            module.exit_json(**_result)

    if module.params['version'] == "v3":
        _result['failed'] = True
        _result['msg'] = "ERROR: Donot support snmp version 3"
        _send_sandesh_log(object_log, _result.get('msg'), module.logger,
                          True)
        module.exit_json(**_result)

    _result['msg'] = "Prefix(es) to be discovered: " + \
                     ','.join(module.params['subnets'])
    _send_sandesh_log(object_log, _result.get('msg'), module.logger, False)

    if len(all_hosts) < concurrent:
        concurrent = len(all_hosts)

    threadpool = pool.Pool(concurrent)

    try:
        vncapi = VncApi(auth_type=VncApi._KEYSTONE_AUTHN_STRATEGY,
                        auth_token=job_ctx.get('auth_token'))
        for host in all_hosts:
            threadpool.start(
                Greenlet(
                    _device_info_processing,
                    str(host),
                    vncapi,
                    module,
                    object_log,
                    fabric_uuid))
        threadpool.join()
    except Exception as ex:
        _result['failed'] = True
        _result['msg'] = "Failed to connect to API server due to error: %s"\
            % str(ex)
        module.exit_json(**_result)

    _result['msg'] = "Device discovery complete"
    _send_sandesh_log(object_log, _result.get('msg'), module.logger, True)
    module.exit_json(**_result)