Esempio n. 1
0
    def clean(self):

        if self._errors:
            return self._errors
        if not self._errors:
            ip_version = self.cleaned_data.get('ip_version', '')
            prefix = int(self.cleaned_data.get('prefix', ''))

            if ip_version == "v4":

                if prefix not in range(33):
                    self._errors['prefix'] = self.error_class(
                        [environment_messages.get('invalid_prefix_ipv4')])

                v4oct1 = self.cleaned_data.get('v4oct1', '')
                v4oct2 = self.cleaned_data.get('v4oct2', '')
                v4oct3 = self.cleaned_data.get('v4oct3', '')
                v4oct4 = self.cleaned_data.get('v4oct4', '')
                v4oct5 = self.cleaned_data.get('v4oct5', '')

                try:
                    if int(v4oct5) > int(prefix):
                        self._errors['prefix'] = self.error_class(
                            [environment_messages.get('invalid_prefix')])
                except Exception:
                    pass

                self.cleaned_data['network_validate'] = v4oct1 + '.' + \
                    v4oct2 + '.' + v4oct3 + '.' + v4oct4 + '/' + v4oct5

            else:
                if prefix not in range(129):
                    self._errors['prefix'] = self.error_class(
                        [environment_messages.get('invalid_prefix_ipv6')])

                v6oct1 = self.cleaned_data.get('v6oct1', '')
                v6oct2 = self.cleaned_data.get('v6oct2', '')
                v6oct3 = self.cleaned_data.get('v6oct3', '')
                v6oct4 = self.cleaned_data.get('v6oct4', '')
                v6oct5 = self.cleaned_data.get('v6oct5', '')
                v6oct6 = self.cleaned_data.get('v6oct6', '')
                v6oct7 = self.cleaned_data.get('v6oct7', '')
                v6oct8 = self.cleaned_data.get('v6oct8', '')
                v6oct9 = self.cleaned_data.get('v6oct9', '')

                try:
                    if int(v6oct9) > int(prefix):
                        self._errors['prefix'] = self.error_class(
                            [environment_messages.get('invalid_prefix')])
                except Exception:
                    pass

                self.cleaned_data['network_validate'] = v6oct1 + ':' + v6oct2 + ':' + v6oct3 + ':' + \
                    v6oct4 + ':' + v6oct5 + ':' + v6oct6 + ':' + \
                    v6oct7 + ':' + v6oct8 + '/' + v6oct9

            return self.cleaned_data
def add_environment(request):
    """
    Function to create a new environment.
    """

    auth = AuthSession(request.session)
    client = auth.get_clientFactory()
    lists = list()

    try:
        if request.method == 'POST':
            vlan_range1 = request.POST.get('vlan_range', '')
            # range1 = vlan_range1.split('-')
            vlan_range2 = request.POST.get('vlan_range2', '')
            # range2 = vlan_range2.split('-')

            range1 = vlan_range1.split('-')
            if len(range1) > 1:
                range1_begin = int(range1[0])
                range1_end = int(range1[1])
            else:
                range1_begin = None
                range1_end = None
            range2 = vlan_range2.split('-')
            if len(range2) > 1:
                range2_begin = int(range2[0])
                range2_end = int(range2[1])
            else:
                range2_begin = range1_begin
                range2_end = range1_end

            env = {
                "grupo_l3": int(request.POST.get('fisic_env')),
                "ambiente_logico": int(request.POST.get('logic_env')),
                "divisao_dc": int(request.POST.get('router_env')),
                "min_num_vlan_1": range1_begin,
                "max_num_vlan_1": range1_end,
                "min_num_vlan_2": range2_begin,
                "max_num_vlan_2": range2_end,
                "default_vrf": int(request.POST.get('vrf')),
                "father_environment": int(request.POST.get('father_env')) \
                    if request.POST.get('father_env') else None,
                'vxlan': True if request.POST.get('vxlan') else False
            }
            client.create_api_environment().create([env])
            messages.add_message(request, messages.SUCCESS,
                                 environment_messages.get("success_insert"))

            return HttpResponseRedirect(reverse("environment.list"))
    except NetworkAPIClientError as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)
    except BaseException as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    return render_to_response(templates.ADD_ENVIRONMENT, lists,
                              RequestContext(request))
def add_logic_environment(request):
    auth = AuthSession(request.session)
    client = auth.get_clientFactory()

    if request.method == 'POST':
        env = dict(name=request.POST.get('logicName'))

        client.create_api_environment_logic().create([env])
        messages.add_message(request, messages.SUCCESS,
                             environment_messages.get("success_insert"))

    return HttpResponseRedirect(reverse("environment.add"))
Esempio n. 4
0
def add_configuration(request, id_environment):

    context = dict()

    try:

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()
        net_type_list = client.create_tipo_rede().listar()

        form = IpConfigForm(net_type_list, request.POST or None)

        # Get user auth
        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_ambiente()

        environment_dict = environment_client.buscar_por_id(id_environment)
        environment = environment_dict.get('ambiente')

        context["form"] = form
        context["action"] = reverse(
            'environment.configuration.add', args=[id_environment])
        context["environment"] = environment

        if form.is_valid():
            network = form.cleaned_data['network_validate']
            prefix = form.cleaned_data['prefix']
            ip_version = form.cleaned_data['ip_version']
            network_type = form.cleaned_data['net_type']

            environment_client.configuration_save(
                id_environment, network, prefix, ip_version, network_type)
            messages.add_message(request, messages.SUCCESS, environment_messages.get(
                "success_configuration_insert"))
            context["form"] = IpConfigForm(net_type_list)

    except AmbienteNaoExisteError as e:
        messages.add_message(request, messages.ERROR, e)
        return redirect('environment.list')

    except InvalidParameterError as e:
        messages.add_message(request, messages.ERROR, e)

    except NetworkAPIClientError as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    except BaseException as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    return render_to_response(templates.ENVIRONMENT_CIDR, context,
                              context_instance=RequestContext(request))
Esempio n. 5
0
def remove_configuration(request, environment_id, configuration_id):
    try:

        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_ambiente()

        environment_client.buscar_por_id(environment_id)

        environment_client.configuration_remove(
            environment_id, configuration_id)

        messages.add_message(request, messages.SUCCESS, environment_messages.get(
            "success_configuration_remove"))

        return redirect('environment.edit', environment_id)

    except NetworkAPIClientError, e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)
Esempio n. 6
0
def remove_configuration(request, environment_id, configuration_id):
    try:

        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_ambiente()

        environment_client.buscar_por_id(environment_id)

        environment_client.configuration_remove(
            environment_id, configuration_id)

        messages.add_message(request, messages.SUCCESS, environment_messages.get(
            "success_configuration_remove"))

        return redirect('environment.edit', environment_id)

    except NetworkAPIClientError, e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)
Esempio n. 7
0
def add_configuration(request, id_environment):
    try:

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()
        net_type_list = client.create_tipo_rede().listar()

        context = dict()

        form = IpConfigForm(net_type_list, request.POST or None)

        # Get user auth
        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_ambiente()

        environment_dict = environment_client.buscar_por_id(id_environment)
        environment = environment_dict.get('ambiente')

        context["form"] = form
        context["action"] = reverse('environment.configuration.add',
                                    args=[id_environment])
        context["environment"] = environment

        if form.is_valid():
            network = form.cleaned_data['network_validate']
            prefix = form.cleaned_data['prefix']
            ip_version = form.cleaned_data['ip_version']
            network_type = form.cleaned_data['net_type']

            environment_client.configuration_save(id_environment, network,
                                                  prefix, ip_version,
                                                  network_type)
            messages.add_message(
                request, messages.SUCCESS,
                environment_messages.get("success_configuration_insert"))
            context["form"] = IpConfigForm(net_type_list)

    except AmbienteNaoExisteError, e:
        messages.add_message(request, messages.ERROR, e)
        return redirect('environment.list')
Esempio n. 8
0
def add_configuration(request, id_environment):
    try:

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()
        net_type_list = client.create_tipo_rede().listar()

        context = dict()

        form = IpConfigForm(net_type_list, request.POST or None)

        # Get user auth
        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_ambiente()

        environment_dict = environment_client.buscar_por_id(id_environment)
        environment = environment_dict.get('ambiente')

        context["form"] = form
        context["action"] = reverse(
            'environment.configuration.add', args=[id_environment])
        context["environment"] = environment

        if form.is_valid():
            network = form.cleaned_data['network_validate']
            prefix = form.cleaned_data['prefix']
            ip_version = form.cleaned_data['ip_version']
            network_type = form.cleaned_data['net_type']

            environment_client.configuration_save(
                id_environment, network, prefix, ip_version, network_type)
            messages.add_message(request, messages.SUCCESS, environment_messages.get(
                "success_configuration_insert"))
            context["form"] = IpConfigForm(net_type_list)

    except AmbienteNaoExisteError, e:
        messages.add_message(request, messages.ERROR, e)
        return redirect('environment.list')
Esempio n. 9
0
def remove_configuration(request, environment_id, configuration_id):
    try:

        auth = AuthSession(request.session)
        environment_client = auth.get_clientFactory().create_api_environment_cidr()

        environment_client.delete(cidr_id=[configuration_id])

        messages.add_message(request,
                             messages.SUCCESS,
                             environment_messages.get("success_configuration_remove"))

        return redirect('environment.edit', environment_id)

    except NetworkAPIClientError as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    except BaseException as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    return redirect('environment.list')
Esempio n. 10
0
def allocate_cidr(request, id_environment):

    context = dict()

    try:

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()

        net_type_list = client.create_tipo_rede().listar()
        form = IpConfigForm(net_type_list, request.POST or None)

        environment = client.create_api_environment().get(
            [id_environment]).get('environments')[0]

        context["form"] = form
        context["action"] = reverse('environment.configuration.add',
                                    args=[id_environment])
        context["environment"] = environment

        if request.method == 'POST':
            ip_version = request.POST.get('ip_version')

            if str(ip_version) == 'cidr_auto':
                v4 = request.POST.get('v4_auto')
                v6 = request.POST.get('v6_auto')
                network_type = request.POST.get('net_type')
                cidr = list()

                if int(v4):
                    prefix_v4 = request.POST.get('prefixv4')
                    if not prefix_v4:
                        raise Exception(
                            "Informe a máscara da subnet da redev4.")

                    cidrv4 = dict(ip_version='v4',
                                  network_type=network_type,
                                  subnet_mask=prefix_v4,
                                  environment=int(id_environment))
                    cidr.append(cidrv4)
                if int(v6):
                    prefix_v6 = request.POST.get('prefixv6')
                    if not prefix_v6:
                        raise Exception(
                            "Informe a máscara da subnet da redev6.")
                    cidrv6 = dict(ip_version='v6',
                                  network_type=network_type,
                                  subnet_mask=str(prefix_v6),
                                  environment=int(id_environment))
                    cidr.append(cidrv6)

                if not cidr:
                    raise Exception("Escolha uma das opções abaixo.")

                client.create_api_environment_cidr().post(cidr)
                messages.add_message(
                    request, messages.SUCCESS,
                    environment_messages.get("success_configuration_insert"))

            elif form.is_valid():
                network = form.cleaned_data['network_validate']
                network_type = form.cleaned_data['net_type']
                prefix = form.cleaned_data['prefix']

                cidr = dict(ip_version=ip_version,
                            network_type=int(network_type),
                            subnet_mask=str(prefix),
                            network=network,
                            environment=int(id_environment))

                client.create_api_environment_cidr().post([cidr])
                messages.add_message(
                    request, messages.SUCCESS,
                    environment_messages.get("success_configuration_insert"))

            else:
                messages.add_message(
                    request, messages.ERROR,
                    environment_messages.get("invalid_parameters"))

            context["form"] = IpConfigForm(net_type_list)

    except AmbienteNaoExisteError as e:
        messages.add_message(request, messages.ERROR, e)
        return redirect('environment.list')

    except InvalidParameterError as e:
        messages.add_message(request, messages.ERROR, e)

    except NetworkAPIClientError as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)
    except Exception as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)

    return render_to_response(templates.ENVIRONMENT_CIDR,
                              context,
                              context_instance=RequestContext(request))
Esempio n. 11
0
def remove_environment(request, environment_id=None):

    error_not_found = list()
    error_associated = list()
    have_errors = False

    auth = AuthSession(request.session)
    client = auth.get_clientFactory()

    if environment_id:
        env_id = int(environment_id)
    else:
        ids = request.POST.getlist('ids[]')
        env_id = ';'.join(str(id) for id in ids)

    try:
        client.create_api_environment().delete_environment(env_id)
    except DetailedEnvironmentError as e:
        # Detailed message for VLAN errors
        logger.error(e)
        have_errors = True
        messages.add_message(request, messages.ERROR, e)
    except AmbienteNaoExisteError as e:
        # Environment doesn't exist.
        logger.error(e)
        have_errors = True
        error_not_found.append(ids)
    except AmbienteError as e:
        # Environment associated to equipment and/or VLAN that
        # couldn't be removed.
        logger.error(e)
        have_errors = True
        error_associated.append(ids)
    except InvalidParameterError as e:
        # Environment id is null or invalid.
        logger.error(e)
        have_errors = True
        messages.add_message(
            request, messages.ERROR, environment_messages.get("invalid_id"))
    except DataBaseError as e:
        # NetworkAPI fail to access database.
        logger.error(e)
        have_errors = True
        messages.add_message(request, messages.ERROR, e)
    except XMLError as e:
        # NetworkAPI fail generating XML response.
        logger.error(e)
        have_errors = True
        messages.add_message(request, messages.ERROR, e)
    except Exception as e:
        # Other errors
        logger.error(e)
        have_errors = True
        messages.add_message(request, messages.ERROR, e)

    # Build not found message
    if len(error_not_found) > 0:
        msg = ''
        for id_error in error_not_found[0:-1]:
            msg = msg + id_error + ','
        if len(error_not_found) > 1:
            msg = msg[:-1] + ' e ' + error_not_found[-1]
        else:
            msg = error_not_found[0]

        msg = environment_messages.get("env_not_found") % msg
        messages.add_message(request, messages.ERROR, msg)

    # Build associated error message
    if len(error_associated) > 0:
        msg = ''
        for id_error in error_associated[0:-1]:
            msg = msg + id_error + ','
        if len(error_associated) > 1:
            msg = msg[:-1] + ' e ' + error_associated[-1]
        else:
            msg = error_associated[0]

        msg = environment_messages.get("env_associated") % msg
        messages.add_message(request, messages.ERROR, msg)

    # Success message
    if not have_errors:
        messages.add_message(
            request, messages.SUCCESS, environment_messages.get("success_delete_all"))

    return redirect('environment.list')
Esempio n. 12
0
def insert_ambiente_logico(request):
    # If form was submited
    if request.method == 'POST':

        try:
            lists = dict()

            # Get User
            auth = AuthSession(request.session)
            client = auth.get_clientFactory()

            lists['ambientelogico_form'] = AmbienteLogicoForm()

            # Set data in form
            ambiente_logico_form = AmbienteLogicoForm(request.POST)

            id_env = request.POST['id_env']

            # Validate
            if ambiente_logico_form.is_valid():

                nome_ambiente_logico = ambiente_logico_form.cleaned_data[
                    'nome']

                # Business
                client.create_ambiente_logico().inserir(
                    nome_ambiente_logico.upper())
                messages.add_message(
                    request, messages.SUCCESS, environment_messages.get("ambiente_log_sucess"))

            else:
                # If invalid, send all error messages in fields
                lists['ambientelogico_form'] = ambiente_logico_form

        except NetworkAPIClientError, e:
            logger.error(e)
            lists['ambientelogico_form'] = ambiente_logico_form
            messages.add_message(request, messages.ERROR, e)

        try:
            # Get all needs from NetworkAPI
            env_logic = client.create_ambiente_logico().listar()
            division_dc = client.create_divisao_dc().listar()
            group_l3 = client.create_grupo_l3().listar()
            filters = client.create_filter().list_all()
            try:
                templates = get_templates(auth.get_user(), True)
            except GITCommandError, e:
                logger.error(e)
                messages.add_message(request, messages.ERROR, e)
                templates = {
                    'ipv4': list(),
                    'ipv6': list()
                }

            ipv4 = templates.get("ipv4")
            ipv6 = templates.get("ipv6")
            envs = client.create_ambiente().listar().get('ambiente')
            vrfs = client.create_api_vrf().search()['vrfs']

            # Forms
            env_form = AmbienteForm(
                env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs)
            div_form = DivisaoDCForm()
            gro_form = Grupol3Form()
            action = reverse("environment.form")

            # If id_env is set, still in edit
            if id_env:
                env = client.create_ambiente().buscar_por_id(id_env)
                env = env.get("ambiente")

                # Set Environment data
                initial = {"id_env": env.get("id"), "divisao": env.get("id_divisao"),
                           "ambiente_logico": env.get("id_ambiente_logico"),
                           "grupol3": env.get("id_grupo_l3"),
                           "filter": env.get("id_filter"),
                           "link": env.get("link")}
                env_form = AmbienteForm(
                    env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, initial=initial)
                div_form = DivisaoDCForm(initial={"id_env": id_env})
                gro_form = Grupol3Form(initial={"id_env": id_env})
                action = reverse("environment.edit", args=[id_env])

            lists['ambiente'] = env_form
            lists['divisaodc_form'] = div_form
            lists['grupol3_form'] = gro_form
            lists['action'] = action

            return render_to_response(ENVIRONMENT_FORM, lists, context_instance=RequestContext(request))
Esempio n. 13
0
def insert_ambiente(request):
    try:
        lists = dict()
        config_forms = list()

        # Get User
        auth = AuthSession(request.session)
        client = auth.get_clientFactory()

        # Get all needs from NetworkAPI
        env_logic = client.create_ambiente_logico().listar()
        division_dc = client.create_divisao_dc().listar()
        group_l3 = client.create_grupo_l3().listar()
        filters = client.create_filter().list_all()
        try:
            templates = get_templates(auth.get_user(), True)
        except GITCommandError, e:
            logger.error(e)
            messages.add_message(request, messages.ERROR, e)
            templates = {
                'ipv4': list(),
                'ipv6': list()
            }

        ipv4 = templates.get("ipv4")
        ipv6 = templates.get("ipv6")
        envs = client.create_ambiente().listar().get('ambiente')
        vrfs = client.create_api_vrf().search()['vrfs']
        # Forms
        lists['ambiente'] = AmbienteForm(
            env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs)
        lists['divisaodc_form'] = DivisaoDCForm()
        lists['grupol3_form'] = Grupol3Form()
        lists['ambientelogico_form'] = AmbienteLogicoForm()

        lists['action'] = reverse("environment.form")

        # If form was submited
        if request.method == 'POST':

            # Set data in form
            ambiente_form = AmbienteForm(
                env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, request.POST)

            # Return data to form in case of error
            lists['ambiente'] = ambiente_form

            # Validate
            if ambiente_form.is_valid():

                divisao_dc = ambiente_form.cleaned_data['divisao']
                ambiente_logico = ambiente_form.cleaned_data['ambiente_logico']
                grupo_l3 = ambiente_form.cleaned_data['grupol3']
                filter_ = ambiente_form.cleaned_data['filter']
                link = ambiente_form.cleaned_data['link']
                acl_path = ambiente_form.cleaned_data['acl_path']
                vrf = ambiente_form.cleaned_data['vrf']
                if str(vrf) == str(None):
                    vrf = None
                father_environment = ambiente_form.cleaned_data['father_environment']

                ipv4_template = ambiente_form.cleaned_data.get(
                    'ipv4_template', None)
                ipv6_template = ambiente_form.cleaned_data.get(
                    'ipv6_template', None)

                min_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_1', None)
                max_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_1', None)
                min_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_2', None)
                max_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_2', None)

                vrf_internal = dict(ambiente_form.fields['vrf'].choices)[int(vrf)]

                # Business
                dict_env = {
                    "id": None,
                    "grupo_l3": int(grupo_l3),
                    "ambiente_logico": int(ambiente_logico),
                    "divisao_dc": int(divisao_dc),
                    "filter": int(filter_) if filter_ else None,
                    "acl_path": acl_path,
                    "ipv4_template": ipv4_template,
                    "ipv6_template": ipv6_template,
                    "link": link,
                    "min_num_vlan_1": min_num_vlan_1,
                    "max_num_vlan_1": max_num_vlan_1,
                    "min_num_vlan_2": min_num_vlan_2,
                    "max_num_vlan_2": max_num_vlan_2,
                    "default_vrf": int(vrf),
                    "father_environment": int(father_environment) if father_environment else None,
                    'vrf': vrf_internal
                }
                client.create_api_environment().create_environment(dict_env)
                messages.add_message(
                    request, messages.SUCCESS, environment_messages.get("success_insert"))

                return redirect('environment.list')

            else:
                # If invalid, send all error messages in fields
                lists['ambiente'] = ambiente_form

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()
        net_type_list = client.create_tipo_rede().listar()

        config_forms.append(IpConfigForm(net_type_list))

        lists['config_forms'] = config_forms
Esempio n. 14
0
     # Environment doesn't exist.
     logger.error(e)
     have_errors = True
     error_not_found.append(id_env)
 except AmbienteError, e:
     # Environment associated to equipment and/or VLAN that
     # couldn't be removed.
     logger.error(e)
     have_errors = True
     error_associated.append(id_env)
 except InvalidParameterError, e:
     # Environment id is null or invalid.
     logger.error(e)
     have_errors = True
     messages.add_message(
         request, messages.ERROR, environment_messages.get("invalid_id"))
 except DataBaseError, e:
     # NetworkAPI fail to access database.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except XMLError, e:
     # NetworkAPI fail generating XML response.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except Exception, e:
     # Other errors
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
Esempio n. 15
0
def insert_ambiente_logico(request):
    # If form was submited
    if request.method == 'POST':

        try:
            lists = dict()

            # Get User
            auth = AuthSession(request.session)
            client = auth.get_clientFactory()

            lists['ambientelogico_form'] = AmbienteLogicoForm()

            # Set data in form
            ambiente_logico_form = AmbienteLogicoForm(request.POST)

            id_env = request.POST['id_env']

            # Validate
            if ambiente_logico_form.is_valid():

                nome_ambiente_logico = ambiente_logico_form.cleaned_data[
                    'nome']

                # Business
                client.create_ambiente_logico().inserir(
                    nome_ambiente_logico.upper())
                messages.add_message(
                    request, messages.SUCCESS, environment_messages.get("ambiente_log_sucess"))

            else:
                # If invalid, send all error messages in fields
                lists['ambientelogico_form'] = ambiente_logico_form

        except NetworkAPIClientError, e:
            logger.error(e)
            lists['ambientelogico_form'] = ambiente_logico_form
            messages.add_message(request, messages.ERROR, e)

        try:
            # Get all needs from NetworkAPI
            env_logic = client.create_ambiente_logico().listar()
            division_dc = client.create_divisao_dc().listar()
            group_l3 = client.create_grupo_l3().listar()
            filters = client.create_filter().list_all()
            try:
                templates = get_templates(auth.get_user(), True)
            except GITCommandError, e:
                logger.error(e)
                messages.add_message(request, messages.ERROR, e)
                templates = {
                    'ipv4': list(),
                    'ipv6': list()
                }

            ipv4 = templates.get("ipv4")
            ipv6 = templates.get("ipv6")
            envs = client.create_ambiente().listar().get('ambiente')
            vrfs = client.create_api_vrf().search()['vrfs']

            # Forms
            env_form = AmbienteForm(
                env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs)
            div_form = DivisaoDCForm()
            gro_form = Grupol3Form()
            action = reverse("environment.form")

            # If id_env is set, still in edit
            if id_env:
                env = client.create_ambiente().buscar_por_id(id_env)
                env = env.get("ambiente")

                # Set Environment data
                initial = {"id_env": env.get("id"), "divisao": env.get("id_divisao"),
                           "ambiente_logico": env.get("id_ambiente_logico"),
                           "grupol3": env.get("id_grupo_l3"),
                           "filter": env.get("id_filter"),
                           "link": env.get("link")}
                env_form = AmbienteForm(
                    env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, initial=initial)
                div_form = DivisaoDCForm(initial={"id_env": id_env})
                gro_form = Grupol3Form(initial={"id_env": id_env})
                action = reverse("environment.edit", args=[id_env])

            lists['ambiente'] = env_form
            lists['divisaodc_form'] = div_form
            lists['grupol3_form'] = gro_form
            lists['action'] = action

            return render_to_response(ENVIRONMENT_FORM, lists, context_instance=RequestContext(request))
Esempio n. 16
0
def insert_ambiente(request):
    try:
        lists = dict()
        config_forms = list()

        # Get User
        auth = AuthSession(request.session)
        client = auth.get_clientFactory()

        # Get all needs from NetworkAPI
        env_logic = client.create_ambiente_logico().listar()
        division_dc = client.create_divisao_dc().listar()
        group_l3 = client.create_grupo_l3().listar()
        filters = client.create_filter().list_all()
        try:
            templates = get_templates(auth.get_user(), True)
        except GITCommandError, e:
            logger.error(e)
            messages.add_message(request, messages.ERROR, e)
            templates = {
                'ipv4': list(),
                'ipv6': list()
            }

        ipv4 = templates.get("ipv4")
        ipv6 = templates.get("ipv6")
        envs = client.create_ambiente().listar().get('ambiente')
        vrfs = client.create_api_vrf().search()['vrfs']
        # Forms
        lists['ambiente'] = AmbienteForm(
            env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs)
        lists['divisaodc_form'] = DivisaoDCForm()
        lists['grupol3_form'] = Grupol3Form()
        lists['ambientelogico_form'] = AmbienteLogicoForm()

        lists['action'] = reverse("environment.form")

        # If form was submited
        if request.method == 'POST':

            # Set data in form
            ambiente_form = AmbienteForm(
                env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, request.POST)

            # Return data to form in case of error
            lists['ambiente'] = ambiente_form

            # Validate
            if ambiente_form.is_valid():

                divisao_dc = ambiente_form.cleaned_data['divisao']
                ambiente_logico = ambiente_form.cleaned_data['ambiente_logico']
                grupo_l3 = ambiente_form.cleaned_data['grupol3']
                filter_ = ambiente_form.cleaned_data['filter']
                link = ambiente_form.cleaned_data['link']
                acl_path = ambiente_form.cleaned_data['acl_path']
                vrf = ambiente_form.cleaned_data['vrf']
                if str(vrf) == str(None):
                    vrf = None
                father_environment = ambiente_form.cleaned_data['father_environment']

                ipv4_template = ambiente_form.cleaned_data.get(
                    'ipv4_template', None)
                ipv6_template = ambiente_form.cleaned_data.get(
                    'ipv6_template', None)

                min_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_1', None)
                max_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_1', None)
                min_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_2', None)
                max_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_2', None)

                vrf_internal = dict(ambiente_form.fields['vrf'].choices)[int(vrf)]

                # Business
                dict_env = {
                    "id": None,
                    "grupo_l3": int(grupo_l3),
                    "ambiente_logico": int(ambiente_logico),
                    "divisao_dc": int(divisao_dc),
                    "filter": int(filter_) if filter_ else None,
                    "acl_path": acl_path,
                    "ipv4_template": ipv4_template,
                    "ipv6_template": ipv6_template,
                    "link": link,
                    "min_num_vlan_1": min_num_vlan_1,
                    "max_num_vlan_1": max_num_vlan_1,
                    "min_num_vlan_2": min_num_vlan_2,
                    "max_num_vlan_2": max_num_vlan_2,
                    "default_vrf": int(vrf),
                    "father_environment": int(father_environment) if father_environment else None,
                    'vrf': vrf_internal
                }
                client.create_api_environment().create_environment(dict_env)
                messages.add_message(
                    request, messages.SUCCESS, environment_messages.get("success_insert"))

                return redirect('environment.list')

            else:
                # If invalid, send all error messages in fields
                lists['ambiente'] = ambiente_form

        auth = AuthSession(request.session)
        client = auth.get_clientFactory()
        net_type_list = client.create_tipo_rede().listar()

        config_forms.append(IpConfigForm(net_type_list))

        lists['config_forms'] = config_forms
Esempio n. 17
0
     # Environment doesn't exist.
     logger.error(e)
     have_errors = True
     error_not_found.append(id_env)
 except AmbienteError, e:
     # Environment associated to equipment and/or VLAN that
     # couldn't be removed.
     logger.error(e)
     have_errors = True
     error_associated.append(id_env)
 except InvalidParameterError, e:
     # Environment id is null or invalid.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR,
                          environment_messages.get("invalid_id"))
 except DataBaseError, e:
     # NetworkAPI fail to access database.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except XMLError, e:
     # NetworkAPI fail generating XML response.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except Exception, e:
     # Other errors
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
Esempio n. 18
0
     # Environment doesn't exist.
     logger.error(e)
     have_errors = True
     error_not_found.append(id_env)
 except AmbienteError, e:
     # Environment associated to equipment and/or VLAN that
     # couldn't be removed.
     logger.error(e)
     have_errors = True
     error_associated.append(id_env)
 except InvalidParameterError, e:
     # Environment id is null or invalid.
     logger.error(e)
     have_errors = True
     messages.add_message(
         request, messages.ERROR, environment_messages.get("invalid_id"))
 except DataBaseError, e:
     # NetworkAPI fail to access database.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except XMLError, e:
     # NetworkAPI fail generating XML response.
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
 except Exception, e:
     # Other errors
     logger.error(e)
     have_errors = True
     messages.add_message(request, messages.ERROR, e)
Esempio n. 19
0
def edit(request, id_environment):

    lists = dict()

    try:

        # Get User
        auth = AuthSession(request.session)
        client = auth.get_clientFactory()

        # Get all needs from NetworkAPI
        env_logic = client.create_ambiente_logico().listar()
        division_dc = client.create_divisao_dc().listar()
        group_l3 = client.create_grupo_l3().listar()
        filters = client.create_filter().list_all()

        cidr = client.create_api_environment_cidr().\
            get_by_env(env_id=[id_environment])

        lists['configurations_prefix'] = cidr.get('cidr')

        try:
            templates = get_templates(auth.get_user(), True)
        except GITCommandError as e:
            logger.error(e)
            messages.add_message(request, messages.ERROR, e)
            templates = {
                'ipv4': list(),
                'ipv6': list()
            }

        ipv4 = templates.get("ipv4")
        ipv6 = templates.get("ipv6")

        envs = client.create_ambiente().listar().get('ambiente')
        vrfs = client.create_api_vrf().search()['vrfs']

        try:
            env = client.create_api_environment().get_environment(id_environment)
            env = env.get("environments")[0]
        except NetworkAPIClientError as e:
            logger.error(e)
            messages.add_message(request, messages.ERROR, e)
            return redirect('environment.list')

        lists['id_environment'] = env.get("id")

        # Set Environment data
        initial = {
            "id_env": env.get("id"),
            "divisao": env.get("divisao_dc"),
            "ambiente_logico": env.get("ambiente_logico"),
            "grupol3": env.get("grupo_l3"),
            "filter": env.get("filter"),
            "acl_path": env.get("acl_path"),
            "ipv4_template": env.get("ipv4_template"),
            "ipv6_template": env.get("ipv6_template"),
            "min_num_vlan_1": env.get("min_num_vlan_1"),
            "max_num_vlan_1": env.get("max_num_vlan_1"),
            "min_num_vlan_2": env.get("min_num_vlan_2"),
            "max_num_vlan_2": env.get("max_num_vlan_2"),
            'link': env.get('link'),
            'father_environment': env.get('father_environment'),
            'vrf': env.get('default_vrf'),
            'vxlan': 1 if env.get('vxlan') else 0
        }

        env_form = AmbienteForm(
            env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, initial=initial)

        # Forms
        lists['ambiente'] = env_form
        lists['vxlan'] = env.get('vxlan', False)
        lists['divisaodc_form'] = DivisaoDCForm(
            initial={"id_env": id_environment}
        )
        lists['grupol3_form'] = Grupol3Form(initial={"id_env": id_environment})
        lists['ambientelogico_form'] = AmbienteLogicoForm(
            initial={"id_env": id_environment})
        lists['action'] = reverse("environment.edit", args=[id_environment])

        # If form was submited
        if request.method == 'POST':

            # Set data in form
            ambiente_form = AmbienteForm(
                env_logic, division_dc, group_l3, filters, ipv4, ipv6, envs, vrfs, request.POST)

            # Return data to form in case of error
            lists['ambiente'] = ambiente_form

            vxlan = True if request.POST.get('is_vxlan') else False

            # Validate
            if ambiente_form.is_valid():

                id_env = ambiente_form.cleaned_data['id_env']
                divisao_dc = ambiente_form.cleaned_data['divisao']
                ambiente_logico = ambiente_form.cleaned_data['ambiente_logico']
                grupo_l3 = ambiente_form.cleaned_data['grupol3']
                filter_ = ambiente_form.cleaned_data['filter']
                link = ambiente_form.cleaned_data['link']
                vrf = ambiente_form.cleaned_data['vrf']
                acl_path = ambiente_form.cleaned_data['acl_path']
                father_environment = ambiente_form.cleaned_data['father_environment']

                ipv4_template = ambiente_form.cleaned_data.get(
                    'ipv4_template', None)
                ipv6_template = ambiente_form.cleaned_data.get(
                    'ipv6_template', None)

                min_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_1', None)
                max_num_vlan_1 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_1', None)
                min_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'min_num_vlan_2', None)
                max_num_vlan_2 = ambiente_form.cleaned_data.get(
                    'max_num_vlan_2', None)

                vrf_internal = dict(ambiente_form.fields['vrf'].choices)[int(vrf)]

                # Business
                dict_env = {
                    "id": int(id_env),
                    "grupo_l3": int(grupo_l3),
                    "ambiente_logico": int(ambiente_logico),
                    "divisao_dc": int(divisao_dc),
                    "filter": int(filter_) if filter_ else None,
                    "acl_path": acl_path,
                    "ipv4_template": ipv4_template,
                    "ipv6_template": ipv6_template,
                    "link": link,
                    "min_num_vlan_1": min_num_vlan_1,
                    "max_num_vlan_1": max_num_vlan_1,
                    "min_num_vlan_2": min_num_vlan_2,
                    "max_num_vlan_2": max_num_vlan_2,
                    "default_vrf": int(vrf),
                    "father_environment": int(father_environment) if father_environment else None,
                    'vrf': vrf_internal,
                    'vxlan': vxlan
                }
                client.create_api_environment().update_environment(dict_env, id_env)

                messages.add_message(
                    request, messages.SUCCESS, environment_messages.get("success_edit"))

                return redirect('environment.list')

            else:
                # If invalid, send all error messages in fields
                lists['ambiente'] = ambiente_form

    except NetworkAPIClientError as e:
        logger.error(e)
        messages.add_message(request, messages.ERROR, e)
    return render_to_response(ENVIRONMENT_FORM, lists, context_instance=RequestContext(request))