aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts')
-rw-r--r--vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts203
1 files changed, 203 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts b/vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts
new file mode 100644
index 000000000..f3f63e1e9
--- /dev/null
+++ b/vid-webpack-master/src/app/vlanTagging/vlan-tagging.component.ts
@@ -0,0 +1,203 @@
+import {formasync} from './../components/form-async/form-async.component';
+import {Component, OnInit, ViewChild} from "@angular/core";
+import {NetworkSelectorComponent} from "./network-selector/network-selector.component";
+import {NgRedux, select} from "@angular-redux/store";
+import {AppState} from "../store/reducers";
+import {ActivatedRoute} from "@angular/router";
+import {
+ loadServiceAccordingToUuid, loadAaiNetworkAccordingToNetworkCF,
+ loadUserId
+} from "../services/aaiService/aai.actions";
+import {createRequest} from "../factories/mso.factory";
+import {Observable} from "rxjs/Observable";
+import {VNFModel} from "../shared/models/vnfModel";
+import {VfcInstanceGroupProperties} from "../shared/models/vfcInstanceGroupProperties";
+import * as _ from "lodash";
+import {ModelInformationItem} from "../shared/components/model-information/model-information.component";
+
+enum WizardSteps {
+ one,
+ two
+}
+
+const buttonTextNext = "Next";
+const buttonTextBack = "Back";
+const buttonTextConfirm = "Confirm";
+const buttonTextCancel = "Cancel";
+
+@Component({
+ selector: "vlan-tagging",
+ templateUrl: "./vlan-tagging.component.html",
+ styleUrls: ["./vlan-tagging.component.scss"]
+})
+
+export class VlanTaggingComponent implements OnInit {
+ constructor(private store: NgRedux<AppState>,
+ private route: ActivatedRoute) {
+ this.nextButtonText = buttonTextNext;
+ this.cancelButtonText = buttonTextCancel;
+ this.currentStep = WizardSteps.one;
+ }
+
+ subscriberName: string;
+ serviceKey: string;
+ serviceType: string;
+ vnfKey: string;
+ serviceInstanceName: string;
+ serviceModelId: string;
+ modelInfoItems: Array<ModelInformationItem>;
+ groups: Array<Array<ModelInformationItem>>;
+ currentStep: WizardSteps;
+ nextButtonText: string;
+ cancelButtonText: string;
+ wizardSteps = WizardSteps;
+ cloudOwner: string;
+ cloudRegionId: string;
+ serviceInstanceId : string;
+ model: VNFModel;
+ userId: string;
+ modelCustomizationId : string;
+ onServiceInstanceChange(event) {
+ console.log(event);
+ }
+
+ private serviceHirarchy: any;
+
+ @select(['service', 'serviceHierarchy'])
+ readonly serviceHierarchyObserable: Observable<any>;
+
+ @select(['service', 'userId'])
+ readonly userIdObs: Observable<any>;
+
+
+ @ViewChild(NetworkSelectorComponent)
+ public networkSelectorComponent: NetworkSelectorComponent;
+ @ViewChild(formasync)
+ public formAsync: formasync;
+
+
+ deploySubInterface() {
+
+ const requestDetails = createRequest(
+ this.userId,
+ this.formAsync.serviceInstance,
+ this.serviceHirarchy[this.serviceModelId],
+ this.serviceKey,
+ this.networkSelectorComponent.groupSelection,
+ this.vnfKey,
+ this.modelCustomizationId
+ );
+
+ // this.msoService.createVnf(requestDetails, this.serviceKey).subscribe();
+
+ window.parent.postMessage({
+ eventId: 'submitIframe',
+ data: requestDetails
+ }, "*");
+ }
+
+ ngOnInit() {
+ this.cloudRegionId = "";
+ this.store.dispatch(loadUserId());
+ this.userIdObs.subscribe(res => this.userId = res);
+ this.route.queryParams.subscribe(params => {
+ this.serviceModelId = params["serviceModelId"];
+ this.subscriberName = params["subscriberName"];
+ this.serviceType = params["serviceType"];
+ this.serviceKey = params["serviceInstanceID"];
+ this.vnfKey = params["modelCustomizationName"];
+ this.serviceInstanceId = params["serviceInstanceID"];
+ this.serviceInstanceName = params["serviceInstanceName"];
+ this.modelCustomizationId = params["modelCustomizationId"];
+ this.cloudOwner = params["globalCustomerId"];
+ this.store.dispatch(loadServiceAccordingToUuid(this.serviceModelId));
+ this.serviceHierarchyObserable.subscribe(data => {
+ this.serviceHirarchy = data;
+ if (data && data[this.serviceModelId]) {
+ this.model = new VNFModel(data[this.serviceModelId].vnfs[this.vnfKey]);
+ this.updateModelInfo(this.model);
+ }
+ });
+ });
+ }
+
+ private updateModelInfo(vnfModel: VNFModel) {
+ this.modelInfoItems = [
+ new ModelInformationItem("Service Instance Name", "serviceInstanceName", [this.serviceInstanceName], "", true),
+ new ModelInformationItem("Model Invariant UUID", "modelInvariantUUID", [vnfModel.invariantUuid], "", true),
+ new ModelInformationItem("Model Version", "modelVersion", [vnfModel.version], "", true),
+ new ModelInformationItem("Model UUID", "modelUuid", [vnfModel.uuid], "", true),
+ new ModelInformationItem("Model Customization UUID", "modelCustomizationUuid", [vnfModel.customizationUuid], "", true),
+ ];
+
+ this.groups = [];
+ _.forOwn(vnfModel.vfcInstanceGroups, (vfcInstanceGroup, key) => {
+ const properties: VfcInstanceGroupProperties = vfcInstanceGroup.vfcInstanceGroupProperties;
+ this.groups.push(this.createGroupsInformation(vfcInstanceGroup.name, properties));
+ });
+ }
+
+ nextStep() {
+ switch (this.currentStep) {
+ case WizardSteps.one:
+ this.groups.map(group => {
+ let networkName = _.find(group, (groupElements: ModelInformationItem) => groupElements.testsId === "networkCollectionFunction");
+ this.store.dispatch(
+ loadAaiNetworkAccordingToNetworkCF(networkName["values"][0], this.cloudOwner, this.formAsync.serviceInstance.lcpRegion)
+ );
+ });
+ this.currentStep = WizardSteps.two;
+ this.updateNavigationButtonText(this.currentStep);
+ break;
+ case WizardSteps.two:
+ this.deploySubInterface();
+ break;
+ }
+ }
+
+ cancel() {
+ switch (this.currentStep) {
+ case WizardSteps.one:
+ window.parent.postMessage({
+ eventId: 'closeIframe'
+ }, "*");
+ break;
+ case WizardSteps.two:
+ this.currentStep = WizardSteps.one;
+ this.updateNavigationButtonText(this.currentStep);
+ break;
+ }
+ }
+
+ updateNavigationButtonText(step: WizardSteps) {
+ switch (step) {
+ case WizardSteps.one:
+ this.nextButtonText = buttonTextNext;
+ this.cancelButtonText = buttonTextCancel;
+ break;
+ case WizardSteps.two:
+ this.nextButtonText = buttonTextConfirm;
+ this.cancelButtonText = buttonTextBack;
+ break;
+ }
+ }
+
+ isNextButtonDisabled() {
+ switch (this.currentStep) {
+ case WizardSteps.one:
+ return !this.formAsync.form.valid;
+ case WizardSteps.two:
+ return !this.networkSelectorComponent.form.valid;
+ }
+ }
+
+ createGroupsInformation(name: string, properties: VfcInstanceGroupProperties): Array<ModelInformationItem> {
+ let modelInfoItems = [];
+ modelInfoItems.push(new ModelInformationItem("Group Name", "groupName", [name], "", true));
+ modelInfoItems.push(new ModelInformationItem("Network Collection Function", "networkCollectionFunction", [properties.networkCollectionFunction], "", true));
+ modelInfoItems.push(new ModelInformationItem("VFC Instance Group Function", "instanceGroupFunction", [properties.vfcInstanceGroupFunction], "", true));
+ modelInfoItems.push(new ModelInformationItem("Parent Port Role", "parentPortRole", [properties.vfcParentPortRole], "", true));
+ modelInfoItems.push(new ModelInformationItem("Sub Interface Role", "subInterfaceRole", [properties.subinterfaceRole], "", true));
+ return modelInfoItems;
+ }
+}