diff --git a/src/python/SiteFE/LookUpService/modules/rdfhelper.py b/src/python/SiteFE/LookUpService/modules/rdfhelper.py index ed23ec2..9183f6e 100644 --- a/src/python/SiteFE/LookUpService/modules/rdfhelper.py +++ b/src/python/SiteFE/LookUpService/modules/rdfhelper.py @@ -377,8 +377,24 @@ def _addSwitchingService(self, **kwargs): self.newGraph.add((self.genUriRef('site', svcService), self.genUriRef('nml', 'encoding'), self.genUriRef('schema'))) + kwargs['uri'] = svcService + self._addMultiPointService(**kwargs) return svcService + def _addMultiPointService(self, **kwargs): + """Add MultiPoint Service to Model""" + if not kwargs.get('vswmp', ''): + return + self.newGraph.add((self.genUriRef('site', kwargs['uri']), + self.genUriRef('sd', 'hasServiceDefinition'), + self.genUriRef('site', f":{kwargs['hostname']}:sd:{kwargs['vswmp']}"))) + self.newGraph.add((self.genUriRef('site', f":{kwargs['hostname']}:sd:{kwargs['vswmp']}"), + self.genUriRef('rdf', 'type'), + self.genUriRef('sd', 'ServiceDefinition'))) + self.newGraph.add((self.genUriRef('site', f":{kwargs['hostname']}:sd:{kwargs['vswmp']}"), + self.genUriRef('sd', 'serviceType'), + self.genLiteral('http://services.ogf.org/nsi/2018/06/descriptions/l2-mp-es'))) + def _addSwitchingSubnet(self, **kwargs): """Add Switching Subnet which comes from delta parsed request""" svcService = self._addSwitchingService(**kwargs) diff --git a/src/python/SiteFE/LookUpService/modules/switchinfo.py b/src/python/SiteFE/LookUpService/modules/switchinfo.py index 8e52cc8..35b1270 100644 --- a/src/python/SiteFE/LookUpService/modules/switchinfo.py +++ b/src/python/SiteFE/LookUpService/modules/switchinfo.py @@ -80,18 +80,25 @@ def _addSwitchPortInfo(self, key, switchInfo): """Add Switch Port Info for ports, vlans""" for switchName, switchDict in list(switchInfo[key].items()): self.logger.debug(f'Adding Switch Port Info {switchName}') + # Get info if vsw is enabled in configuration try: vsw = self.config.get(switchName, 'vsw') except (NoOptionError, NoSectionError) as ex: self.logger.debug('Warning: vsw parameter is not defined for %s. Err: %s', switchName, ex) continue + # Get info if vswmp is enabled in configuration (Multipoint) + try: + vswmp = self.config.get(switchName, 'vswmp') + except (NoOptionError, NoSectionError): + vswmp = False + # Get info if rst is enabled in configuration try: rst = self.config.get(switchName, 'rst') except (NoOptionError, NoSectionError): rst = False for portName, portSwitch in list(switchDict.items()): newuri = f":{switchName}:{self.switch.getSystemValidPortName(portName)}" - self._addVswPort(hostname=switchName, portName=portName, vsw=vsw) + self._addVswPort(hostname=switchName, portName=portName, vsw=vsw, vswmp=vswmp) self.addSwitchIntfInfo(switchName, portName, portSwitch, newuri) if rst: self._addAddressPool(newuri)