X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fservices%2Fpolicy%2Fpolicy.service.ts;fp=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fservices%2Fpolicy%2Fpolicy.service.ts;h=1c87081822a58121378df7b8d8f65d6f4c287ef8;hb=a2bc79c5f0027e953815d6e98814a748b36827aa;hp=0000000000000000000000000000000000000000;hpb=25501ccf6b73c3afded66eade70ee59af102844f;p=nonrtric.git diff --git a/dashboard/webapp-frontend/src/app/services/policy/policy.service.ts b/dashboard/webapp-frontend/src/app/services/policy/policy.service.ts new file mode 100644 index 00000000..1c870818 --- /dev/null +++ b/dashboard/webapp-frontend/src/app/services/policy/policy.service.ts @@ -0,0 +1,104 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2019 Nordix Foundation + * %% + * 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. + * ========================LICENSE_END=================================== + */ + +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { PolicyType, PolicyInstance, PolicyInstanceAck } from '../../interfaces/policy.types'; +import { DashboardSuccessTransport } from '../../interfaces/dashboard.types'; + +/** + * Services for calling the policy endpoints. + */ +@Injectable({ + providedIn: 'root' +}) +export class PolicyService { + + private basePath = 'api/policy'; + private policyTypePath = 'policytypes'; + private policyPath = 'policies'; + + private buildPath(...args: any[]) { + let result = this.basePath; + args.forEach(part => { + result = result + '/' + part; + }); + return result; + } + + constructor(private httpClient: HttpClient) { + // injects to variable httpClient + } + + /** + * Gets version details + * @returns Observable that should yield a String + */ + getVersion(): Observable { + const url = this.buildPath('version'); + return this.httpClient.get(url).pipe( + // Extract the string here + map(res => res['data']) + ); + } + + getPolicyTypes(): Observable { + const url = this.buildPath(this.policyTypePath); + return this.httpClient.get(url); + } + + getPolicyInstances(policyTypeId: number): Observable { + const url = this.buildPath(this.policyTypePath, policyTypeId, this.policyPath); + return this.httpClient.get(url); + } + + /** + * Gets policy parameters. + * @returns Observable that should yield a policy instance + */ + getPolicy(policyTypeId: number, policyInstanceId: string): Observable { + const url = this.buildPath(this.policyTypePath, policyTypeId, this.policyPath, policyInstanceId); + return this.httpClient.get(url); + } + + /** + * Creates or replaces policy instance. + * @param policyTypeId ID of the policy type that the instance will have + * @param policyInstanceId ID of the instance + * @param policyJson Json with the policy content + * @returns Observable that should yield a response code, no data + */ + putPolicy(policyTypeId: number, policyInstanceId: string, policyJson: string): Observable { + const url = this.buildPath(this.policyTypePath, policyTypeId, this.policyPath, policyInstanceId); + return this.httpClient.put(url, policyJson, { observe: 'response' }); + } + + /** + * Deletes a policy instance. + * @param policyTypeId + * @returns Observable that should yield a response code, no data + */ + deletePolicy(policyTypeId: number, policyInstanceId: string): Observable { + const url = this.buildPath(this.policyTypePath, policyTypeId, this.policyPath, policyInstanceId); + return this.httpClient.delete(url, { observe: 'response' }); + } +}