]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/blob
538436fb3df7b6b4707b4c096af618a48ddb1edd
[ceph-ci.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)="updateLifecycleFormatTo('json')">
156                           JSON
157                     </button>
158                     <button type="button"
159                             class="btn btn-light"
160                             [ngClass]="{'active': lifecycleFormat === 'xml'}"
161                             (click)="updateLifecycleFormatTo('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">
180                   Lifecycle progress
181                 </td>
182                 <td>
183                   <cds-tooltip [description]="lifecycleProgressMap.get(lifecycleProgress.status)?.description"
184                                [align]="'top'">
185                     <cds-tag size="md"
186                              [type]="lifecycleProgressMap.get(lifecycleProgress.status)?.color">
187                       {{ lifecycleProgress.status }}
188                     </cds-tag>
189                   </cds-tooltip>
190                   <div *ngIf="lifecycleProgress?.status !== 'UNINITIAL'"
191                        class="spacing-left">{{lifecycleProgress?.started}}</div>
192                 </td>
193               </tr>
194               <tr>
195                 <td i18n
196                     class="bold w-25">Replication policy</td>
197                 <td><pre>{{ selection.replication | json}}</pre></td>
198               </tr>
199               <tr>
200                 <td i18n
201                     class="bold w-25">ACL</td>
202                 <td>
203                   <table class="table">
204                     <thead>
205                       <tr i18n>
206                         <th>Grantee</th>
207                         <th>Permissions</th>
208                       </tr>
209                     </thead>
210                     <tbody>
211                       <tr i18n>
212                         <td>Bucket Owner</td>
213                         <td>{{ aclPermissions.Owner || '-'}}</td>
214                       </tr>
215                       <tr i18n>
216                         <td>Everyone</td>
217                         <td>{{ aclPermissions.AllUsers || '-'}}</td>
218                       </tr>
219                       <tr i18n>
220                         <td>Authenticated users group</td>
221                         <td>{{ aclPermissions.AuthenticatedUsers || '-'}}</td>
222                       </tr>
223                     </tbody>
224                   </table>
225                 </td>
226               </tr>
227             </tbody>
228           </table>
229         </div>
230       </ng-template>
231     </ng-container>
232
233     <ng-container ngbNavItem="tiering">
234       <a ngbNavLink
235          i18n>Tiering</a>
236       <ng-template ngbNavContent>
237         <cd-rgw-bucket-lifecycle-list [bucket]="selection"
238                                       (updateBucketDetails)="updateBucketDetails(extractLifecycleDetails.bind(this))"></cd-rgw-bucket-lifecycle-list>
239       </ng-template>
240     </ng-container>
241     <ng-container ngbNavItem="notification">
242       <a ngbNavLink
243          i18n>Notification</a>
244       <ng-template ngbNavContent>
245         <cd-rgw-bucket-notification-list [bucket]="selection"></cd-rgw-bucket-notification-list>
246       </ng-template>
247     </ng-container>
248   </nav>
249
250   <div [ngbNavOutlet]="nav"></div>
251 </ng-container>