コード例 #1
0
def delete_vrf(vrf_id):
    """
    Delete environment

    :param env: dict
    """

    Vrf.remove(None, vrf_id)
コード例 #2
0
ファイル: facade.py プロジェクト: globocom/GloboNetworkAPI
def delete_vrf(vrf_id):
    """
    Delete vrf

    :param vrf_id: int
    """

    Vrf.remove(vrf_id)
コード例 #3
0
def delete_vrf(vrf_id):
    """
    Delete vrf

    :param vrf_id: int
    """

    Vrf.remove(vrf_id)
コード例 #4
0
ファイル: facade.py プロジェクト: globocom/GloboNetworkAPI
def create_vrf(vrf):
    """
    Create vrf

    :param env: dict
    """

    vrf_obj = Vrf()

    vrf_obj.vrf = vrf.get('vrf')
    vrf_obj.internal_name = vrf.get('internal_name')

    vrf_obj.create(None)

    return vrf_obj
コード例 #5
0
ファイル: facade.py プロジェクト: globocom/GloboNetworkAPI
def update_vrf(vrf):
    """
    Update vrf

    :param vrf: dict
    """

    vrf_obj = get_vrf_by_id(vrf.get('id'))

    Vrf.update(
        None,
        vrf_obj.id,
        vrf=vrf.get('vrf'),
        internal_name=vrf.get('internal_name'),
    )

    return vrf_obj
コード例 #6
0
def update_vrf(vrf):
    """
    Update vrf

    :param env: dict
    """

    vrf_obj = get_vrf_by_id(vrf.get('id'))

    Vrf.update(
        None,
        vrf_obj.id,
        vrf=vrf.get('vrf'),
        internal_name=vrf.get('internal_name'),
    )

    return vrf_obj
コード例 #7
0
def create_vrf(vrf):
    """
    Create vrf

    :param env: dict
    """

    vrf_obj = Vrf()

    vrf_obj.vrf = vrf.get('vrf')
    vrf_obj.internal_name = vrf.get('internal_name')

    vrf_obj.create(None)

    return vrf_obj
コード例 #8
0
    def handle_post(self, request, user, *args, **kwargs):
        """Trata as requisições de POST para criar Informações de Acesso a Equipamentos.

        URL: /equipamentoacesso

        """

        # Obtém dados do request e verifica acesso
        try:
            # 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 "equipamento_acesso"
            equipamento_acesso_map = networkapi_map.get('equipamento_acesso')
            if equipamento_acesso_map is None:
                return self.response_error(
                    3,
                    u'Não existe valor para a tag equipamento_acesso do XML de requisição.'
                )

            # Verifica a existência do valor "id_equipamento"
            id_equipamento = equipamento_acesso_map.get('id_equipamento')

            # Valid ID Equipment
            if not is_valid_int_greater_zero_param(id_equipamento):
                self.log.error(
                    u'The id_equipamento parameter is not a valid value: %s.',
                    id_equipamento)
                raise InvalidValueError(None, 'id_equipamento', id_equipamento)

            try:
                id_equipamento = int(id_equipamento)
            except (TypeError, ValueError):
                self.log.error(u'Valor do id_equipamento inválido: %s.',
                               id_equipamento)
                return self.response_error(117, id_equipamento)

            # Após obtenção do id_equipamento podemos verificar a permissão
            if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT,
                            AdminPermission.WRITE_OPERATION, None,
                            id_equipamento,
                            AdminPermission.EQUIP_WRITE_OPERATION):
                return self.not_authorized()

            # Verifica a existência do valor "fqdn"
            fqdn = equipamento_acesso_map.get('fqdn')

            # Valid fqdn
            if not is_valid_string_maxsize(
                    fqdn, 100) or not is_valid_string_minsize(fqdn, 4):
                self.log.error(u'Parameter fqdn is invalid. Value: %s', fqdn)
                raise InvalidValueError(None, 'fqdn', fqdn)

            # Verifica a existência do valor "user"
            username = equipamento_acesso_map.get('user')

            # Valid username
            if not is_valid_string_maxsize(
                    username, 20) or not is_valid_string_minsize(username, 3):
                self.log.error(u'Parameter username is invalid. Value: %s',
                               username)
                raise InvalidValueError(None, 'username', username)

            # Verifica a existência do valor "pass"
            password = equipamento_acesso_map.get('pass')

            # Valid password
            if not is_valid_string_maxsize(
                    password, 150) or not is_valid_string_minsize(password, 3):
                self.log.error(u'Parameter password is invalid.')
                raise InvalidValueError(None, 'password', '****')

            # Verifica a existência do valor "id_tipo_acesso"
            id_tipo_acesso = equipamento_acesso_map.get('id_tipo_acesso')

            # Valid ID Equipment
            if not is_valid_int_greater_zero_param(id_tipo_acesso):
                self.log.error(
                    u'The id_tipo_acesso parameter is not a valid value: %s.',
                    id_tipo_acesso)
                raise InvalidValueError(None, 'id_tipo_acesso', id_tipo_acesso)

            try:
                id_tipo_acesso = int(id_tipo_acesso)
            except (TypeError, ValueError):
                self.log.error(u'Valor do id_tipo_acesso inválido: %s.',
                               id_tipo_acesso)
                return self.response_error(171, id_tipo_acesso)

            # Obtém o valor de "enable_pass"
            enable_pass = equipamento_acesso_map.get('enable_pass')

            # Valid enable_pass
            if not is_valid_string_maxsize(enable_pass,
                                           150) or not is_valid_string_minsize(
                                               enable_pass, 3):
                self.log.error(u'Parameter enable_pass is invalid.')
                raise InvalidValueError(None, 'enable_pass', '****')

            # Obtém o valor de "vrf"
            vrf = equipamento_acesso_map.get('vrf')
            vrf_obj = None
            if vrf:
                # Valid enable_pass
                if not is_valid_int_greater_zero_param(vrf):
                    self.log.error(
                        u'The vrf parameter is not a valid value: %s.', vrf)
                    raise InvalidValueError(None, 'vrf', vrf)
                vrf_obj = Vrf(int(vrf))

            # Cria acesso ao equipamento conforme dados recebidos no XML
            equipamento_acesso = EquipamentoAcesso(
                equipamento=Equipamento(id=id_equipamento),
                fqdn=fqdn,
                user=username,
                password=password,
                tipo_acesso=TipoAcesso(id=id_tipo_acesso),
                enable_pass=enable_pass,
                vrf=vrf_obj)
            equipamento_acesso.create(user)

            # Monta dict para response
            networkapi_map = dict()
            equipamento_acesso_map = dict()

            equipamento_acesso_map['id'] = equipamento_acesso.id
            networkapi_map['equipamento_acesso'] = equipamento_acesso_map

            return self.response(dumps_networkapi(networkapi_map))
        except InvalidValueError as e:
            return self.response_error(269, e.param, e.value)
        except XMLError, x:
            self.log.error(u'Erro ao ler o XML da requisição.')
            return self.response_error(3, x)
コード例 #9
0
    def handle_post(self, request, auth, *args, **kwargs):
        """Handles POST requests to update Equipment Access by id.

        URLs: /equipmentaccess/edit/
        """

        self.log.info('Update EquipmentAccess by id')

        try:

            # Commons Validations

            # Business Validations

            # 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:
                msg = u'There is no value to the networkapi tag of XML request.'
                self.log.error(msg)
                return self.response_error(3, msg)
            equipmentaccess_map = networkapi_map.get('equipamento_acesso')
            if equipmentaccess_map is None:
                msg = u'There is no value to the equipamento_acesso tag of XML request.'
                self.log.error(msg)
                return self.response_error(3, msg)

            # Get XML data
            user = equipmentaccess_map.get('user')
            password = equipmentaccess_map.get('pass')
            fqdn = equipmentaccess_map.get('fqdn')
            enable_pass = equipmentaccess_map.get('enable_pass')
            type_access = equipmentaccess_map.get('id_tipo_acesso')
            equip_access = equipmentaccess_map.get('id_equip_acesso')
            vrf = equipmentaccess_map.get('vrf')

            # Password must NOT be none and 20 is the maxsize and 3 is the
            # minsize
            if not is_valid_string_maxsize(
                    password, 150) or not is_valid_string_minsize(password, 3):
                self.log.error(u'Parameter pass is invalid.')
                raise InvalidValueError(None, 'pass', '****')

            # Enable Pass must NOT be none and 20 is the maxsize and 3 is the
            # minsize
            if not is_valid_string_maxsize(enable_pass,
                                           150) or not is_valid_string_minsize(
                                               enable_pass, 3):
                self.log.error(u'Parameter enable_pass is invalid.')
                raise InvalidValueError(None, 'enable_pass', '****')

            # User must NOT be none and 20 is the maxsize and 3 is the minsize
            if not is_valid_string_maxsize(
                    user, 20) or not is_valid_string_minsize(user, 3):
                self.log.error(u'Parameter user is invalid. Value: %s.', user)
                raise InvalidValueError(None, 'user', user)

            # Host must NOT be none and 100 is the maxsize and 4 is the minsize
            if not is_valid_string_maxsize(
                    fqdn, 100) or not is_valid_string_minsize(fqdn, 4):
                self.log.error(u'Parameter fqdn is invalid. Value: %s.', fqdn)
                raise InvalidValueError(None, 'fqdn', fqdn)

            # Type Access
            # Valid type access ID
            if not is_valid_int_greater_zero_param(type_access):
                self.log.error(
                    u'Parameter type_access_id is invalid. Value: %s.',
                    type_access)
                raise InvalidValueError(None, 'type_access_id', type_access)

            # Valid vrf id
            vrf_obj = None
            if vrf:
                if not is_valid_int_greater_zero_param(vrf):
                    self.log.error(
                        u'The vrf parameter is not a valid value: %s.', vrf)
                    raise InvalidValueError(None, 'vrf', vrf)
                vrf_obj = Vrf(int(vrf))

            type_access = TipoAcesso.get_by_pk(type_access)

            # Business Rules
            equip_access = EquipamentoAcesso.get_by_pk(equip_access)

            # User permission
            if not has_perm(auth, AdminPermission.EQUIPMENT_MANAGEMENT,
                            AdminPermission.WRITE_OPERATION, None,
                            equip_access.equipamento.id,
                            AdminPermission.EQUIP_WRITE_OPERATION):
                self.log.error(
                    u'User does not have permission to perform the operation.')
                return self.not_authorized()

            with distributedlock(LOCK_EQUIPMENT_ACCESS % type_access.id):

                # valid duplicate association
                if not (int(type_access.id) == int(
                        equip_access.tipo_acesso.id)):
                    if EquipamentoAcesso.objects.filter(
                            equipamento=equip_access.equipamento,
                            tipo_acesso=type_access).count() > 0:
                        raise EquipamentoAccessDuplicatedError(
                            None,
                            u'Já existe esta associação de equipamento e tipo de acesso cadastrada.'
                        )

                equip_access.__dict__.update(fqdn=fqdn,
                                             user=user,
                                             password=password,
                                             enable_pass=enable_pass)
                equip_access.tipo_acesso = type_access

                # Compatibility
                # If there is no 'vrf' field in equipmentaccess_map, keep the actual
                # cleans (insert null) if vrf = ''
                if vrf is not None:
                    equip_access.vrf = vrf_obj

                equip_access.save(auth)

                # update
                equipmentaccess_map = dict()
                equipmentaccess_map['equipamento_acesso'] = model_to_dict(
                    equip_access)

                # Return XML
                return self.response(dumps_networkapi(equipmentaccess_map))

        except InvalidValueError as e:
            return self.response_error(269, e.param, e.value)
        except EquipamentoAccessNotFoundError as e:
            return self.response_error(303)
        except EquipamentoAccessDuplicatedError as e:
            return self.response_error(242, equip_access.equipamento.id,
                                       type_access.id)
        except AccessTypeNotFoundError as e:
            return self.response_error(304)
        except (TipoAcessoError, EquipamentoError):
            return self.response_error(1)
        except XMLError, x:
            self.log.error(u'Error reading the XML request.')
            return self.response_error(3, x)