Updating a storage

  1. Authenticate to the cloud platform via the Python shell.

    The following variables should be available now:

    >>> base_url  # the base URL of the API
    'https://eu2-cloud.acronis.com/api/2'
    >>> auth  # the 'Authorization' header value with the access token
    {'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImMwMD...'}
    >>> tenant_id  # the UUID of the tenant to which the token provides access
    'ede9f834-70b3-476c-83d9-736f9f8c7dae'
    
  2. Assign the infra_id variable the UUID of an infrastructure component created via the API or an infrastructure component found in location’s infrastructure components:

    >>> infra_id = created_infra_id
    >>> infra_id
    'f79546d7-d051-4e19-96f3-4cc68c2c5575'
    
  3. Fetch the revision number of the storage as described in the chapters above. The following variable should be available now:

    >>> version
    1
    
  4. Define a variable named infra_data, and then assign the storage to update to this variable:

    >>> infra_data = {
    ...     "url": "Amazon S3 Storage",
    ...     "version": version
    ... }
    

    Name

    Value type

    Required

    Description

    url

    string

    No

    The storage URL. See storage url formatting rules

    version

    number

    Yes

    Revision number.

  5. Convert the infra_data object to a JSON text:

    >>> infra_data = json.dumps(infra_data, indent=4)
    
  6. Send a PUT request with the JSON text to the /infra/{infra_id} endpoint:

    >>> response = requests.put(
    ...     f'{base_url}/infra/{infra_id}',
    ...     headers={'Content-Type': 'application/json', **auth},
    ...     data=infra_data,
    ... )
    
  7. Check the status code of the response:

    >>> response.status_code
    200
    

    Status code 200 means that the storage has been updated.

    A different status code means that an error has occurred. For the details, refer to “Status and error codes”.

    Also, the response body contains the updated storage formatted as a JSON text. When converted to an object, it will look as follows:

    >>> pprint.pprint(response.json())
    {'backend_type': None,
     'capabilities': ['files_cloud'],
     'id': 'f79546d7-d051-4e19-96f3-4cc68c2c5575',
     'location_id': 'afac0e4d-9deb-4201-9df3-e124dd7d9955',
     'name': 'Amazon S3 Storage',
     'owner_tenant_id': 'e5afb5e8-84b6-415b-969d-bc10d19f3301',
     'platform_owned': False,
     'readonly': False,
     'url': 'amazon+s3://s3.amazonaws.com/my-bucket-name',
     'version': 2}