1 <cd-rgw-multisite-tabs></cd-rgw-multisite-tabs>
3 <!-- Show the alert only when the user has the permission to configure -->
4 <cd-alert-panel *ngIf="permissions.configOpt.create && !rgwModuleStatus"
8 class="align-items-center"
10 (action)="enableRgwModule()">
11 In order to access the import/export feature, the rgw module must be enabled.
13 <cd-alert-panel *ngIf="restartGatewayMessage"
16 i18n>Please restart all Ceph Object Gateway instances in all zones to ensure consistent multisite configuration updates.
17 <a class="text-decoration-underline"
18 routerLink="/services">
21 <div [cdsStack]="'horizontal'"
23 <cd-table-actions class="btn-group"
24 [permission]="permissions.rgw"
25 [selection]="selection"
26 [tableActions]="multisiteReplicationActions">
28 <cd-table-actions *ngIf="showMigrateAndReplicationActions"
30 [permission]="permissions.rgw"
31 [selection]="selection"
32 [tableActions]="migrateTableAction">
34 <cd-table-actions class="btn-group multisite-actions"
35 [permission]="permissions.rgw"
36 [selection]="selection"
37 [tableActions]="createTableActions"
38 dropDownOnly="Actions"
39 [dropDownOnlyBtnColor]="'tertiary'"
40 [dropDownOnlyOffset]="{ x: 45, y: 0 }">
45 <div class="card-header"
46 data-testid="rgw-multisite-details-header"
47 i18n>Topology Viewer</div>
49 <div class="col-sm-6 col-lg-6 tree-container">
50 <i *ngIf="loadingIndicator"
51 [ngClass]="[icons.large, icons.spinner, icons.spin]"></i>
53 [isMultiSelect]="false"
54 (select)="onNodeSelected($event)">
55 <ng-template #nodeTemplateRef
58 <cds-tree-node [node]="node"
60 <ng-container *ngIf="node?.children && node?.children?.length">
61 <ng-container *ngFor="let child of node.children; let i = index;">
62 <ng-container *ngTemplateOutlet="nodeTemplateRef; context: { node: child, depth: depth + 1 };">
68 <ng-template #treeNodeTemplate
70 <div class="w-100 d-flex justify-content-between align-items-center pe-1">
72 <span *ngIf="node?.data?.name"
74 <span *ngIf="(node?.data?.show_warning)">
75 <i class="text-danger"
77 [title]="node?.data?.warning_message"
78 [ngClass]="icons.danger"></i>
80 <i [ngClass]="node?.data?.icon"></i>
81 {{ node?.data?.name }}
83 <span class="badge badge-success me-2"
84 *ngIf="node?.data?.is_default">
87 <span class="badge badge-warning me-2"
88 *ngIf="node?.data?.is_master"> master </span>
89 <span class="badge badge-warning me-2"
90 *ngIf="node?.data?.secondary_zone">
94 <div class="btn-group align-inline-btns"
95 [ngStyle]="{'visibility': activeNodeId === node?.data?.id ? 'visible' : 'hidden'}"
97 <div [title]="editTitle"
100 class="btn btn-light dropdown-toggle-split ms-1"
101 (click)="openModal(node, true)"
102 [disabled]="getDisable() || node?.data?.secondary_zone">
103 <i [ngClass]="[icons.edit]"></i>
106 <ng-container *ngIf="isDeleteDisabled(node) as nodeDeleteData">
107 <div [title]="nodeDeleteData.deleteTitle"
109 <button type="button"
110 class="btn btn-light ms-1"
111 [disabled]="nodeDeleteData.isDisabled || node?.data?.secondary_zone"
112 (click)="delete(node)">
113 <i [ngClass]="[icons.destroy]"></i>
120 <ng-container *ngFor="let node of nodes">
121 <ng-container *ngTemplateOutlet="nodeTemplateRef; context: { node: node, depth: 0 };">
126 <div class="col-sm-6 col-lg-6 metadata"
128 <legend>{{ metadataTitle }}</legend>
130 <cd-table-key-value [data]="metadata">
131 </cd-table-key-value>
137 <router-outlet name="modal"></router-outlet>