예제 #1
0
def deploy_sync_copy_script_to_multiple_equipments(request):
    """
    Deploy configuration on equipment(s)
    Default source: TFTP SERVER
    Default destination: apply config (running-config)
    Default protocol: tftp
    Receives script
    """

    try:
        script = request.DATA["script_data"]
        id_equips = request.DATA["id_equips"]

        #Check equipment permissions
        for id_equip in id_equips:
            #TODO
            pass

        output_data = dict()

        script_file = facade.create_file_from_script(script, USER_SCRIPTS_REL_PATH)
        for id_equip in id_equips:
            equipment_id = int(id_equip)
            lockvar = LOCK_EQUIPMENT_DEPLOY_CONFIG_USERSCRIPT % (equipment_id)
            output_data[equipment_id] = dict()
            try:
                output_data[equipment_id]["output"] = facade.deploy_config_in_equipment_synchronous(script_file, equipment_id, lockvar)
                output_data[equipment_id]["status"] = "OK"
            except Exception, e:
                log.error("Error applying script file to equipment_id %s: %s" %(equipment_id, e))
                output_data[equipment_id]["output"] = str(e)
                output_data[equipment_id]["status"] = "ERROR"

        return Response(output_data)
예제 #2
0
def deploy_sync_copy_script_to_equipment(request, equipment_id):
    """
    Deploy configuration on equipment(s)
    Default source: TFTP SERVER
    Default destination: apply config (running-config)
    Default protocol: tftp
    Receives script
    """

    try:
        script = request.DATA['script_data']
        request_identifier = request.DATA['identifier']
        script_file = facade.create_file_from_script(
            script, USER_SCRIPTS_REL_PATH)
        equipment_id = int(equipment_id)
        lockvar = LOCK_EQUIPMENT_DEPLOY_CONFIG_USERSCRIPT % (equipment_id)
        data = dict()
        if request_identifier is not None:
            queue_manager = QueueManager(broker_vhost='tasks',
                                         queue_name='tasks.aclapi',
                                         exchange_name='tasks.aclapi',
                                         routing_key='tasks.aclapi')
            data = {'timestamp': int(time.time())}
            queue_manager.append({
                'action': queue_keys.BEGIN_DEPLOY_SYNC_SCRIPT,
                'identifier': request_identifier,
                'data': data})
            queue_manager.send()
        data['output'] = facade.deploy_config_in_equipment_synchronous(
            script_file, equipment_id, lockvar)
        data['status'] = 'OK'
        if request_identifier is not None:
            queue_manager = QueueManager(broker_vhost='tasks',
                                         queue_name='tasks.aclapi',
                                         exchange_name='tasks.aclapi',
                                         routing_key='tasks.aclapi')
            data = {'timestamp': int(time.time()), 'status': 'OK'}
            queue_manager.append({'action': queue_keys.END_DEPLOY_SYNC_SCRIPT,
                                  'identifier': request_identifier, 'data': data})
            queue_manager.send()
        return Response(data)

    except KeyError, key:
        log.error(key)
        raise exceptions.InvalidKeyException(key)
예제 #3
0
def deploy_sync_copy_script_to_equipment(request, equipment_id):
    """
    Deploy configuration on equipment(s)
    Default source: TFTP SERVER
    Default destination: apply config (running-config)
    Default protocol: tftp
    Receives script
    """

    try:
        script = request.DATA["script_data"]
        script_file = facade.create_file_from_script(script, USER_SCRIPTS_REL_PATH)
        equipment_id = int(equipment_id)
        lockvar = LOCK_EQUIPMENT_DEPLOY_CONFIG_USERSCRIPT % (equipment_id)
        data = dict()
        data["output"] = facade.deploy_config_in_equipment_synchronous(script_file, equipment_id, lockvar)
        data["status"] = "OK"
        return Response(data)

    except KeyError, key:
        log.error(key)
        raise exceptions.InvalidKeyException(key)
예제 #4
0
def deploy_sync_copy_script_to_multiple_equipments(request):
    """
    Deploy configuration on equipment(s)
    Default source: TFTP SERVER
    Default destination: apply config (running-config)
    Default protocol: tftp
    Receives script
    """

    try:
        script = request.DATA["script_data"]
        id_equips = request.DATA["id_equips"]

        #Check equipment permissions
        for id_equip in id_equips:
            #TODO
            pass

        output_data = dict()

        script_file = facade.create_file_from_script(script,
                                                     USER_SCRIPTS_REL_PATH)
        for id_equip in id_equips:
            equipment_id = int(id_equip)
            lockvar = LOCK_EQUIPMENT_DEPLOY_CONFIG_USERSCRIPT % (equipment_id)
            output_data[equipment_id] = dict()
            try:
                output_data[equipment_id][
                    "output"] = facade.deploy_config_in_equipment_synchronous(
                        script_file, equipment_id, lockvar)
                output_data[equipment_id]["status"] = "OK"
            except Exception, e:
                log.error("Error applying script file to equipment_id %s: %s" %
                          (equipment_id, e))
                output_data[equipment_id]["output"] = str(e)
                output_data[equipment_id]["status"] = "ERROR"

        return Response(output_data)