diff --git a/api-ref/source/api-ref-dcmanager-v1.rst b/api-ref/source/api-ref-dcmanager-v1.rst index 3616b95fe..61204b4df 100644 --- a/api-ref/source/api-ref-dcmanager-v1.rst +++ b/api-ref/source/api-ref-dcmanager-v1.rst @@ -75,6 +75,8 @@ Response - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -212,6 +214,8 @@ This operation does not accept a request body. - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -271,6 +275,8 @@ This operation does not accept a request body. - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -347,6 +353,8 @@ Request Example - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -417,6 +425,8 @@ Request Example - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -486,6 +496,8 @@ Request Example - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -554,6 +566,8 @@ Request Example - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -814,6 +828,8 @@ This operation does not accept a request body. - software-version: software_version - availability-status: availability_status - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime - openstack-installed: openstack_installed - management-state: management_state - systemcontroller-gateway-ip: systemcontroller_gateway_ip @@ -918,6 +934,90 @@ internalServerError (500), serviceUnavailable (503) This operation does not accept a request body. +---------------- +Subcloud Backups +---------------- + +Subcloud Backups allow for essential subcloud system data (and optionally container images) to be +saved and subsequently used to restore the subcloud to a previously working state. +Subcloud backups may be created, deleted or restored for a single subcloud, or for all subclouds +in a subcloud group. +Backup files may be saved locally in the subcloud or to a centralized archive in the system +controller. + +************************************************************************ +Generates subcloud backup files for a given subcloud or subcloud group +************************************************************************ + +.. rest_method:: POST /v1.0/subcloud-backup + +Accepts Content-Type multipart/form-data. + + +**Normal response codes** + +OK (200) - request has been validated and backup operation was started + +**Error response codes** + +badRequest (400), unauthorized (401), forbidden (403), notFound (404), +HTTPUnprocessableEntity (422), internalServerError (500), +serviceUnavailable (503) + +**Request parameters** + +.. rest_parameters:: parameters.yaml + + - subcloud: backup_subcloud_name_or_id + - group: backup_subcloud_group_name_or_id + - local_only: backup_local_only + - registry_images: backup_registry_images + - backup_values: backup_values + - sysadmin_password: sysadmin_password + +Request Example +---------------- + +.. literalinclude:: samples/subcloud-backup/subcloud-post-backup-request.json + :language: json + + +**Response parameters** + +.. rest_parameters:: parameters.yaml + + - subclouds: subclouds + - id: subcloud_id + - group_id: group_id + - name: subcloud_name + - description: subcloud_description + - location: subcloud_location + - software-version: software_version + - availability-status: availability_status + - deploy-status: deploy_status + - backup-status: backup_status + - backup-datetime: backup_datetime + - openstack-installed: openstack_installed + - management-state: management_state + - systemcontroller-gateway-ip: systemcontroller_gateway_ip + - management-start-ip: management_start_ip + - management-end-ip: management_end_ip + - management-subnet: management_subnet + - management-gateway-ip: management_gateway_ip + - created-at: created_at + - updated-at: updated_at + - data_install: data_install + - data_upgrade: data_upgrade + - endpoint_sync_status: endpoint_sync_status + - sync_status: sync_status + - endpoint_type: sync_status_type + +Response Example +---------------- + +.. literalinclude:: samples/subcloud-backup/subcloud-post-backup-response.json + :language: json + ---------------- Subcloud Alarms ---------------- diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml index 92d370284..101520840 100644 --- a/api-ref/source/parameters.yaml +++ b/api-ref/source/parameters.yaml @@ -53,6 +53,54 @@ availability_status: in: body required: true type: string +backup_datetime: + description: | + Date and time of the last successful subcloud backup. + in: body + required: true + type: string +backup_local_only: + description: | + Flag to indicate whether the platform backup is to be saved locally within + the subcloud. + Defaults to False. + in: body + required: false + type: boolean +backup_registry_images: + description: | + Flag to indicate whether registry images backup should also be + generated (local only). + Defaults to False. + in: body + required: false + type: boolean +backup_status: + description: | + The backup status of the subcloud. + in: body + required: true + type: string +backup_subcloud_group_name_or_id: + description: | + Name or ID of the group of subclouds to be backed up. + To be specified if and only if 'subcloud' is not provided. + in: body + required: true + type: string +backup_subcloud_name_or_id: + description: | + Name or ID of the subcloud to be backed up. + To be specified if and only if 'group' is not provided. + in: body + required: true + type: string +backup_values: + description: | + Content of a backup playbook overrides file, if needed (e.g. backup_dir). + in: body + required: false + type: multipart bmc_password: description: | The BMC password of the subcloud. Must be base64 encoded. @@ -246,7 +294,8 @@ region_name: type: string restore_values: description: | - The content of a file containing restore parameters (e.g. backup_filename). + The content of a file containing restore parameters (e.g. + backup_filename). in: body required: true type: string diff --git a/api-ref/source/samples/subcloud-backup/subcloud-post-backup-request.json b/api-ref/source/samples/subcloud-backup/subcloud-post-backup-request.json new file mode 100644 index 000000000..99686e6e0 --- /dev/null +++ b/api-ref/source/samples/subcloud-backup/subcloud-post-backup-request.json @@ -0,0 +1,7 @@ +{ + "subcloud": 1, + "local_only": false, + "registry_images": false, + "backup_values": "path to some file", + "sysadmin_password": "XXXXXXX" +} diff --git a/api-ref/source/samples/subcloud-backup/subcloud-post-backup-response.json b/api-ref/source/samples/subcloud-backup/subcloud-post-backup-response.json new file mode 100644 index 000000000..a1cd4ac1c --- /dev/null +++ b/api-ref/source/samples/subcloud-backup/subcloud-post-backup-response.json @@ -0,0 +1,29 @@ +{ + "subclouds": [ + { + "id": 1, + "name": "subcloud1", + "created-at": "2021-11-08T18:41:19.530228", + "updated-at": "2021-11-15T14:15:59.944851", + "availability-status": "offline", + "data_install": { + "bootstrap_interface": "eno1" + }, + "data_upgrade": null, + "deploy-status": "pre-restore", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", + "description": "Ottawa Site", + "group_id": 1, + "location": "YOW", + "management-end-ip": "192.168.101.50", + "management-gateway-ip": "192.168.101.1", + "management-start-ip": "192.168.101.2", + "management-state": "unmanaged", + "management-subnet": "192.168.101.0/24", + "openstack-installed": false, + "software-version": "21.12", + "systemcontroller-gateway-ip": "192.168.204.101" + } + ] +} diff --git a/api-ref/source/samples/subcloud-groups/subcloud-groups-get-subclouds-response.json b/api-ref/source/samples/subcloud-groups/subcloud-groups-get-subclouds-response.json index 08fac4414..5c5bcf234 100644 --- a/api-ref/source/samples/subcloud-groups/subcloud-groups-get-subclouds-response.json +++ b/api-ref/source/samples/subcloud-groups/subcloud-groups-get-subclouds-response.json @@ -10,6 +10,8 @@ "software-version": "21.12", "availability-status": "online", "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "openstack-installed": false, "management-state": "managed", "systemcontroller-gateway-ip": "192.168.204.101", diff --git a/api-ref/source/samples/subclouds/subcloud-get-detail-response.json b/api-ref/source/samples/subclouds/subcloud-get-detail-response.json index 1c3221409..fb51134a7 100644 --- a/api-ref/source/samples/subclouds/subcloud-get-detail-response.json +++ b/api-ref/source/samples/subclouds/subcloud-get-detail-response.json @@ -7,6 +7,8 @@ "software-version": "21.12", "availability-status": "online", "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "openstack-installed": false, "management-state": "managed", "systemcontroller-gateway-ip": "192.168.204.101", diff --git a/api-ref/source/samples/subclouds/subcloud-get-response.json b/api-ref/source/samples/subclouds/subcloud-get-response.json index ec3ed0431..3fbe6b8dc 100644 --- a/api-ref/source/samples/subclouds/subcloud-get-response.json +++ b/api-ref/source/samples/subclouds/subcloud-get-response.json @@ -7,6 +7,8 @@ "software-version": "21.12", "availability-status": "online", "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "openstack-installed": false, "management-state": "managed", "systemcontroller-gateway-ip": "192.168.204.101", diff --git a/api-ref/source/samples/subclouds/subcloud-patch-reconfigure-response.json b/api-ref/source/samples/subclouds/subcloud-patch-reconfigure-response.json index ae7f2ca69..abf248c26 100644 --- a/api-ref/source/samples/subclouds/subcloud-patch-reconfigure-response.json +++ b/api-ref/source/samples/subclouds/subcloud-patch-reconfigure-response.json @@ -7,6 +7,8 @@ "data_install": null, "data_upgrade": null, "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "description": "Ottawa Site", "group_id": 1, "location": "YOW", diff --git a/api-ref/source/samples/subclouds/subcloud-patch-reinstall-response.json b/api-ref/source/samples/subclouds/subcloud-patch-reinstall-response.json index 698a8828c..ce36f462e 100644 --- a/api-ref/source/samples/subclouds/subcloud-patch-reinstall-response.json +++ b/api-ref/source/samples/subclouds/subcloud-patch-reinstall-response.json @@ -9,6 +9,8 @@ } "data_upgrade": null, "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "description": "Ottawa Site", "group_id": 1, "location": "YOW", diff --git a/api-ref/source/samples/subclouds/subcloud-patch-response.json b/api-ref/source/samples/subclouds/subcloud-patch-response.json index ae7f2ca69..abf248c26 100644 --- a/api-ref/source/samples/subclouds/subcloud-patch-response.json +++ b/api-ref/source/samples/subclouds/subcloud-patch-response.json @@ -7,6 +7,8 @@ "data_install": null, "data_upgrade": null, "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "description": "Ottawa Site", "group_id": 1, "location": "YOW", diff --git a/api-ref/source/samples/subclouds/subcloud-patch-restore-response.json b/api-ref/source/samples/subclouds/subcloud-patch-restore-response.json index 71cb003e8..d586f1939 100644 --- a/api-ref/source/samples/subclouds/subcloud-patch-restore-response.json +++ b/api-ref/source/samples/subclouds/subcloud-patch-restore-response.json @@ -9,6 +9,8 @@ }, "data_upgrade": null, "deploy-status": "pre-restore", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "description": "Ottawa Site", "group_id": 1, "location": "YOW", diff --git a/api-ref/source/samples/subclouds/subclouds-get-response.json b/api-ref/source/samples/subclouds/subclouds-get-response.json index 57bc87f87..8cb90c0f3 100644 --- a/api-ref/source/samples/subclouds/subclouds-get-response.json +++ b/api-ref/source/samples/subclouds/subclouds-get-response.json @@ -10,6 +10,8 @@ "software-version": "21.12", "availability-status": "online", "deploy-status": "complete", + "backup-status": "complete", + "backup-datetime": "2022-07-08 11:23:58.132134", "openstack-installed": false, "management-state": "managed", "systemcontroller-gateway-ip": "192.168.204.101",