merge from ecomp a88f0072 - Modern UI

Issue-ID: VID-378
Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6
Signed-off-by: Ittay Stern <ittay.stern@att.com>
diff --git a/vid-webpack-master/src/app/shared/services/msoService/mso.service.spec.ts b/vid-webpack-master/src/app/shared/services/msoService/mso.service.spec.ts
new file mode 100644
index 0000000..9142e8d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/services/msoService/mso.service.spec.ts
@@ -0,0 +1,37 @@
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
+import {MsoService} from './mso.service';
+import {Constants} from "../../utils/constants";
+
+
+describe('Mso Service', () => {
+  let injector;
+  let service: MsoService;
+  let httpMock: HttpTestingController;
+
+  beforeAll(done => (async () => {
+    TestBed.configureTestingModule({
+      imports: [HttpClientTestingModule],
+      providers: [MsoService]
+    });
+    await TestBed.compileComponents();
+
+
+    injector = getTestBed();
+    service = injector.get(MsoService);
+    httpMock = injector.get(HttpTestingController);
+
+  })().then(done).catch(done.fail));
+
+  describe('#instantiation status tests ', ()=> {
+    test('retry should send the right request', ()=>{
+      const jobId: string = '111';
+
+      service.retryMsoTask(jobId).subscribe();
+      const req = httpMock.expectOne(Constants.Path.SERVICES_JOB_INFO_PATH  + '/retry/' + jobId);
+
+      expect(req.request.method).toBe('POST');
+    });
+  });
+
+});
diff --git a/vid-webpack-master/src/app/shared/services/msoService/mso.service.ts b/vid-webpack-master/src/app/shared/services/msoService/mso.service.ts
new file mode 100644
index 0000000..7d31c6f
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/services/msoService/mso.service.ts
@@ -0,0 +1,38 @@
+import {Injectable} from "@angular/core";
+import {HttpClient} from "@angular/common/http";
+import {Observable} from "rxjs";
+import {Constants} from "../../utils/constants";
+import {ServiceInstance} from "../../models/serviceInstance";
+
+@Injectable()
+export class MsoService {
+  httpClient: HttpClient;
+
+  constructor(http: HttpClient) {
+    this.httpClient = http;
+  }
+
+
+  public submitMsoTask(instanceFields): Observable<any> {
+    let path = Constants.Path.SERVICES_JOB_INFO_PATH + '/bulk';
+    return this.httpClient.post(path, instanceFields);
+  }
+
+  public retryMsoTask(jobId: string): Observable<any> {
+    let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/retry/' + jobId;
+    return this.httpClient.post<any>(pathQuery, null);
+  }
+
+  public retryBulkMsoTask(jobId: string, instanceFields: ServiceInstance): Observable<any> {
+    let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/retryJobWithChangedData/'+ jobId;
+    return this.httpClient.post<any>(pathQuery, instanceFields);
+  }
+
+  public createVnf(requestDetails, serviceInstanceId): Observable<any> {
+    let pathQuery: string = Constants.Path.MSO_CREATE_VNF_INSTANCE + serviceInstanceId;
+
+    return this.httpClient.post( pathQuery, {
+      requestDetails : requestDetails
+    });
+  }
+}