Fix Bug 1923: Not possible to add VIM with type dummy
[osm/NG-UI.git] / src / models / CommonModel.ts
1 /*
2  Copyright 2020 TATA ELXSI
3
4  Licensed under the Apache License, Version 2.0 (the 'License');
5  you may not use this file except in compliance with the License.
6  You may obtain a copy of the License at
7
8     http://www.apache.org/licenses/LICENSE-2.0
9
10  Unless required by applicable law or agreed to in writing, software
11  distributed under the License is distributed on an "AS IS" BASIS,
12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  See the License for the specific language governing permissions and
14  limitations under the License.
15
16  Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
17  */
18 import { HttpHeaders } from '@angular/common/http';
19 import { NSD } from 'NSInstanceModel';
20 import { EXECUTEDACTIONS } from 'OperationalModel';
21 import { VNFD } from 'VNFDModel';
22
23 /**
24  * @file  Model for Commonly used information.
25  */
26 // tslint:disable: completed-docs
27 /**
28  * handle count @enum
29  */
30 export enum CONSTANTNUMBER {
31     randomNumber = 4,
32     osmapviewlong = 77.673,
33     osmapviewlat = 19.166,
34     chennailong = 80.2809,
35     chennailat = 13.0781,
36     bangalorelong = 77.5868,
37     bangalorelat = 12.9718,
38     mumbailong = 72.8342,
39     mumbailat = 18.9394,
40     tirvandrumlong = 76.9544,
41     tirvandrumlat = 8.5009,
42     oneMB = 1048576,
43     paginationDefaultValue = 10,
44     splitLongitude = 1,
45     splitLatitude = 2,
46     timeOutDefaultSeconds = 5
47 }
48 /**
49  * handle count @enum
50  */
51 export enum CONFIGCONSTANT {
52     operationalStateFirstStep = 'init',
53     operationalStateSecondStep = 'running',
54     operationalStateThirdStep = 'failed',
55     operationalStateFourthStep = 'scaling',
56     configStateFirstStep = 'init',
57     configStateSecondStep = 'configured',
58     configStateThirdStep = 'failed',
59     historyStateFirstStep = 'PROCESSING',
60     historyStateSecondStep = 'COMPLETED',
61     historyStateThirdStep = 'FAILED',
62     wimOperationalStateFirstStep = 'PROCESSING',
63     wimOperationalStateStateSecondStep = 'ENABLED',
64     wimOperationalStateThirdStep = 'ERROR',
65     vimOperationalStateFirstStep = 'PROCESSING',
66     vimOperationalStateStateSecondStep = 'ENABLED',
67     vimOperationalStateThirdStep = 'ERROR',
68     sdnOperationalStateFirstStep = 'PROCESSING',
69     sdnOperationalStateStateSecondStep = 'ENABLED',
70     sdnOperationalStateThirdStep = 'ERROR',
71     k8OperationalStateFirstStep = 'PROCESSING',
72     k8OperationalStateStateSecondStep = 'ENABLED',
73     k8OperationalStateThirdStep = 'ERROR'
74 }
75 /** Interface for Post options */
76 export interface POSTAPIRESOURCE {
77     apiURLHeader: APIURLHEADER;
78     payload?: object;
79 }
80 /** Interface for ApiURL Header */
81 export interface APIURLHEADER {
82     url: string;
83     httpOptions?: APIHEADERS;
84 }
85 /** Interface for the Get Method with response type */
86 export interface GETAPIURLHEADER {
87     headers: HttpHeaders;
88     responseType: string;
89 }
90 /** Interface for Httpoptions Header */
91 interface APIHEADERS {
92     headers: HttpHeaders;
93 }
94 /** Interface for the Error */
95 export interface ERRORDATA {
96     error: ERRORDETAILSDATA;
97 }
98 /** Interface for the Error Details */
99 interface ERRORDETAILSDATA {
100     detail: string;
101     code?: string;
102     status?: number;
103     text?: Function;
104 }
105 /** Handle the URL params */
106 export interface URLPARAMS {
107     page: string;
108     id: string;
109     titleName?: string;
110     forceDeleteType?: boolean;
111     name?: string;
112     memberIndex?: object;
113     nsConfig?: object;
114     projectID?: string;
115     username?: string;
116     vnfID?: [];
117     nsID?: string;
118     nsd?: NSD;
119     data?: VNFD[];
120     configs?: object;
121     actions?: object;
122     executedActions?: EXECUTEDACTIONS[];
123 }
124 /** Handle the Delete params */
125 export interface DELETEPARAMS {
126     identifier: string;
127     name?: string;
128     projectName?: string;
129     userName?: string;
130     username?: string;
131     page?: string;
132     id?: string;
133     productName?: string;
134 }
135
136 /** Interface for the Delete Details */
137 export interface MODALCLOSERESPONSEDATA {
138     message: string;
139 }
140
141 /** Interface for the modal closer */
142 export interface MODALCLOSERESPONSEWITHCP {
143     message: string;
144     connection_point?: string;
145 }
146
147 /** Interface for local storage settings */
148 export interface LOCALSTORAGE {
149     id_token?: string;
150     project_id?: string;
151     expires?: string;
152     username?: string;
153     project?: string;
154     project_name?: string;
155     id?: string;
156     admin?: boolean;
157     isAdmin?: string;
158     token_state?: string;
159 }
160 /** Interface for Tar settings */
161 export interface TARSETTINGS {
162     name?: string;
163     'type'?: string;
164     readAsString?: Function;
165     buffer: ArrayBuffer;
166     header_offset?: Number;
167     size?: number;
168     linkname?: string;
169     uname?: string;
170     gname?: string;
171 }
172 /** Interface for File Settings */
173 export interface FILESETTINGS {
174     'type'?: string;
175     linkname?: string;
176     owner?: string;
177     group?: string;
178 }
179 /** Interface for Package information */
180 export interface PACKAGEINFO {
181     id?: string;
182     packageType?: string;
183     descriptor: string;
184 }
185
186 /** Interface For the Pagination pager in ng-smarttable */
187 export interface PAGERSMARTTABLE {
188     display: boolean;
189     perPage: number;
190 }
191 /** Interface for breadcrumb item */
192 export interface BREADCRUMBITEM {
193     title: string;
194     url: string;
195 }
196 /** Interface For the Pagination pager in ng-smarttable */
197 export interface SMARTTABLECLASS {
198     // tslint:disable-next-line: no-reserved-keywords
199     class: string;
200 }
201 /** Constants of the VIM Types */
202 export const VIM_TYPES: TYPESECTION[] = [
203     { value: 'openstack', title: 'Openstack' },
204     { value: 'aws', title: 'AWS' },
205     { value: 'vmware', title: 'VMware vCD' },
206     { value: 'openvim', title: 'OpenVIM' },
207     { value: 'opennebula', title: 'OpenNebula' },
208     { value: 'azure', title: 'Azure' },
209     { value: 'dummy', title: 'Dummy' }
210 ];
211 /** Constants of the SDN Types */
212 export const SDN_TYPES: TYPESECTION[] = [
213     { value: 'arista', title: 'Arista' },
214     { value: 'floodlightof', title: 'Floodlight openflow' },
215     { value: 'odlof', title: 'OpenDaylight openflow' },
216     { value: 'onosof', title: 'ONOS openflow' },
217     { value: 'onos_vpls', title: 'ONOS vpls' }
218 ];
219 /** Constants of the WIM Types */
220 export const WIM_TYPES: TYPESECTION[] = [
221     { value: 'arista', title: 'Arista' },
222     { value: 'dynpac', title: 'DynPac' },
223     { value: 'floodlightof', title: 'Floodlight openflow' },
224     { value: 'odlof', title: 'OpenDaylight openflow' },
225     { value: 'onosof', title: 'ONOS openflow' },
226     { value: 'onos_vpls', title: 'ONOS vpls' },
227     { value: 'tapi', title: 'TAPI' }
228 ];
229 /** Constants of the OSM Repo Types */
230 export const OSMREPO_TYPES: TYPESECTION[] = [
231     { value: 'osm', title: 'OSM' }
232 ];
233 /** Interface for List, Add WIM & SDN Types */
234 export interface TYPESECTION {
235     value: string;
236     title: string;
237 }
238 /** Interface for PRIMITIVETYPES */
239 export interface PRIMITIVETYPES {
240     title: string;
241     value: string;
242 }
243 /** Interface for the PRIMITIVEDATA */
244 export interface PRIMITIVEDATA {
245     parameter: {}[];
246 }
247 /** Constant for VIM type Openstack's Config */
248 export const TYPEOPENSTACK: {} = {
249     sdn_controller: '',
250     APIversion: '',
251     sdn_port_mapping: '',
252     project_domain_id: '',
253     vim_network_name: '',
254     project_domain_name: '',
255     config_vim_ype: '',
256     user_domain_id: '',
257     security_groups: '',
258     user_domain_name: '',
259     availability_zone: '',
260     keypair: '',
261     region_name: '',
262     dataplane_physical_net: '',
263     insecure: '',
264     use_floating_ip: '',
265     use_internal_endpoint: '',
266     microversion: '',
267     additional_conf: '',
268     use_existing_flavors: ''
269 };
270 /** Constant for VIM type AWS's Config */
271 export const TYPEAWS: {} = {
272     sdn_controller: '',
273     vpc_cidr_block: '',
274     sdn_port_mapping: '',
275     security_groups: '',
276     vim_network_name: '',
277     keypair: '',
278     region_name: '',
279     flavor_info: '',
280     additional_conf: ''
281 };
282 /** Constant for VIM type VMWARE's Config */
283 export const TYPEVMWARE: {} = {
284     sdn_controller: '',
285     orgname: '',
286     sdn_port_mapping: '',
287     vcenter_ip: '',
288     vim_network_name: '',
289     admin_username: '',
290     admin_password: '',
291     vcenter_port: '',
292     vcenter_user: '',
293     vcenter_password: '',
294     nsx_manager: '',
295     nsx_user: '',
296     nsx_password: '',
297     vrops_site: '',
298     vrops_user: '',
299     vrops_password: '',
300     additional_conf: ''
301 };
302 /** Constant for VIM type OPENVIMNEBULA's Config */
303 export const TYPEOPENVIMNEBULA: {} = {
304     sdn_controller: '',
305     sdn_port_mapping: '',
306     vim_network_name: '',
307     additional_conf: ''
308 };
309 /** Constant for VIM type AZURE's Config */
310 export const TYPEAZURE: {} = {
311     subscription_id: '',
312     region_name: '',
313     resource_group: '',
314     vnet_name: '',
315     flavors_pattern: ''
316 };
317 /** Constant for VIM other type Config */
318 export const TYPEOTERS: {} = {
319     sdn_controller: '',
320     sdn_port_mapping: '',
321     vim_network_name: '',
322     use_floating_ip: '',
323     use_internal_endpoint: '',
324     additional_conf: '',
325     use_existing_flavors: ''
326 };
327 /** Interface for Domains */
328 export interface DOMAINS {
329     project_domain_name: string;
330     user_domain_name: string;
331 }
332 /** Interface for Login */
333 export interface LOGINPARAMS {
334     username?: string;
335     password?: string;
336 }