]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/blob
1e02f6b357d65f90d23dfd1dbb6303d79c3124fa
[ceph.git] /
1 <ng-container *ngIf="selection">
2   <nav ngbNav
3        #nav="ngbNav"
4        class="nav-tabs"
5        cdStatefulTab="rgw-bucket-details">
6     <ng-container ngbNavItem="details">
7       <a ngbNavLink
8          i18n>Details</a>
9       <ng-template ngbNavContent>
10
11         <table class="cds--data-table--sort cds--data-table--no-border cds--data-table cds--data-table--md"
12                data-testid="rgw-bucket-details">
13           <tbody>
14             <tr>
15               <td i18n
16                   class="bold w-25">Versioning</td>
17               <td class="w-75">{{ selection.versioning }}</td>
18             </tr>
19             <tr>
20               <td i18n
21                   class="bold">Encryption</td>
22               <td>{{ selection.encryption }}</td>
23             </tr>
24             <tr>
25               <td i18n
26                   class="bold">Replication</td>
27               <td>{{ replicationStatus }}</td>
28             </tr>
29             <tr>
30               <td i18n
31                   class="bold">MFA Delete</td>
32               <td>{{ selection.mfa_delete }}</td>
33             </tr>
34             <tr>
35               <td i18n
36                   class="bold">Index type</td>
37               <td>{{ selection.index_type }}</td>
38             </tr>
39             <tr>
40               <td i18n
41                   class="bold">Placement rule</td>
42               <td>{{ selection.placement_rule }}</td>
43             </tr>
44             <tr>
45               <td i18n
46                   class="bold">Last modification time</td>
47               <td>{{ selection.mtime | cdDate }}</td>
48             </tr>
49           </tbody>
50         </table>
51
52         <!-- Bucket quota -->
53         <div>
54           <legend i18n>Bucket quota</legend>
55           <table class="cds--data-table--sort cds--data-table--no-border cds--data-table cds--data-table--md"
56                  data-testid="rgw-bucket-quota-details">
57             <tbody>
58               <tr>
59                 <td i18n
60                     class="bold w-25">Enabled</td>
61                 <td class="w-75">{{ selection.bucket_quota.enabled | booleanText }}</td>
62               </tr>
63               <ng-container *ngIf="selection.bucket_quota.enabled">
64                 <tr>
65                   <td i18n
66                       class="bold">Maximum size</td>
67                   <td *ngIf="selection.bucket_quota.max_size <= -1"
68                       i18n>Unlimited</td>
69                   <td *ngIf="selection.bucket_quota.max_size > -1">
70                     {{ selection.bucket_quota.max_size | dimless }}
71                   </td>
72                 </tr>
73                 <tr>
74                   <td i18n
75                       class="bold">Maximum objects</td>
76                   <td *ngIf="selection.bucket_quota.max_objects <= -1"
77                       i18n>Unlimited</td>
78                   <td *ngIf="selection.bucket_quota.max_objects > -1">
79                     {{ selection.bucket_quota.max_objects }}
80                   </td>
81                 </tr>
82               </ng-container>
83             </tbody>
84           </table>
85         </div>
86
87         <!-- Locking -->
88         <legend i18n>Locking</legend>
89         <table class="cds--data-table--sort cds--data-table--no-border cds--data-table cds--data-table--md"
90                data-testid="rgw-bucket-locking-details">
91           <tbody>
92             <tr>
93               <td i18n
94                   class="bold w-25">Enabled</td>
95               <td class="w-75">{{ selection.lock_enabled | booleanText }}</td>
96             </tr>
97             <ng-container *ngIf="selection.lock_enabled">
98               <tr>
99                 <td i18n
100                     class="bold">Mode</td>
101                 <td>{{ selection.lock_mode }}</td>
102               </tr>
103               <tr>
104                 <td i18n
105                     class="bold">Days</td>
106                 <td>{{ selection.lock_retention_period_days }}</td>
107               </tr>
108             </ng-container>
109           </tbody>
110         </table>
111
112         <!-- Tags -->
113         <ng-container *ngIf="(selection.tagset | keyvalue)?.length">
114           <legend i18n>Tags</legend>
115           <table class="cds--data-table--sort cds--data-table--no-border cds--data-table cds--data-table--md">
116             <tbody>
117               <tr *ngFor="let tag of selection.tagset | keyvalue">
118                 <td i18n
119                     class="bold w-25">{{tag.key}}</td>
120                 <td class="w-75">{{ tag.value }}</td>
121               </tr>
122             </tbody>
123           </table>
124         </ng-container>
125
126
127         <!-- Bucket Rate Limit -->
128         <ng-container *ngIf="!!bucketRateLimit">
129           <cd-rgw-rate-limit-details [rateLimitConfig]="bucketRateLimit"
130                                      [type]="'bucket'"></cd-rgw-rate-limit-details>
131         </ng-container>
132       </ng-template>
133     </ng-container>
134
135     <ng-container ngbNavItem="permissions">
136       <a ngbNavLink
137          i18n>Policies</a>
138       <ng-template ngbNavContent>
139         <div class="table-scroller">
140           <table class="cds--data-table--sort cds--data-table--no-border cds--data-table cds--data-table--md">
141             <tbody>
142               <tr>
143                 <td i18n
144                     class="bold w-25">Bucket policy</td>
145                 <td><pre>{{ selection.bucket_policy | json}}</pre></td>
146               </tr>
147               <tr>
148                 <td i18n
149                     class="bold w-25">Lifecycle
150                   <div *ngIf="(selection.lifecycle | json) !== '{}'"
151                        class="input-group">
152                     <button type="button"
153                             class="btn btn-light"
154                             [ngClass]="{'active': lifecycleFormat === 'json'}"
155                             (click)="lifecycleFormat = 'json'">
156                           JSON
157                     </button>
158                     <button type="button"
159                             class="btn btn-light"
160                             [ngClass]="{'active': lifecycleFormat === 'xml'}"
161                             (click)="lifecycleFormat = 'xml'">
162                           XML
163                     </button>
164                   </div>
165                 </td>
166                 <td>
167                   <cds-code-snippet display="multi"
168                                     *ngIf="lifecycleFormat === 'json'">
169                     {{selection.lifecycle | json}}
170                   </cds-code-snippet>
171                   <cds-code-snippet display="multi"
172                                     *ngIf="lifecycleFormat === 'xml'">
173                     {{ (selection.lifecycle | xml:{'Rules':'Rule'}) || '-'}}
174                   </cds-code-snippet>
175                 </td>
176               </tr>
177               <tr *ngIf="selection.lifecycle_progress?.length > 0">
178                 <td i18n
179                     class="bold w-25">Lifecycle Progress</td>
180                 <td>
181                   <cds-tooltip [description]="lifecycleProgressMap.get(lifecycleProgress)?.description"
182                                [align]="'top'">
183                     <cds-tag size="md"
184                              [type]="lifecycleProgressMap.get(lifecycleProgress)?.color">
185                       {{ lifecycleProgress }}
186                     </cds-tag>
187                   </cds-tooltip>
188                 </td>
189               </tr>
190               <tr>
191                 <td i18n
192                     class="bold w-25">Replication policy</td>
193                 <td><pre>{{ selection.replication | json}}</pre></td>
194               </tr>
195               <tr>
196                 <td i18n
197                     class="bold w-25">ACL</td>
198                 <td>
199                   <table class="table">
200                     <thead>
201                       <tr i18n>
202                         <th>Grantee</th>
203                         <th>Permissions</th>
204                       </tr>
205                     </thead>
206                     <tbody>
207                       <tr i18n>
208                         <td>Bucket Owner</td>
209                         <td>{{ aclPermissions.Owner || '-'}}</td>
210                       </tr>
211                       <tr i18n>
212                         <td>Everyone</td>
213                         <td>{{ aclPermissions.AllUsers || '-'}}</td>
214                       </tr>
215                       <tr i18n>
216                         <td>Authenticated users group</td>
217                         <td>{{ aclPermissions.AuthenticatedUsers || '-'}}</td>
218                       </tr>
219                     </tbody>
220                   </table>
221                 </td>
222               </tr>
223             </tbody>
224           </table>
225         </div>
226       </ng-template>
227     </ng-container>
228
229     <ng-container ngbNavItem="tiering">
230       <a ngbNavLink
231          i18n>Tiering</a>
232       <ng-template ngbNavContent>
233         <cd-rgw-bucket-lifecycle-list [bucket]="selection"></cd-rgw-bucket-lifecycle-list>
234       </ng-template>
235     </ng-container>
236   </nav>
237
238   <div [ngbNavOutlet]="nav"></div>
239 </ng-container>