1 import { Component, OnInit } from '@angular/core';
2 import { CdTableAction } from '~/app/shared/models/cd-table-action';
3 import { CdTableColumn } from '~/app/shared/models/cd-table-column';
4 import { CdTableSelection } from '~/app/shared/models/cd-table-selection';
6 import { RgwZonegroupService } from '~/app/shared/api/rgw-zonegroup.service';
7 import { ListWithDetails } from '~/app/shared/classes/list-with-details.class';
15 } from '../models/rgw-storage-class.model';
18 selector: 'cd-rgw-storage-class-list',
19 templateUrl: './rgw-storage-class-list.component.html',
20 styleUrls: ['./rgw-storage-class-list.component.scss']
22 export class RgwStorageClassListComponent extends ListWithDetails implements OnInit {
23 columns: CdTableColumn[];
24 selection = new CdTableSelection();
25 tableActions: CdTableAction[];
26 storageClassList: StorageClass[] = [];
28 constructor(private rgwZonegroupService: RgwZonegroupService) {
35 name: $localize`Zone Group`,
36 prop: 'zonegroup_name',
40 name: $localize`Placement Target`,
41 prop: 'placement_target',
45 name: $localize`Storage Class`,
46 prop: 'storage_class',
50 name: $localize`Target Region`,
55 name: $localize`Target Endpoint`,
62 loadStorageClass(): Promise<void> {
63 return new Promise((resolve, reject) => {
64 this.rgwZonegroupService.getAllZonegroupsInfo().subscribe(
65 (data: ZoneGroupDetails) => {
66 this.storageClassList = [];
68 const tierObj = data.zonegroups.flatMap((zoneGroup: ZoneGroup) =>
69 zoneGroup.placement_targets
70 .filter((target: Target) => target.tier_targets)
71 .flatMap((target: Target) =>
73 .filter((tierTarget: TierTarget) => tierTarget.val.tier_type === CLOUD_TIER)
74 .map((tierTarget: TierTarget) => {
75 return this.getTierTargets(tierTarget, zoneGroup.name, target.name);
79 this.storageClassList.push(...tierObj);
89 getTierTargets(tierTarget: TierTarget, zoneGroup: string, targetName: string) {
90 if (tierTarget.val.tier_type !== CLOUD_TIER) return null;
92 zonegroup_name: zoneGroup,
93 placement_target: targetName,
94 storage_class: tierTarget.val.storage_class,
99 updateSelection(selection: CdTableSelection) {
100 this.selection = selection;
103 setExpandedRow(expandedRow: any) {
104 super.setExpandedRow(expandedRow);