Updating Nokia driver
[vfc/nfvo/driver/vnfm/svnfm.git] / nokiav2 / docs / sample / cbam.collectConnectionPoints.js
1 var collectConnectionPoints = function(resourceModel, diff) {
2     return collectPorts(resourceModel, diff)
3 };
4
5 function collectPorts(resourceModel, diff){
6     pathToResource = {}
7     collectResources('', resourceModel, pathToResource, true);
8     transformedPorts = []
9     Object.keys(pathToResource).forEach(function (path) {
10         var port = pathToResource[path];
11         transformedPort = {}
12         transformedPort.name = port.attributes.name;
13         transformedPort.providerId = port.attributes.id;
14         transformedPort.cpId = path;
15         var managedPort = false;
16         if(port.hasOwnProperty('externalConnectionPoint')){
17             transformedPort.ecpdId = port.externalConnectionPoint;
18             managedPort = true;
19         }
20         if(port.hasOwnProperty('connectionPoint')){
21             transformedPort.cpdId = port.connectionPoint;
22             managedPort = true;
23         }
24         transformedPort.tenantId = port.attributes.tenant_id;
25         transformedPort.ipAddress = port.attributes.fixed_ips[0].ip_address;
26         transformedPort.macAddress = port.attributes.mac_address;
27         transformedPort.serverProviderId = port.attributes.device_id;
28         transformedPort.networkProviderId = port.attributes.network_id;
29         transformedPort.changeType = 'untouched';
30         var added = contains(diff.add, path);
31         var removed = contains(diff.remove, path);
32         if(added && removed){
33             transformedPort.changeType = "MODIFIED";
34         }
35         else{
36             if(removed){
37                 transformedPort.changeType = "REMOVED";
38             }
39             if(added){
40                 transformedPort.changeType = "ADDED";
41             }
42         }
43         if('untouched' != transformedPort.changeType && managedPort){
44             transformedPorts.push(transformedPort)
45         }
46     })
47     return transformedPorts;
48 };
49
50 function contains(resourceChanges, path){
51     var keys = Object.keys(resourceChanges);
52     return keys.indexOf(path) !== -1;
53 }
54
55 function collectResources(path, root, pathToResouceMap, onResources){
56     root && Object.keys(root).forEach(function(item) {
57         if(item == 'resource_type' && root[item] == 'OS::Neutron::Port'){
58             pathToResouceMap[path] = root
59         }
60         else if(typeof root[item] === "object"){
61             var newItem = onResources ? "" : item;
62             var newPath = path;
63             if('' != newItem && path != ''){
64                 newPath += ".";
65             }
66             newPath += newItem;
67             collectResources(newPath, root[item], pathToResouceMap, !onResources)
68         }
69     });
70 };
71