aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/admin/view-edit/ansible-server.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/admin/view-edit/ansible-server.component.ts')
-rw-r--r--src/app/admin/view-edit/ansible-server.component.ts326
1 files changed, 326 insertions, 0 deletions
diff --git a/src/app/admin/view-edit/ansible-server.component.ts b/src/app/admin/view-edit/ansible-server.component.ts
new file mode 100644
index 0000000..b629b65
--- /dev/null
+++ b/src/app/admin/view-edit/ansible-server.component.ts
@@ -0,0 +1,326 @@
+/*
+============LICENSE_START==========================================
+===================================================================
+Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+===================================================================
+
+Unless otherwise specified, all software contained herein is licensed
+under the Apache License, Version 2.0 (the License);
+you may not use this software 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.
+
+============LICENSE_END============================================
+*/
+
+import * as XLSX from 'xlsx';
+import * as _ from 'underscore';
+
+import { ActivatedRoute, Router } from '@angular/router';
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+import { UtilityService } from '../../shared/services/utilityService/utility.service';
+
+// Common Confirm Modal
+import { DialogService } from 'ng2-bootstrap-modal';
+import { ParamShareService } from '../../shared/services/paramShare.service';
+
+
+declare var $: any;
+type AOA = Array<Array<any>>;
+
+@Component({
+ selector: 'ansible-server',
+ templateUrl: './ansible-server.component.html',
+ styleUrls: ['./ansible-server.component.css'],
+})
+export class AnsibleServerComponent implements OnInit {
+
+ //settings for the notifications.
+ options = {
+ timeOut: 4500,
+ showProgressBar: true,
+ pauseOnHover: true,
+ clickToClose: true,
+ maxLength: 200
+ };
+
+ public ownerIdErrMsg;
+ public regionIdErrMsg;
+ public tenantIdErrMsg
+ public zeroTenantIdsErrorMsg;
+ public porterrorMessage;
+ public portwarningMessage;
+ public errorMessage;
+ public warningMessage;
+ public invalid = true;
+ public portinvalid = true;
+ public item;
+ public sample = {ownerid:"", regionid:"", tenantid:""};
+ public updateIndex;
+ public currentUser;
+ constructor(
+ private paramShareService: ParamShareService,
+ private router: Router,
+ private activeROute: ActivatedRoute,
+ private utilService: UtilityService
+
+ )
+ {
+ console.log("testing....");
+ }
+
+ngOnInit() {
+ this.currentUser = localStorage['userId'];
+ this.item = JSON.parse(sessionStorage.getItem("ansibleserver"));
+ this.updateIndex = parseInt(sessionStorage.getItem("updateIndex"));
+ console.log("index===>"+this.updateIndex);
+ if(!this.paramShareService.ansibleServerData) {
+ this.invalid = true;
+ } else {
+ this.invalid = false;
+ }
+ console.log("selecteditem===>"+JSON.stringify(this.item));
+}
+
+addInfo() {
+ console.log("selectediteminfo===>"+JSON.stringify(this.item.info));
+ if(this.validateTenantId()) {
+ this.item.info.push(this.sample)
+ this.sample = {ownerid:"", regionid:"", tenantid:""};
+ this.zeroTenantIdsErrorMsg = "";
+ }
+
+}
+
+removeInfo(index) {
+ console.log("selectediteminfo===>"+index+JSON.stringify(this.item.info));
+ this.item.info.splice(index, 1);
+ console.log("selectediteminfo===>"+JSON.stringify(this.item.info));
+
+}
+
+// save() {
+// console.log("ansibleServerData===>"+ JSON.stringify(this.paramShareService.ansibleServerData))
+// let ansibleServer = this.createAnsibleserverData(this.item);
+// this.paramShareService.ansibleServerData["fqdn-list"].push(ansibleServer);
+// this.router.navigate(['../admin'], {
+// relativeTo: this.activeROute
+// });
+// }
+
+update() {
+ console.log("ansibleServerData===>"+ JSON.stringify(this.paramShareService.ansibleServerData))
+
+
+ let ansibleServer = this.createAnsibleserverData(this.item);
+ //need to revisit to initialize paramShareService.ansibleServerData
+ if(!this.paramShareService.ansibleServerData) {
+ this.paramShareService.ansibleServerData = {"fqdn-list" : []};
+ }
+ if(this.updateIndex != this.paramShareService.ansibleServerData["fqdn-list"].length) {
+ ansibleServer["modify-username"] = this.currentUser;
+ ansibleServer["modify-date"] = this.utilService.getDate();
+ console.log("update........")
+ }
+ this.paramShareService.ansibleServerData["fqdn-list"][this.updateIndex] = ansibleServer;
+ this.router.navigate(['../admin'], {
+ relativeTo: this.activeROute
+ });
+
+
+}
+
+cancel() {
+ sessionStorage.removeItem("ansibleserver");
+ this.router.navigate(['../admin'], {
+ relativeTo: this.activeROute
+ });
+}
+
+createAnsibleserverData(displayAnsibleServer){
+ let cloudOwnerList = this.createCloudOwnerList(displayAnsibleServer);
+ let anisble = {
+ "vnf-management-server-fqdn": displayAnsibleServer.server+":"+displayAnsibleServer.port,
+ "cloud-owner-list":cloudOwnerList,
+ "description":displayAnsibleServer.descr,
+ "username":displayAnsibleServer.creator,
+ "create-date":displayAnsibleServer['created-date'],
+ "modify-username":displayAnsibleServer.modifier,
+ "modify-date":displayAnsibleServer['modified-date']
+ };
+ return anisble;
+
+}
+
+createCloudOwnerList(displayAnsibleServer) {
+ let cloudOwnerList = [];
+
+ //prepare unique cloud-owner
+ for(let i=0; i<displayAnsibleServer.info.length; i++) {
+ let info = displayAnsibleServer.info[i];
+ let cloudOwner = {};
+ cloudOwner["cloud-owner"] = info.ownerid;
+ let exist = false;
+ cloudOwnerList.forEach(element => {
+ if(element["cloud-owner"] == info.ownerid) {
+ exist = true;
+
+ }
+ });
+ if(!exist){
+ cloudOwnerList.push(cloudOwner);
+ }
+
+ }
+ console.log("cloudOwnerList===>"+JSON.stringify(cloudOwnerList));
+
+ //prepare region id
+ cloudOwnerList.forEach(cloudOwner => {
+ let regionIdList = [];
+ for(let i=0; i<displayAnsibleServer.info.length; i++) {
+ let info = displayAnsibleServer.info[i];
+ if(cloudOwner["cloud-owner"] == info.ownerid) {
+ let exist = false;
+ regionIdList.forEach(element => {
+ if(element["region-id"] == info.regionid) {
+ exist = true;
+ }
+ });
+ if(!exist){
+ regionIdList.push({"region-id":info.regionid});
+ }
+ }
+
+ }
+ cloudOwner["region-id-list"] = regionIdList;
+ });
+
+ console.log("cloudOwnerList===>"+JSON.stringify(cloudOwnerList));
+
+ //prepare tenant id
+ cloudOwnerList.forEach(cloudOwner => {
+ cloudOwner["region-id-list"].forEach(regionid => {
+ let teanantIdList = [];
+ for(let i=0; i<displayAnsibleServer.info.length; i++) {
+ let info = displayAnsibleServer.info[i];
+ if(cloudOwner["cloud-owner"] == info.ownerid && regionid["region-id"] == info.regionid) {
+ let exist = false;
+ teanantIdList.forEach(element => {
+ if(element == info.tenantid) {
+ exist = true;
+ }
+ });
+ if(!exist){
+ teanantIdList.push(info.tenantid);
+ }
+ }
+
+ }
+ regionid["tenant-id-list"] = teanantIdList;
+ });
+ });
+ console.log("cloudOwnerList===>"+JSON.stringify(cloudOwnerList));
+ return cloudOwnerList;
+ }
+
+ //validating the fdqn url
+ validateFdqn(fdqn) {
+ if (fdqn.trim().length < 1) {
+ this.errorMessage = 'Please enter Configuration Server FQDN';
+ this.warningMessage = '';
+ this.invalid = true;
+ } else if (fdqn.startsWith(' ') || fdqn.endsWith(' ')) {
+ this.errorMessage = 'Leading and trailing spaces are not allowed';
+ this.warningMessage = '';
+ this.invalid = true;
+ } else if (!(fdqn.startsWith('http') || fdqn.endsWith('https'))) {
+ this.warningMessage = 'FDQN can start with eighther http or https protocol';
+ this.errorMessage = '';
+ this.invalid = false;
+
+ // } else if (name.includes(' ')) {
+ // this.errorMessage = 'More than one space is not allowed in VNFC Type';
+ // this.invalid = true;
+ // } else if (name.length > 50) {
+ // this.errorMessage = 'VNFC Type should be of minimum one character and maximum 50 character';
+ // this.invalid = true;
+ //
+ } else {
+ this.invalid = false;
+ this.errorMessage = '';
+ this.warningMessage = '';
+ }
+ }
+
+ //validating the port
+ validatePort(port) {
+ if (port.trim().length < 1) {
+ this.porterrorMessage = 'Please enter port';
+ this.portwarningMessage = '';
+ this.invalid = true;
+ } else if (port.startsWith(' ') || port.endsWith(' ')) {
+ this.porterrorMessage = 'Leading and trailing spaces are not allowed';
+ this.portwarningMessage = '';
+ this.invalid = true;
+
+ } else if (isNaN(port)) {
+ this.portwarningMessage = '';
+ this.porterrorMessage = 'Port should be a number';
+ this.invalid = true;
+ port = parseInt(port);
+ } else if (!(0 <= port && port <= 65535 )) {
+ this.portwarningMessage = 'Port should be a number in range of 0 to 65535';
+ this.porterrorMessage = '';
+ this.invalid = false;
+ } else {
+ this.invalid = false;
+ this.porterrorMessage = '';
+ this.portwarningMessage = '';
+ }
+ }
+
+ validate() {
+ this.validateFdqn(this.item.server);
+ this.validatePort(this.item.port);
+ if(this.item.info.length <= 0) {
+ this.zeroTenantIdsErrorMsg = "Please add atleast one Tenant ID.";
+ this.invalid = true;
+ }
+ if(!this.invalid) {
+ this.update();
+ }
+ }
+
+ validateTenantId(){
+ let valid = true;
+ if(this.sample.ownerid.trim().length == 0) {
+ this.ownerIdErrMsg = "Enter OwnerID";
+ valid = false;
+ } else {
+ this.ownerIdErrMsg = "";
+ }
+ if(this.sample.regionid.trim().length == 0) {
+ this.regionIdErrMsg = "Enter RegionID";
+ valid = false;
+ } else {
+ this.regionIdErrMsg = "";
+ }
+ if(this.sample.tenantid.trim().length == 0) {
+ this.tenantIdErrMsg = "Enter TenantID";
+ valid = false;
+ } else {
+ this.tenantIdErrMsg = "";
+ }
+ return valid;
+ }
+
+
+}