Update resources and App.js to support line side connectivity service for photonic media layer
Change-Id: Id3c52af5821a04981f23adc76c3b5ce071fe2006
diff --git a/odtn-phase1-demo/src/resources/dcs.js b/odtn-phase1-demo/src/resources/dcs.js
index c3dd27c..1e17c40 100644
--- a/odtn-phase1-demo/src/resources/dcs.js
+++ b/odtn-phase1-demo/src/resources/dcs.js
@@ -66,7 +66,7 @@
}
-export function createConnectivityService(sip1, sip2) {
+export function createClientSideConnectivityService( sip1, sip2) {
return new Promise((resolve, reject) => {
fetch(`/dcs/operations/tapi-connectivity:create-connectivity-service`, {
@@ -74,7 +74,7 @@
headers: {
"Content-Type": "application/json",
},
- body: getCreateRequestBody(sip1, sip2)
+ body: getCreateClientSideRequestBody(sip1, sip2)
})
.then(res => {
console.log(res)
@@ -90,6 +90,29 @@
})
}
+export function createLineSideConnectivityService( sip1, sip2) {
+
+ return new Promise((resolve, reject) => {
+ fetch(`/dcs/operations/tapi-connectivity:create-connectivity-service`, {
+ method: 'POST',
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: getCreateLineSideRequestBody(sip1, sip2)
+ })
+ .then(res => {
+ console.log(res)
+ if (res.ok) {
+ res.json().then(data => resolve(data["tapi-connectivity:output"]["service"]))
+ } else {
+ reject(res.text())
+ }
+ })
+ .catch(err => {
+ console.error(err)
+ })
+ })
+}
export function deleteConnectivityServices(uuid) {
@@ -116,7 +139,7 @@
}
-function getCreateRequestBody(sip1, sip2){
+function getCreateLineSideRequestBody(sip1, sip2){
return `{
"tapi-connectivity:input":
{
@@ -125,14 +148,47 @@
"local-id": "id1",
"service-interface-point": {
"service-interface-point-uuid" : "${sip1}"
- }
+ },
+ "layer-protocol-qualifier" : "tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC",
+ "direction": "BIDIRECTIONAL",
+ "protection-role": "WORK",
+ "layer-protocol-name": "PHOTONIC_MEDIA"
}
,
{
"local-id": "id2",
"service-interface-point": {
"service-interface-point-uuid" : "${sip2}"
- }
+ },
+ "layer-protocol-qualifier" : "tapi-photonic-media:PHOTONIC_LAYER_QUALIFIER_NMC",
+ "direction": "BIDIRECTIONAL",
+ "protection-role": "WORK",
+ "layer-protocol-name": "PHOTONIC_MEDIA"
+ }
+ ]
+ }
+}`
+}
+
+function getCreateClientSideRequestBody(sip1, sip2){
+ return `{
+ "tapi-connectivity:input":
+ {
+ "end-point" : [
+ {
+ "local-id": "id1",
+ "service-interface-point": {
+ "service-interface-point-uuid" : "${sip1}"
+ },
+ "layer-protocol-name": "DSR"
+ }
+ ,
+ {
+ "local-id": "id2",
+ "service-interface-point": {
+ "service-interface-point-uuid" : "${sip2}"
+ },
+ "layer-protocol-name": "DSR"
}
]
}
diff --git a/odtn-phase1-demo/src/resources/getResources.js b/odtn-phase1-demo/src/resources/getResources.js
index c555a66..aa35f0e 100644
--- a/odtn-phase1-demo/src/resources/getResources.js
+++ b/odtn-phase1-demo/src/resources/getResources.js
@@ -30,20 +30,40 @@
})
.then(([deviceDetails, sipDetails, connectivityService]) => {
- const sipIdMap = sipDetails
- .filter(filterOnlyDsrSips)
+ const dsrSipIdMap = sipDetails
+ .filter(filterSipsByLayer.bind(null, "DSR"))
.reduce((_sipIdMap, sipDetail) => {
- _sipIdMap[sipDetail.name.filter(kv => kv["value-name"] === "onos-cp")[0].value] = sipDetail.uuid
- return _sipIdMap
- }, {})
- console.log(sipIdMap)
+ _sipIdMap[sipDetail.name.filter(kv => kv["value-name"] === "onos-cp")[0].value] = sipDetail.uuid
+ return _sipIdMap
+ }, {})
+ const mediaSipIdMap = sipDetails
+ .filter(filterSipsByLayer.bind(null, "PHOTONIC_MEDIA"))
+ .reduce((_sipIdMap, sipDetail) => {
+ _sipIdMap[sipDetail.name.filter(kv => kv["value-name"] === "onos-cp")[0].value] = sipDetail.uuid
+ return _sipIdMap
+ }, {})
+ const portMap = {}
+
+ console.log('DSR SIP ID Map', dsrSipIdMap)
+ console.log('PhotinicMedia SIP ID Map', mediaSipIdMap)
deviceDetails.forEach(deviceDetail => {
deviceDetail.ports.forEach(port => {
const key = `${port.element}/${port.port}`
- if(sipIdMap[key]) {
- port.sipId = sipIdMap[key]
+ if(dsrSipIdMap[key]) {
+ port.sipId = dsrSipIdMap[key]
}
+ if(mediaSipIdMap[key]) {
+ port.mediaSipId = mediaSipIdMap[key]
+ }
+ portMap[key] = port
+ })
+ })
+
+ deviceDetails.forEach(deviceDetail => {
+ deviceDetail.ports.filter(filterClientSidePort).forEach(cliPort => {
+ const linePortKey = `${cliPort.element}/${parseInt(cliPort.port) + 100}`
+ cliPort.associatedLinePort = portMap[linePortKey]
})
})
@@ -55,6 +75,10 @@
}
-function filterOnlyDsrSips(sipDetail) {
- return sipDetail["layer-protocol-name"] === 'DSR'
+function filterClientSidePort(port) {
+ return Math.floor( parseInt(port.port) / 100 ) === 1
+}
+
+function filterSipsByLayer(layerProtocolName, sipDetail) {
+ return sipDetail["layer-protocol-name"] === layerProtocolName
}
\ No newline at end of file