Exemplo n.º 1
0
def edit_optical_path(request, handle_id):
    # Get needed data from node
    nh, path = helpers.get_nh_node(handle_id)
    relations = path.get_relations()
    depends_on = path.get_dependencies()
    dependency_categories = 'odf,optical-link,optical-multiplex-section,optical-node,router,switch,optical-path'
    if request.POST:
        form = forms.EditOpticalPathForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, path.handle_id, form)
            # Optical Path node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, path, owner_nh.handle_id)
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_depends_on'])
                helpers.set_depends_on(request.user, path, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditOpticalPathForm(path.data)
    return render(request, 'noclook/edit/edit_optical_path.html',
                  {'node_handle': nh, 'form': form, 'node': path, 'relations': relations,
                   'depends_on': depends_on, 'dependency_categories': dependency_categories})
Exemplo n.º 2
0
def edit_cable(request, handle_id):
    # Get needed data from node
    nh, cable = helpers.get_nh_node(handle_id)
    connections = cable.get_connected_equipment()
    relations = cable.get_relations()
    if request.POST:
        form = forms.EditCableForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, cable.handle_id, form)
            if form.cleaned_data['relationship_end_a']:
                end_a_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_a'])
                helpers.set_connected_to(request.user, cable, end_a_nh.handle_id)
            if form.cleaned_data['relationship_end_b']:
                end_b_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_b'])
                helpers.set_connected_to(request.user, cable, end_b_nh.handle_id)
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, cable, owner_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditCableForm(cable.data)
    return render(request, 'noclook/edit/edit_cable.html',
                  {'node_handle': nh, 'form': form, 'node': cable, 'connections': connections,
                   'relations': relations})
Exemplo n.º 3
0
def edit_optical_link(request, handle_id):
    # Get needed data from node
    nh, link = helpers.get_nh_node(handle_id)
    relations = link.get_relations()
    depends_on = link.get_dependencies()
    if request.POST:
        form = forms.EditOpticalLinkForm(request.POST)
        if form.is_valid():
            if 'type' in form.cleaned_data:
                form.cleaned_data['type'] = form.cleaned_data['type'].name
            # Generic node update
            helpers.form_update_node(request.user, link.handle_id, form)
            # Optical Link node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, link, owner_nh.handle_id)
            if form.cleaned_data['relationship_end_a']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_a'])
                helpers.set_depends_on(request.user, link, depends_on_nh.handle_id)
            if form.cleaned_data['relationship_end_b']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_b'])
                helpers.set_depends_on(request.user, link, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditOpticalLinkForm(link.data)
    return render(request, 'noclook/edit/edit_optical_link.html',
                  {'node_handle': nh, 'form': form, 'node': link, 'relations': relations,
                   'depends_on': depends_on})
Exemplo n.º 4
0
Arquivo: create.py Projeto: emjemj/ni
def new_switch(request, **kwargs):
    if request.POST:
        form = forms.NewSwitchForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'switch', 'Physical')
            except UniqueNodeError:
                form = forms.NewSwitchForm(request.POST)
                form.add_error('name',
                               'A Switch with that name already exists.')
                return render(request, 'noclook/create/create_switch.html',
                              {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            node = nh.get_node()
            if form.cleaned_data['relationship_provider']:
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            if form.cleaned_data['switch_type']:
                switch_type = SwitchType.objects.get(
                    pk=form.cleaned_data['switch_type'])
                helpers.dict_update_node(request.user, nh.handle_id,
                                         {"model": switch_type.name})
                if switch_type.ports:
                    for port in switch_type.ports.split(","):
                        helpers.create_port(node, port.strip(), request.user)

            return redirect(nh.get_absolute_url())
    else:
        name = kwargs.get('name', None)
        initial = {'name': name}
        form = forms.NewSwitchForm(initial=initial)
    return render(request, 'noclook/create/create_switch.html', {'form': form})
Exemplo n.º 5
0
Arquivo: create.py Projeto: emjemj/ni
def new_optical_multiplex_section(request, **kwargs):
    if request.POST:
        form = forms.NewOpticalMultiplexSectionForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'optical-multiplex-section', 'Logical')
            except UniqueNodeError:
                form = forms.NewOpticalMultiplexSectionForm(request.POST)
                form.add_error(
                    'name',
                    'An Optical Multiplex Section with that name already exists.'
                )
                return render(
                    request,
                    'noclook/create/create_optical_multiplex_section.html',
                    {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            if form.cleaned_data['relationship_provider']:
                node = nh.get_node()
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewOpticalMultiplexSectionForm()
    return render(request,
                  'noclook/create/create_optical_multiplex_section.html',
                  {'form': form})
Exemplo n.º 6
0
Arquivo: create.py Projeto: emjemj/ni
def new_cable(request, **kwargs):
    cable_types = u', '.join([
        u'"{}"'.format(val) for val in Dropdown.get('cable_types').as_values()
    ])
    if request.POST:
        form = forms.NewCableForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'cable', 'Physical')
            except UniqueNodeError:
                form = forms.NewCableForm(request.POST)
                form.add_error('name',
                               'A Cable with that name already exists.')
                return render(request, 'noclook/create/create_cable.html',
                              {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            if form.cleaned_data['relationship_provider']:
                node = nh.get_node()
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        name = kwargs.get('name', None)
        initial = {'name': name}
        form = forms.NewCableForm(initial=initial)
    csv_form = forms.CsvForm(['name, cable_type, description'], request.POST
                             or None)
    return render(request, 'noclook/create/create_cable.html', {
        'form': form,
        'csv_form': csv_form,
        'cable_types': cable_types
    })
Exemplo n.º 7
0
    def create_optical_path(self, name=None):
        # create object
        if not name:
            name = '{}-{}'.format(
                self.fake.ean8(), self.escape_quotes(self.fake.license_plate()))

        optical_path = self.get_or_create_node(
            name, 'Optical Path', META_TYPES[1])

        # add context
        self.add_network_context(optical_path)

        # check if there's any provider or if we should create one
        provider_type = NetworkFakeDataGenerator.get_nodetype('Provider')
        providers = NodeHandle.objects.filter(node_type=provider_type)

        max_providers = self.max_cable_providers
        provider = None

        if not providers or len(providers) < max_providers:
            provider = self.create_provider()
        else:
            provider = random.choice(list(providers))

        # add data
        framing_types = self.get_dropdown_keys('optical_path_framing')
        capaticy_types = self.get_dropdown_keys('optical_path_capacity')
        operational_states = self.get_dropdown_keys('operational_states')

        data = {
            'description': self.fake.paragraph(),
            'framing': random.choice(framing_types),
            'capacity': random.choice(capaticy_types),
            'operational_state': random.choice(operational_states),
            'relationship_provider' : provider.handle_id,
        }

        for key, value in data.items():
            value = self.escape_quotes(value)
            optical_path.get_node().add_property(key, value)

        helpers.set_provider(self.user,
            optical_path.get_node(), provider.handle_id)

        # add random dependencies
        num_ports = random.randint(0, 3)

        for i in range(0, num_ports):
            dep_type = random.choice(list(self.optical_path_dependency_types.keys()))
            dep_f = self.optical_path_dependency_types[dep_type]
            dependency = dep_f()
            rel_maker = PhysicalLogicalDataRelationMaker()
            rel_maker.add_dependency(self.user, optical_path, dependency)

        return optical_path
Exemplo n.º 8
0
    def create_optical_link(self, name=None):
        # create object
        if not name:
            name = '{}-{}'.format(
                self.fake.ean8(), self.escape_quotes(self.fake.license_plate()))

        optical_link = self.get_or_create_node(
            name, 'Optical Link', META_TYPES[1])

        # add context
        self.add_network_context(optical_link)

        # check if there's any provider or if we should create one
        provider_type = NetworkFakeDataGenerator.get_nodetype('Provider')
        providers = NodeHandle.objects.filter(node_type=provider_type)

        max_providers = self.max_cable_providers
        provider = None

        if not providers or len(providers) < max_providers:
            provider = self.create_provider()
        else:
            provider = random.choice(list(providers))

        # add data
        link_types = self.get_dropdown_keys('optical_link_types')
        interface_types = self.get_dropdown_keys('optical_link_interface_type')
        operational_states = self.get_dropdown_keys('operational_states')

        data = {
            'description': self.fake.paragraph(),
            'link_type': random.choice(link_types),
            'interface_type': random.choice(interface_types),
            'operational_state': random.choice(operational_states),
            'relationship_provider' : provider.handle_id,
        }

        for key, value in data.items():
            value = self.escape_quotes(value)
            optical_link.get_node().add_property(key, value)

        helpers.set_provider(self.user,
            optical_link.get_node(), provider.handle_id)

        # add random ports
        num_ports = random.randint(1, 3)

        for i in range(0, num_ports):
            port = self.create_port()
            rel_maker = PhysicalLogicalDataRelationMaker()
            rel_maker.add_dependency(self.user, optical_link, port)

        return optical_link
Exemplo n.º 9
0
def edit_service(request, handle_id):
    # Get needed data from node
    nh, service = helpers.get_nh_node(handle_id)
    relations = service.get_relations()
    depends_on = service.get_dependencies()
    dependency_categories = ['host',
                             'firewall',
                             'odf',
                             'optical-node',
                             'optical-path',
                             'optical-filter',
                             'router',
                             'service',
                             'switch',
                             'external-equipment']
    user_categories = ['customer', 'end-user']
    if request.POST:
        form = forms.EditServiceForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, service.handle_id, form)
            # Service node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, service, owner_nh.handle_id)
            if form.cleaned_data['relationship_user']:
                user_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_user'])
                helpers.set_user(request.user, service, user_nh.handle_id)
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_depends_on'])
                helpers.set_depends_on(request.user, service, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditServiceForm(service.data)
    return render(request, 'noclook/edit/edit_service.html',
                  {'node_handle': nh, 'form': form, 'node': service, 'relations': relations,
                   'depends_on': depends_on, 'dependency_categories': dependency_categories,
                   'user_categories': user_categories})
Exemplo n.º 10
0
    def create_cable(self, name=None):
        # create object
        if not name:
            name = self.fake.hostname()

        cable = self.get_or_create_node(
            self.fake.hostname(), 'Cable', META_TYPES[0]) # Physical

        # add context
        self.add_network_context(cable)

        # add data
        cable_types = self.get_dropdown_keys('cable_types')

        # check if there's any provider or if we should create one
        provider_type = NetworkFakeDataGenerator.get_nodetype('Provider')
        providers = NodeHandle.objects.filter(node_type=provider_type)

        max_providers = self.max_cable_providers
        provider = None

        if not providers or len(providers) < max_providers:
            provider = self.create_provider()
        else:
            provider = random.choice(list(providers))

        # add ports
        port_a = None
        port_b = None

        port_type = NetworkFakeDataGenerator.get_nodetype('Port')
        total_ports = NodeHandle.objects.filter(node_type=port_type).count()

        if total_ports < self.max_ports_total:
            port_a = self.create_port()
            port_b = self.create_port()
        else:
            all_ports = list(NodeHandle.objects.filter(node_type=port_type))
            port_a = random.choice(all_ports)
            port_b = random.choice(all_ports)

        data = {
            'cable_type' : random.choice(cable_types),
            'description' : self.escape_quotes(self.fake.paragraph()),
            'relationship_provider' : provider.handle_id,
            'relationship_end_a' : port_a.handle_id,
            'relationship_end_b' : port_b.handle_id,
        }

        if sunet_forms_enabled():
            try:
                cable_contract = random.choice(
                    DropModel.objects.get(name="tele2_cable_contracts").as_choices()[1:][1]
                )
                data['tele2_cable_contract'] = cable_contract
            except DropModel.DoesNotExist:
                logger.warn('Tele2 cable contracts dropdown is not available')
            circuit_id = self.escape_quotes(self.fake.ean8())
            data['tele2_alternative_circuit_id'] = circuit_id


        for key, value in data.items():
            value = self.escape_quotes(value)
            cable.get_node().add_property(key, value)

        # add relationship to provider
        helpers.set_provider(self.user, cable.get_node(), provider.handle_id)
        helpers.set_connected_to(self.user, cable.get_node(), port_a.handle_id)
        helpers.set_connected_to(self.user, cable.get_node(), port_b.handle_id)

        return cable
Exemplo n.º 11
0
 def add_provides(self, user, relation_nh, phylogical_nh):
     the_node = phylogical_nh.get_node()
     relation_handle_id = relation_nh.handle_id
     helpers.set_provider(user, the_node, relation_handle_id)
Exemplo n.º 12
0
    def create_service(self, name=None):
        # import services class / types if necesary
        if not ServiceType.objects.all():
            dirpath = os.path.dirname(os.path.realpath(__file__))
            csv_file = \
                '{}/../../../../../scripts/service_types/ndn_service_types.csv'\
                    .format(dirpath)

            call_command(
                'import_service_types',
                csv_file=csv_file
            )

        default_test_gen_name = "service_id_generator"

        service_types = ServiceType.objects.all()
        service_type = random.choice(service_types)

        # get or create a default UniqueIdGenerator
        if not name:
            global_preferences = global_preferences_registry.manager()
            id_generator_name = global_preferences\
                                [NewServiceForm.Meta.id_generator_property]

            if not id_generator_name:
                global_preferences[NewServiceForm.Meta.id_generator_property] =\
                        default_test_gen_name

            id_generator = UniqueIdGenerator.objects.get_or_create(
                name=default_test_gen_name,
                zfill=False,
                creator=self.user,
                modifier=self.user,
            )[0]

            # id_collection is always the same so we do not need config
            name = unique_ids.get_collection_unique_id(
                                    id_generator, NordunetUniqueId)

        # create object
        service = self.get_or_create_node(
            name, 'Service', META_TYPES[1]) # Logical

        # add context
        self.add_network_context(service)

        # check if there's any provider or if we should create one
        provider_type = NetworkFakeDataGenerator.get_nodetype('Provider')
        providers = NodeHandle.objects.filter(node_type=provider_type)

        max_providers = self.max_cable_providers
        provider = None

        operational_states = self.get_dropdown_keys('operational_states')

        if not providers or len(providers) < max_providers:
            provider = self.create_provider()
        else:
            provider = random.choice(list(providers))

        helpers.set_provider(self.user, service.get_node(), provider.handle_id)

        service_type_name = service_type.name
        operational_state = random.choice(operational_states)

        data = {
            'service_class': service_type.service_class.name,
            'service_type': service_type_name,
            'operational_state': random.choice(operational_states),
            'description': self.fake.paragraph(),
            'relationship_provider' : provider.handle_id,
        }

        if service_type_name == "Project":
            data['project_end_date'] = self.get_random_date()

        if data['operational_state'] == "Decommissioned":
            data['decommissioned_date'] = self.get_random_date()

        for key, value in data.items():
            if value:
                value = self.escape_quotes(value)
                service.get_node().add_property(key, value)

        # set responsible and support groups
        group_type = NetworkFakeDataGenerator.get_nodetype('Group')
        groups_nhs = NodeHandle.objects.filter(node_type=group_type)

        responsible_group = None
        support_group = None
        community_generator = CommunityFakeDataGenerator()

        if groups_nhs.exists():
            responsible_group = random.choice(groups_nhs)
            support_group = random.choice(groups_nhs)
        else:
            responsible_group = community_generator.create_group()
            support_group = community_generator.create_group()

        helpers.set_takes_responsibility(
            self.user, service.get_node(), responsible_group.handle_id)
        helpers.set_supports(
            self.user, service.get_node(), support_group.handle_id)

        # add users
        num_users = random.randint(0, 4)

        for i in range(0, num_users):
            user_type = random.choice(list(self.service_user_categories.keys()))
            user_f = self.service_user_categories[user_type]
            user = user_f()
            rel_maker = LogicalDataRelationMaker()
            rel_maker.add_user(self.user, service, user)

        # add dependencies
        num_dependencies = random.randint(0, 4)

        for i in range(0, num_dependencies):
            dep_type = random.choice(list(self.service_dependency_types.keys()))
            dep_f = self.service_dependency_types[dep_type]
            dependency = dep_f()
            rel_maker = PhysicalLogicalDataRelationMaker()
            rel_maker.add_dependency(self.user, service, dependency)

        return service
Exemplo n.º 13
0
 def link_provider(cls, user, phylog_nh, relation_nh):
     helpers.set_provider(user, logical_node.get_node(),
                          relation_nh.handle_id)