# All files / src/app/shared/api pool.service.ts

94.87% Statements 37/39
72.73% Branches 8/11
100% Functions 12/12
94.12% Lines 32/34

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    769x
    9x

    9x

    9x

    9x
    9x

    9x
    126x

    126x

    9x
    1x

    9x

    1x
    1x

    1x

    9x
    1x

    9x
    1x

    9x
    6x

    9x
    1x

    1x
    2x

    9x
    1x

    9x
    3x
    3x

    3x

    9x
     import { HttpClient } from '@angular/common/http';
    import { Injectable } from '@angular/core';

    import { Observable } from 'rxjs';
    import { map } from 'rxjs/operators';

    import { cdEncode } from '../decorators/cd-encode';
    import { RbdConfigurationEntry } from '../models/configuration';
    import { RbdConfigurationService } from '../services/rbd-configuration.service';
    import { ApiModule } from './api.module';

    @cdEncode
    @Injectable({
      providedIn: ApiModule
    })
    export class PoolService {
      apiPath = 'api/pool';

      constructor(private http: HttpClient, private rbdConfigurationService: RbdConfigurationService) {}

      create(pool) {
        return this.http.post(this.apiPath, pool, { observe: 'response' });
      }

      update(pool) {
        let name: string;
        if (pool.hasOwnProperty('srcpool')) {
          name = pool.srcpool;
          delete pool.srcpool;
        } else {
          name = pool.pool;
          delete pool.pool;
        }
        return this.http.put(`${this.apiPath}/${encodeURIComponent(name)}`, pool, {
          observe: 'response'
        });
      }

      delete(name) {
        return this.http.delete(`${this.apiPath}/${name}`, { observe: 'response' });
      }

      get(poolName) {
        return this.http.get(`${this.apiPath}/${poolName}`);
      }

      getList() {
        return this.http.get(`${this.apiPath}?stats=true`);
      }

      getConfiguration(poolName: string): Observable<RbdConfigurationEntry[]> {
        return this.http.get<RbdConfigurationEntry[]>(`${this.apiPath}/${poolName}/configuration`).pipe(
          // Add static data maintained in RbdConfigurationService
          map((values) =>
            values.map((entry) =>
              Object.assign(entry, this.rbdConfigurationService.getOptionByName(entry.name))
            )
          )
        );
      }

      getInfo(pool_name?: string) {
        return this.http.get(`${this.apiPath}/_info` + (pool_name ? `?pool_name=${pool_name}` : ''));
      }

      list(attrs = []) {
        const attrsStr = attrs.join(',');
        return this.http
          .get(`${this.apiPath}?attrs=${attrsStr}`)
          .toPromise()
          .then((resp: any) => {
            return resp;
          });
      }
    }