本文整理汇总了Python中networkapi.interface.models.Interface类的典型用法代码示例。如果您正苦于以下问题:Python Interface类的具体用法?Python Interface怎么用?Python Interface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Interface类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: create_interface
def create_interface(interface):
try:
interface_obj = Interface()
interface_obj.create_v3(interface)
except models.InterfaceError, e:
raise ValidationAPIException(e.message)
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:7,代码来源:facade.py
示例2: verificar_nome_channel
def verificar_nome_channel(nome, interfaces):
interface = Interface()
channels = PortChannel.objects.filter(nome=nome)
channels_id = []
for ch in channels:
channels_id.append(int(ch.id))
if channels_id:
for var in interfaces:
if not var == "" and not var == None:
interface_id = int(var)
interface_id = interface.get_by_pk(interface_id)
equip_id = interface_id.equipamento.id
equip_interfaces = interface.search(equip_id)
for i in equip_interfaces:
try:
sw = i.get_switch_and_router_interface_from_host_interface(i.protegida)
except:
sw = None
pass
if sw is not None:
if sw.channel is not None:
if sw.channel.id in channels_id:
raise exceptions.InterfaceException(u"O nome do port channel ja foi utilizado no equipamento")
开发者ID:williamvedroni-s2it,项目名称:GloboNetworkAPI,代码行数:25,代码来源:facade.py
示例3: handle_get
def handle_get(self, request, user, *args, **kwargs):
try:
self.log.info("INTERFACE")
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT , AdminPermission.READ_OPERATION):
self.log.error(
u'User does not have permission to perform the operation.')
return self.not_authorized()
# Get XML data
equip_id = kwargs.get('id_equipamento')
interface = Interface()
equip_interface = interface.search(equip_id)
interface_list = []
for var in equip_interface:
try:
interface_list.append(get_new_interface_map(var.get_switch_and_router_interface_from_host_interface(None)))
except:
pass
if len(interface_list)==0:
raise InterfaceNotFoundError(None, 'Erro: O servidor deve estar conectado aos uplinks')
return self.response(dumps_networkapi({'map': interface_list}))
except InvalidValueError, e:
return self.response_error(269, e.param, e.value)
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:35,代码来源:InterfaceGetSwRouterResource.py
示例4: _dissociate_interfaces_from_channel
def _dissociate_interfaces_from_channel(self, ids_list, ids_interface):
ids_interface = [int(x) for x in ids_interface]
dissociate = set(ids_list) - set(ids_interface)
for item in dissociate:
item = Interface.get_by_pk(int(item))
item.channel = None
item.save()
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:7,代码来源:facade.py
示例5: handle_post
def handle_post(self, request, user, *args, **kwargs):
"""Treat requests POST to add Rack.
URL: interface/associar-ambiente/
"""
try:
self.log.info("Associa interface aos ambientes")
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
self.log.error(
u'User does not have permission to perform the operation.')
raise UserNotAuthorizedError(None)
# Load XML data
xml_map, attrs_map = loads(request.raw_post_data)
# XML data format
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
return self.response_error(3, u'There is no value to the networkapi tag of XML request.')
interface_map = networkapi_map.get('interface')
if interface_map is None:
return self.response_error(3, u'There is no value to the interface tag of XML request.')
# Get XML data
env = interface_map.get('ambiente')
interface = interface_map.get('interface')
amb_int = EnvironmentInterface()
interfaces = Interface()
amb = Ambiente()
amb_int.interface = interfaces.get_by_pk(int(interface))
amb_int.ambiente = amb.get_by_pk(int(env))
amb_int.create(user)
amb_int_map = dict()
amb_int_map['interface_ambiente'] = amb_int
return self.response(dumps_networkapi(amb_int_map))
except InvalidValueError, e:
return self.response_error(269, e.param, e.value)
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:46,代码来源:InterfaceEnvironmentResource.py
示例6: delete
def delete(self, request, *args, **kwargs):
"""URL: api/interface/disconnect/(?P<id_interface_1>\d+)/(?P<id_interface_2>\d+)/"""
try:
log.info('API_Disconnect')
data = dict()
id_interface_1 = kwargs.get('id_interface_1')
id_interface_2 = kwargs.get('id_interface_2')
interface_1 = Interface.get_by_pk(int(id_interface_1))
interface_2 = Interface.get_by_pk(int(id_interface_2))
with distributedlock(LOCK_INTERFACE % id_interface_1):
if interface_1.channel or interface_2.channel:
raise exceptions.InterfaceException(
'Interface está em um Port Channel')
if interface_1.ligacao_front_id == interface_2.id:
interface_1.ligacao_front = None
if interface_2.ligacao_front_id == interface_1.id:
interface_2.ligacao_front = None
else:
interface_2.ligacao_back = None
elif interface_1.ligacao_back_id == interface_2.id:
interface_1.ligacao_back = None
if interface_2.ligacao_back_id == interface_1.id:
interface_2.ligacao_back = None
else:
interface_2.ligacao_front = None
elif not interface_1.ligacao_front_id and not interface_1.ligacao_back_id:
raise exceptions.InterfaceException(
'Interface id %s não connectada' % interface_1)
interface_1.save()
interface_2.save()
return Response(data, status=status.HTTP_200_OK)
except exceptions.InterfaceException, exception:
raise exception
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:43,代码来源:views.py
示例7: _update_interfaces_from_http_put
def _update_interfaces_from_http_put(self, ids_interface, int_type,
vlan_nativa, envs_vlans):
# update interfaces
if type(ids_interface) is not list:
i = ids_interface
ids_interface = []
ids_interface.append(i)
ifaces_on_channel = []
for iface_id in ids_interface:
iface = Interface.get_by_pk(int(iface_id))
self._update_interfaces_from_a_channel(iface, vlan_nativa,
ifaces_on_channel,
int_type)
interface_sw = Interface.get_by_pk(int(iface))
interface_server = Interface.get_by_pk(
interface_sw.ligacao_front.id)
front = None
if interface_server.ligacao_front.id is not None:
front = interface_server.ligacao_front.id
back = None
if interface_server.ligacao_back.id is not None:
back = interface_server.ligacao_back.id
Interface.update(
user,
interface_server.id,
interface=interface_server.interface,
protegida=interface_server.protegida,
descricao=interface_server.descricao,
ligacao_front_id=front,
ligacao_back_id=back,
tipo=int_type,
vlan_nativa=int(vlan_nativa)
)
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:41,代码来源:facade.py
示例8: handle_delete
def handle_delete(self, request, user, *args, **kwargs):
"""Trata uma requisição DELETE para excluir uma interface
URL: /interface/<id_interface>/
"""
# Get request data and check permission
try:
# Valid Interface ID
id_interface = kwargs.get("id_interface")
if not is_valid_int_greater_zero_param(id_interface):
self.log.error(u"The id_interface parameter is not a valid value: %s.", id_interface)
raise InvalidValueError(None, "id_interface", id_interface)
# Get interface and equipment to check permission
interface = Interface.get_by_pk(id_interface)
id_equipamento = interface.equipamento_id
# Check permission
if not has_perm(
user,
AdminPermission.EQUIPMENT_MANAGEMENT,
AdminPermission.WRITE_OPERATION,
None,
id_equipamento,
AdminPermission.EQUIP_WRITE_OPERATION,
):
return self.not_authorized()
with distributedlock(LOCK_INTERFACE % id_interface):
# Remove interface
Interface.remove(user, id_interface)
return self.response(dumps_networkapi({}))
except InvalidValueError, e:
return self.response_error(269, e.param, e.value)
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:38,代码来源:InterfaceResource.py
示例9: available_channel_number
def available_channel_number(channel_name, interface_ids):
log.info("available channel")
interface_obj = Interface()
for interface_id in interface_ids:
interface = interface_obj.get_by_pk(interface_id)
if not interface:
raise Exception("Do not exist interface with id: %s" % interface_id)
equipment_id = interface.equipamento.id
if not interface.ligacao_front:
raise Exception("Interface is not connected.")
front_equipment_id = interface.ligacao_front.equipamento.id
if Interface.objects.filter(equipamento=equipment_id, channel__nome=channel_name):
raise Exception("Channel name already exist on the equipment: %s" % channel_name)
if Interface.objects.filter(equipamento=front_equipment_id, channel__nome=channel_name):
raise Exception("Channel name already exist on the equipment: %s" % channel_name)
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:23,代码来源:facade.py
示例10: generate_and_deploy_interface_config_sync
def generate_and_deploy_interface_config_sync(user, id_interface):
if not is_valid_int_greater_zero_param(id_interface):
raise exceptions.InvalidIdInterfaceException()
interface = Interface.get_by_pk(id_interface)
interfaces = [interface]
file_to_deploy = _generate_config_file(interfaces)
#TODO Deploy config file
lockvar = LOCK_INTERFACE_DEPLOY_CONFIG % (interface.equipamento.id)
status_deploy = deploy_config_in_equipment_synchronous(file_to_deploy, interface.equipamento, lockvar)
return status_deploy
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:15,代码来源:facade.py
示例11: search_interface_by_name_and_equipment
def search_interface_by_name_and_equipment(self, equipment_id, interface_name, is_new):
"""Obtém a interface do equipamento e retorna todas as interfaces ligadas no front e no back. """
interface = Interface.get_by_interface_equipment(interface_name, equipment_id)
interfaces = interface.search_front_back_interfaces()
map_list = []
for interface in interfaces:
if is_new:
map_list.append(self.get_new_interface_map(interface))
else:
map_list.append(self.get_interface_map(interface))
if is_new:
return self.response(dumps_networkapi({"interfaces": map_list}))
else:
return self.response(dumps_networkapi({"interface": map_list}))
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:17,代码来源:InterfaceResource.py
示例12: search_interface_of_equipment
def search_interface_of_equipment(self, equipment_id, is_new):
'''Obtém as interfaces do equipamento'''
# Efetua a consulta das interfaces do equipamento
results = Interface.search(equipment_id)
if results.count() > 0:
# Monta lista com dados retornados
map_list = []
for item in results:
if is_new:
map_list.append(self.get_new_interface_map(item))
else:
map_list.append(self.get_interface_map(item))
# Gera response (XML) com resultados
if is_new:
return self.response(dumps_networkapi({'interfaces': map_list}))
else:
return self.response(dumps_networkapi({'interface': map_list}))
else:
# Gera response (XML) para resultado vazio
return self.response(dumps_networkapi({}))
开发者ID:andrewsmedina,项目名称:GloboNetworkAPI,代码行数:24,代码来源:InterfaceResource.py
示例13: get_core_name
def get_core_name(rack):
name_core1 = None
name_core2 = None
try:
interfaces2 = Interface.search(rack.id_ilo.id)
for interface2 in interfaces2:
try:
sw = interface2.get_switch_and_router_interface_from_host_interface(None)
if sw.equipamento.nome.split('-')[0]=='OOB':
if sw.equipamento.nome.split('-')[2]=='01':
name_core1 = sw.equipamento.nome
elif sw.equipamento.nome.split('-')[2]=='02':
name_core2 = sw.equipamento.nome
except InterfaceNotFoundError:
next
except e:
raise RackAplError(None,rack.nome,"Erro ao buscar os nomes do Core associado ao Switch de gerencia %s" % rack.id_ilo.id)
return name_core1, name_core2
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:24,代码来源:RackAplicarConfigResource.py
示例14: handle_put
def handle_put(self, request, user, *args, **kwargs):
"""Treat requests POST to add Rack.
URL: channel/editar/
"""
try:
self.log.info("Editar Channel")
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
self.log.error(u'User does not have permission to perform the operation.')
raise UserNotAuthorizedError(None)
# Load XML data
xml_map, attrs_map = loads(request.raw_post_data)
# XML data format
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
return self.response_error(3, u'There is no value to the networkapi tag of XML request.')
channel_map = networkapi_map.get('channel')
if channel_map is None:
return self.response_error(3, u'There is no value to the channel tag of XML request.')
# Get XML data
id_channel = channel_map.get('id_channel')
nome = channel_map.get('nome')
if not is_valid_int_greater_zero_param(nome):
raise InvalidValueError(None, "Numero do Channel", "Deve ser um numero inteiro.")
lacp = channel_map.get('lacp')
int_type = channel_map.get('int_type')
vlans = channel_map.get('vlan')
envs = channel_map.get('envs')
ids_interface = channel_map.get('ids_interface')
if ids_interface is None:
raise InterfaceError("Nenhuma interface selecionada")
# verifica a vlan_nativa
vlan = vlans.get('vlan_nativa')
if vlan is not None:
if int(vlan) < 1 or int(vlan) > 4096:
raise InvalidValueError(None, "Vlan Nativa", "Range valido: 1 - 4096.")
if int(vlan) < 1 or 3967 < int(vlan) < 4048 or int(vlan)==4096:
raise InvalidValueError(None, "Vlan Nativa" ,"Range reservado: 3968-4047;4094.")
port_channel = PortChannel()
interface = Interface()
amb = Ambiente()
# verifica se o nome do port channel está sendo usado no equipamento
channels = PortChannel.objects.filter(nome=nome)
channels_id = []
for ch in channels:
channels_id.append(int(ch.id))
if len(channels_id)>1:
if type(ids_interface) is list:
for var in ids_interface:
if not var=="" and not var==None:
interface_id = int(var)
else:
interface_id = int(ids_interface)
interface_id = interface.get_by_pk(interface_id)
equip_id = interface_id.equipamento.id
equip_interfaces = interface.search(equip_id)
for i in equip_interfaces:
try:
sw = i.get_switch_and_router_interface_from_host_interface(i.protegida)
except:
sw = None
pass
if sw is not None:
if sw.channel is not None:
if sw.channel.id in channels_id and sw.channel.id is not id_channel:
raise InterfaceError("O nome do port channel ja foi utilizado no equipamento")
#buscar interfaces do channel
interfaces = Interface.objects.all().filter(channel__id=id_channel)
ids_list = []
for i in interfaces:
ids_list.append(i.id)
ids_list = [ int(y) for y in ids_list ]
if type(ids_interface) is list:
ids_interface = [ int(x) for x in ids_interface ]
desassociar = set(ids_list) - set(ids_interface)
for item in desassociar:
item = interface.get_by_pk(int(item))
item.channel = None
item.save()
else:
if ids_interface is not None:
ids_interface = int(ids_interface)
if ids_interface is not None:
for item in ids_list:
item = interface.get_by_pk(int(item))
item.channel = None
item.save()
#.........这里部分代码省略.........
开发者ID:jotagesales,项目名称:GloboNetworkAPI,代码行数:101,代码来源:InterfaceChannelResource.py
示例15: handle_put
def handle_put(self, request, user, *args, **kwargs):
"""Trata uma requisição PUT para alterar informações de uma interface.
URL: /interface/<id_interface>/
"""
# Get request data and check permission
try:
# Valid Interface ID
id_interface = kwargs.get('id_interface')
if not is_valid_int_greater_zero_param(id_interface):
self.log.error(
u'The id_interface parameter is not a valid value: %s.', id_interface)
raise InvalidValueError(None, 'id_interface', id_interface)
# Get interface and equipment to check permission
interface = Interface.get_by_pk(id_interface)
id_equipamento = interface.equipamento_id
# Check permission
if not has_perm(user,
AdminPermission.EQUIPMENT_MANAGEMENT,
AdminPermission.WRITE_OPERATION,
None,
id_equipamento,
AdminPermission.EQUIP_WRITE_OPERATION):
return self.not_authorized()
# Get XML data
xml_map, attrs_map = loads(request.raw_post_data)
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
return self.response_error(3, u'There is no networkapi tag in XML request.')
interface_map = networkapi_map.get('interface')
if interface_map is None:
return self.response_error(3, u'There is no interface tag in XML request.')
# Valid name value
nome = interface_map.get('nome')
if not is_valid_string_minsize(nome, 1) or not is_valid_string_maxsize(nome, 20):
self.log.error(u'Parameter nome is invalid. Value: %s', nome)
raise InvalidValueError(None, 'nome', nome)
# Valid protegida value
protegida = interface_map.get('protegida')
if not is_valid_boolean_param(protegida):
self.log.error(
u'Parameter protegida is invalid. Value: %s', protegida)
raise InvalidValueError(None, 'protegida', protegida)
else:
protegida = convert_string_or_int_to_boolean(protegida)
# Valid descricao value
descricao = interface_map.get('descricao')
if descricao is not None:
if not is_valid_string_minsize(descricao, 3) or not is_valid_string_maxsize(descricao, 200):
self.log.error(
u'Parameter descricao is invalid. Value: %s', descricao)
raise InvalidValueError(None, 'descricao', descricao)
# Valid "id_ligacao_front" value
id_ligacao_front = interface_map.get('id_ligacao_front')
if id_ligacao_front is not None:
if not is_valid_int_greater_zero_param(id_ligacao_front):
self.log.error(
u'The id_ligacao_front parameter is not a valid value: %s.', id_ligacao_front)
raise InvalidValueError(
None, 'id_ligacao_front', id_ligacao_front)
else:
id_ligacao_front = int(id_ligacao_front)
# Valid "id_ligacao_back" value
id_ligacao_back = interface_map.get('id_ligacao_back')
if id_ligacao_back is not None:
if not is_valid_int_greater_zero_param(id_ligacao_back):
self.log.error(
u'The id_ligacao_back parameter is not a valid value: %s.', id_ligacao_back)
raise InvalidValueError(
None, 'id_ligacao_back', id_ligacao_back)
else:
id_ligacao_back = int(id_ligacao_back)
tipo = interface_map.get('tipo')
tipo = TipoInterface.get_by_name(tipo)
vlan = interface_map.get('vlan')
with distributedlock(LOCK_INTERFACE % id_interface):
# Update interface
Interface.update(user,
id_interface,
interface=nome,
protegida=protegida,
descricao=descricao,
ligacao_front_id=id_ligacao_front,
ligacao_back_id=id_ligacao_back,
tipo=tipo,
#.........这里部分代码省略.........
开发者ID:andrewsmedina,项目名称:GloboNetworkAPI,代码行数:101,代码来源:InterfaceResource.py
示例16: gera_config
def gera_config(rack):
id_core1=None
id_core2=None
name_sp1=None
name_sp2=None
name_sp3=None
name_sp4=None
name_core1=None
name_core2=None
int_sp1=None
int_sp2=None
int_sp3=None
int_sp4=None
int_lf1_sp1=None
int_lf1_sp2=None
int_lf2_sp3=None
int_lf2_sp4=None
int_oob_mgmtlf1=None
int_oob_mgmtlf2=None
int_oob_core1=None
int_oob_core2=None
int_core1_oob=None
int_core2_oob=None
#Equipamentos
num_rack = rack.numero
try:
id_lf1 = rack.id_sw1.id
name_lf1 = rack.id_sw1.nome
id_lf2 = rack.id_sw2.id
name_lf2 = rack.id_sw2.nome
id_oob = rack.id_ilo.id
name_oob = rack.id_ilo.nome
except:
raise RackConfigError(None,rack.nome,"Erro: Rack incompleto.")
#Interface leaf01
try:
interfaces = Interface.search(id_lf1)
for interface in interfaces:
try:
sw = interface.get_switch_and_router_interface_from_host_interface(None)
if sw.equipamento.nome.split('-')[2]=='01' or sw.equipamento.nome.split('-')[2]=='1':
int_lf1_sp1 = interface.interface
name_sp1 = sw.equipamento.nome
id_sp1 = sw.equipamento.id
int_sp1 = sw.interface
elif sw.equipamento.nome.split('-')[2]=='02' or sw.equipamento.nome.split('-')[2]=='2':
int_lf1_sp2 = interface.interface
name_sp2 = sw.equipamento.nome
id_sp2 = sw.equipamento.id
int_sp2 = sw.interface
elif sw.equipamento.nome.split('-')[0]=='OOB':
int_oob_mgmtlf1 = sw.interface
except:
pass
except InterfaceNotFoundError:
raise RackConfigError(None,rack.nome,"Erro ao buscar as interfaces associadas ao Leaf 01.")
if int_sp1==None or int_sp2==None or int_oob_mgmtlf1==None:
raise RackConfigError(None,rack.nome,"Erro: As interfaces do Leaf01 nao foram cadastradas.")
#Interface leaf02
try:
interfaces1 = Interface.search(id_lf2)
for interface1 in interfaces1:
try:
sw = interface1.get_switch_and_router_interface_from_host_interface(None)
if sw.equipamento.nome.split('-')[2]=='03' or sw.equipamento.nome.split('-')[2]=='3':
int_lf2_sp3 = interface1.interface
name_sp3 = sw.equipamento.nome
id_sp3 = sw.equipamento.id
int_sp3 = sw.interface
elif sw.equipamento.nome.split('-')[2]=='04' or sw.equipamento.nome.split('-')[2]=='4':
int_lf2_sp4 = interface1.interface
name_sp4 = sw.equipamento.nome
id_sp4 = sw.equipamento.id
int_sp4 = sw.interface
elif sw.equipamento.nome.split('-')[0]=='OOB':
int_oob_mgmtlf2 = sw.interface
except:
pass
except InterfaceNotFoundError:
raise RackConfigError(None,rack.nome,"Erro ao buscar as interfaces associadas ao Leaf 02.")
if int_sp3==None or int_sp4==None or int_oob_mgmtlf2==None:
raise RackConfigError(None,rack.nome,"Erro: As interfaces do Leaf02 nao foram cadastradas.")
#Interface OOB
try:
interfaces2 = Interface.search(id_oob)
for interface2 in interfaces2:
try:
sw = interface2.get_switch_and_router_interface_from_host_interface(None)
if sw.equipamento.nome.split('-')[0]=='OOB':
if sw.equipamento.nome.split('-')[2]=='01' or sw.equipamento.nome.split('-')[2]=='1':
int_oob_core1 = interface2.interface
#.........这里部分代码省略.........
开发者ID:marcelometal,项目名称:GloboNetworkAPI,代码行数:101,代码来源:RackConfigResource.py
示例17: add_remove_check_list_vlan_trunk
def add_remove_check_list_vlan_trunk(self, user, networkapi_map, vlan_id, operation):
equipment_map = networkapi_map.get('equipamento')
if equipment_map is None:
return self.response_error(105)
try:
name = equipment_map.get('nome')
if name is None or name == '':
self.log.error(u'Parameter nome is invalid. Value: %s.', name)
raise InvalidValueError(None, 'nome', name)
interface_name = equipment_map.get('nome_interface')
if interface_name is None or interface_name == '':
self.log.error(
u'Parameter nome_interface is invalid. Value: %s.', interface_name)
raise InvalidValueError(None, 'nome_interface', interface_name)
if operation != 'list':
vlan = Vlan().get_by_pk(vlan_id)
# Check existence
equipment = Equipamento().get_by_name(name)
equip_permission = AdminPermission.EQUIP_UPDATE_CONFIG_OPERATION
admin_permission = AdminPermission.WRITE_OPERATION
if operation in ['check', 'list']:
equip_permission = AdminPermission.EQUIP_READ_OPERATION
admin_permission = AdminPermission.READ_OPERATION
if not has_perm(user,
AdminPermission.VLAN_ALTER_SCRIPT,
admin_permission,
None,
equipment.id,
equip_permission):
return self.not_authorized()
interface = Interface.get_by_interface_equipment(
interface_name, equipment.id)
if interface.ligacao_front is None:
return self.response_error(139)
protected = None
if operation not in ['check', 'list']:
protected = 0
try:
switch_interface = interface.get_switch_interface_from_host_interface(
protected)
except InterfaceNotFoundError:
return self.response_error(144)
if not has_perm(user,
AdminPermission.VLAN_ALTER_SCRIPT,
admin_permission,
None,
switch_interface.equipamento_id,
equip_permission):
return self.not_authorized()
# configurador -T snmp_vlans_trunk -i <nomequip> -A “'int=<interface> add=<numvlan>'”
# configurador -T snmp_vlans_trunk -i <nomequip> -A “'int=<interface> del=<numvlan>'”
# configurador -T snmp_vlans_trunk -i <nomequip> -A “'int=<interface> check=<numvlan>'"
# configurador -T snmp_vlans_trunk -i <nomequip> -A
# “'int=<interface> list'"
command = 'configurador -T snmp_vlans_trunk -i %s -A "\'int=%s %s' % (switch_interface.equipamento.nome,
switch_interface.interface,
operation)
if operation != 'list':
command = command + '=%d' % vlan.num_vlan
command = command + '\'"'
code, stdout, stderr = exec_script(command)
if code == 0:
map = dict()
success_map = dict()
success_map['codigo'] = '%04d' % code
success_map['descricao'] = {'stdout': stdout, 'stderr': stderr}
map['sucesso'] = success_map
return self.response(dumps_networkapi(map))
else:
return self.response_error(2, stdout + stderr)
except EquipamentoNotFoundError:
return self.response_error(117, name)
except InvalidValueError, e:
return self.response_error(269, e.param, e.value)
开发者ID:globocom,项目名称:GloboNetworkAPI,代码行数:91,代码来源:VlanResource.py
示例18: handle_put
def handle_put(self, request, user, *args, **kwargs):
"""Treat requests POST to add Rack.
URL: channel/editar/
"""
try:
self.log.info("Editar Channel")
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
self.log.error(
u'User does not have permission to perform the operation.')
raise UserNotAuthorizedError(None)
# Load XML data
xml_map, attrs_map = loads(request.raw_post_data)
# XML data format
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
return self.response_error(3, u'There is no value to the networkapi tag of XML request.')
channel_map = networkapi_map.get('channel')
if channel_map is None:
return self.response_error(3, u'There is no value to the channel tag of XML request.')
# Get XML data
id_channel = channel_map.get('id_channel')
nome = channel_map.get('nome')
lacp = channel_map.get('lacp')
int_type = channel_map.get('int_type')
vlan = channel_map.get('vlan')
envs = channel_map.get('envs')
ids_interface = channel_map.get('ids_interface')
if ids_interface is None:
raise InterfaceError("Nenhuma interface selecionada")
if vlan is not None:
if int(vlan) < 1 or int(vlan) > 4096:
raise InvalidValueError(None, "Vlan" , vlan)
if int(vlan) < 1 or 3967 < int(vlan) < 4048 or int(vlan)==4096:
raise InvalidValueError(None, "Vlan Nativa" ,"Range reservado: 3968-4047;4094.")
port_channel = PortChannel()
interface = Interface()
amb = Ambiente()
cont = []
#buscar interfaces do channel
interfaces = Interface.objects.all().filter(channel__id=id_channel)
ids_list = []
for i in interfaces:
ids_list.append(i.id)
ids_list = [ int(y) for y in ids_list ]
if type(ids_interface) is list:
ids_interface = [ int(x) for x in ids_interface ]
desassociar = set(ids_list) - set(ids_interface)
for item in desassociar:
item = interface.get_by_pk(int(item))
item.channel = None
item.save(user)
else:
if ids_interface is not None:
ids_interface = int(ids_interface)
if ids_interface is not None:
for item in ids_list:
item = interface.get_by_pk(int(item))
item.channel = None
item.save(user)
else:
for item in ids_list:
if not item== ids_interface:
item = interface.get_by_pk(int(item))
item.channel = None
item.save(user)
#update channel
port_channel = port_channel.get_by_pk(id_channel)
port_channel.nome = str(nome)
port_channel.lacp = convert_string_or_int_to_boolean(lacp)
port_channel.save(user)
int_type = TipoInterface.get_by_name(str(int_type))
#update interfaces
if type(ids_interface) is list:
for var in ids_interface:
alterar_interface(var, interface, port_channel, int_type, vlan, user, envs, amb)
else:
var = ids_interface
alterar_interface(var, interface, port_channel, int_type, vlan, user, envs, amb)
port_channel_map = dict()
#.........这里部分代码省略.........
开发者ID:andrewsmedina,项目名称:GloboNetworkAPI,代码行数:101,代码来源:InterfaceChannelResource.py
示例19: handle_post
def handle_post(self, request, user, *args, **kwargs):
"""Treat requests POST to add Rack.
URL: channel/inserir/
"""
try:
self.log.info("Inserir novo Channel")
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION):
self.log.error(
u'User does not have permission to perform the operation.')
raise UserNotAuthorizedError(None)
# Load XML data
xml_map, attrs_map = loads(request.raw_post_data)
# XML data format
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
return self.response_error(3, u'There is no value to the networkapi tag of XML request.')
channel_map = networkapi_map.get('channel')
if channel_map is None:
return self.response_error(3, u'There is no value to the channel tag of XML request.')
# Get XML data
interfaces = channel_map.get('interfaces')
nome = channel_map.get('nome')
lacp = channel_map.get('lacp')
int_type = channel_map.get('int_type')
vlan = channel_map.get('vlan')
envs = channel_map.get('envs')
port_channel = PortChannel()
interface = Interface()
amb = Ambiente()
cont = []
port_channel.nome = str(nome)
port_channel.lacp = convert_string_or_int_to_boolean(lacp)
port_channel.create(user)
interfaces = str(interfaces).split('-')
int_type = TipoInterface.get_by_name(str(int_type))
for var in interfaces:
if not var=="" and not var==None:
interf = interface.get_by_pk(int(var))
try:
sw_router = interf.get_switch_and_router_interface_from_host_interface(interf.protegida)
except:
raise InterfaceError("Interface não conectada")
if sw_router.channel is not None:
raise InterfaceError("Interface %s já está em um Channel" % sw_router.interface)
for i in interface.search(sw_router.equipamento.id):
if i.channel is not None:
raise InterfaceError("Equipamento %s já possui um Channel" % sw_router.equipamento.nome)
if cont is []:
cont.append(int(sw_router.equipamento.id))
elif not sw_router.equipamento.id in cont:
cont.append(int(sw_router.equipame
|
请发表评论