diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..9741d1b --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,17 @@ +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3.11" + +sphinx: + configuration: conf.py + +formats: + - pdf + - epub + +python: + install: + - requirements: requirements.txt diff --git a/Makefile b/Makefile index 6d57ac1..49399f1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ # Makefile for Sphinx documentation # +# # You can set these variables from the command line. SPHINXOPTS = diff --git a/accounts.rst b/accounts.rst index ec0b60d..aaa9d5e 100644 --- a/accounts.rst +++ b/accounts.rst @@ -2,7 +2,7 @@ Accounts ======== .. note:: - + See :rfc:`2616#section-9` for more details on HTTP methods semantics General @@ -14,7 +14,7 @@ Create account .. http:post:: /accounts/action/?do=create - Creates an account on the system. In case of succes, the user has to check + Creates an account on the system. In case of success, the user has to check his email for a confirmation link, which will ask him to create a password for the account. @@ -38,7 +38,7 @@ Login/Logout .. http:post:: /accounts/action/?do=login - Login to the system using cookie auth + Log in to the system using cookie auth :statuscode 200: no error :statuscode 401: unauthorized @@ -94,7 +94,7 @@ Login/Logout .. http:post:: /accounts/action/?do=check_login - Check if you are logged in the system + Check if you are logged in to the system :statuscode 200: no error @@ -117,3 +117,34 @@ Login/Logout **Response**: *Empty* +.. http:post:: accounts/action/?do=check_login_with_return_uuid + + Check how an authenticated service can get a user uuid via Cloudsigma API + + :statuscode 200: no error + + **Example request**: + + .. sourcecode:: http + + POST accounts/action/?do=check_login_with_return_uuid HTTP/1.1 + Host: api.cloudsigma.com + Accept: application/json + + + Request body + + .. parsed-literal:: + + { + curl --location --request POST 'https://tbc.cloudsigma.com/api/2.0/accounts/action/?do=check_login_with_return_uuid' \ + --header 'Cookie: csrftoken=zIiunVyYStnrRXxB1CmatfKsosHuaI6gYJw1P88r18pFCZ3YklNR7uEqEcQQOdze; sessionid=esqi1j0bpe2cto9ca59hw1k1kw7m95xd' \ + --header 'Referer: https://tbc.cloudsigma.com/ui/5.0/passs' \ + --header 'Content-Type: application/json' \ + --data-raw '{"username": "email", "password":"passwd"}' + } + + + **Response**: + *Empty* + diff --git a/acls.rst b/acls.rst index 0117ac9..67b0a8f 100644 --- a/acls.rst +++ b/acls.rst @@ -8,17 +8,17 @@ to your private network (VLAN). Permissions can be granted on servers, drives, network resources, and firewall policies. All of these resources support ``LIST`` and ``EDIT`` permissions, which respectively allow the grantee to see the resources when listing them and to edit resources. When a user is granted a ``LIST`` permission, this resource appears in the grantee's resource list. For -example granting ``LIST`` on a drive will make it appear in the list with grantees drives, when they make a GET request +example, granting ``LIST`` on a drive will make it appear in the list with grantees' drives, when they make a GET request to */drives*. Own resources can be differentiated from granted resources, by the ``owner`` field. Some resources have additional permissions. Drives have ``ATTACH`` permission which allows another user to use the drive on their server. IPs, VLANs, and Firewall policies have ``ATTACH`` which will allow another user to assign these -network resource to NICs on their server. Servers have ``START`` and ``STOP``, ``OPEN_VNC`` permissions which allow +network resources to NICs on their server. Servers have ``START`` and ``STOP``, ``OPEN_VNC`` permissions which allow another user to start or stop the server, or to open the server console through VNC. Note that ACLs may contain -permissions that are not directly applicable on some resources, for example it is possible to to have ``STOP`` +permissions that are not directly applicable to some resources, for example, it is possible to have ``STOP`` permission in an ACL on tag which refers only to drives. Drives and servers support ``CLONE`` permission, which allows -cloning them to the grantee account. Note that in order to clone someone else's server, you need ``CLONE`` permission -on both the owner's server, and on the attached non-cdrom drives. For cdrom drives, the user will need a ``ATTACH`` +cloning them to the grantee account. Note that to clone someone else's server, you need ``CLONE`` permission +on both the owner's server and on the attached non-cdrom drives. For cdrom drives, the user will need an ``ATTACH`` permission. The table below summarizes the permissions applicable to each resource: ========================= =========================================================== @@ -30,11 +30,11 @@ IP, VLAN, Firewall Policy ``LIST`` ``EDIT`` ``ATTACH`` ========================= =========================================================== -ACLs are granted on tags, and apply for all the tagged resources. One ACL can be attached to multiple tags, and will +ACLs are granted on tags and apply to all the tagged resources. One ACL can be attached to multiple tags, and will apply to the set of all resources tagged by these tags. It is also possible to have multiple ACLs on a tag, in which case the permissions on the tagged resources are the combination of all ACLs rules. -Each ACL can have one or more grantee users. Each ACL object has a list of rules, which specify what permission are +Each ACL can have one or more grantee users. Each ACL object has a list of rules, that specify what permissions are given by the ACL. Permissions are not transferable to third parties, i.e. if you grant permission to someone, they can't grant it to a @@ -125,7 +125,7 @@ Creates a new ACL. .. literalinclude:: dumps/response_acls_create :language: javascript -It is possible to define the grantees, tags and rules at creation time. Just specify their UUIDs the `grantees` list: +It is possible to define the grantees, tags, and rules at creation time. Just specify their UUIDs in the `grantees` list: **Example request**: @@ -183,7 +183,7 @@ Deletes a single ACL. Full Example of Sharing a Resource ---------------------------------- -First let's create a tag which will be shared with another user: +First, let's create a tag that will be shared with another user: **Request**: @@ -230,7 +230,7 @@ If we get the drive definition we will see the grantee in the ``grantees`` attri .. literalinclude:: dumps/response_own_drive_grantees :language: javascript -Since there is an ACL on the the tag all resources created with this tag will be shared. For example if we create a +Since there is an ACL on the tag all resources created with this tag will be shared. For example, if we create a server with the same tag, we see that it also shows ``grantees``: .. literalinclude:: dumps/request_server_with_acl @@ -239,15 +239,22 @@ server with the same tag, we see that it also shows ``grantees``: .. literalinclude:: dumps/response_server_with_acl :language: javascript +*The units for CPU, MEM, and SSD/DSSD are:* + +CPU: GHz + +MEM: Bytes + +SSD / DSSD: Bytes Permissions on Resources Attached to a Server --------------------------------------------- When updating another user's server, the attached resources, such as drives, IPs, VLANs, or firewall policies, should -be available for the server owner. This means that either the attached resource should be owned by the server owner, -or the owner should be given ``ATTACH`` permission on the attached resource. For example if user A shares a -server with ``EDIT`` permission to user B, and user B wants to attach their drive on the server, user B will have to -grant ``ATTACH`` permission on the drive, so that the owner of the server is able to start it. Trying to attach a +be available for the server owner. This means that either the attached resource should be owned by the server owner +or the owner should be given ``ATTACH`` permission on the attached resource. For example, if user A shares a +server with ``EDIT`` permission to user B, and user B wants to attach their drive to the server, user B will have to +grant ``ATTACH`` permission on the drive so that the owner of the server can start it. Trying to attach a drive, on which there is no permission for the owner of the server will result in an error. Recognizing Shared Resources and What Permissions Are Given on Them @@ -256,10 +263,10 @@ Recognizing Shared Resources and What Permissions Are Given on Them Finding out which resources were shared with you ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Resources shared with you appear in the resource list along with your own resources. In order to differentiate between +Resources shared with you appear in the resource list along with your resources. To differentiate between owner, and shared with you resources you have to look at the ``owner`` field. If the user is the same as you, the resource is yours. Non-owned resource have their respective owner uuid in the ``owner`` field. The examples in the -next two subsections show the same drive from the view point of permission grantor and grantee. Notice how ``owner`` +next two subsections show the same drive from the viewpoint of permission grantor and grantee. Notice how ``owner`` is the same. Finding what permissions are granted to you on a resource @@ -270,7 +277,7 @@ resource, it hard to do so in a simple script. That is why each resource has ``p effective permissions the current user has on the resource. The ``permissions`` field is empty if the owner is the same as the current user. -For example if you get the definition of a drive shared by another user with you: +For example, if you get the definition of a drive shared by another user with you: .. literalinclude:: dumps/request_foreign_drive_permissions :language: http @@ -284,17 +291,17 @@ The definition includes non-empty ``permissions`` attribute: :keys: permissions :hide_header: true -In the next subsection there is an example of the same drive but from the view point of the drive owner. +In the next subsection, there is an example of the same drive but from the viewpoint of the drive owner. Finding what permissions you have granted on a resource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -As is the case with finding out what permissions are given to the current user, it also hard to find out, to find out +As is the case with finding out what permissions are given to the current user, it is also hard to find out, to find out what is granted to other users, as users may be granted different permissions through several ACLs referring to different tags. Therefore each resource has read-only field ``grantees``. Each object of the ``grantees`` list contains -a references to the grantee user, and a list of the permissions granted to them. +references to the grantee user and a list of the permissions granted to them. -For example if you get the definition of your drive shared with another user: +For example, if you get the definition of your drive shared with another user: .. literalinclude:: dumps/request_own_drive_grantees :language: http @@ -308,7 +315,7 @@ The definition includes non-empty ``grantees`` attribute: :keys: grantees :hide_header: true -In the previous subsection there is an example of the same drive definition but from the view point of the permissions +In the previous subsection, there is an example of the same drive definition but from the viewpoint of the permissions grantee. Schema diff --git a/async.rst b/async.rst index 9e45e91..d8b593f 100644 --- a/async.rst +++ b/async.rst @@ -5,7 +5,7 @@ Asynchronous server Authentication -------------- -In order to use the asynchronous server, you must first authenticate through the API. This will give you a cookie that is valid for 2 minutes and that has to be used when connecting to the server. +To use the asynchronous server, you must first authenticate through the API. This will give you a cookie that is valid for 2 minutes and that has to be used when connecting to the server. :statuscode 200: no error @@ -51,4 +51,4 @@ The frame is a JSON object that contains the following fields: * resource_type: A text field that describes the type of resource covered by the notification. * resource_uri: The URI of the resource that has changed. -The JSON object might contain a 'object' key, that will contain the full blown resource referenced by the notification, JSON encoded. +The JSON object might contain an 'object' key, that will contain the full-blown resource referenced by the notification, JSON encoded. diff --git a/audit_logs.rst b/audit_logs.rst index af77c82..624082d 100644 --- a/audit_logs.rst +++ b/audit_logs.rst @@ -2,13 +2,13 @@ Audit logs ========== .. note:: - + See :rfc:`2616#section-9` for more details on HTTP methods semantics General ------- Audit logs are used to track changes made on your resources, either by you or by other parties, like CloudSigma -staff or people that have permission to access you resources. +staff or people who have permission to access your resources. Querying is done as follows: @@ -27,11 +27,11 @@ Actions ------- Actions give information about the operation that created the log. They go in a few categories. -* General actions - related to most resource types like servers, drives and snapshots: +* General actions - related to most resource types like servers, drives, and snapshots: - **create:** During resource creation - **update:** During resource update - - **delete:** During resource deletion - - **change_owner:** The ownership of the resource has changed. Currently only CloudSigma staff can + - **delete:** During resource depletion + - **change_owner:** The ownership of the resource has changed. Currently, only CloudSigma staff can change ownership of a resource. - **clone_src:** Resource is used as a cloning source - **clone_dst:** Resource is a cloning destination - the newly cloned drive. @@ -43,16 +43,16 @@ Actions give information about the operation that created the log. They go in a Only staff members can convert drives. - **init_upload:** Drive upload is initialized. -* Server specific actions - these only relate to servers: +* Server-specific actions - these only relate to servers: - **start_send:** An attempt to start a server - **boot:** The result of a start operation. - **stop_send:** An attempt to stop a server. - **stop:** The result of a stop operation - **open_vnc:** Open VNC channel to a server - **close_vnc:** Close VNC channel to a server - - **shutdown_ACPI_send:** An ACPI shutdown request is send to the server. - - **heal:** Server got healed, because its recorded state did not match the physical infrastructure. - For example, a server is marked as unavailable, but it is actually running fine. + - **shutdown_ACPI_send:** An ACPI shutdown request is sent to the server. + - **heal:** The Server got healed because its recorded state did not match the physical infrastructure. + For example, a server is marked as unavailable, but it is running fine. Errors ------ @@ -60,14 +60,14 @@ If the field **success** is marked as **False**, that means that an error occurr The error details are saved in the following fields: * **error_type** - States the type of the error - * **error_point** - Points to cause of the error and is mainly used for validation errors + * **error_point** - Points to the cause of the error and is mainly used for validation errors * **error_message** - Human readable message associated with the error Example ------- The following example will show all the logged information during a server's lifecycle. -First we create a server: +First, we create a server: .. literalinclude:: dumps/request_create_server_for_audit :language: http @@ -75,6 +75,13 @@ First we create a server: .. literalinclude:: dumps/response_create_server_for_audit :language: javascript +*The units for CPU, MEM, and SSD/DSSD are:* + +CPU: GHz + +MEM: Bytes + +SSD / DSSD: Bytes Upon completion you will see the following log at the top of the audit log list: @@ -85,8 +92,8 @@ Upon completion you will see the following log at the top of the audit log list: :language: javascript - **action** states that we wanted to create a server -- **details** state the parameters of the create call -- **actor** states the user which executed the operation +- **Details** state the parameters of the create call +- **actor** states the user who executed the operation - **success** is *true*, so the operation completed successfully. - **uuid** matches the server's uuid @@ -107,7 +114,7 @@ We check the logs again. We see that the action is **start_send** and **success* If the server is fully booted and operational, its status will change to **running**. -If it failed to boot for some reason, the **error_type**, **error_point** and **error_message** fields will +If it failed to boot for some reason, the **error_type**, **error_point**, and **error_message** fields will explain why that happened. In this particular case, we had a successful start, so the audit log looks like this: .. literalinclude:: dumps/response_start_server_audit_log_complete @@ -116,8 +123,8 @@ explain why that happened. In this particular case, we had a successful start, s The pattern is the same when stopping a server: * an audit log with action **stop_send** is saved, representing the status of the request to stop a server. - * If that succeeded i.e. the request to stop a server is successfully send, you can expect a log with action - **stop**, representing the status of the stop operation i.e. the server actually stopped. + * If that succeeded i.e. the request to stop a server is successfully sent, you can expect a log with action + **stop**, representing the status of the stop operation i.e. the server stopped. .. note:: diff --git a/availability_groups.rst b/availability_groups.rst index 09ce3b8..5998085 100644 --- a/availability_groups.rst +++ b/availability_groups.rst @@ -1,16 +1,16 @@ Availability Grouping and Avoid =============================== -Resources requested by user are usually allocated to maximize performance. However this can lead to a situation, where -user's servers or drives share the same compute or storage host. This may be undesirable if the user attempts to build, -a redundant setup, as in the unlikely event of hardware failure, servers sharing the same faild compute host will crash +Resources requested by the user are usually allocated to maximize performance. However, this can lead to a situation, where +the user's servers or drives share the same compute or storage host. This may be undesirable if the user attempts to build, +a redundant setup, as in the unlikely event of hardware failure, servers sharing the same field compute host will crash at the same time, and drives sharing the same failed storage host will become unavailable at the same time. -To improve the robustness of redundant setups, it is possible to hint the system, which resources are preferred to be +To improve the robustness of redundant setups, it is possible to hint in the system, which resources are preferred to be on separated physical hosts. This is achieved through the *Avoid* functionality for starting servers, and for creating/cloning drives. -To check the grouping of running servers on compute hosts, or the grouping of drives on storage hosts, one can use the +To check the grouping of running servers on compute hosts or the grouping of drives on storage hosts, one can use the corresponding ``availaility_groups`` API calls. @@ -29,15 +29,15 @@ Server availability groups :statuscode 200: no error -Returns which running servers share same physical computes host. Returns an array containing arrays. -Each inner array holds the UUIDs of servers which reside on same physical host. Non-running servers are not in the +Returns that running servers share the same physical computer host. Returns an array containing arrays. +Each inner array holds the UUIDs of servers that reside on the same physical host. Non-running servers are not in the array as they are on any host. .. http:get:: /servers/availability_groups/{uuid}/ :statuscode 200: no error -Queries which other servers share same physical host with the given one. Returns an array holding server UUIDs. The +Queries in which other servers share the same physical host as the given one. Returns an array holding server UUIDs. The response includes also the UUID of the queried server. If the queried server is not running, the array will be empty. .. _drive-availability: @@ -49,14 +49,14 @@ Drives availability groups :statuscode 200: no error -Returns which drives share same physical storage host. Returns an array containing arrays. -Each inner array holds the UUIDs of drives which reside on same physical host. +Returns that drive share the same physical storage host. Returns an array containing arrays. +Each inner array holds the UUIDs of drives that reside on the same physical host. .. http:get:: /drives/availability_groups/{uuid}/ :statuscode 200: no error -Queries which other drives share same physical storage host with the given one. Returns an array holding drives UUIDs. +Queries with other drives share the same physical storage host as the given one. Returns an array holding drives UUIDs. The response includes also the UUID of the queried drive. Examples @@ -107,17 +107,17 @@ Examples General Notes on Avoid Functionality ------------------------------------- -Avoid functionality is **best effort**. This means that requests containing avoid will succeed even if the avoid can not +Avoiding functionality is **best effort**. This means that requests containing avoid will succeed even if the avoid can not be satisfied and the requested resource ends in the same availability group as an avoid resource. The **order of the avoid argument UUIDs also specifies the order of preference to avoid**. This means that avoid requests -are satisfied from left to right, and if it is not possible to satisfy the full avoid list, only part of the aoid -list will be satisfied and it will consist of UUIDs from the left part of the list. For example if there are only three -hosts which can satisfy a request, and there are three avoid resources on these hosts, the newly request resource, will +are satisfied from left to right, and if it is not possible to satisfy the full avoid list, only part of the avoid +list will be satisfied and it will consist of UUIDs from the left part of the list. For example, if there are only three +hosts that can satisfy a request, and there are three avoid resources on these hosts, the newly requested resource, will end up on the same host as the avoid resource which appears last in the list. -Avoid functionality may incur **performance penalty**. Specifying avoid for drives cloning and servers cloning, as it -also clones attached drives, usually slows down significantly the clone operation, as the drive data has to be moved +Avoiding functionality may incur **performance penalty**. Specifying avoid for drives cloning and servers cloning, as it +also clones attached drives, usually slow down significantly the clone operation, as the drive data has to be moved over the network between storage hosts. .. _servers-avoid: @@ -129,7 +129,7 @@ Starting Servers in a Different Availability Group (Start Avoid) :statuscode 202: Action accepted, execution is proceeding. -Starts a server with specific UUID attempting to run it on a different physical infrastructure host from the other +Starts a server with a specific UUID attempting to run it on a different physical infrastructure host from the other servers specified in the `avoid` argument which is a single server UUID or a comma-separated list of server UUIDs. This way the server specified by `uuid` may be run in a distinct availability group from the other listed servers. @@ -159,12 +159,12 @@ Creating Drives in a Different Availability Group (Create/Clone Avoid) :statuscode 202: Action accepted, execution is proceeding. -It is possible to hint the system which drives are preferred to be on separate physical storage hosts. Avoid can be +It is possible to hint at the system in which drives are preferred to be on separate physical storage hosts. Avoid can be specified on all drive creation operations: create, clone drive, and clone server. The value of the ``avoid`` GET parameter may contain a single or a comma-separated list of drive or server UUIDs. If a server uuid is in the ``avoid`` parameter, this is interpreted as avoiding all the drives attached to the server. -Note that it might not always be create a drive in a different availability group, therefore the order of the +Note that it might not always create a drive in a different availability group, therefore the order of the `avoid` list also signifies the priority of avoiding other drives. Since it is not possible to specify the order of drives attached to a server, if a drive from a server needs to be avoided with high priority, it may be specified in addition to the server UUID. For example ``avoid={important_to_avoid_drive_uuid},{server_uuid_to_which_drive_is_attached}``. @@ -172,8 +172,8 @@ addition to the server UUID. For example ``avoid={important_to_avoid_drive_uuid} Recipe for Creating a Redundant Server Backed by Separate Infrastructure ------------------------------------------------------------------------- -The best way to create a clone of server that does not share hardware with the original is to clone the origin server -with avoiding itself, and to start the clone with avoiding the origing: +The best way to create a clone of a server that does not share hardware with the original is to clone the origin server +with avoiding itself, and to start the clone by avoiding the origin: .. sourcecode:: http diff --git a/backfilling.rst b/backfilling.rst index e135420..5ccb094 100644 --- a/backfilling.rst +++ b/backfilling.rst @@ -1,24 +1,24 @@ Backfilling =========== -Backfilling is a feature which allows you to start servers without guarantee how long they will be running. +Backfilling is a feature that allows you to start servers without guaranteeing how long they will be running. The servers defined as "backfilling servers" behave the same as normal servers, except for the following: * they occupy the free resources currently available in the cloud * they can be stopped at an arbitrary moment if demand for resources appears by normal servers * instead of shutdown they can be dynamically downsized in terms of CPU and memory if demand for - resources appears by normal servers + resources appear by normal servers * they are billed at a separate discount burst rate. No CPU and MEM subscriptions are allowed for the resources consumed by the backfilling servers. -In order to use backfilling servers your account must be granted a special permission. +To use backfilling servers your account must be granted special permission. Checking For Available Backfilling Resources -------------------------------------------- -If your account is granted permission to run backfilling server the capabilities API (see :doc:`capabilities`) call +If your account is granted permission to run a backfilling server the capabilities API (see :doc:`capabilities`) call will show additional information regarding backfilling capacity. The `free_resources` object contains three objects, -which show what are the maximum resources that can be use by a single backfilling server. +which show what are the maximum resources that can be used by a single backfilling server. Here is an example capabilities call from a backfilling user: @@ -43,7 +43,7 @@ The following list summarises the information given by each `free_resources` obj This object shows what is the maximum memory available for a single server, and what is the amount of CPU associated with it. If you need as much RAM as possible in your server, use this object. -In general the maximum memory and maximum CPU will not be available on a single physical host, so you should use either +In general, the maximum memory and maximum CPU will not be available on a single physical host, so you should use either `most_free_by_cpu` or `most_free_by_memory` depending on whether your workload needs CPU or memory. Listing @@ -101,7 +101,7 @@ Creating .. http:post:: /bservers/ -Creates a new virtual server or multiple servers. The minimial amount of information you need to set is as follows +Creates a new virtual server or multiple servers. The minimal amount of information you need to set is as follows :statuscode 201: object created @@ -121,7 +121,7 @@ Editing .. http:put:: /bservers/{uuid}/ -Edits a server. Used also for attaching NIC's and drives to servers. Note that if a server is running, only +Edits a server. Used also for attaching NICs and drives to servers. Note that if a server is running, only ``name``, ``meta``, and ``tags`` fields can be changed, and all other changes to the definition of a running server will be ignored. @@ -192,7 +192,7 @@ Start .. http:post:: /bservers/{uuid}/action/?do=start -Starts a server with specific UUID. +Starts a server with a specific UUID. :statuscode 202: Action accepted, execution is proceeding. @@ -215,7 +215,7 @@ Stop .. http:post:: /bservers/{uuid}/action/?do=stop -Stops a server with specific UUID. This action is equivalent to pulling the power cord of a physical server. For +Stops a server with a specific UUID. This action is equivalent to pulling the power cord of a physical server. For more graceful shutdown see :ref:`acpi_shutdown`. :statuscode 202: Action accepted, execution is proceeding. @@ -234,10 +234,10 @@ more graceful shutdown see :ref:`acpi_shutdown`. Compatibility with normal servers API and operations ---------------------------------------------------- -For compatibility and interoperability reasons all the operations supported for normal servers and supported for the -backfilling ones as well. See the :doc:`servers` section for detailed documentation. In this regard backfilling servers -are a subset of all servers in the account. The API described in :doc:`servers` applies for all servers -(including the backfilling ones), but the API decribed in this section applies for backfilling servers only. +For compatibility and interoperability reasons, all the operations are supported for normal servers and supported for the +backfilling ones as well. See the :doc:`servers` section for detailed documentation. In this regard, backfilling servers +are a subset of all servers in the account. The API described in :doc:`servers` applies to all servers +(including the backfilling ones), but the API described in this section applies to backfilling servers only. Allowed HTTP methods -------------------- diff --git a/backup_schedulers.rst b/backup_schedulers.rst index fdbc093..79d05bf 100644 --- a/backup_schedulers.rst +++ b/backup_schedulers.rst @@ -13,6 +13,9 @@ There are three different types of schedulers: * migration * backup +.. note:: + + This document is related to backup schedulers only. Allowed HTTP methods -------------------- @@ -47,13 +50,13 @@ Listing **Example request - default list**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backups_list + .. literalinclude:: dumps/request_backup_scheduler_backups_list :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backups_list + .. literalinclude:: dumps/response_backup_scheduler_backups_list :language: javascript Listing schedulers by type @@ -69,13 +72,13 @@ Listing schedulers by type **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backups_list_type + .. literalinclude:: dumps/request_backup_scheduler_backups_list_type :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backups_list_type + .. literalinclude:: dumps/response_backup_scheduler_backups_list_type :language: javascript @@ -86,19 +89,19 @@ Detailed listing Gets the detailed list of backup schedulers with additional information to which the authenticated user has access. - + :statuscode 200: no error **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backups_list_detail_type + .. literalinclude:: dumps/request_backup_scheduler_backups_list_detail_type :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backups_list_detail_type + .. literalinclude:: dumps/response_backup_scheduler_backups_list_detail_type :language: javascript Detailed listing schedulers by type @@ -114,13 +117,13 @@ Detailed listing schedulers by type **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backups_list_detail_type + .. literalinclude:: dumps/request_backup_scheduler_backups_list_detail_type :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backups_list_detail_type + .. literalinclude:: dumps/response_backup_scheduler_backups_list_detail_type :language: javascript List single backup scheduler @@ -136,13 +139,13 @@ List single backup scheduler **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backup_get + .. literalinclude:: dumps/request_backup_scheduler_backup_get :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backup_get + .. literalinclude:: dumps/response_backup_scheduler_backup_get :language: javascript Creating @@ -156,12 +159,12 @@ Creating **Example request**: - .. includejson:: dumps/backupschedulers/request_backup_scheduler_create + .. includejson:: dumps/request_backup_scheduler_create :accessor: objects.0 **Example response** - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_create + .. literalinclude:: dumps/response_backup_scheduler_create :language: javascript Editing @@ -175,12 +178,12 @@ Editing **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_backup_update + .. literalinclude:: dumps/request_backup_scheduler_backup_update :language: http **Example response**: - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_backup_update + .. literalinclude:: dumps/response_backup_scheduler_backup_update :language: javascript Deleting @@ -197,13 +200,13 @@ Single backup scheduler **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_delete + .. literalinclude:: dumps/request_backup_scheduler_delete :language: http **Example response**: - - .. literalinclude:: dumps/backupschedulers/response_backup_scheduler_delete + + .. literalinclude:: dumps/response_backup_scheduler_delete :language: javascript Deletes multiple backup schedulers @@ -211,7 +214,7 @@ Deletes multiple backup schedulers .. http:delete:: /backupschedulers/ - Deletes multiple backup schedulers specified by their UUID's. + Deletes multiple backup schedulers specified by their UUIDs. :statuscode 204: No content, object deletion started. @@ -237,9 +240,9 @@ Deletes multiple backup schedulers **Example response**: - + .. sourcecode:: http - + HTTP/1.0 204 NO CONTENT Set scheduler to a drive @@ -253,7 +256,7 @@ Set scheduler to a drive **Example request**: - .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_set_drive + .. literalinclude:: dumps/request_backup_scheduler_set_drive :language: javascript **Example response** @@ -266,7 +269,7 @@ Allowed timezones The following list are the allowed timezone values for the fields orchestrator_timezone and user_timezone. - .. literalinclude:: dumps/backupschedulers/backup_scheduler_timezones + .. literalinclude:: dumps/backup_scheduler_timezones :language: javascript Examples of backup schedulers and retention policies @@ -285,7 +288,7 @@ days. .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_periodic_example_2 :language: javascript -Configure a weekly backup scheduler to create a remote snapshot every sunday +Configure a weekly backup scheduler to create a remote snapshot every Sunday at 23:00 hours and only keeps those that were taken in the past 4 weeks. .. literalinclude:: dumps/backupschedulers/request_backup_scheduler_periodic_example_3 @@ -303,4 +306,3 @@ Schema .. literalinclude:: dumps/backupschedulers/response_backupscheduler_schema :language: javascript - diff --git a/billing.rst b/billing.rst index c1fb6ce..5c4be41 100644 --- a/billing.rst +++ b/billing.rst @@ -91,7 +91,7 @@ Listing Burst levels ~~~~~~~~~~~~ - The current and future burst levels are provided in objects at the root of the response. The burst levels are calculated every 5 minutes based on the usage of the cloud and are applied 5 minutes later (when the next burst levels are calculated) +The current and future burst levels are provided in objects at the root of the response. The burst levels are calculated every 5 minutes based on the usage of the cloud and are applied 5 minutes later (when the next burst levels are calculated) .. includejson:: dumps/response_pricing_list :keys: current,next @@ -194,7 +194,6 @@ Schema :language: javascript - Discounts --------- @@ -239,54 +238,6 @@ Schema .. literalinclude:: dumps/response_discount_schema :language: javascript -.. _current-usage: - -Current usage -------------- - -Allowed HTTP methods -~~~~~~~~~~~~~~~~~~~~ - -+--------+---------------------+ -| Method | Description | -+========+=====================+ -| GET | get / list object/s | -+--------+---------------------+ - -.. note:: - - See :rfc:`2616#section-9` for more details on HTTP methods semantics - - -Listing -~~~~~~~ - -.. http:get:: /currentusage/ - - Get the current usage of the user. - - :statuscode 200: no error - - - **Example request**: - - .. literalinclude:: dumps/request_currentusage_list - :language: http - - - **Example response**: - - .. literalinclude:: dumps/response_currentusage_list - :language: javascript - - -Schema -~~~~~~ - - .. literalinclude:: dumps/response_currentusage_schema - :language: javascript - - .. _billing-license: Licenses list diff --git a/burst_usage.rst b/burst_usage.rst index 216f0b5..a5f4697 100644 --- a/burst_usage.rst +++ b/burst_usage.rst @@ -12,7 +12,7 @@ Allowed HTTP methods +--------+--------------------------------------------------+ .. note:: - + See :rfc:`2616#section-9` for more details on HTTP methods semantics @@ -26,7 +26,7 @@ Listing :statuscode 200: no error - + **Example request**: .. sourcecode:: http @@ -83,7 +83,7 @@ It's possible to specify period of burst usage using :ref:`filtering * Greater than: `?date__gt=2014-10-21` * Greater than or equal: `?date__gte=2014-10-21` - **Example for retreiving burst usage for the whole July 2014**: + **Example for retrieving burst usage for the whole of July 2014**: .. sourcecode:: http @@ -176,12 +176,12 @@ Listing Filtering --------- -It's possible to specify period of burst usage using :ref:`filtering ` by date: +It's possible to specify a period of burst usage using:ref:`filtering ` by date: * Lower than: `?date__lt=2014-10-21` * Greater than: `?date__gt=2014-10-21` - **Example for retreiving burst usage for the whole July 2014**: + **Example for retrieving burst usage for the whole of July 2014**: .. sourcecode:: http @@ -191,5 +191,5 @@ It's possible to specify period of burst usage using :ref:`filtering .. note:: - The date is actually a full time, which means that 2014-11-11 is actually 2014-11-11 00:00. This matters when trying - to filter because when using less than, it will not include the day, whereas it will be included for greater then. + The date is full time, which means that 2014-11-11 is 2014-11-11 00:00. This matters when trying + to filter because when using less than, it will not include the day, whereas it will be included for greater than. diff --git a/capabilities.rst b/capabilities.rst index fcaf4ac..060a472 100644 --- a/capabilities.rst +++ b/capabilities.rst @@ -11,24 +11,24 @@ Allowed HTTP methods +--------+--------------------------------------------------+ .. note:: - + See :rfc:`2616#section-9` for more details on HTTP methods semantics -The capabilities API call is used to gather all the basic, sensible limits of the API, to prevent applying static -limits inside the client application. +The Capabilities API is used to gather information about the basic, sensible limits of the API. It helps prevent applying static + limits inside the client application by providing dynamic information based on factors such as cloud usage, location, and other relevant parameters. -Bare in mind, that these capabilities are dynamic - they are based on the cloud usage, location, etc. For example -a location might not support **lssd**, but support **magnetic** disk option, or vise versa. If a feature is not supported or +Bear in mind, that these capabilities are dynamic - they are based on cloud usage, location, etc. For example, +a location might not support **lssd**, but support **magnetic** disk option, or vice versa. If a feature is not supported or is disabled, it will disappear from the result of this call. Most entries are obvious limits on the guest or drive properties. :hosts: A list of available host types and their limitations. :cpu_per_smp: - This gives a range of valid cpu values, per smp, for the given host type. For example, for AMD hosts, one CPU must be - between 1000 and 2500MHz: a guest 2000MHz cpu and 2 smp has 1000MHz per smp and is valid, but a guest with + This gives a range of valid CPU values, per SMP, for the given host type. For example, for AMD hosts, one CPU must be + between 1000 and 2500MHz: a guest 2000MHz CPU and 2 SMP has 1000MHz per SMP and is valid, but a guest with 8000MHz cpu and 2 smp has a 4000MHz per smp is not. .. _hypervisors: @@ -62,5 +62,53 @@ is disabled, it will disappear from the result of this call. Most entries are ob :language: javascript +This is a detailed explanation of the key parameters of the API response for listing capabilities endpoint: + +1. **Backfilling**: Indicates whether backfilling is enabled (true) or not (false). + +*Backfilling is a feature that allows you to start servers without guaranteeing how long they will run.* +For more information https://docs.cloudsigma.com/en/latest/backfilling.html + +2. **currencies**: Lists the supported currencies with their IDs and names. + +3. **id**: It is the unique identifier for the currency. In this case, "CHF" represents the Swiss Franc. + +4. **Name**: It is the common or display name for the currency. In this case, "CHF" represents the abbreviation or name used to refer to the Swiss Franc. + +So, this entry indicates that the system supports the Swiss Franc (CHF) as a currency, and "CHF" is the identifier or name used within the system for this currency. + +5. **default_inactive_period**: The default inactive period is defined as days. A value of 45 indicates the inactive period is 45 days. + +This value is used to find the users with the last login made 45 days ago(using the value in the previous paragraph) and mark them as INACTIVE users. + +6. **default_storage_type**: Indicates the default storage type (e.g., "dssd"). + +7. **drives**: Provides detailed information about available drive types and their limitations, including IOPS and size ranges. + +8. **EPC**: The EPC values are related to the Intel SGX enclaves. + +9. **epc_mem_ratio**: The epc_mem_ratio represents the ratio of memory needed to start a guest that supports SGX. + +10. **max_per_host**: Represents the maximum free Enclave Page Cache (EPC) available in the location. The value is in bytes. + +11. **GPUs**: Lists GPU models with their maximum CPU, memory, SMP, and other relevant configurations. + +12. **hosts**: Details limitations for different host types (e.g., AMD, Intel) concerning CPU, CPU per SMP, memory, and SMP. + +13. **Hypervisors**: Specifies which hypervisors (e.g., KVM) are available on particular host types (e.g., Intel, AMD). + +The "hypervisors" parameter informs users about the available hypervisors and the types of hosts (architectures) each hypervisor supports. In this specific case, the KVM hypervisor supports both "intel" and "amd" architectures. + +14. **inactive_period_range**: Defines the maximum and minimum values accepted for the Inactivation Timeout defined by the user, for further information please check https://tbc.cloudsigma.com/ui/5.0/security + +15. **remote_snapshots**:Contains information about remote snapshots, including the current count, the maximum allowed, and locations. +The difference between a snapshot and a remote snapshot is that the snapshot is stored in the same location as the source drive; the remote snapshot is stored in a different location. + +16. **servers**: Details about server properties, including CPU, memory, SMP, and start methods. + +17. **snapshots**: Specifies the current count, maximum allowed, and maximum per drive for snapshots. A "snapshot" refers to a point-in-time copy +of the state of a virtual machine or a storage drive. Snapshots are typically used for backup, recovery, or cloning purposes. +18. **vmware_drives**: Provides details about VMware drive storage capacity limits. +19. **vmware_servers**: Indicates VMware server compute capacity limits for CPU and memory. diff --git a/conf.py b/conf.py index 9d6aa07..27daef4 100644 --- a/conf.py +++ b/conf.py @@ -1,31 +1,7 @@ -# -*- coding: utf-8 -*- -# -# CloudSigma API ver. 2.0 documentation build configuration file, created by -# sphinx-quickstart on Tue Mar 13 11:16:34 2012. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. +# https://www.sphinx-doc.org/en/master/usage/configuration.html import sys, os -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. - EXAMPLE_SNIPPETS_DUMP_PATH = os.getenv('EXAMPLE_SNIPPETS_DUMP_PATH', '~/.turlo/dumps/') if os.path.exists(os.path.expanduser(EXAMPLE_SNIPPETS_DUMP_PATH)) and not os.path.exists(os.path.join(os.path.dirname(__file__), 'dumps')): @@ -34,216 +10,60 @@ extensions = ['sphinxcontrib.httpdomain', 'sphinx.ext.viewcode', 'sphinxcontrib.programoutput', 'include_json'] -# Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] -# The suffix of source filenames. source_suffix = '.rst' -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. master_doc = 'index' -# General information about the project. project = u'CloudSigma API' -copyright = u'2022, CloudSigma' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '2.0' -# The full version, including alpha/beta/rc tags. -release = os.getenv('CURRENT_HG_REV', 'unknown') -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None +copyright = u'2024, CloudSigma' -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' +version = '2.0' +release = 'v2' -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. exclude_patterns = ['_build'] -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - +html_theme = 'sphinx_rtd_theme' -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. html_last_updated_fmt = '%b %d, %Y' -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. html_show_sphinx = False -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. htmlhelp_basename = 'CloudSigmaAPIver20doc' +latex_elements = {} -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'CloudSigmaAPIver20.tex', u'CloudSigma API ver. 2.0 Documentation', u'CloudSigma', 'manual'), ] -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). man_pages = [ ('index', 'cloudsigmaapiver20', u'CloudSigma API ver. 2.0 Documentation', [u'CloudSigma'], 1) ] -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) texinfo_documents = [ ('index', 'CloudSigmaAPIver20', u'CloudSigma API ver. 2.0 Documentation', u'CloudSigma', 'CloudSigmaAPIver20', 'One line description of project.', 'Miscellaneous'), ] -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' +html_theme_options = { + 'display_version': True, + 'prev_next_buttons_location': 'bottom', + 'style_external_links': False, + 'vcs_pageview_mode': '', + 'style_nav_header_background': 'green', + 'collapse_navigation': True, + 'sticky_navigation': True, + 'navigation_depth': 4, + 'includehidden': True, + 'titles_only': False +} diff --git a/current_usage.rst b/current_usage.rst index 3ccb22f..49b104a 100644 --- a/current_usage.rst +++ b/current_usage.rst @@ -1,121 +1,44 @@ -============= -Current Usage +Current usage ============= Allowed HTTP methods --------------------- +~~~~~~~~~~~~~~~~~~~~ -+--------+--------------------------------------------------+ -| Method | Description | -+========+==================================================+ -| GET | get / list object/s | -+--------+--------------------------------------------------+ ++--------+---------------------+ +| Method | Description | ++========+=====================+ +| GET | get / list object/s | ++--------+---------------------+ .. note:: - + See :rfc:`2616#section-9` for more details on HTTP methods semantics Listing -------- +~~~~~~~ .. http:get:: /currentusage/ - Gets the current usage of the authenticated user has access. + Get the current usage of the user. - :param context: another account whose drives should be listed :statuscode 200: no error - - **Example request**: - .. sourcecode:: http + **Example request**: - GET /2.0/currentusage/ HTTP/1.1 - Host: api.cloudsigma.com - Accept: application/json - Authorization: Basic dGVzdHVzZXJAY2xvdWRzaWdtYS5jb206dmJudmJu + .. literalinclude:: dumps/request_currentusage_list + :language: http **Example response**: - .. sourcecode:: http - - HTTP/1.0 200 OK - Content-Type: application/json; charset=utf-8 - - { - "balance": { - "balance": "9899.16666666666666666667", - "currency": "CHF" - }, - "usage": { - "cpu": { - "burst": 0, - "subscribed": 0, - "using": 0 - }, - "dssd": { - "burst": 0, - "subscribed": 0, - "using": 0 - }, - "ip": { - "burst": 0, - "subscribed": 0, - "using": 0 - }, - "mem": { - "burst": 0, - "subscribed": 0, - "using": 0 - }, - "ssd": { - "burst": 0, - "subscribed": 0, - "using": 0 - }, - "vlan": { - "burst": 0, - "subscribed": 0, - "using": 0 - } - } - } - -Request schema -~~~~~~~~~~~~~~ - - None. - -Response schema -~~~~~~~~~~~~~~~ - - .. parsed-literal:: - - { - "allowed_detail_http_methods": [ - "get" - ], - "allowed_list_http_methods": [ - "get" - ], - "default_format": "application/json", - "default_limit": 20, - "fields": { - "balance": { - "default": "No default provided.", - "help_text": "A dictionary of data. Ex: {'price': 26.73, 'name': 'Daniel'}", - "readonly": false, - "required": true, - "type": "dict" - }, - "usage": { - "default": "No default provided.", - "help_text": "A dictionary of data. Ex: {'price': 26.73, 'name': 'Daniel'}", - "readonly": false, - "required": true, - "type": "dict" - } - } - } + .. literalinclude:: dumps/response_currentusage_list + :language: javascript + + +Schema +~~~~~~ + + .. literalinclude:: dumps/response_currentusage_schema + :language: javascript \ No newline at end of file diff --git a/drives.rst b/drives.rst index 5bbe86d..1ed16f9 100644 --- a/drives.rst +++ b/drives.rst @@ -103,11 +103,26 @@ Creating **Example request**: - Create a drive + Create a drive: .. includejson:: dumps/request_drive_create_bulk :accessor: objects.0 + You can also pass the **storage type**: + + .. includejson:: dumps/request_drive_storage_type + + .. includejson:: dumps/request_drive_storage_type + :accessor: objects.0 + + **Example response** + + .. literalinclude:: dumps/response_drive_storage_type + :language: javascript + + Please note that in some cases when NVMe storage is not provided in the locations you might get the following error: + *We currently cannot provide enough resources to create a nvme drive* + or create multiple drives .. includejson:: dumps/request_drive_create_bulk @@ -207,7 +222,7 @@ Multiple drives .. http:delete:: /drives/ - Deletes multiple mounted or unmounted drives specified by their UUID's. + Deletes multiple mounted or unmounted drives specified by their UUIDs. :statuscode 204: No content, object deletion started. @@ -330,6 +345,14 @@ Currently the following storage types are available: .. versionadded:: Neon +``nvme`` + The UI name for nvme is "NVMe". NVMe (nonvolatile memory express) is a new storage access and transport protocol + for flash and next-generation solid-state drives (SSDs) that delivers the highest throughput and fastest response times + yet for all types of enterprise workloads. + + .. versionadded:: Chlorine + + Creating ~~~~~~~~ diff --git a/dumps/locations.csv b/dumps/locations.csv index 62544b6..8bcfb81 100644 --- a/dumps/locations.csv +++ b/dumps/locations.csv @@ -1,15 +1,17 @@ -Location,Location Code,API Endpoint -"Philippines, Clark",CRK,https://crk.cloudsigma.com/api/2.0/ -"Ireland, Dublin",DUB,https://ec.servecentric.com/api/2.0/ -"Germany, Frankfurt",FRA,https://fra.cloudsigma.com/api/2.0/ -"Switzerland, Geneva",GVA,https://gva.cloudsigma.com/api/2.0/ -"United States, Honolulu",HNL,https://hnl.cloudsigma.com/api/2.0/ -"UK, London",LON, https://lon.cloudsigma.com/api/2.0/ -"Philippines, Manila",MNL,https://mnl.cloudsigma.com/api/2.0/ -"Philippines, Manila-2",MNL2,https://mnl2.cloudsigma.com/api/2.0/ -"Australia, Perth",PER,https://per.cloudsigma.com/api/2.0/ -"Saudi Arabia, Riyadh",RUH,https://ruh.cloudsigma.com/api/2.0/ -"United States, San Jose",SJC,https://sjc.alpha3cloud.com/api/2.0/ -"Japan, Tokyo",TYO,https://tyo.cloudsigma.com/api/2.0/ -"United States, Washington DC",WDC,https://wdc.alpha3cloud.com/api/2.0/ -"Switzerland, Zurich",ZRH,https://zrh.cloudsigma.com/api/2.0/ +Location,Location Code,API Endpoint +"Philippines, Clark",CRK,https://crk.cloudsigma.com/api/2.0/ +"Ireland, Dublin",DUB,https://ec.servecentric.com/api/2.0/ +"Germany, Frankfurt",FRA,https://fra.cloudsigma.com/api/2.0/ +"Switzerland, Geneva",GVA,https://gva.cloudsigma.com/api/2.0/ +"United States, Honolulu",HNL,https://hnl.cloudsigma.com/api/2.0/ +"UK, London",LON, https://lon.cloudsigma.com/api/2.0/ +"Philippines, Manila-2",MNL2,https://mnl2.cloudsigma.com/api/2.0/ +"Australia, Perth",PER,https://per.cloudsigma.com/api/2.0/ +"Saudi Arabia, Riyadh",RUH,https://ruh.cloudsigma.com/api/2.0/ +"United States, San Jose",SJC,https://sjc.alpha3cloud.com/api/2.0/ +"Japan, Tokyo",TYO,https://tyo.cloudsigma.com/api/2.0/ +"United States, Washington DC",WDC,https://wdc.alpha3cloud.com/api/2.0/ +"Switzerland, Zurich",ZRH,https://zrh.cloudsigma.com/api/2.0/ +"UK, Cardiff",CWL,https://cwl.cloudsigma.com/api/2.0/ +"Philippines, Manila",MNL,https://mnl.cloudsigma.com/api/2.0/ +"Germany, Dusseldorf",DUS,https://dus.cloudsigma.com/api/2.0/ diff --git a/dumps/request_autogen_keypair_create b/dumps/request_autogen_keypair_create index 50bb676..2674f34 100644 --- a/dumps/request_autogen_keypair_create +++ b/dumps/request_autogen_keypair_create @@ -5,7 +5,8 @@ Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZ { "objects": [ { - "name": "test_name" + "name": "test_name", + "algorithm_type": "rsa" # or "ed25519" } ] } diff --git a/dumps/request_backup_scheduler_backup_get b/dumps/request_backup_scheduler_backup_get new file mode 100644 index 0000000..4b4a40a --- /dev/null +++ b/dumps/request_backup_scheduler_backup_get @@ -0,0 +1,2 @@ +GET /api/2.0/backupschedulers/f60f5634-201e-499c-a266-dec38e6416bd +Content-Type: application/json diff --git a/dumps/request_backup_scheduler_backup_update b/dumps/request_backup_scheduler_backup_update new file mode 100644 index 0000000..1a064d8 --- /dev/null +++ b/dumps/request_backup_scheduler_backup_update @@ -0,0 +1,2 @@ +GET /api/2.0/backupschedulers/{{dr_uuid}}/ +Content-Type: application/json diff --git a/dumps/request_backup_scheduler_backups_list b/dumps/request_backup_scheduler_backups_list new file mode 100644 index 0000000..76c5e11 --- /dev/null +++ b/dumps/request_backup_scheduler_backups_list @@ -0,0 +1,2 @@ +GET /api/2.0/backupschedulers/?limit=5 HTTP/1.1 +Content-Type: application/json diff --git a/dumps/request_backup_scheduler_backups_list_detail_type b/dumps/request_backup_scheduler_backups_list_detail_type new file mode 100644 index 0000000..9d3405c --- /dev/null +++ b/dumps/request_backup_scheduler_backups_list_detail_type @@ -0,0 +1,2 @@ +GET /api/2.0/backupschedulers/detail/?type=dr +Content-Type: application/json diff --git a/dumps/request_backup_scheduler_backups_list_type b/dumps/request_backup_scheduler_backups_list_type new file mode 100644 index 0000000..f72ff61 --- /dev/null +++ b/dumps/request_backup_scheduler_backups_list_type @@ -0,0 +1,3 @@ +GET /api/2.0/backupschedulers/?type=dr/?limit=5 HTTP/1.1 +Content-Type: application/json + diff --git a/dumps/request_backup_scheduler_create b/dumps/request_backup_scheduler_create new file mode 100644 index 0000000..7afe433 --- /dev/null +++ b/dumps/request_backup_scheduler_create @@ -0,0 +1,2 @@ +GET /api/2.0/backupschedulers/?type=dr/ +Content-Type: application/json diff --git a/dumps/request_backup_scheduler_delete b/dumps/request_backup_scheduler_delete new file mode 100644 index 0000000..6179ef2 --- /dev/null +++ b/dumps/request_backup_scheduler_delete @@ -0,0 +1,3 @@ +DELETE /api/2.0/backupschedulers/b4fa47cf-f929-4dde-b77a-ea1d326862bd/ HTTP/1.1 +Content-Type: application/json + diff --git a/dumps/request_backup_scheduler_set_drive b/dumps/request_backup_scheduler_set_drive new file mode 100644 index 0000000..206f023 --- /dev/null +++ b/dumps/request_backup_scheduler_set_drive @@ -0,0 +1,2 @@ +POST /api/2.0/drives/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/action/?do=set_scheduler HTTP/1.1 +Content-Type: application/json \ No newline at end of file diff --git a/dumps/request_drive_storage_type b/dumps/request_drive_storage_type new file mode 100644 index 0000000..0692706 --- /dev/null +++ b/dumps/request_drive_storage_type @@ -0,0 +1,13 @@ +POST /api/2.0/drives/ HTTP/1.1 +Content-Type: application/json +Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop + +{ + "objects": [ + { + "media": "disk", + "name": "test_nvme_drive", + "size": 1073741824, + "storage_type": "nvme" + } +} diff --git a/dumps/request_usage_list b/dumps/request_usage_list new file mode 100644 index 0000000..642e805 --- /dev/null +++ b/dumps/request_usage_list @@ -0,0 +1 @@ +GET /api/2.0/usage?poll_time_gt=2024-04-01&poll_time_lt=2024-04-02&limit=1500 diff --git a/dumps/request_vlan_get b/dumps/request_vlan_get index a23b5ee..eb0afd7 100644 --- a/dumps/request_vlan_get +++ b/dumps/request_vlan_get @@ -1,5 +1,3 @@ GET /api/2.0/vlans/96537817-f4b6-496b-a861-e74192d3ccb0/ HTTP/1.1 Content-Type: application/json Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop - - diff --git a/dumps/request_vlan_list b/dumps/request_vlan_list index c92d54f..22a87ac 100644 --- a/dumps/request_vlan_list +++ b/dumps/request_vlan_list @@ -1,5 +1,3 @@ GET /api/2.0/vlans/?limit=0 HTTP/1.1 Content-Type: application/json Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop - - diff --git a/dumps/request_vlan_list_detail b/dumps/request_vlan_list_detail index b19dddc..124f8e5 100644 --- a/dumps/request_vlan_list_detail +++ b/dumps/request_vlan_list_detail @@ -1,5 +1,3 @@ GET /api/2.0/vlans/detail/?limit=0 HTTP/1.1 Content-Type: application/json Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop - - diff --git a/dumps/request_vlan_schema b/dumps/request_vlan_schema index 4ba9319..73b1cf8 100644 --- a/dumps/request_vlan_schema +++ b/dumps/request_vlan_schema @@ -1,5 +1,3 @@ GET /api/2.0/vlans/schema/ HTTP/1.1 Content-Type: application/json Authorization: Basic SWYgeW91IGZvdW5kIHRoaXMsIGhhdmUgYSBjb29raWUsIHlvdSBkZXNlcnZlIGl0IDop - - diff --git a/dumps/response_backup_scheduler_backup_get b/dumps/response_backup_scheduler_backup_get new file mode 100644 index 0000000..adb93bf --- /dev/null +++ b/dumps/response_backup_scheduler_backup_get @@ -0,0 +1,55 @@ +{ + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/f60f5634-201e-499c-a266-dec38e6416bd/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f60f5634-201e-499c-a266-dec38e6416bd" +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_backup_update b/dumps/response_backup_scheduler_backup_update new file mode 100644 index 0000000..a4be176 --- /dev/null +++ b/dumps/response_backup_scheduler_backup_update @@ -0,0 +1,60 @@ +HTTP/1.1 200 OK +Content-Type: application/json; charset=utf-8 +{ + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test2", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "rentention_policy": { + "rules": [] + }, + "resource_uri": "/api/2.0/backupschedulers/40c7b699-62c0-412b-9a83-b799f5c0393e/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "40c7b699-62c0-412b-9a83-b799f5c0393e" +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_backups_list b/dumps/response_backup_scheduler_backups_list new file mode 100644 index 0000000..ffb7412 --- /dev/null +++ b/dumps/response_backup_scheduler_backups_list @@ -0,0 +1,75 @@ +HTTP/1.1 200 OK +Content-Type: application/json; charset=utf-8 +{ + "meta": { + "limit": 20, + "offset": 0, + "total_count": 4 + }, + "objects": [ + { + "is_default": false, + "is_enabled": true, + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/6bcb958f-8c1f-4115-a43e-82c388ee2535/", + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "6bcb958f-8c1f-4115-a43e-82c388ee2535" + }, + { + "is_default": false, + "is_enabled": true, + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/97fa3587-1187-413b-b9e3-85238276f0ca/", + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "97fa3587-1187-413b-b9e3-85238276f0ca" + }, + { + "is_default": false, + "is_enabled": true, + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/a3828367-7964-4246-a011-5ff810ecafb6/", + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "a3828367-7964-4246-a011-5ff810ecafb6" + }, + { + "is_default": false, + "is_enabled": true, + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/f60f5634-201e-499c-a266-dec38e6416bd/", + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f60f5634-201e-499c-a266-dec38e6416bd" + } + ] +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_backups_list_detail_type b/dumps/response_backup_scheduler_backups_list_detail_type new file mode 100644 index 0000000..980fe5e --- /dev/null +++ b/dumps/response_backup_scheduler_backups_list_detail_type @@ -0,0 +1,339 @@ +{ + "meta": { + "limit": 20, + "offset": 0, + "total_count": 6 + }, + "objects": [ + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test2", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/40c7b699-62c0-412b-9a83-b799f5c0393e/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "40c7b699-62c0-412b-9a83-b799f5c0393e" + }, + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/6bcb958f-8c1f-4115-a43e-82c388ee2535/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "6bcb958f-8c1f-4115-a43e-82c388ee2535" + }, + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/97fa3587-1187-413b-b9e3-85238276f0ca/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "97fa3587-1187-413b-b9e3-85238276f0ca" + }, + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/a3828367-7964-4246-a011-5ff810ecafb6/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "a3828367-7964-4246-a011-5ff810ecafb6" + }, + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/f1a7a7d0-944d-4b0a-a6b5-41d3d5402053/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f1a7a7d0-944d-4b0a-a6b5-41d3d5402053" + }, + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "resource_uri": "/api/2.0/backupschedulers/f60f5634-201e-499c-a266-dec38e6416bd/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f60f5634-201e-499c-a266-dec38e6416bd" + } + ] +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_backups_list_type b/dumps/response_backup_scheduler_backups_list_type new file mode 100644 index 0000000..e7995ef --- /dev/null +++ b/dumps/response_backup_scheduler_backups_list_type @@ -0,0 +1,62 @@ +{ + "objects": [ + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "rentention_policy": { + "rules": [] + }, + "resource_uri": "/api/2.0/backupschedulers/f1a7a7d0-944d-4b0a-a6b5-41d3d5402053/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f1a7a7d0-944d-4b0a-a6b5-41d3d5402053" + } + ] +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_create b/dumps/response_backup_scheduler_create new file mode 100644 index 0000000..311e3ec --- /dev/null +++ b/dumps/response_backup_scheduler_create @@ -0,0 +1,64 @@ +HTTP/1.1 201 Created +Content-Type: application/json; charset=utf-8 +{ + "objects": [ + { + "grantees": [], + "incremental_backup": { + "day_of_month": "*", + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "hour": "", + "minute": "*", + "month": "*", + "repeat": { + "hour": "", + "minute": "*/15" + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "initial_backup": { + "day_of_week": [ + "*" + ], + "end_time": { + "hour": 11, + "minute": 45 + }, + "start_time": { + "hour": 12, + "minute": 0 + } + }, + "is_default": false, + "is_enabled": true, + "manual_incremental_backup": "", + "meta": {}, + "name": "test", + "orchestrator_timezone": "Etc/UTC", + "owner": { + "resource_uri": "/api/2.0/user/efe6c4a4-d326-4130-a6c4-b1cb267e6b6f/", + "uuid": "efe6c4a4-d326-4130-a6c4-b1cb267e6b6f" + }, + "permissions": [], + "remote_location": "", + "rentention_policy": { + "rules": [] + }, + "resource_uri": "/api/2.0/backupschedulers/f1a7a7d0-944d-4b0a-a6b5-41d3d5402053/", + "retention_policy": {}, + "tags": [], + "type": "dr", + "user_timezone": "Etc/GMT+12", + "uuid": "f1a7a7d0-944d-4b0a-a6b5-41d3d5402053" + } + ] +} \ No newline at end of file diff --git a/dumps/response_backup_scheduler_delete b/dumps/response_backup_scheduler_delete new file mode 100644 index 0000000..e69de29 diff --git a/dumps/response_capabilities b/dumps/response_capabilities index b9f8c9b..6f150d7 100644 --- a/dumps/response_capabilities +++ b/dumps/response_capabilities @@ -1,80 +1,167 @@ HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 - { - "drives": { - "dssd": { - "max_size": 4971194891468, - "min_size": 536870912, - "size": { - "max": 4971194891468, - "min": 536870912 - } - } - }, - "hosts": { - "amd": { - "cpu": { - "max": 40000, - "min": 250 - }, - "cpu_per_smp": { - "max": 2400, - "min": 1000 - }, - "mem": { - "max": 68719476736, - "min": 268435456 - }, - "smp": { - "max": 24, - "min": 1 - } - }, - "intel": { - "cpu": { - "max": 40000, - "min": 250 - }, - "cpu_per_smp": { - "max": 2400, - "min": 1000 - }, - "mem": { - "max": 68719476736, - "min": 268435456 - }, - "smp": { - "max": 48, - "min": 1 - } - } - }, - "hypervisors": { - "kvm": [ - "amd" - ] - }, - "servers": { - "cpu": { - "max": 40000, - "min": 250 - }, - "cpu_per_smp": { - "max": 2400, - "min": 1000 - }, - "mem": { - "max": 68719476736, - "min": 268435456 - }, - "smp": { - "max": 24, - "min": 1 - } - }, - "snapshots": { - "current": 0, - "max": 600 - } + "backfilling": false, + "card_backend": "StripeBackend", + "currencies": [ + { + "id": "CHF", + "name": "chf" + }, + { + "id": "USD", + "name": "usd" + }, + { + "id": "EUR", + "name": "eur" + }, + { + "id": "GBP", + "name": "gbp" + }, + { + "id": "PHP", + "name": "php" + }, + { + "id": "AUD", + "name": "aud" + }, + { + "id": "SAR", + "name": "sar" + }, + { + "id": "JPY", + "name": "jpy" + } + ], + "default_inactive_period": 45, + "default_storage_type": "dssd", + "drives": { + "dssd": { + "iops": { + "base": 30000, + "max": 60000, + "min": 1 + }, + "max_size": 15492389427364, + "min_size": 536870912, + "size": { + "max": 15492389427364, + "min": 536870912 + } + }, + "nvme": { + "iops": { + "base": 30000, + "max": 60000, + "min": 1 + }, + "max_size": 12074020121525, + "min_size": 536870912, + "size": { + "max": 12074020121525, + "min": 536870912 + } + }, + "zadara": { + "iops": { + "base": 4000, + "max": 8000, + "min": 1 + }, + "max_size": 14180205493621, + "min_size": 1073741824.0, + "size": { + "max": 14180205493621, + "min": 1073741824.0 + } + } + }, + "hosts": { + "amd": { + "cpu": { + "max": 96000, + "min": 250 + }, + "cpu_per_smp": { + "max": 2893, + "min": 1000 + }, + "mem": { + "max": 558345748480, + "min": 268435456 + }, + "smp": { + "max": 32, + "min": 1 + } + }, + "intel": { + "cpu": { + "max": 96000, + "min": 250 + }, + "cpu_per_smp": { + "max": 3000, + "min": 1000 + }, + "mem": { + "max": 558345748480, + "min": 268435456 + }, + "smp": { + "max": 32, + "min": 1 + } + } + }, + "hypervisors": { + "kvm": [ + "intel", + "amd" + ] + }, + "inactive_period_range": { + "max": 250, + "min": 0 + }, + "remote_snapshots": { + "current": 0, + "max": 600, + "remote_locations": [ + "TBC" + ] + }, + "servers": { + "cpu": { + "max": 96000, + "min": 250 + }, + "cpu_per_smp": { + "max": 3000, + "min": 1000 + }, + "default_start_method": "regular", + "mem": { + "max": 558345748480, + "min": 268435456 + }, + "smp": { + "max": 32, + "min": 1 + }, + "start_methods": [ + "eager", + "lazy", + "regular" + ] + }, + "snapshots": { + "current": 0, + "max": 700, + "max_per_drive": 90 + } } diff --git a/dumps/response_drive_storage_type b/dumps/response_drive_storage_type new file mode 100644 index 0000000..241de08 --- /dev/null +++ b/dumps/response_drive_storage_type @@ -0,0 +1,40 @@ +HTTP/1.1 201 CREATED +Content-Type: application/json; charset=utf-8 + +{ + "objects": [ + { + "affinities": [], + "allow_multimount": false, + "backup_scheduler": null, + "grantees": [], + "iops": null, + "jobs": [], + "licenses": [], + "media": "disk", + "meta": { + "description": "" + }, + "mounted_on": [], + "name": "test_nvme_drive", + "owner": { + "resource_uri": "/api/2.0/user/e2e634af-d326-4130-a6c4-b1cb267e646f/", + "uuid": "e2e634af-d326-4130-a6c4-b1cb267e646f" + }, + "permissions": [], + "remote_snapshots": [], + "resource_uri": "/api/2.0/drives/0840ecd2-46b3-40c7-249d-02a4024a350e/", + "runtime": { + "is_snapshotable": true, + "snapshots_allocated_size": 0, + "storage_type": "nvme" + }, + "size": 1073741824, + "snapshots": [], + "status": "creating", + "storage_type": "nvme", + "tags": [], + "uuid": "0840ecd2-46b3-40c7-249d-02a4024a350e" + } + ] +} diff --git a/dumps/response_locations b/dumps/response_locations index 74e8fd5..7d3ae60 100644 --- a/dumps/response_locations +++ b/dumps/response_locations @@ -5,7 +5,7 @@ Content-Type: application/json; charset=utf-8 "meta":{ "limit":0, "offset":0, - "total_count":13 + "total_count":16 }, "objects":[ { @@ -15,23 +15,11 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://zrh.cloudsigma.com/ui/", "default_frontend_url":"https://zrh.cloudsigma.com/ui/", "display_name":"Zurich, Switzerland", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.14/", + "documentation_url":"https://docs.cloudsigma.com", "id":"ZRH", "upload_url":"https://direct.zrh.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.zrh.cloudsigma.com/websocket" }, - { - "alternative_frontend_url":"https://mel.cloudsigma.com/ui/", - "api_endpoint":"https://mel.cloudsigma.com/api/2.0/", - "country_code":"AU", - "default_frontend_signup_url":"https://mel.cloudsigma.com/ui/", - "default_frontend_url":"https://mel.cloudsigma.com/ui/", - "display_name":"Melbourne, Australia", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", - "id":"MEL", - "upload_url":"https://direct.mel.cloudsigma.com/api/2.0/", - "websocket_url":"wss://direct.mel.cloudsigma.com/websocket" - }, { "alternative_frontend_url":"https://per.cloudsigma.com/ui/", "api_endpoint":"https://per.cloudsigma.com/api/2.0/", @@ -39,7 +27,7 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://per.cloudsigma.com/ui/", "default_frontend_url":"https://per.cloudsigma.com/ui/", "display_name":"Perth, Australia", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"PER", "upload_url":"https://direct.per.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.per.cloudsigma.com/websocket" @@ -51,7 +39,7 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://fra.cloudsigma.com/ui/", "default_frontend_url":"https://fra.cloudsigma.com/ui/", "display_name":"Frankfurt, Germany", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"FRA", "upload_url":"https://direct.fra.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.fra.cloudsigma.com/websocket" @@ -63,7 +51,7 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://ec.servecentric.com/ui/", "default_frontend_url":"https://ec.servecentric.com/ui/", "display_name":"Dublin, Ireland", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"DUB", "upload_url":"https://direct.ec.servecentric.com/api/2.0/", "websocket_url":"wss://direct.ec.servecentric.com/websocket" @@ -75,22 +63,34 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://tyo.cloudsigma.com/ui/", "default_frontend_url":"https://tyo.cloudsigma.com/ui/", "display_name":"Tokyo, Japan", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"TYO", "upload_url":"https://direct.tyo.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.tyo.cloudsigma.com/websocket" }, { - "alternative_frontend_url":"https://mnl.cloudsigma.com/ui/", - "api_endpoint":"https://mnl.cloudsigma.com/api/2.0/", + "alternative_frontend_url":"https://crk.cloudsigma.com/ui/", + "api_endpoint":"https://crk.cloudsigma.com/api/2.0/", "country_code":"PH", - "default_frontend_signup_url":"https://mnl.cloudsigma.com/ui/", - "default_frontend_url":"https://mnl.cloudsigma.com/ui/", - "display_name":"Manila, Philippines", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", - "id":"MNL", - "upload_url":"https://direct.mnl.cloudsigma.com/api/2.0/", - "websocket_url":"wss://direct.mnl.cloudsigma.com/websocket" + "default_frontend_signup_url":"https://crk.cloudsigma.com/ui/", + "default_frontend_url":"https://crk.cloudsigma.com/ui/", + "display_name":"Clark, Philippines", + "documentation_url":"https://docs.cloudsigma.com", + "id":"CRK", + "upload_url":"https://direct.crk.cloudsigma.com/api/2.0/", + "websocket_url":"wss://direct.crk.cloudsigma.com/websocket" + }, + { + "alternative_frontend_url":"https://mnl2.cloudsigma.com/ui/", + "api_endpoint":"https://mnl2.cloudsigma.com/api/2.0/", + "country_code":"PH", + "default_frontend_signup_url":"https://mnl2.cloudsigma.com/ui/", + "default_frontend_url":"https://mnl2.cloudsigma.com/ui/", + "display_name":"Manila-2, Philippines", + "documentation_url":"https://docs.cloudsigma.com", + "id":"MNL2", + "upload_url":"https://direct.mnl2.cloudsigma.com/api/2.0/", + "websocket_url":"wss://direct.mnl2.cloudsigma.com/websocket" }, { "alternative_frontend_url":"https://ruh.cloudsigma.com/ui/", @@ -99,11 +99,23 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://ruh.cloudsigma.com/ui/", "default_frontend_url":"https://ruh.cloudsigma.com/ui/", "display_name":"Riyadh, Saudi Arabia", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"RUH", "upload_url":"https://direct.ruh.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.ruh.cloudsigma.com/websocket" }, + { + "alternative_frontend_url":"https://cloud.hydro66.com/ui/", + "api_endpoint":"https://cloud.hydro66.com/api/2.0/", + "country_code":"SE", + "default_frontend_signup_url":"https://cloud.hydro66.com/ui/", + "default_frontend_url":"https://cloud.hydro66.com/ui/", + "display_name":"Boden, Sweden", + "documentation_url":"https://docs.cloudsigma.com", + "id":"LLA", + "upload_url":"https://direct.cloud.hydro66.com/api/2.0/", + "websocket_url":"wss://direct.cloud.hydro66.com/websocket" + }, { "alternative_frontend_url":"https://gva.cloudsigma.com/ui/", "api_endpoint":"https://gva.cloudsigma.com/api/2.0/", @@ -111,7 +123,7 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://gva.cloudsigma.com/ui/", "default_frontend_url":"https://gva.cloudsigma.com/ui/", "display_name":"Geneva, Switzerland", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"GVA", "upload_url":"https://direct.gva.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.gva.cloudsigma.com/websocket" @@ -123,23 +135,11 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://hnl.cloudsigma.com/ui/", "default_frontend_url":"https://hnl.cloudsigma.com/ui/", "display_name":"Honolulu, United States", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"HNL", "upload_url":"https://direct.hnl.cloudsigma.com/api/2.0/", "websocket_url":"wss://direct.hnl.cloudsigma.com/websocket" }, - { - "alternative_frontend_url":"https://mia.cloudsigma.com/ui/", - "api_endpoint":"https://mia.cloudsigma.com/api/2.0/", - "country_code":"US", - "default_frontend_signup_url":"https://mia.cloudsigma.com/ui/", - "default_frontend_url":"https://mia.cloudsigma.com/ui/", - "display_name":"Miami, United States", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", - "id":"MIA", - "upload_url":"https://direct.mia.cloudsigma.com/api/2.0/", - "websocket_url":"wss://direct.mia.cloudsigma.com/websocket" - }, { "alternative_frontend_url":"https://sjc.alpha3cloud.com/ui/", "api_endpoint":"https://sjc.alpha3cloud.com/api/2.0/", @@ -147,7 +147,7 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://sjc.alpha3cloud.com/ui/", "default_frontend_url":"https://sjc.alpha3cloud.com/ui/", "display_name":"San Jose, United States", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"SJC", "upload_url":"https://direct.sjc.alpha3cloud.com/api/2.0/", "websocket_url":"wss://direct.sjc.alpha3cloud.com/websocket" @@ -159,10 +159,58 @@ Content-Type: application/json; charset=utf-8 "default_frontend_signup_url":"https://wdc.alpha3cloud.com/ui/", "default_frontend_url":"https://wdc.alpha3cloud.com/ui/", "display_name":"Washington DC, United States", - "documentation_url":"https://cloudsigma-docs.readthedocs.org/en/2.11/", + "documentation_url":"https://docs.cloudsigma.com", "id":"WDC", "upload_url":"https://direct.wdc.alpha3cloud.com/api/2.0/", "websocket_url":"wss://direct.wdc.alpha3cloud.com/websocket" + }, + { + "alternative_frontend_url":"https://cwl.cloudsigma.com/ui/", + "api_endpoint":"https://cwl.cloudsigma.com/api/2.0/", + "country_code":"GB", + "default_frontend_signup_url":"https://cwl.cloudsigma.com/ui/", + "default_frontend_url":"https://cwl.cloudsigma.com/ui/", + "display_name":"Newport, Wales", + "documentation_url":"https://docs.cloudsigma.com", + "id":"CWL", + "upload_url":"https://direct.cwl.cloudsigma.com/api/2.0/", + "websocket_url":"wss://direct.cwl.cloudsigma.com/websocket" + }, + { + "alternative_frontend_url":"https://mnl.cloudsigma.com/ui/", + "api_endpoint":"https://mnl.cloudsigma.com/api/2.0/", + "country_code":"PH", + "default_frontend_signup_url":"https://mnl.cloudsigma.com/ui/", + "default_frontend_url":"https://mnl.cloudsigma.com/ui/", + "display_name":"Manila, Philippines", + "documentation_url":"https://docs.cloudsigma.com", + "id":"MNL", + "upload_url":"https://direct.mnl.cloudsigma.com/api/2.0/", + "websocket_url":"wss://direct.mnl.cloudsigma.com/websocket" + }, + { + "alternative_frontend_url":"https://dus.cloudsigma.com/ui/", + "api_endpoint":"https://dus.cloudsigma.com/api/2.0/", + "country_code":"DE", + "default_frontend_signup_url":"https://dus.cloudsigma.com/ui/", + "default_frontend_url":"https://dus.cloudsigma.com/ui/", + "display_name":"Dusseldorf, Germany", + "documentation_url":"https://docs.cloudsigma.com", + "id":"DUS", + "upload_url":"https://direct.dus.cloudsigma.com/api/2.0/", + "websocket_url":"wss://direct.dus.cloudsigma.com/websocket" + }, + { + "alternative_frontend_url":"https://mty.stratospherecloud.com/ui/", + "api_endpoint":"https://mty.stratospherecloud.com/api/2.0/", + "country_code":"MX", + "default_frontend_signup_url":"https://mty.stratospherecloud.com/ui/", + "default_frontend_url":"https://mty.stratospherecloud.com/ui/", + "display_name":"Monterrey, Mexico", + "documentation_url":"https://docs.cloudsigma.com", + "id":"MTY", + "upload_url":"https://direct.mty.stratospherecloud.com/api/2.0/", + "websocket_url":"wss://direct.mty.stratospherecloud.com/websocket" } ] } diff --git a/dumps/response_pricing_list b/dumps/response_pricing_list index 59eeb02..779ca8a 100644 --- a/dumps/response_pricing_list +++ b/dumps/response_pricing_list @@ -3,44 +3,104 @@ Content-Type: application/json; charset=utf-8 { "current": { - "cpu": 20, + "backup": 1, + "cpu": 1, + "cpu_vmware": 1, + "dedicated_host_6148": 1, + "dedicated_node_large": 1, + "dedicated_node_medium": 1, + "dedicated_node_small": 1, + "disaster_recovery": 1, "dssd": 1, + "dssd_vmware": 1, + "epc": 1, + "intel_cpu": 2, + "intel_mem": 1, "ip": 1, - "mem": 17, + "ip_vmware": 1, + "mem": 1, + "mem_vmware": 1, + "migration": 1, + "msft_6wc_00002": 1, "msft_7jq_00341": 1, "msft_7nq_00302": 1, + "msft_9ea_00039": 1, "msft_p73_04837_core": 1, "msft_tfa_00523": 1, - "sms": 1, - "sparc_t4_cpu": 1, - "sparc_t4_mem": 1, + "nvme": 1, + "object_storage": 1, + "rx_foreign": 1, + "rx_local": 1, "ssd": 1, "tx": 1, + "tx_foreign": 1, + "tx_local": 1, + "tx_vmware": 1, + "virtual_private_cloud": 1, "vlan": 1, "vlan_ecx": 1, + "vlan_ecx_1000": 1, + "vlan_ecx_200": 1, + "vlan_ecx_500": 1, + "vlan_vmware": 1, + "vpc": 1, + "vrouter_basic": 1, + "vrouter_basic_500": 1, + "vrouter_enterprise": 1, + "vrouter_premium": 1, "zadara": 1 }, "meta": { - "limit": 5, + "limit": 0, "offset": 0, - "total_count": 484 + "total_count": 3025 }, "next": { - "cpu": 20, + "backup": 1, + "cpu": 1, + "cpu_vmware": 1, + "dedicated_host_6148": 1, + "dedicated_node_large": 1, + "dedicated_node_medium": 1, + "dedicated_node_small": 1, + "disaster_recovery": 1, "dssd": 1, + "dssd_vmware": 1, + "epc": 1, + "intel_cpu": 2, + "intel_mem": 1, "ip": 1, - "mem": 17, + "ip_vmware": 1, + "mem": 1, + "mem_vmware": 1, + "migration": 1, + "msft_6wc_00002": 1, "msft_7jq_00341": 1, "msft_7nq_00302": 1, + "msft_9ea_00039": 1, "msft_p73_04837_core": 1, "msft_tfa_00523": 1, - "sms": 1, - "sparc_t4_cpu": 1, - "sparc_t4_mem": 1, + "nvme": 1, + "object_storage": 1, + "rx_foreign": 1, + "rx_local": 1, "ssd": 1, "tx": 1, + "tx_foreign": 1, + "tx_local": 1, + "tx_vmware": 1, + "virtual_private_cloud": 1, "vlan": 1, "vlan_ecx": 1, + "vlan_ecx_1000": 1, + "vlan_ecx_200": 1, + "vlan_ecx_500": 1, + "vlan_vmware": 1, + "vpc": 1, + "vrouter_basic": 1, + "vrouter_basic_500": 1, + "vrouter_enterprise": 1, + "vrouter_premium": 1, "zadara": 1 }, "objects": [ diff --git a/dumps/response_usage_list b/dumps/response_usage_list new file mode 100644 index 0000000..8bcd9ae --- /dev/null +++ b/dumps/response_usage_list @@ -0,0 +1,48 @@ +HTTP/1.1 200 OK +Content-Type: application/json; charset=utf-8 + +{ + "meta":{ + "limit":1500, + "offset":0, + "total_count":0 + }, + "objects":[ + { + "amount":"6000", + "poll_time":"2024-10-08T11:52:57.757677+00:00", + "resource":"intel_cpu", + "uuid":"f493b092-5eef-4a17-bf34-cfaec42f5fb2" + }, + { + "amount":"3221225472", + "poll_time":"2024-10-08T11:52:57.757677+00:00", + "resource":"intel_mem", + "uuid":"f493b092-5eef-4a17-bf34-cfaec42f5fb2" + }, + { + "amount":"3221225472", + "poll_time":"2024-10-08T11:52:57.757677+00:00", + "resource":"dssd", + "uuid":"d73c3226-f53a-4c33-b11f-086ac0349a33" + }, + { + "amount":"6000", + "poll_time":"2024-10-08T11:57:57.762428+00:00", + "resource":"intel_cpu", + "uuid":"f493b092-5eef-4a17-bf34-cfaec42f5fb2" + }, + { + "amount":"3221225472", + "poll_time":"2024-10-08T11:57:57.762428+00:00", + "resource":"intel_mem", + "uuid":"f493b092-5eef-4a17-bf34-cfaec42f5fb2" + }, + { + "amount":"3221225472", + "poll_time":"2024-10-08T11:57:57.762428+00:00", + "resource":"dssd", + "uuid":"d73c3226-f53a-4c33-b11f-086ac0349a33" + } + ] +} diff --git a/general.rst b/general.rst index ae2e8f2..8321e77 100644 --- a/general.rst +++ b/general.rst @@ -13,8 +13,8 @@ API endpoint Given a server running the CloudSigma API it will be available on the following base URL e.g.:: https://{loc}.cloudsigma.com/api/2.0/ - -Where {loc} is a subdomain for a specific location. In the rest of the documentation the URL's will be given relative to + +Where {loc} is a subdomain for a specific location. In the rest of the documentation the URLs will be given relative to that base. Currently the following CloudSigma location endpoints are available: diff --git a/index.rst b/index.rst index dd7acc2..fc94b5c 100644 --- a/index.rst +++ b/index.rst @@ -8,7 +8,7 @@ Welcome to CloudSigma API documentation! .. toctree:: :maxdepth: 2 - + release_notes general locations @@ -16,9 +16,11 @@ Welcome to CloudSigma API documentation! errors capabilities clone_naming - + drives snapshots + remote_snapshots + backup_schedulers libdrives upload_download servers_vmware @@ -29,7 +31,6 @@ Welcome to CloudSigma API documentation! server_context network_interfaces networking - fwpolicies tags acls @@ -43,6 +44,7 @@ Welcome to CloudSigma API documentation! profile notification_preferences billing + usage burst_usage current_usage async @@ -53,4 +55,3 @@ Indices and tables * :ref:`genindex` * :ref:`modindex` * :ref:`search` - diff --git a/keypairs.rst b/keypairs.rst index 3e3196d..f220089 100644 --- a/keypairs.rst +++ b/keypairs.rst @@ -14,6 +14,9 @@ read-only version of the ``keypairs`` resource. The ``pubkeys`` objects are iden fact that they do not contain the private key, and have a ``has_private_key`` attribute instead of ``private_key``, which indicates whether the private key was set. +We currently support two types of SSH Keys: RSA and ed25519. +The maximum size for the RSA keys is 4096 bits. + Creating a keypair ------------------ @@ -25,6 +28,8 @@ You have three choices when creating a keypair: * Provide only a public key, in which case the private key will remain empty * Provide no public, neither private key, in which case a new pair will be generated for you +For the 3rd choice, you need to also define the "algorithm_type" for generating the key. + Here is an example of providing both pairs: .. literalinclude:: dumps/request_self_gen_keypair_create @@ -41,7 +46,9 @@ Here is an example of providing only a public key: .. literalinclude:: dumps/response_pub_key_only_keypair_create :language: javascript -Here is an example of creating an autogenerated pair: +Here is an example of creating an autogenerated pair, for which you need to also specify the algorithm type. +The choices for the algorithm_type can be one of the "rsa" or "ed25519" types. +The maximum size for the RSA keys is 4096 bits. .. literalinclude:: dumps/request_autogen_keypair_create :language: http @@ -96,7 +103,7 @@ Pubkeys resource ---------------- In order to access just the public keys without the need for OTP, you can use the ``pubkeys`` resource. Instead -of a private key it contains an attribute ``has_private_key`` which indicates whethre the private key was set. +of a private key it contains an attribute ``has_private_key`` which indicates whether the private key was set. For example creating an autogenerated keypair: @@ -106,7 +113,7 @@ For example creating an autogenerated keypair: .. literalinclude:: dumps/response_autogen_keypair_create :language: javascript -Results in a corresponding ``pubkeys`` object with ``hast_private_key``, which is `true`: +Results in a corresponding ``pubkeys`` object with ``has_private_key``, which is `true`: .. literalinclude:: dumps/request_pubkeys_full_keypair :language: http @@ -122,7 +129,7 @@ Creating a keypair with only a public key: .. literalinclude:: dumps/response_pub_key_only_keypair_create :language: javascript -Results in a corresponding ``pubkeys`` object with ``hast_private_key``, which is `false`: +Results in a corresponding ``pubkeys`` object with ``has_private_key``, which is `false`: .. literalinclude:: dumps/request_pubkeys_pub_only_keypair :language: http diff --git a/release_notes.rst b/release_notes.rst index 8dec8bd..d4e9107 100644 --- a/release_notes.rst +++ b/release_notes.rst @@ -1,6 +1,288 @@ Release Notes ============= +2025 Release +------------ + +2501 +~~~~ + +**Date Released:** 2025-01-20 + + +* We enhanced the subscription management experience by improving the visibility of payment notifications and adding detailed tax breakdowns in the billing history. +* We optimized the storage management system with improved drive allocation strategies and better handling of volume operations. +* Our guest management system received significant updates with smarter startup processes and more efficient data migration handling. +* Administrative functions have been fortified with additional configuration options and improved access control settings for the partners. + + +2024 Release +------------ + +2412 +~~~~ + +**Date Released:** 2025-01-06 + + +* New configuration options have been added to support flexible currency settings and billing operations. +* Advanced storage healing capabilities have been implemented to ensure data integrity and system reliability. +* Implementation of location-specific features now includes new invoice templates and notification systems in multiple languages. +* System performance has been boosted through message volume reduction and improved runtime task processing, particularly focusing on GPU functionality. +* User experience has been enhanced with improved interface responsiveness and optimized client-side performance. + + +2411 +~~~~ + +**Date Released:** 2024-11-21 + + +* We've enhanced our overall snapshot management system with improved functionality and reliability. +* Authentication workflows have been optimized to improve security and performance across all services. +* Storage management interface now includes advanced filtering and sorting capabilities. +* WebApp drive upload functionality has been stabilized and optimized across all locations. +* Backend processing has been enhanced to improve response times during peak usage. +* Drive management capabilities now include the option to unassign backup schedules. +* Detailed usage report functionality is now available in the Management Interface for partners, and it will be expanded to all users in the next releases. +* The resource allocation system has been upgraded to handle concurrent requests more efficiently. +* We're working on enhancing the notification system to provide more stable status updates and urgent messages. + + +2410 +~~~~ + +**Date Released:** 2024-10-14 + + +* We enhanced our resource monitoring system by resolving an issue where the automated alert mechanism failed to send critical notifications. +* We improved VMWare server management by resolving a synchronization problem that prevented timely updates of server states. +* Implemented post-migration memory limit application to ensure proper resource management in the new environment. +* This release also includes numerous other optimizations, bug fixes, and performance enhancements to improve overall system stability and user experience. + + +2409 +~~~~ + +**Date Released:** 2024-09-15 + + +* We've addressed an issue where users encountered errors when attempting to access certain API resources without proper permissions. +* The system now provides clear error messages when invalid values are entered for critical configuration settings, ensuring more robust user inputs. +* Enhanced logging capabilities have been implemented to track and record specific user actions for improved auditing and security purposes. +* A significant refactoring effort has been undertaken to improve the atomicity and reliability of core billing processes. +* The file upload workflow has been optimized to resolve long-standing issues and improve overall performance. + + +2408 +~~~~ + +**Date Released:** 2024-08-19 + + +* Upgraded security measures and authentication processes across the platform. +* Optimized backend systems for better performance and reliability. +* Improved API functionality for more efficient resource management and usage reporting. + + +2407 +~~~~ + +**Date Released:** 2024-07-23 + + +* Optimized promo code functionality across the platform. +* Updated VLAN information display for better visibility and management. +* This release introduces several new features and addresses multiple bug fixes, enhancing overall platform performance. + + +2406 +~~~~ + +**Date Released:** 2024-06-17 + + +* We've been busy making things smoother for you! Enjoy an improved user experience. +* Get ready for an enhanced information experience! We're optimizing our documents for clarity and ease of access. +* This update squashed 20 pesky bugs and introduced several core system enhancements for a smoother ride. + + +2405 +~~~~ + +**Date Released:** 2024-05-21 + +* We have fixed an inconvenience with Access Control Lists and one of the accounts gets removed. Now it works much better. +* Also, we've further improved our shiny new payment module. +* And more! With a sprinkle of code and a dash of innovation, our tech alchemists have brewed up 26 improvements! +* Get ready for a smoother, more secure, and delightful cloud experience. + + +2404 +~~~~ + +**Date Released:** 2024-04-13 + +* While there are no new groundbreaking features at this time, we've been busy making improvements behind the scenes to enhance stability, security, and usability by implementing almost 20 stories. +* We've ironed out some wrinkles to ensure a smoother user experience. +* Exciting news! Our cloud is expanding with a new location, bringing you a more seamless experience, MTY - "Monterrey, Mexico". + + +2403 +~~~~ + +**Date Released:** 2024-03-18 + +* For the sake of easier interaction with our Cloud services, we have introduced a newer version of our main website (aka WebApp). You can try it from the Home page in each cloud location, now! +* In other news, we are now switching to Stripe as our payment system. +* And the usual bug extermination routine, of small issues, core system improvements, etc. 43 of them. + + +2402 +~~~~ + +**Date Released:** 2024-02-15 + +* We had to change the address in the profile section to be no longer than 180 characters. +* Due to an external dependency, we had to change the allowed characters in the fields: address, state, city, and postcode to accept ASCII characters. +* And 17 other bug fixes and improvements. + + +2401 +~~~~ + +**Date Released:** 2024-01-18 + +* Starting with this version, we are adding a few changes to the required data for all our accounts such as "state/province" and "mobile number". +* We improved the accuracy of the out-of-memory exception, which all our customers received. +* We fixed a minor issue in the Backup Scheduler. +* And 30 other bugs and improvements. + + +Chlorine Release +---------------- + +Chlorine-17.2312 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-12-08 + +* We fixed a rare condition, which could cause a problem when trying to save a payment method while making a payment. +* We are happy to announce that our cloud is growing again with more locations! So we did the magic under the hood, so they work just as well. +* We are pleased to announce that our cloud is getting closer to you with a new location, DUS - "Düsseldorf, Germany". +* We also introduced 20 improvements under the hood. + + +Chlorine-17.2311 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-11-13 + +* For this release, we've introduced a number of improvements under the hood, 23 to be precise. +* The system behaves the exact same way as before, just better. + + +Chlorine-17.2310 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-10-12 + +* This month we're working on making our product more stable and robust. +* We've introduced a number of improvements under the hood, 9 to be precise. +* It behaves the exact same way as before, just better. + + +Chlorine-17.2309 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-09-11 + +* We're adding lots of features under the hood that will be available in our WebUI soon. +* We're enabling support for zones in different data centers and the capability to create remote snapshots in multiple clusters as well. +* We're also making account inactivity settings configurable, which will make it to our shiny new WebApp anytime soon. +* And other bugs and improvements (13 to be precise). + + +Chlorine-17.2308 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-08-15 + +* We fixed an issue that prevented our system from sending automated monthly transactions and subscription reports. Your highly valuable report is back in action now! +* We've disabled the account country change per API call. If you need to change your country, please contact our support department. +* We've improved payment method creation logic, so your payment experience is better and our bank account - is happier! +* And many others, which are not-so-interesting. + + +Chlorine-17.2307 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-07-19 + +* We fixed a minor issue regarding drive resizing by the grantee when a drive is shared with them. +* We've fixed a rarely occurring issue related to our scheduler for migrations. +* Some of our clouds are receiving better stability when operating with GPUs in pass-through mode. +* We are making further improvements under the hood so that our next-gen UI can bring your beloved cloud experience. + + +Chlorine-17.2306 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-06-15 + +* This month's release mainly focuses on making our platform shinier behind the scenes. While nothing major to report, we have a few things to note. +* We've improved an out-of-memory notification event. +* We improved the invoice generation capabilities that were having a hiccup with some languages. +* We added support for our new soon-to-be-announced location under the hood. +* A number of other Bug Fixes & minor UI Improvements. + + +Chlorine-17.2305 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-05-10 + +* We are proud to announce that our cloud is growing with another new location, CWL - "Newport, Wales". +* We have tweaked the subject of our email notifications to be more informational by including the cloud location 3-letter code. +* We changed the API call to create drives, if no drive type is specified, we will take a default input as defined per cloud location. +* We did a lot of under-the-hood work, to make your cloud computing experience seamless. +* A number of other Bug Fixes & minor UI Improvements. + + +Chlorine-17.2304 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-04-11 + +* We enabled a new SSH Key type (ED25519) as an option for new VM creation and new SSH key creation. +* We are improving the SQL server experience. After a SQL Server subscription has expired, the resource will continue to operate on burst pricing, instead of stopping abruptly. +* A new notification type for SQL Server bursting is introduced. +* An issue regarding metadata was resolved (SSH keys remain in Metadata after deletion). +* A number of other Bug Fixes & minor UI Improvements. + + +Chlorine-17.2303 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-03-16 + +* A name adjustment for our UK, London location. +* A new notification is introduced, which will send a digest with all subscriptions and notifications on the first day of each month. +* A new storage type is introduced to our infrastructure - NVMe. +* A number of other Bug Fixes & minor UI Improvements. + + +Chlorine-17.2302 +~~~~~~~~~~~~~~~~ + +**Date Released:** 2023-02-16 + +* Password Reset Link requests now expires after 24 hours. +* Fixed an issue related to notification text when an account has no saved credit card. +* Fixed an issue related to the error message "incorrect email", when a customer already activated a Guest session from the same IP. +* A number of other Bug Fixes & minor UI Improvements. + + Silicon Release --------------- diff --git a/remote_snapshots.rst b/remote_snapshots.rst index 6c754bd..2de0b37 100644 --- a/remote_snapshots.rst +++ b/remote_snapshots.rst @@ -2,18 +2,28 @@ Remote Snapshots ================ Remote snapshots are point-in-time versions of a drive. They can be -:ref:`cloned ` to a full drive, which +:ref:`cloned ` to a full drive, which makes it possible to restore an older version of a VM image. +Remote snapshots are our backup solution. If the drive gets deleted and +the remote snapshot is created, the remote snapshot won't disappear. +All remote snapshots (backups) of deleted drives can be found in the +UI -> Storage -> Backups. +But the remote snapshots of active drives can be found at the +Storage -> Drives -> A drive in detailed view -> Backups section. + Remote snapshots are billed based on their occupied size. Since only the differences from the current drive image are stored, a single remote snapshot's size will be equal to the size of the data which has changed since the remote snapshot has taken. If no data has changed, the remote snapshot's size will be zero. -Note that remote snapshots are billed as ``storage``, so storage subscriptions +Note that remote snapshots are billed as ``backup``, so backup subscriptions should be bought in order not to burst on remote snapshots usage. +We have remote snapshots in the following locations: +``GVA, ZRH, FRA, CWL, LON, and DUB`` + Allowed HTTP methods -------------------- @@ -46,12 +56,12 @@ Listing **Example request - default list**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_list + .. literalinclude:: dumps/request_snapshot_list :language: http **Example response - default list**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_list + .. literalinclude:: dumps/response_snapshot_list :language: javascript Detailed listing @@ -67,13 +77,13 @@ Detailed listing **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_list_detail + .. literalinclude:: dumps/request_snapshot_list_detail :language: http **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_list_detail + .. literalinclude:: dumps/response_snapshot_list_detail :language: javascript List single remote snapshot @@ -89,38 +99,41 @@ List single remote snapshot **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_get + .. literalinclude:: dumps/request_snapshot_get :language: http **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_get + .. literalinclude:: dumps/response_snapshot_get :language: javascript Creating -------- +Please note that you cannot create more than one remote snapshot of a drive within 30 minutes. +And also you cannot create a second remote snapshot of a drive when the previous one is in ``transferring`` or ``creating`` state. .. http:post:: /remotesnapshots/ - Creates a new snapshot or multiple snapshots. + Creates a new remote snapshot. :statuscode 201: object created **Example request**: - Create a snapshot + Create a remote snapshot - .. includejson:: dumps/remote_snapshots/request_snapshot_create + .. includejson:: dumps/request_snapshot_create :accessor: objects.0 **Example response** - .. literalinclude:: dumps/remote_snapshots/response_snapshot_create + .. literalinclude:: dumps/response_snapshot_create :language: javascript Editing ------- +Please note that you cannot edit a remote snapshot when the state is ``transferring`` or ``creating``. .. http:put:: /remotesnapshots/{uuid}/ @@ -130,12 +143,12 @@ Editing **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_edit + .. literalinclude:: dumps/request_snapshot_edit :language: http **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_edit + .. literalinclude:: dumps/response_snapshot_edit :language: javascript Metadata @@ -147,9 +160,10 @@ See Deleting -------- +Please note that you cannot delete a remote snapshot when the state is ``transferring`` or ``creating``. -Single snapshot -~~~~~~~~~~~~~~~ +Single Remote snapshot +~~~~~~~~~~~~~~~~~~~~~~ .. http:delete:: /remotesnapshots/{uuid}/ @@ -159,21 +173,21 @@ Single snapshot **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_delete + .. literalinclude:: dumps/request_snapshot_delete :language: http **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_delete + .. literalinclude:: dumps/response_snapshot_delete :language: javascript -Multiple snapshots -~~~~~~~~~~~~~~~~~~ +Multiple remote snapshots +~~~~~~~~~~~~~~~~~~~~~~~~~ .. http:delete:: /remotesnapshots/ - Deletes multiple mounted or unmounted remote snapshots specified by their UUID's. + Deletes multiple remote snapshots specified by their UUIDs. :statuscode 204: No content, object deletion started. @@ -205,10 +219,11 @@ Multiple snapshots HTTP/1.0 204 NO CONTENT -.. _snapshot_cloning: +.. _remote_snapshot_cloning: Cloning ------- +Please note that you cannot clone (promote to a full drive) a remote snapshot when the state is ``transferring`` or ``creating``. .. http:post:: /remotesnapshots/{uuid}/action/?do=clone @@ -219,13 +234,13 @@ Cloning **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_clone + .. literalinclude:: dumps/request_snapshot_clone :language: http **Example response**: The response is actually a drive definition. - .. literalinclude:: dumps/remote_snapshots/response_snapshot_clone + .. literalinclude:: dumps/response_snapshot_clone :language: javascript .. note:: @@ -247,12 +262,12 @@ You can apply a drive filter to remote snapshots. **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshot_list_for_drive + .. literalinclude:: dumps/request_snapshot_list_for_drive :language: javascript **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshot_list_for_drive + .. literalinclude:: dumps/response_snapshot_list_for_drive :language: javascript In drive definition @@ -265,12 +280,12 @@ In the detailed drive definition there is a "remote_snapshots" field. **Example request**: - .. literalinclude:: dumps/remote_snapshots/request_snapshots_in_drive_def + .. literalinclude:: dumps/request_snapshots_in_drive_def :language: javascript **Example response**: - .. literalinclude:: dumps/remote_snapshots/response_snapshots_in_drive_def + .. literalinclude:: dumps/response_snapshots_in_drive_def :language: javascript Request schema @@ -297,6 +312,6 @@ Request schema Schema ------ - .. literalinclude:: dumps/remote_snapshots/response_snapshot_schema + .. literalinclude:: dumps/response_snapshot_schema :language: javascript diff --git a/requirements.txt b/requirements.txt index 0ab6aa3..8671ac5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ sphinxcontrib-httpdomain==1.7.0 sphinxcontrib-programoutput==0.14 simplejson +urllib3==1.26.15 +requests==2.29.0 +sphinx-rtd-theme diff --git a/servers.rst b/servers.rst index 47f4d21..eda7e53 100644 --- a/servers.rst +++ b/servers.rst @@ -102,7 +102,7 @@ Editing .. http:put:: /servers/{uuid}/ - Edits a server. Used also for attaching NIC's and drives to servers. Note that if a server is running, only + Edits a server. Used also for attaching NICs and drives to servers. Note that if a server is running, only ``name``, ``meta``, and ``tags`` fields can be changed, and all other changes to the definition of a running server will be ignored. @@ -175,7 +175,7 @@ Delete Server together with attached drives (recursive delete) .. http:delete:: /servers/{uuid}/?recurse={recurse_option} -It is possible to delete a server together with it's drives (recursive delete). There are three options: delete all +It is possible to delete a server together with its drives (recursive delete). There are three options: delete all attached drives, delete only disks(non-cdrom drives), or delete only attached cdroms. To recursively delete drives, supply a ``recurse`` URL parameter with a value as described in the following table: diff --git a/snapshots.rst b/snapshots.rst index 3b33993..f4b4782 100644 --- a/snapshots.rst +++ b/snapshots.rst @@ -98,7 +98,7 @@ Creating .. http:post:: /snapshots/ - Creates a new snapshot or multiple snapshots. + Creates a new snapshot. :statuscode 201: object created @@ -166,7 +166,7 @@ Multiple snapshots .. http:delete:: /snapshots/ - Deletes multiple mounted or unmounted snapshots specified by their UUID's. + Deletes multiple snapshots specified by their UUIDs. :statuscode 204: No content, object deletion started. diff --git a/usage.rst b/usage.rst new file mode 100644 index 0000000..6b0ad50 --- /dev/null +++ b/usage.rst @@ -0,0 +1,46 @@ +Usage +---------- + +Allowed HTTP methods +~~~~~~~~~~~~~~~~~~~~ + ++--------+---------------------+ +| Method | Description | ++========+=====================+ +| GET | get / list object/s | ++--------+---------------------+ + +.. note:: + + See :rfc:`2616#section-9` for more details on HTTP methods semantics + + +Listing +~~~~~~~ + +.. http:get:: /usage/ + + Retrieve the usage data for a specific time range. The start and end times are specified using the `poll_time_gt` (greater than) and `poll_time_lt` (less than) query parameters, along with an optional `limit` parameter to define the number of results returned. + + :statuscode 200: no error + + **Example request**: + + .. literalinclude:: dumps/request_usage_list + :language: http + + + **Example response**: + + .. literalinclude:: dumps/response_usage_list + :language: javascript + + **Example**: + + To retrieve user usage data for the entire day of **April 1st, 2024**, the query parameters would be set like this: + + .. code-block:: bash + + poll_time_gt=2024-04-01&poll_time_lt=2024-04-02&limit=1500 + + This request will fetch all usage data between **2024-04-01 00:00:00** and **2024-04-02 00:00:00**. The `limit=1500` parameter restricts the response to 1500 records. \ No newline at end of file