From 53df976426f8845adf58e8ff9355764343a38549 Mon Sep 17 00:00:00 2001 From: aribeiro Date: Wed, 16 Jun 2021 23:21:04 +0100 Subject: Specify model at service creation Allows a user to select a model when designing a service Issue-ID: SDC-3621 Signed-off-by: aribeiro Change-Id: I386e43ddeb649a4ba0805f153e4b47e8a528cff0 --- catalog-ui/src/app/models/components/component.ts | 2 ++ catalog-ui/src/app/models/model.ts | 22 +++++++++++++ catalog-ui/src/app/modules/service-module.ts | 2 ++ catalog-ui/src/app/ng2/app.module.ts | 2 ++ catalog-ui/src/app/ng2/services/model.service.ts | 37 ++++++++++++++++++++++ .../responses/component-generic-response.ts | 4 +++ catalog-ui/src/app/services-ng2.ts | 1 + catalog-ui/src/app/utils/component-factory.ts | 1 + .../workspace/tabs/general/general-view-model.ts | 20 +++++++++++- .../workspace/tabs/general/general-view.html | 17 +++++++++- 10 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 catalog-ui/src/app/models/model.ts create mode 100644 catalog-ui/src/app/ng2/services/model.service.ts (limited to 'catalog-ui') diff --git a/catalog-ui/src/app/models/components/component.ts b/catalog-ui/src/app/models/components/component.ts index be92f76200..a60d7be6f7 100644 --- a/catalog-ui/src/app/models/components/component.ts +++ b/catalog-ui/src/app/models/components/component.ts @@ -146,6 +146,7 @@ export abstract class Component implements IComponent { public categorySpecificMetadata: Metadata = new Metadata(); public derivedFromGenericType: string; public derivedFromGenericVersion: string; + public model: Model; constructor(componentService:IComponentService, protected $q:ng.IQService, component?:Component) { if (component) { @@ -210,6 +211,7 @@ export abstract class Component implements IComponent { this.derivedFromGenericType = component.derivedFromGenericType; this.derivedFromGenericVersion = component.derivedFromGenericVersion; + this.model = component.model; } //custom properties diff --git a/catalog-ui/src/app/models/model.ts b/catalog-ui/src/app/models/model.ts new file mode 100644 index 0000000000..239d86e827 --- /dev/null +++ b/catalog-ui/src/app/models/model.ts @@ -0,0 +1,22 @@ +/* +* ============LICENSE_START======================================================= +* Copyright (C) 2021 Nordix Foundation. All rights reserved. +* ================================================================================ +* 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. +* +* SPDX-License-Identifier: Apache-2.0 +* ============LICENSE_END========================================================= +*/ + +interface Model { + name:string; +} diff --git a/catalog-ui/src/app/modules/service-module.ts b/catalog-ui/src/app/modules/service-module.ts index 38cd27250c..de620912f2 100644 --- a/catalog-ui/src/app/modules/service-module.ts +++ b/catalog-ui/src/app/modules/service-module.ts @@ -44,6 +44,7 @@ import { HomeService } from '../ng2/services/home.service'; import { ModalService } from '../ng2/services/modal.service'; import { OnboardingService } from '../ng2/services/onboarding.service'; import { ElementService } from '../ng2/services/element.service'; +import { ModelService } from '../ng2/services/model.service'; import { PluginsService } from '../ng2/services/plugins.service'; import { PoliciesService as PoliciesServiceNg2 } from '../ng2/services/policies.service'; import { SharingService } from '../ng2/services/sharing.service'; @@ -128,4 +129,5 @@ serviceModule.factory('ReqAndCapabilitiesService', downgradeInjectable(ReqAndCap serviceModule.factory('NodesFactory', downgradeInjectable(NodesFactory)); serviceModule.service('OnboardingService', downgradeInjectable(OnboardingService)); serviceModule.service('ElementService', downgradeInjectable(ElementService)); +serviceModule.service('ModelService', downgradeInjectable(ModelService)); serviceModule.service('ImportVSPService', downgradeInjectable(ImportVSPService)); diff --git a/catalog-ui/src/app/ng2/app.module.ts b/catalog-ui/src/app/ng2/app.module.ts index 88a56100fe..bb1119953b 100644 --- a/catalog-ui/src/app/ng2/app.module.ts +++ b/catalog-ui/src/app/ng2/app.module.ts @@ -100,6 +100,7 @@ import {CapabilitiesFilterPropertiesEditorComponentModule} from "./pages/composi import {InterfaceOperationHandlerModule} from "./pages/composition/interface-operatons/operation-creator/interface-operation-handler.module"; import {AttributesOutputsModule} from "./pages/attributes-outputs/attributes-outputs.module"; import { ElementService } from "./services/element.service"; +import { ModelService } from "./services/model.service"; declare const __ENV__: string; @@ -199,6 +200,7 @@ export function configServiceFactory(config: ConfigService, authService: Authent ImportVSPService, OnboardingService, ElementService, + ModelService, ServiceServiceNg2, AutomatedUpgradeService, WorkflowServiceNg2, diff --git a/catalog-ui/src/app/ng2/services/model.service.ts b/catalog-ui/src/app/ng2/services/model.service.ts new file mode 100644 index 0000000000..33d57295bf --- /dev/null +++ b/catalog-ui/src/app/ng2/services/model.service.ts @@ -0,0 +1,37 @@ +/* +* ============LICENSE_START======================================================= +* Copyright (C) 2021 Nordix Foundation. All rights reserved. +* ================================================================================ +* 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. +* +* SPDX-License-Identifier: Apache-2.0 +* ============LICENSE_END========================================================= +*/ +import { HttpClient } from '@angular/common/http'; +import { Inject, Injectable } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; +import { ISdcConfig, SdcConfigToken } from '../config/sdc-config.config'; + +@Injectable() +export class ModelService { + + protected baseUrl; + + constructor(protected http: HttpClient, @Inject(SdcConfigToken) sdcConfig: ISdcConfig) { + this.baseUrl = sdcConfig.api.root; + } + + getModels():Observable { + return this.http.get(this.baseUrl + "/v1/catalog/model"); + } + +} diff --git a/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts b/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts index 6011aabec8..96a21262e8 100644 --- a/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts +++ b/catalog-ui/src/app/ng2/services/responses/component-generic-response.ts @@ -61,6 +61,7 @@ export class ComponentGenericResponse implements Serializable; @@ -73,6 +77,7 @@ export interface IGeneralScope extends IWorkspaceViewModelScope { importCsarProProgressKey:string; browseFileLabel:string; componentCategories:componentCategories; + componentModel:componentModel; instantiationTypes:Array; isHiddenCategorySelected: boolean; @@ -95,6 +100,7 @@ export interface IGeneralScope extends IWorkspaceViewModelScope { onInstantiationTypeChange():void; updateIcon():void; possibleToUpdateIcon():boolean; + initModel():void; } // tslint:disable-next-line:max-classes-per-file @@ -124,6 +130,7 @@ export class GeneralViewModel { 'ComponentFactory', 'ImportVSPService', 'ElementService', + 'ModelService', '$stateParams' ]; @@ -150,6 +157,7 @@ export class GeneralViewModel { private ComponentFactory:ComponentFactory, private importVSPService: ImportVSPService, private elementService: ElementService, + private modelService: ModelService, private $stateParams: any) { this.initScopeValidation(); @@ -270,6 +278,7 @@ export class GeneralViewModel { // Init Instantiation types this.$scope.initInstantiationTypes(); this.$scope.initBaseTypes(); + this.$scope.initModel(); } if (this.cacheService.get(PREVIOUS_CSAR_COMPONENT)) { //keep the old component in the cache until checkout, so we dont need to pass it around @@ -451,6 +460,15 @@ export class GeneralViewModel { } }; + this.$scope.initModel = ():void => { + if (this.$scope.componentType === ComponentType.SERVICE) { + this.$scope.models = new Array(); + this.modelService.getModels().subscribe((modelsFound: Model[]) => { + modelsFound.forEach(model => {this.$scope.models.push(model.name)});}) + this.$scope.models.filter(model => model.name === (this.$scope.component).model); + } + }; + this.$scope.initEnvironmentContext = ():void => { if (this.$scope.componentType === ComponentType.SERVICE) { this.$scope.environmentContextObj = this.cacheService.get('UIConfiguration').environmentContext; diff --git a/catalog-ui/src/app/view-models/workspace/tabs/general/general-view.html b/catalog-ui/src/app/view-models/workspace/tabs/general/general-view.html index d598e170a4..d2529f9bb6 100644 --- a/catalog-ui/src/app/view-models/workspace/tabs/general/general-view.html +++ b/catalog-ui/src/app/view-models/workspace/tabs/general/general-view.html @@ -607,7 +607,22 @@ - + + + +
+ + +
+