0dfda7fdd506343424c2528a690d11918da4fe02
[osm/riftware.git] /
1 /*
2  * STANDARD_RIFT_IO_COPYRIGHT
3  */
4 /**
5  * Created by onvelocity on 11/23/15.
6  */
7
8 'use strict';
9
10 import utils from '../../utils'
11 import DescriptorModel from '../DescriptorModel'
12 import DescriptorModelFactory from '../DescriptorModelFactory'
13 import DescriptorModelMetaFactory from '../DescriptorModelMetaFactory'
14
15 export default class VirtualNetworkFunction extends DescriptorModel {
16
17         static get type() {
18                 return 'vnfd';
19         }
20
21         static get className() {
22                 return 'VirtualNetworkFunction';
23         }
24
25         constructor(model, parent) {
26                 super(model, parent);
27                 this.type = 'vnfd';
28                 this.className = 'VirtualNetworkFunction';
29         }
30
31         get vdu() {
32                 const list = this.model.vdu || (this.model.vdu = []);
33                 return list.map(d => DescriptorModelFactory.newVirtualDeploymentUnit(d, this));
34         }
35
36         set vdu(obj) {
37                 this.updateModelList('vdu', obj, DescriptorModelFactory.VirtualDeploymentUnit);
38         }
39
40         createVdu() {
41                 const model = DescriptorModelMetaFactory.createModelInstanceForType('vnfd.vdu');
42                 return this.vdu = DescriptorModelFactory.newVirtualDeploymentUnit(model, this);
43         }
44
45         removeVirtualDeploymentUnit(vdu) {
46                 vdu.connectors.forEach(cp => this.removeAnyConnectionsForConnector(cp));
47                 return this.vdu = this.vdu.filter(d => d.id !== vdu.id);
48         }
49
50         get vld() {
51                 const list = this.model['internal-vld'] || (this.model['internal-vld'] = []);
52                 return list.map(d => DescriptorModelFactory.newInternalVirtualLink(d, this));
53         }
54
55         set vld(obj) {
56                 this.updateModelList('internal-vld', obj, DescriptorModelFactory.InternalVirtualLink);
57         }
58
59         createVld() {
60                 const model = DescriptorModelMetaFactory.createModelInstanceForType('vnfd.internal-vld');
61                 return this.vld = DescriptorModelFactory.newInternalVirtualLink(model, this);
62         }
63
64         /**
65          * @deprecated use `removeInternalVirtualLink()`
66          * @param vld
67          * @returns {*}
68          */
69         removeVld(vld) {
70                 return this.removeModelListItem('vld', vld);
71         }
72
73         get connectionPoint() {
74                 const list = this.model['connection-point'] || (this.model['connection-point'] = []);
75                 return list.map(d => DescriptorModelFactory.newVirtualNetworkFunctionConnectionPoint(d, this));
76         }
77
78         set connectionPoint(obj) {
79                 return this.updateModelList('connection-point', obj, DescriptorModelFactory.VirtualNetworkFunctionConnectionPoint);
80         }
81
82         removeConnectionPoint(cp) {
83                 return this.removeModelListItem('connectionPoint', cp);
84         }
85
86         get connectors() {
87                 return this.connectionPoint;
88         }
89
90         remove() {
91                 if (this.parent) {
92                         this.parent.removeConstituentVnfd(this);
93                         this.connectors.forEach(cpc => this.parent.removeAnyConnectionsForConnector(cpc));
94                 }
95         }
96
97         removeAnyConnectionsForConnector(cpc) {
98                 this.vld.forEach(vld => vld.removeInternalConnectionPointRefForId(cpc.id));
99         }
100
101         removeInternalVirtualLink(ivl) {
102                 return this.removeModelListItem('vld', ivl);
103         }
104
105 }
106