diff options
Diffstat (limited to 'src/app/admin/view-edit/ansible-server.component.ts')
-rw-r--r-- | src/app/admin/view-edit/ansible-server.component.ts | 326 |
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; + } + + +} |