<cd-card cardTitle="Multisite Sync Status"
i18n-title>
<ng-template #notConfigured>
- <cd-alert-panel type="info"
- i18n>
- Multisite needs to be configured in order to see the multisite sync status.
- Please consult the <cd-doc section="multisite"></cd-doc> on how to configure and enable the multisite functionality.
- </cd-alert-panel>
+ <span class="pe-5 ps-5">
+ <cd-alert-panel type="info"
+ i18n>
+ Multisite needs to be configured in order to see the multisite sync status.
+ Please consult the <cd-doc section="multisite"></cd-doc> on how to configure and enable the multisite functionality.
+ </cd-alert-panel>
+ </span>
</ng-template>
<span *ngIf="loading"
class="d-flex justify-content-center">
import { Component, OnDestroy, OnInit } from '@angular/core';
import _ from 'lodash';
-import { Observable, ReplaySubject, Subscription } from 'rxjs';
+import { Observable, ReplaySubject, Subscription, of } from 'rxjs';
import { Permissions } from '~/app/shared/models/permissions';
import { AuthStorageService } from '~/app/shared/services/auth-storage.service';
import { HealthService } from '~/app/shared/api/health.service';
import { Icons } from '~/app/shared/enum/icons.enum';
import { RgwMultisiteService } from '~/app/shared/api/rgw-multisite.service';
-import { shareReplay, switchMap, tap } from 'rxjs/operators';
-import { RgwZonegroup } from '../models/rgw-multisite';
+import { catchError, shareReplay, switchMap, tap } from 'rxjs/operators';
@Component({
selector: 'cd-rgw-overview-dashboard',
this.loading = false;
this.replicaZonesInfo = data['dataSyncInfo'];
this.metadataSyncInfo = data['metadataSyncInfo'];
+ if (this.replicaZonesInfo.length === 0) {
+ this.showMultisiteCard = false;
+ this.syncCardLoading = false;
+ this.loading = false;
+ }
[this.realm, this.zonegroup, this.zone] = data['primaryZoneData'];
+ }),
+ catchError((err) => {
+ this.showMultisiteCard = false;
+ this.syncCardLoading = false;
+ this.loading = false;
+ err.preventDefault();
+ return of(true);
})
)
),
- tap(() => {
- const zonegroup = new RgwZonegroup();
- zonegroup.name = this.zonegroup;
- this.rgwZonegroupService.get(zonegroup).subscribe((data: any) => {
- this.showMultisiteCard = data['zones'].length !== 1;
- this.syncCardLoading = false;
- });
- }),
shareReplay(1)
);
}
try:
exit_code, out, _ = mgr.send_rgwadmin_command(rgw_multisite_sync_status_cmd, False)
if exit_code > 0:
- raise DashboardException('Unable to get multisite sync status',
+ raise DashboardException('Unable to get sync status',
http_status_code=500, component='rgw')
if out:
return self.process_data(out)
def process_data(self, data):
primary_zone_data, metadata_sync_data = self.extract_metadata_and_primary_zone_data(data)
- datasync_info = self.extract_datasync_info(data)
- replica_zones_info = [self.extract_replica_zone_data(item) for item in datasync_info]
+ replica_zones_info = []
+ if metadata_sync_data != {}:
+ datasync_info = self.extract_datasync_info(data)
+ replica_zones_info = [self.extract_replica_zone_data(item) for item in datasync_info]
replica_zones_info_object = {
'metadataSyncInfo': metadata_sync_data,
zone = self.get_primary_zonedata(primary_zone_tree[2])
primary_zone_data = [realm, zonegroup, zone]
- metadata_sync_data = self.extract_metadata_sync_data(metadata_sync_infoormation)
+ zonegroup_info = self.get_zonegroup(zonegroup)
+ metadata_sync_data = {}
+ if len(zonegroup_info['zones']) > 1:
+ metadata_sync_data = self.extract_metadata_sync_data(metadata_sync_infoormation)
return primary_zone_data, metadata_sync_data