diff options
Diffstat (limited to 'catalog-ui/src/app/services/components/service-service.ts')
-rw-r--r-- | catalog-ui/src/app/services/components/service-service.ts | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/catalog-ui/src/app/services/components/service-service.ts b/catalog-ui/src/app/services/components/service-service.ts new file mode 100644 index 0000000000..f0fe90bf7f --- /dev/null +++ b/catalog-ui/src/app/services/components/service-service.ts @@ -0,0 +1,86 @@ +/** + * Created by obarda on 2/4/2016. + */ +'use strict'; +import {IComponentService, ComponentService} from "./component-service"; +import {Distribution, DistributionComponent, Service, PropertyModel, Component, IAppConfigurtaion} from "app/models"; +import {SharingService} from "../sharing-service"; + +export interface IServiceService extends IComponentService { + getDistributionsList(uuid:string):ng.IPromise<Array<Distribution>>; + getDistributionComponents(distributionId:string):ng.IPromise<Array<DistributionComponent>>; + markAsDeployed(serviceId:string, distributionId:string):ng.IPromise<any>; + updateGroupInstanceProperties(serviceId:string, resourceInstanceId:string, groupInstanceId:string, groupInstanceProperties:Array<PropertyModel>):ng.IPromise<Array<PropertyModel>>; +} + +export class ServiceService extends ComponentService implements IServiceService { + + static '$inject' = [ + 'Restangular', + 'sdcConfig', + 'Sdc.Services.SharingService', + '$q', + '$base64' + ]; + + public distribution:string = "distribution"; + + constructor(protected restangular:restangular.IElement, + protected sdcConfig:IAppConfigurtaion, + protected sharingService:SharingService, + protected $q:ng.IQService, + protected $base64:any) { + super(restangular, sdcConfig, sharingService, $q, $base64); + + this.restangular = restangular.one("services"); + } + + getDistributionsList = (uuid:string):ng.IPromise<Array<Distribution>> => { + let defer = this.$q.defer<Array<Distribution>>(); + this.restangular.one(uuid).one("distribution").get().then((distributions:any) => { + defer.resolve(<Array<Distribution>> distributions.distributionStatusOfServiceList); + }, (err)=> { + defer.reject(err); + }); + return defer.promise; + }; + + getDistributionComponents = (distributionId:string):ng.IPromise<Array<DistributionComponent>> => { + let defer = this.$q.defer<Array<DistributionComponent>>(); + this.restangular.one("distribution").one(distributionId).get().then((distributions:any) => { + defer.resolve(<Array<DistributionComponent>> distributions.distributionStatusList); + }, (err)=> { + defer.reject(err); + }); + return defer.promise; + }; + + markAsDeployed = (serviceId:string, distributionId:string):ng.IPromise<any> => { + let defer = this.$q.defer<any>(); + this.restangular.one(serviceId).one("distribution").one(distributionId).one("markDeployed").customPOST().then((result:any) => { + defer.resolve(result); + }, (err)=> { + + defer.reject(err); + }); + return defer.promise; + }; + + createComponentObject = (component:Component):Component => { + return new Service(this, this.$q, <Service>component); + }; + + updateGroupInstanceProperties = (serviceId:string, resourceInstanceId:string, groupInstanceId:string, groupInstanceProperties:Array<PropertyModel>):ng.IPromise<Array<PropertyModel>> => { + let defer = this.$q.defer<Array<PropertyModel>>(); + this.restangular.one(serviceId).one("resourceInstance").one(resourceInstanceId).one('groupInstance').one(groupInstanceId).customPUT(JSON.stringify(groupInstanceProperties)).then((updatedProperties:any) => { + let propertiesArray:Array<PropertyModel> = new Array<PropertyModel>(); + _.forEach(updatedProperties, (propertyObj:PropertyModel) => { + propertiesArray.push(new PropertyModel(propertyObj)); + }); + defer.resolve(propertiesArray); + }, (err)=> { + defer.reject(err); + }); + return defer.promise; + }; +} |