Initial Commit - NG UI
[osm/NG-UI.git] / src / models / VNFDModel.ts
diff --git a/src/models/VNFDModel.ts b/src/models/VNFDModel.ts
new file mode 100644 (file)
index 0000000..908f552
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ Copyright 2020 TATA ELXSI
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
+ */
+/**
+ * @file  Model for VNFD related information.
+ */
+
+/** Interface for Project */
+export interface ProjectModel {
+    project_id: string;
+    project?: string;
+    project_name?: string;
+    expires: number;
+    _id: string;
+    id: string;
+    issued_at: number;
+    remote_port: number;
+    username: string;
+    remote_host: string;
+    admin: boolean;
+}
+
+/** Interface for ProjectDetails */
+export interface ProjectDetails {
+    _admin: AdminDetails;
+    name: string;
+    _id: string;
+}
+
+/** Interface for AdminDetails */
+interface AdminDetails {
+    modified: string;
+    created: string;
+}
+
+/** Interface for VNFD NODE Details */
+export interface VNFDNODE {
+    nodeTypeRef?: string;
+    'connection-point'?: CONNECTIONPOINT[];
+    description?: string;
+    id: string;
+    'internal-vld'?: InternalVLD[];
+    version?: string;
+    name?: string;
+    'mgmt-interface'?: MGMT;
+    _id?: string;
+    vdu?: VDU[];
+    _admin?: VNFDAdminDetails;
+    'short-name'?: string;
+    shortName?: string;
+    vendor?: string;
+    'type'?: string;
+    'cloud-init-file'?: string;
+    count?: number;
+    vduID?: string;
+    'interface'?: VNFDInterface[];
+    'vm-flavor'?: VMFlavor;
+    intVLID?: string;
+    'internal-connection-point'?: VLDInternalConnectionPoint[];
+    'monitoring-param'?: MonitoringParam[];
+    'ip-profile-ref'?: string;
+    'id-ref'?: string;
+    'ip-address'?: string;
+    reflexive?: boolean;
+    image?: string;
+}
+
+/** Interface for VNFDDetails */
+export interface VNFDDetails {
+    'connection-point': CONNECTIONPOINT[];
+    description: string;
+    id: string;
+    'internal-vld': InternalVLD[];
+    version: string;
+    name: string;
+    'mgmt-interface': MGMT;
+    _id: string;
+    vdu: VDU[];
+    _admin: VNFDAdminDetails;
+    'short-name': string;
+    vendor: string;
+}
+
+/** Interface for MGMT */
+interface MGMT {
+    cp: string;
+}
+
+/** Interface for VDU */
+export interface VDU {
+    nodeTypeRef?: string;
+    'cloud-init-file'?: string;
+    count?: number;
+    description?: string;
+    id?: string;
+    image?: string;
+    'interface'?: VNFDInterface[];
+    'internal-connection-point'?: VDUInternalConnectionPoint[];
+    name?: string;
+    'vm-flavor'?: VMFlavor;
+    vduInterface?: string;
+    'monitoring-param'?: MonitoringParam[];
+}
+
+/** Interface for VMFlavor */
+interface VMFlavor {
+    'storage-gb'?: string;
+    'memory-mb'?: string;
+    'vcpu-count'?: string;
+}
+
+/** Interface for VNFDInterface */
+export interface VNFDInterface {
+    'external-connection-point-ref'?: string;
+    'internal-connection-point-ref'?: string;
+    'mgmt-interface'?: boolean;
+    name?: string;
+    'type'?: string;
+    position?: boolean;
+    'virtual-interface'?: VirtualInterface;
+}
+
+/** Interface for VDU Internal Connection Point */
+export interface VDUInternalConnectionPoint {
+    id: string;
+    name?: string;
+    'short-name'?: string;
+    'type'?: string;
+}
+
+/** Interface for VirutalInterface */
+interface VirtualInterface {
+    'type': string;
+}
+
+/** Interface for the connection-point */
+export interface CONNECTIONPOINT {
+    nodeTypeRef?: string;
+    'connection-point-id'?: string;
+    name?: string;
+    id: string;
+    'type'?: string;
+}
+
+/** Interface for Internal VLD */
+export interface InternalVLD {
+    nodeTypeRef?: string;
+    id?: string;
+    'internal-connection-point'?: VLDInternalConnectionPoint[];
+    'ip-profile-ref'?: string;
+    name?: string;
+    'short-name'?: string;
+    'type'?: string;
+    'shortName'?: string;
+    'ipProfileRef'?: string;
+}
+
+/** Interface for VLD Internal Connection Point */
+export interface VLDInternalConnectionPoint {
+    nodeTypeRef?: string;
+    'ip-address'?: string;
+    'id-ref'?: string;
+    'shortName'?: string;
+}
+
+/** Interface for monitoring params */
+export interface MonitoringParam {
+    id: string;
+    'nfvi-metric'?: string;
+    'interface-name-ref'?: string;
+}
+
+/** Interface for _AdminDetails */
+// tslint:disable-next-line:class-name
+export interface VNFDAdminDetails {
+    created: number;
+    modified: string;
+    onboardingState: string;
+    operationalState: string;
+    projects_read: string[];
+    projects_write: string[];
+    storage: Storage;
+    'type': string;
+    usageState: string;
+    userDefinedData: JSON;
+}
+
+/** Interface for Storage */
+interface Storage {
+    descriptor: string;
+    folder: string;
+    fs: string;
+    path: string;
+    'pkg-dir': string;
+    zipfile: string;
+}
+
+/** Interface for VNFData */
+export interface VNFData {
+    name?: string;
+    id?: string;
+    shortName: string;
+    identifier: string;
+    description: string;
+    vendor: string;
+    version: string;
+    'type'?: string;
+}
+
+/** Interface for the Tick */
+export interface Tick {
+    target: TickPath;
+    source: TickPath;
+    left: boolean;
+    right: boolean;
+}
+
+/** Interface for the Path */
+export interface TickPath {
+    x: number;
+    y: number;
+    id: string;
+    'type'?: string;
+}
+
+/** Interface Nodes Creation */
+export interface COMPOSERNODES {
+    id: string;
+    reflexive?: boolean;
+    'type'?: string;
+    name?: string;
+    nodeTypeRef?: string;
+    x?: number;
+    y?: number;
+    fx?: number;
+    fy?: number;
+}
+
+/** Interface for the GRAPHDETAILS */
+export interface GRAPHDETAILS {
+    width: number;
+    height: number;
+    nodeHeight: number;
+    nodeWidth: number;
+    textX: number;
+    textY: number;
+    radius: number;
+    distance: number;
+    strength: number;
+    forcex: number;
+    forcey: number;
+    sourcePaddingYes: number;
+    sourcePaddingNo: number;
+    targetPaddingYes: number;
+    targetPaddingNo: number;
+    alphaTarget: number;
+    imageX: number;
+    imageY: number;
+    shiftKeyCode: number;
+}