|
152 | 152 | SPEC_S3_ENDPOINT,
|
153 | 153 | SPEC_S3_BUCKET,
|
154 | 154 | SPEC_S3_PATH,
|
155 |
| - SPEC_S3_BACKUP_NAME, |
156 |
| - SPEC_S3_RESTORE_NAME, |
157 | 155 | SPEC_BACKUP,
|
| 156 | + SPEC_BACKUP_BACKUPS3, |
| 157 | + SPEC_BACKUP_BACKUPS3_NAME, |
158 | 158 | SPEC_BACKUP_MANUAL,
|
159 | 159 | SPEC_BACKUP_TRIGGER_ID,
|
160 | 160 | SPEC_BACKUP_CRON,
|
|
170 | 170 | SPEC_BACKUP_POLICY_RETENTION,
|
171 | 171 | SPEC_BACKUP_POLICY_RETENTION_DEFAULT_VALUE,
|
172 | 172 | RESTORE_FROMS3,
|
| 173 | + RESTORE_FROMS3_NAME, |
173 | 174 | RESTORE_FROMS3_RECOVERY,
|
174 | 175 | CLUSTER_STATUS_BACKUP,
|
175 | 176 | CLUSTER_STATUS_ARCHIVE,
|
@@ -1613,16 +1614,21 @@ def get_oldest_backupid(backup_info: TypedDict) -> str:
|
1613 | 1614 | return backupid
|
1614 | 1615 |
|
1615 | 1616 |
|
1616 |
| -def get_s3_env(meta: kopf.Meta, s3: TypedDict) -> List: |
| 1617 | +def get_backup_name_env(meta: kopf.Meta, name: str = None) -> List: |
1617 | 1618 | res = list()
|
1618 | 1619 |
|
1619 |
| - name = meta["name"] |
1620 |
| - if SPEC_S3_BACKUP_NAME in s3: |
1621 |
| - name = s3.pop(SPEC_S3_BACKUP_NAME) |
1622 |
| - if SPEC_S3_RESTORE_NAME in s3: |
1623 |
| - name = s3.pop(SPEC_S3_RESTORE_NAME) |
1624 |
| - res.append("-e") |
1625 |
| - res.append(BARMAN_BACKUP_NAME + '="' + name + '"') |
| 1620 | + if name is None: |
| 1621 | + name = meta['name'] |
| 1622 | + |
| 1623 | + env = BARMAN_BACKUP_NAME + '="' + name + '"' |
| 1624 | + res.append('-e') |
| 1625 | + res.append(env) |
| 1626 | + |
| 1627 | + return res |
| 1628 | + |
| 1629 | + |
| 1630 | +def get_s3_env(s3: TypedDict) -> List: |
| 1631 | + res = list() |
1626 | 1632 |
|
1627 | 1633 | # use SPEC_S3 prefix replace S3 key (must use S3_ prefix)
|
1628 | 1634 | for k in list(s3.keys()):
|
@@ -1676,11 +1682,13 @@ def restore_postgresql_froms3(
|
1676 | 1682 | recovery_time = None
|
1677 | 1683 |
|
1678 | 1684 | recovery = spec[RESTORE][RESTORE_FROMS3].get(RESTORE_FROMS3_RECOVERY, None)
|
| 1685 | + name = spec[RESTORE][RESTORE_FROMS3].get(RESTORE_FROMS3_NAME, None) |
1679 | 1686 |
|
1680 | 1687 | # add s3 env by pgtools -e
|
1681 | 1688 | s3 = spec[SPEC_S3].copy()
|
1682 |
| - s3.pop(SPEC_S3_BACKUP_NAME, None) |
1683 |
| - s3_info = get_s3_env(meta, s3) |
| 1689 | + s3_list = get_s3_env(s3) |
| 1690 | + name_list = get_backup_name_env(meta, name) |
| 1691 | + s3_info = [*s3_list, *name_list] |
1684 | 1692 |
|
1685 | 1693 | tmpconns: InstanceConnections = InstanceConnections()
|
1686 | 1694 | tmpconns.add(conn)
|
@@ -1913,13 +1921,15 @@ def backup_postgresql_to_s3(
|
1913 | 1921 |
|
1914 | 1922 | # add s3 env by pgtools
|
1915 | 1923 | s3 = spec[SPEC_S3].copy()
|
1916 |
| - s3.pop(SPEC_S3_RESTORE_NAME, None) |
1917 |
| - s3_list = get_s3_env(meta, s3) |
| 1924 | + s3_list = get_s3_env(s3) |
1918 | 1925 |
|
1919 | 1926 | backup_policy = spec.get(SPEC_BACKUP, {}).get(SPEC_BACKUP_POLICY, {})
|
1920 | 1927 | policy_list = get_policy_env(backup_policy)
|
1921 | 1928 |
|
1922 |
| - s3_info = [*s3_list, *policy_list] |
| 1929 | + name = spec[SPEC_BACKUP].get(SPEC_BACKUP_BACKUPS3, {}).get(SPEC_BACKUP_BACKUPS3_NAME, None) |
| 1930 | + name_list = get_backup_name_env(meta, name) |
| 1931 | + |
| 1932 | + s3_info = [*s3_list, *policy_list, *name_list] |
1923 | 1933 |
|
1924 | 1934 | cmd = ["pgtools", "-b"] + s3_info
|
1925 | 1935 | logging.warning(f"backup_postgresql_to_s3 execute {cmd} to backup cluster on readwrite node")
|
@@ -3592,7 +3602,7 @@ def correct_s3_profile(
|
3592 | 3602 | ) -> None:
|
3593 | 3603 | if is_s3_manual_backup_mode(meta, spec, patch, status, logger) or is_s3_cron_backup_mode(meta, spec, patch, status, logger):
|
3594 | 3604 | s3 = spec[SPEC_S3].copy()
|
3595 |
| - s3_info = get_s3_env(meta, s3) |
| 3605 | + s3_info = get_s3_env(s3) |
3596 | 3606 | readwrite_conns = connections(spec, meta, patch,
|
3597 | 3607 | get_field(POSTGRESQL, READWRITEINSTANCE),
|
3598 | 3608 | False, None, logger, None, status, False)
|
|
0 commit comments