def _generate_config_file(self, template_type): """Load a template and write a file with the rended output. Args: 2-dimension dictionary with equipments information for template rendering equipment to render template to template type to load. Returns: filename with relative path to settings.TFTPBOOT_FILES_PATH """ config_to_be_saved = '' request_id = getattr(local, 'request_id', NO_REQUEST_ID) filename_out = 'network_equip%s_config_%s' % (self.equipment.id, request_id) filename_to_save = BGP_CONFIG_FILES_PATH + filename_out rel_file_to_deploy = BGP_CONFIG_TOAPPLY_REL_PATH + filename_out try: template_file = self._load_template_file(template_type) key_dict = self._generate_template_dict() config_to_be_saved += template_file.render(Context(key_dict)) except KeyError, exception: log.error('Erro: %s ' % exception) raise exceptions.InvalidKeyException(exception)
def _get_template_config(self, template_type, config): """Load template file and render values in VARs""" try: template_file = self._load_template_file(template_type) config_to_be_saved = template_file.render(Context(config)) except KeyError as err: log.error('Error: %s', err) raise deploy_exc.InvalidKeyException(err) except Exception as err: log.error('Error: %s ' % err) raise self.exceptions.BGPTemplateException(err) return config_to_be_saved
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)
# 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) except KeyError, key: log.error(key) raise exceptions.InvalidKeyException(key) except Exception, exception: log.error(exception) raise api_exceptions.NetworkAPIException()