Feature: 11055 Support of several node groups in clusters created by OSM
- Added control plane support in managed post
- When aws vim account is selected paylaod will get differed
- Added details page in clusters to view node and ksu for
specified cluster
- Fixed Bug 2402 - Unable to create Ns Config template from Ui
bug by chnaging api
Change-Id: I4eb327fd86b0c4a706b05a8ed10524e4d2c5bc95
Signed-off-by: SANDHYA.JS <sandhya.j@tataelxsi.co.in>
diff --git a/src/app/utilities/compose-packages/ComposePackages.html b/src/app/utilities/compose-packages/ComposePackages.html
index 007b0ab..be8081e 100644
--- a/src/app/utilities/compose-packages/ComposePackages.html
+++ b/src/app/utilities/compose-packages/ComposePackages.html
@@ -36,9 +36,12 @@
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': packagesForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' |
translate}}</label>
- <label class="col-sm-6 col-form-label" *ngIf="!template && !oka">{{'PACKAGE' | translate}} {{'NAME' | translate}}*</label>
- <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages'">{{'PACKAGE' | translate}} {{'NAME' | translate}}*</label>
- <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages-edit'">{{'PACKAGE' | translate}} {{'NAME' | translate}}</label>
+ <label class="col-sm-6 col-form-label" *ngIf="!template && !oka">{{'PACKAGE' | translate}} {{'NAME' |
+ translate}}*</label>
+ <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages'">{{'PACKAGE' |
+ translate}} {{'NAME' | translate}}*</label>
+ <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages-edit'">{{'PACKAGE' |
+ translate}} {{'NAME' | translate}}</label>
<label class="col-sm-6 col-form-label" *ngIf="template">{{'NAME' | translate}}*</label>
<div class="col-sm-6">
<input type="text" class="form-control" placeholder="{{'NAME' | translate}}" formControlName="name" id="name"
@@ -81,7 +84,7 @@
<label class="col-sm-6 col-form-label">{{'CONFIG' | translate}}*</label>
<div class="col-sm-6">
<textarea rows="10" cols="50" class="form-control" placeholder="{{'YAMLCONFIG' | translate}}"
- formControlName="config" id="config"></textarea>
+ formControlName="config" id="config" [ngClass]="{ 'is-invalid': submitted && f.config.errors }"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
<input type="file" #fileInputConfig class="fileupload custom-file-input"
@@ -91,7 +94,8 @@
</div>
<div class="form-group row mb-3" *ngIf="oka">
<label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages'">{{'PACKAGE' | translate}}*</label>
- <label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages-edit'">{{'PACKAGE' | translate}}</label>
+ <label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages-edit'">{{'PACKAGE' |
+ translate}}</label>
<div class="col-sm-6">
<label for="fileInput" class="custom-file-upload" *ngIf="this.params.page === 'oka-packages-edit'">
<input type="file" #fileInput class="fileupload custom-file-input" formControlName="package"
diff --git a/src/app/utilities/compose-packages/ComposePackages.ts b/src/app/utilities/compose-packages/ComposePackages.ts
index a8114d0..d294f7f 100644
--- a/src/app/utilities/compose-packages/ComposePackages.ts
+++ b/src/app/utilities/compose-packages/ComposePackages.ts
@@ -30,7 +30,6 @@
import { environment } from 'environment';
import * as jsyaml from 'js-yaml';
import { NSConfigData } from 'NSCONFIGTEMPLATEMODEL';
-import { NSDDetails } from 'NSDModel';
import * as pako from 'pako';
import { RestService } from 'RestService';
import { SharedService, isNullOrUndefined } from 'SharedService';
@@ -204,6 +203,7 @@
this.getNsdPackageDetails();
this.getFormControl('profile_type').disable();
this.getFormControl('description').disable();
+ this.getFormControl('package').disable();
} else if (this.params.page === 'ns-config-template-edit') {
this.template = true;
this.oka = false;
@@ -211,6 +211,7 @@
this.getFormControl('profile_type').disable();
this.getFormControl('nsdId').disable();
this.getFormControl('description').disable();
+ this.getFormControl('package').disable();
} else if (this.params.page === 'oka-packages') {
this.oka = true;
this.template = false;
@@ -241,7 +242,7 @@
this.packagesForm = this.formBuilder.group({
name: ['', [Validators.required]],
nsdId: [null, [Validators.required]],
- config: [null],
+ config: [null, [Validators.required]],
profile_type: [null],
description: ['', [Validators.required]],
package: ['']
@@ -269,7 +270,7 @@
/** Get NSD Package details @public */
public getNsdPackageDetails(): void {
- this.restService.getResource(environment.OKAPACKAGES_URL)
+ this.restService.getResource(environment.NSDESCRIPTORSCONTENT_URL)
.subscribe((nsdPackageData: []): void => {
nsdPackageData.forEach((nsData: VNFD): void => {
const names: {} = {
@@ -336,6 +337,12 @@
};
this.addNullValueForInvalidFiles();
this.sharedService.cleanForm(this.packagesForm);
+ if (this.params.page === 'ns-config-template-edit' || this.params.page === 'ns-config-template') {
+ if (this.packagesForm.value.config.trim() === '' || isNullOrUndefined(this.packagesForm.value.config)) {
+ this.packagesForm.controls.config.setErrors({ configIsEmpty: true });
+ this.packagesForm.get('config').setValue(this.packagesForm.get('config').value.trim());
+ }
+ }
if (!this.packagesForm.invalid) {
this.isLoadingResults = true;
if (this.params.page === 'ns-package' || this.params.page === 'vnf-package') {
@@ -443,16 +450,12 @@
url: urlHeader,
httpOptions: { headers: this.headers }
};
- if (isNullOrUndefined(this.packagesForm.value.config) || this.packagesForm.value.config === '') {
- delete this.packagesForm.value.config;
+ const validJSON: boolean = this.sharedService.checkJson(this.packagesForm.value.config);
+ if (validJSON) {
+ this.packagesForm.value.config = JSON.parse(this.packagesForm.value.config);
} else {
- const validJSON: boolean = this.sharedService.checkJson(this.packagesForm.value.config);
- if (validJSON) {
- this.packagesForm.value.config = JSON.parse(this.packagesForm.value.config);
- } else {
- const getConfigJson: string = jsyaml.load(this.packagesForm.value.config, { json: true });
- this.packagesForm.value.config = getConfigJson;
- }
+ const getConfigJson: string = jsyaml.load(this.packagesForm.value.config, { json: true });
+ this.packagesForm.value.config = getConfigJson;
}
this.restService.putResource(apiURLHeader, (this.packagesForm.value)).subscribe((result: {}): void => {
this.activeModal.close(this.modalData);
diff --git a/src/app/utilities/delete/DeleteComponent.html b/src/app/utilities/delete/DeleteComponent.html
index c7a6c62..7c90b6e 100644
--- a/src/app/utilities/delete/DeleteComponent.html
+++ b/src/app/utilities/delete/DeleteComponent.html
@@ -28,9 +28,14 @@
<i class="fas fa-times-circle text-danger"></i>
</button>
</div>
-<div class="modal-body">
- <span>{{'DELETECONFIRMPOPUPMESSAGE' | translate}} <b>{{ this.title }}</b> ?</span>
+<div class="modal-body" *ngIf="createdbyosm === 'false'; else Deletemessage">
+ <span>{{'DEREGISTERCONFIRMPOPUPMESSAGE' | translate}} <b>{{ this.title }}</b> ?</span>
</div>
+<ng-template #Deletemessage>
+ <div class="modal-body">
+ <span>{{'DELETECONFIRMPOPUPMESSAGE' | translate}} <b>{{ this.title }}</b> ?</span>
+ </div>
+</ng-template>
<div class="modal-footer">
<button (click)="activeModal.close()" class="btn btn-danger">{{'CANCEL' | translate}}</button>
<button *ngIf="!isPage; else multiDelete" (click)="deleteData();" class="btn btn-primary">{{'OK' | translate}}</button>
diff --git a/src/app/utilities/delete/DeleteComponent.ts b/src/app/utilities/delete/DeleteComponent.ts
index f65712d..a54b67e 100644
--- a/src/app/utilities/delete/DeleteComponent.ts
+++ b/src/app/utilities/delete/DeleteComponent.ts
@@ -132,7 +132,11 @@
if (sessionStorage.getItem('clusterType') === 'Registered') {
this.isRegisterPage = true;
}
- this.createdbyosm = data.createdbyosm;
+ if (data.createdbyosm === 'NO' || data.createdbyosm === 'false') {
+ this.createdbyosm = 'false';
+ } else {
+ this.createdbyosm = 'true';
+ }
this.bootstrap = data.bootstrap;
this.key = data.key;
if (!isNullOrUndefined(this.params)) {
@@ -170,6 +174,11 @@
} else if (data.productName !== undefined) {
this.title = data.productName;
}
+ if (data.createdbyosm === 'NO' || data.createdbyosm === 'false') {
+ this.createdbyosm = 'false';
+ } else {
+ this.createdbyosm = 'true';
+ }
}
/** Generate Delete url from data @public */
// eslint-disable-next-line complexity
@@ -184,6 +193,10 @@
} else if (this.params.page === 'instantiateNS') {
this.deleteURL = environment.NSINSTANCESTERMINATE_URL;
this.notifyMessage = 'DELETEDSUCCESSFULLY';
+ } else if (this.params.page === 'card-node') {
+ this.title = this.params.name;
+ } else if (this.params.page === 'card-ksu') {
+ this.title = this.params.name;
}
}
if (data.page === 'ns-package') {
@@ -249,6 +262,8 @@
} else if (data.page === 'k8-cluster') {
this.forceDelete = this.params.forceDeleteType;
this.page = data.page;
+ } else if (data.page === 'k8s-node') {
+ this.deleteURL = environment.K8SCREATECLUSTER_URL + '/' + data.cluster_id + '/node';
}
}
/** Generate Data function @public */
@@ -265,23 +280,26 @@
}
}
deletingURl = this.deleteURL + '/' + this.id + '?FORCE=true';
- this.notifyMessage = 'DELETEDSUCCESSFULLY';
+ this.notifyMessage = 'DELETELOADMESSAGE';
} else if (this.page === 'k8-cluster') {
if (this.createdbyosm === 'true') {
this.deleteURL = environment.K8SCREATECLUSTER_URL;
deletingURl = this.deleteURL + '/' + this.id;
} else {
- if (this.bootstrap === false && this.key === true) {
+ if (this.key === false) {
+ this.deleteURL = environment.K8SCREATECLUSTER_URL;
+ deletingURl = this.deleteURL + '/' + this.id + '/deregister';
+ } else if (this.key === true) {
this.deleteURL = environment.K8SCLUSTER_URL;
deletingURl = this.deleteURL + '/' + this.id;
- } else if (this.bootstrap === false && this.key === false) {
- this.deleteURL = environment.K8SCREATECLUSTER_URL;
- deletingURl = this.deleteURL + '/' + this.id + '/deregister';
}
- else if (this.bootstrap === true) {
- this.deleteURL = environment.K8SCREATECLUSTER_URL;
- deletingURl = this.deleteURL + '/' + this.id + '/deregister';
- }
+ }
+ } else if (!isNullOrUndefined(this.params)) {
+ if (this.params.page === 'card-node') {
+ this.createdbyosm = 'true';
+ deletingURl = environment.K8SCREATECLUSTER_URL + '/' + this.params.cluster_id + '/nodegroup' + '/' + this.params.id;
+ } else if (this.params.page === 'card-ksu') {
+ deletingURl = environment.KSU_URL + '/' + this.params.id;
}
} else {
deletingURl = this.deleteURL + '/' + this.id;
diff --git a/src/app/utilities/oka-packages-action/OkaPackagesActionComponent.html b/src/app/utilities/oka-packages-action/OkaPackagesActionComponent.html
index c7627d8..74833a6 100644
--- a/src/app/utilities/oka-packages-action/OkaPackagesActionComponent.html
+++ b/src/app/utilities/oka-packages-action/OkaPackagesActionComponent.html
@@ -16,11 +16,11 @@
Author: SANDHYA JS (sandhya.j@tataelxsi.co.in)
-->
<div class="btn-group list action" role="group">
- <button type="button" class="btn btn-primary" (click)="deleteoka(false)"
+ <button [disabled]="state != 'READY'" type="button" class="btn btn-primary" (click)="deleteoka(false)"
placement="top" container="body" ngbTooltip="{{'DELETE' | translate}}">
<i class="far fa-trash-alt icons"></i>
</button>
- <button [disabled]="state != 'CREATED'" type="button" class="btn btn-primary" (click)="okaEdit()" placement="top"
+ <button [disabled]="state != 'READY'" type="button" class="btn btn-primary" (click)="okaEdit()" placement="top"
container="body" ngbTooltip="{{'EDIT' | translate}}">
<i class="far fa-edit icons"></i>
</button>
@@ -29,4 +29,4 @@
<i class="fas fa-trash-alt icons text-danger" title="delete"></i>
</button>
</div>
-<app-loader [waitingMessage]="message" *ngIf="isLoadingDownloadResult"></app-loader>
\ No newline at end of file
+<app-loader [waitingMessage]="message" *ngIf="isLoadingDownloadResult"></app-loader>
diff --git a/src/app/utilities/show-info/ShowInfoComponent.ts b/src/app/utilities/show-info/ShowInfoComponent.ts
index 6c21ac5..b3c0fbe 100644
--- a/src/app/utilities/show-info/ShowInfoComponent.ts
+++ b/src/app/utilities/show-info/ShowInfoComponent.ts
@@ -201,10 +201,10 @@
} else {
if (this.params.bootstrap === true) {
this.url = environment.K8SCREATECLUSTER_URL + '/' + this.params.id;
- } else if (this.params.bootstrap === false && this.params.key === false) {
- this.url = environment.K8SCREATECLUSTER_URL + '/' + this.params.id;
- } else if (this.params.bootstrap === false && this.params.key === true) {
+ } else if (this.params.createdbyosm === 'NO') {
this.url = environment.K8SCLUSTER_URL + '/' + this.params.id;
+ } else if (this.params.key === true) {
+ this.url = environment.K8SCREATECLUSTER_URL + '/' + this.params.id;
}
}
this.restService.getResource(this.url).subscribe((k8sclusterOpn: {}[]) => {
@@ -215,6 +215,26 @@
}, () => {
this.isLoadingResults = false;
});
+ } else if (this.params.page === 'k8s-node') {
+ this.url = environment.K8SCREATECLUSTER_URL + '/' + this.params.cluster_id + '/nodegroup' + '/' + this.params.id;
+ this.restService.getResource(this.url).subscribe((k8sclusterOpn: {}[]) => {
+ this.defaults['text/json'] = JSON.stringify(k8sclusterOpn, null, '\t');
+ }, (error: ERRORDATA) => {
+ this.isLoadingResults = false;
+ this.restService.handleError(error, 'get');
+ }, () => {
+ this.isLoadingResults = false;
+ });
+ } else if (this.params.page === 'k8s-ksu') {
+ this.url = environment.KSU_URL + '/' + this.params.id;
+ this.restService.getResource(this.url).subscribe((k8sclusterOpn: {}[]) => {
+ this.defaults['text/json'] = JSON.stringify(k8sclusterOpn, null, '\t');
+ }, (error: ERRORDATA) => {
+ this.isLoadingResults = false;
+ this.restService.handleError(error, 'get');
+ }, () => {
+ this.isLoadingResults = false;
+ });
} else if (this.params.page === 'k8s-repo') {
this.restService.getResource(environment.K8REPOS_URL + '/' +
this.params.id).subscribe((k8srepoOpn: {}[]) => {