|
10 | 10 | import re |
11 | 11 | import xml.etree.ElementTree as ET # noqa: N814 |
12 | 12 | from subprocess import SubprocessError |
| 13 | +from enum import Enum |
13 | 14 |
|
14 | 15 | from mgr_util import build_url, name_to_config_section |
15 | 16 |
|
@@ -983,6 +984,11 @@ def perform_validations(self, retention_period_days, retention_period_years, mod |
983 | 984 | raise DashboardException(msg=msg, component='rgw') |
984 | 985 | return retention_period_days, retention_period_years |
985 | 986 |
|
| 987 | +class SyncStatus(Enum): |
| 988 | + enabled = 'enabled' |
| 989 | + allowed = 'allowed' |
| 990 | + forbidden = 'forbidden' |
| 991 | + |
986 | 992 |
|
987 | 993 | class RgwMultisite: |
988 | 994 | def migrate_to_multisite(self, realm_name: str, zonegroup_name: str, zone_name: str, |
@@ -1744,3 +1750,67 @@ def get_primary_zonedata(self, data): |
1744 | 1750 | return match.group(1) |
1745 | 1751 |
|
1746 | 1752 | return '' |
| 1753 | + |
| 1754 | + def get_sync_policy(self, bucket_name: str = ''): |
| 1755 | + rgw_sync_policy_cmd = ['sync', 'policy', 'get'] |
| 1756 | + if bucket_name: |
| 1757 | + rgw_sync_policy_cmd += ['--bucket', bucket_name] |
| 1758 | + try: |
| 1759 | + exit_code, out, _ = mgr.send_rgwadmin_command(rgw_sync_policy_cmd) |
| 1760 | + if exit_code > 0: |
| 1761 | + raise DashboardException('Unable to get sync policy', |
| 1762 | + http_status_code=500, component='rgw') |
| 1763 | + return out |
| 1764 | + except SubprocessError as error: |
| 1765 | + raise DashboardException(error, http_status_code=500, component='rgw') |
| 1766 | + |
| 1767 | + def get_sync_policy_group(self, group_id: str, bucket_name: str = ''): |
| 1768 | + rgw_sync_policy_cmd = ['sync', 'group', 'get', '--group-id', group_id] |
| 1769 | + if bucket_name: |
| 1770 | + rgw_sync_policy_cmd += ['--bucket', bucket_name] |
| 1771 | + try: |
| 1772 | + exit_code, out, _ = mgr.send_rgwadmin_command(rgw_sync_policy_cmd) |
| 1773 | + if exit_code > 0: |
| 1774 | + raise DashboardException('Unable to get sync policy', |
| 1775 | + http_status_code=500, component='rgw') |
| 1776 | + return out |
| 1777 | + except SubprocessError as error: |
| 1778 | + raise DashboardException(error, http_status_code=500, component='rgw') |
| 1779 | + |
| 1780 | + def create_sync_policy_group(self, group_id: str, status: SyncStatus, bucket_name: str = ''): |
| 1781 | + rgw_sync_policy_cmd = ['sync', 'group', 'create', '--group-id', group_id, |
| 1782 | + '--status', SyncStatus[status].value] |
| 1783 | + if bucket_name: |
| 1784 | + rgw_sync_policy_cmd += ['--bucket', bucket_name] |
| 1785 | + try: |
| 1786 | + exit_code, _, _ = mgr.send_rgwadmin_command(rgw_sync_policy_cmd) |
| 1787 | + if exit_code > 0: |
| 1788 | + raise DashboardException('Unable to create sync policy', |
| 1789 | + http_status_code=500, component='rgw') |
| 1790 | + except SubprocessError as error: |
| 1791 | + raise DashboardException(error, http_status_code=500, component='rgw') |
| 1792 | + |
| 1793 | + def update_sync_policy_group(self, group_id: str, status: SyncStatus, bucket_name: str = ''): |
| 1794 | + rgw_sync_policy_cmd = ['sync', 'group', 'modify', '--group-id', group_id, |
| 1795 | + '--status', SyncStatus[status].value] |
| 1796 | + if bucket_name: |
| 1797 | + rgw_sync_policy_cmd += ['--bucket', bucket_name] |
| 1798 | + try: |
| 1799 | + exit_code, _, _ = mgr.send_rgwadmin_command(rgw_sync_policy_cmd) |
| 1800 | + if exit_code > 0: |
| 1801 | + raise DashboardException('Unable to update sync policy', |
| 1802 | + http_status_code=500, component='rgw') |
| 1803 | + except SubprocessError as error: |
| 1804 | + raise DashboardException(error, http_status_code=500, component='rgw') |
| 1805 | + |
| 1806 | + def remove_sync_policy_group(self, group_id: str, bucket_name=''): |
| 1807 | + rgw_sync_policy_cmd = ['sync', 'group', 'remove', '--group-id', group_id] |
| 1808 | + if bucket_name: |
| 1809 | + rgw_sync_policy_cmd += ['--bucket', bucket_name] |
| 1810 | + try: |
| 1811 | + exit_code, _, _ = mgr.send_rgwadmin_command(rgw_sync_policy_cmd) |
| 1812 | + if exit_code > 0: |
| 1813 | + raise DashboardException('Unable to remove sync policy', |
| 1814 | + http_status_code=500, component='rgw') |
| 1815 | + except SubprocessError as error: |
| 1816 | + raise DashboardException(error, http_status_code=500, component='rgw') |
0 commit comments