def config_ambiente(user, hosts, ambientes): # ip_config ip_config = IPConfig() ip_config.subnet = hosts.get('REDE') ip_config.new_prefix = hosts.get('PREFIX') if hosts.get('VERSION') == 'ipv4': ip_config.type = IP_VERSION.IPv4[0] elif hosts.get('VERSION') == 'ipv6': ip_config.type = IP_VERSION.IPv6[0] tiporede = TipoRede() tipo = tiporede.get_by_name(hosts.get('TIPO')) ip_config.network_type = tipo ip_config.save() # ambiente config_environment = ConfigEnvironment() amb_log = AmbienteLogico() div = DivisaoDc() amb_log = amb_log.get_by_name(ambientes.get('LOG')) div = div.get_by_name(ambientes.get('DC')) for j in Ambiente().search(div.id, amb_log.id): if j.grupo_l3.nome == ambientes.get('L3'): config_environment.environment = j config_environment.ip_config = ip_config config_environment.save()
def config_ambiente(user, hosts, ambientes): #ip_config ip_config = IPConfig() ip_config.subnet = hosts.get("REDE") ip_config.new_prefix = hosts.get("PREFIX") if hosts.get("VERSION") == "ipv4": ip_config.type = IP_VERSION.IPv4[0] elif hosts.get("VERSION") == "ipv6": ip_config.type = IP_VERSION.IPv6[0] tiporede = TipoRede() tipo = tiporede.get_by_name(hosts.get("TIPO")) ip_config.network_type = tipo ip_config.save() #ambiente config_environment = ConfigEnvironment() amb_log = AmbienteLogico() div = DivisaoDc() amb_log = amb_log.get_by_name(ambientes.get("LOG")) div = div.get_by_name(ambientes.get("DC")) for j in Ambiente().search(div.id, amb_log.id): if j.grupo_l3.nome == ambientes.get("L3"): config_environment.environment = j config_environment.ip_config = ip_config config_environment.save()
def handle_post(self, request, user, *args, **kwargs): """Treat POST requests to add new network types. URL: /net_type/ """ try: # Check permission if not has_perm(user, AdminPermission.NETWORK_TYPE_MANAGEMENT, AdminPermission.WRITE_OPERATION): self.log.error( u'User does not have permission to perform the operation.') return self.not_authorized() # Get request XML data xml_map, attrs_map = loads(request.raw_post_data) # Get networkapi tag map networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error(3, u'There is no networkapi tag from request XML.') # Get net_type tag map net_type_map = networkapi_map.get('net_type') if net_type_map is None: return self.response_error(3, u'There is no tipo_rede tag from request XML.') # Valid name attribute name = net_type_map.get('name') if not is_valid_string_minsize(name, 3) or not is_valid_string_maxsize(name, 100): self.log.error( u'Parameter %s is invalid. Value: %s.', 'name', name) raise InvalidValueError(None, 'name', name) net_type = TipoRede(tipo_rede=name) if not is_valid_vlan_name(name): self.log.error( u'Parameter %s is invalid because is using special characters and/or breaklines.', name) raise InvalidValueError(None, 'name', name) try: TipoRede.get_by_name(net_type.tipo_rede) raise NetworkTypeNameDuplicatedError( None, u'Network type with name %s already exist' % net_type.tipo_rede) except NetworkTypeNotFoundError: pass try: net_type.save() except Exception, e: self.log.error(u'Failed to insert network type.') raise VlanError(e, u'Failed to insert network type.') net_type_map = dict() net_type_map['id'] = net_type.id return self.response(dumps_networkapi({'net_type': net_type_map}))
def setUp(self): self.user = Usuario() self.vlan = Vlan(id=1, ambiente=Ambiente(id=1)) self.network_type = TipoRede(id=1) self.vip_env = EnvironmentVip(id=1) self.network = NetworkIPv4(oct1=10, oct2=126, oct3=1, oct4=0, block=24) self.mock_distributed_lock() self.mock_transaction()
def handle_post(self, request, user, *args, **kwargs): """Trata as requisições de POST para criar tipos de rede. URL: /tiporede/ """ # Obtém dados do request e verifica acesso try: # Verificar a permissão if not has_perm(user, AdminPermission.NETWORK_TYPE_MANAGEMENT, AdminPermission.WRITE_OPERATION): return self.not_authorized() # Obtém os dados do xml do request xml_map, attrs_map = loads(request.raw_post_data) # Obtém o mapa correspondente ao root node do mapa do XML # (networkapi) networkapi_map = xml_map.get('networkapi') if networkapi_map is None: return self.response_error( 3, u'Não existe valor para a tag networkapi do XML de requisição.' ) # Verifica a existência do node "tipo_rede" tipo_rede_map = networkapi_map.get('tipo_rede') if tipo_rede_map is None: return self.response_error( 3, u'Não existe valor para a tag tipo_rede do XML de requisição.' ) # Verifica a existência do valor "fqdn" nome = tipo_rede_map.get('nome') if nome is None: return self.response_error(176) # Cria acesso ao equipamento conforme dados recebidos no XML tipo_rede = TipoRede(tipo_rede=nome) tipo_rede.create(user) # Monta dict para response networkapi_map = dict() tipo_rede_map = dict() tipo_rede_map['id'] = tipo_rede.id networkapi_map['tipo_rede'] = tipo_rede_map return self.response(dumps_networkapi(networkapi_map)) except TipoRedeNameDuplicatedError: return self.response_error(253, nome) except XMLError, x: self.log.error(u'Erro ao ler o XML da requisição.') return self.response_error(3, x)
def test_add_network_given_invalid_vip_environment_id(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env='a', net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertEquals( "Parameter id_ambiente_vip is invalid. Value: a", xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code)
def test_add_network_given_vip_environment_not_found(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVipNotFoundError('')) response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertEquals( "Environment VIP not registered", xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code)
def test_add_network_given_vlan_not_found(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVip(id=1)) add_network_mock = self.mock_add_network_ipv4(VlanNotFoundError('')) response = self.client.post('/network/ipv4/add/', XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type='text/xml') xml_map = self.parse_response(response) self.assertEquals( 'VLAN not registered', xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code) self.assertTrue(add_network_mock.called)
def test_add_network_given_no_more_available_ip_addresses(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVip(id=1)) add_network_mock = self.mock_add_network_ipv4( NetworkIPv4AddressNotAvailableError('')) response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertEquals( "Unavailable address to create a NetworkIPv4", xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code) self.assertTrue(add_network_mock.called)
def test_add_network_given_invalid_environment_config(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVip(id=1)) add_network_mock = self.mock_add_network_ipv4( ConfigEnvironmentInvalidError('')) response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertEquals( "Invalid Environment Configuration or not registered", xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code) self.assertTrue(add_network_mock.called)
def criar_rede_ipv6(user, tipo_rede, variablestochangecore1, vlan, active=1): tiporede = TipoRede() net_id = tiporede.get_by_name(tipo_rede) network_type = tiporede.get_by_pk(net_id.id) network_ip = NetworkIPv6() network_ip.vlan = vlan network_ip.network_type = network_type network_ip.ambient_vip = None network_ip.active = active network_ip.block = variablestochangecore1.get('REDE_MASK') while str(variablestochangecore1.get('REDE_IP')).endswith(':'): variablestochangecore1['REDE_IP'] = variablestochangecore1[ 'REDE_IP'][:-1] while str(variablestochangecore1.get('NETMASK')).endswith(':'): variablestochangecore1['NETMASK'] = variablestochangecore1[ 'NETMASK'][:-1] len_ip_ipv6 = len(str(variablestochangecore1.get('REDE_IP')).split(':')) len_mask = len(str(variablestochangecore1.get('NETMASK')).split(':')) while (8 - len_ip_ipv6 > 0): # 8-6=2--8-7=1--8-8=0 len_ip_ipv6 = len_ip_ipv6 + 1 variablestochangecore1['REDE_IP'] = variablestochangecore1.get( 'REDE_IP') + ':0' while (8 - len_mask > 0): len_mask = len_mask + 1 variablestochangecore1['NETMASK'] = variablestochangecore1.get( 'NETMASK') + ':0' network_ip.block1, network_ip.block2, network_ip.block3, network_ip.block4, network_ip.block5, network_ip.block6, network_ip.block7, network_ip.block8 = str( variablestochangecore1.get('REDE_IP')).split(':') network_ip.mask1, network_ip.mask2, network_ip.mask3, network_ip.mask4, network_ip.mask5, network_ip.mask6, network_ip.mask7, network_ip.mask8 = str( variablestochangecore1.get('NETMASK')).split(':') destroy_cache_function([vlan.id]) network_ip.save() return network_ip
def test_add_network_given_successfully(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVip(id=1)) add_network_mock = self.mock_add_network_ipv4(self.get_vlan_map()) self.mock_get_equipamento_ambiente( EquipamentoAmbiente(equipamento=Equipamento(id=1))) self.mock_get_first_available_ip("192.168.10.18") self.mock_ip_save() self.mock_ip_equipamento_create() response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertIsNotNone(xml_map.get('networkapi').get('vlan')) self.assertEquals(200, response.status_code) self.assertTrue(add_network_mock.called)
def test_add_network_given_no_first_ip_available(self): self.mock_get_network_type_by_pk(TipoRede(id=1)) self.mock_get_vip_environment_by_pk(EnvironmentVip(id=1)) add_network_mock = self.mock_add_network_ipv4({'vlan': {}}) self.mock_get_equipamento_ambiente( EquipamentoAmbiente(equipamento=Equipamento(id=1))) self.mock_get_first_available_ip( IpNotAvailableError('Endereço IP não dispoínvel')) response = self.client.post("/network/ipv4/add/", XML.format(cidr='24', vlan=1, vip_env=1, net_type=1), content_type="text/xml") xml_map = self.parse_response(response) self.assertEquals( "Causa: Endereço IP não dispoínvel, Mensagem: None", xml_map.get('networkapi').get('erro').get('descricao')) self.assertEquals(500, response.status_code) self.assertTrue(add_network_mock.called)
def criar_rede(user, tipo_rede, variablestochangecore1, vlan, active=1): tiporede = TipoRede() net_id = tiporede.get_by_name(tipo_rede) network_type = tiporede.get_by_pk(net_id.id) network_ip = NetworkIPv4() network_ip.oct1, network_ip.oct2, network_ip.oct3, network_ip.oct4 = str( variablestochangecore1.get('REDE_IP')).split('.') network_ip.block = variablestochangecore1.get('REDE_MASK') network_ip.mask_oct1, network_ip.mask_oct2, network_ip.mask_oct3, network_ip.mask_oct4 = str( variablestochangecore1.get('NETMASK')).split('.') network_ip.broadcast = variablestochangecore1.get('BROADCAST') network_ip.vlan = vlan network_ip.network_type = network_type network_ip.ambient_vip = None network_ip.active = active destroy_cache_function([vlan.id]) network_ip.save() return network_ip