:original_name: vpc_api01_0004.html
.. _vpc_api01_0004:
Updating a VPC
==============
Function
--------
This API is used to update information about a VPC.
URI
---
PUT /v1/{project_id}/vpcs/{vpc_id}
:ref:`Table 1 ` describes the parameters.
.. _vpc_api01_0004__table27380479:
.. table:: **Table 1** Parameter description
+------------+-----------+----------------------------------------------------------+
| Name | Mandatory | Description |
+============+===========+==========================================================+
| project_id | Yes | Specifies the project ID. |
+------------+-----------+----------------------------------------------------------+
| vpc_id | Yes | Specifies the VPC ID, which uniquely identifies the VPC. |
+------------+-----------+----------------------------------------------------------+
Request Parameters
------------------
.. table:: **Table 2** Request parameter
+------+-----------+---------------------------------------------------+-------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+======+===========+===================================================+===================================================================+
| vpc | Yes | :ref:`vpc ` object | :ref:`Specifies the VPC objects. ` |
+------+-----------+---------------------------------------------------+-------------------------------------------------------------------+
.. _vpc_api01_0004__table34290771:
.. table:: **Table 3** VPC objects
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+====================+=================+====================================================================+=======================================================================================================================================================================================+
| name | No | String | - Specifies the VPC name. |
| | | | - The value can contain no more than 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.). |
| | | | - Each VPC name of a tenant must be unique if the VPC name is not left blank. |
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| description | No | String | - Provides supplementary information about the VPC. |
| | | | - The value can contain no more than 255 characters and cannot contain angle brackets (< or >). |
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| cidr | No | String | - Specifies the available IP address ranges for subnets in the VPC. |
| | | | |
| | | | - Possible values are as follows: |
| | | | |
| | | | - 10.0.0.0/8-24 |
| | | | - 172.16.0.0/12-24 |
| | | | - 192.168.0.0/16-24 |
| | | | |
| | | | - If **cidr** is not specified, the default value is left blank. |
| | | | |
| | | | - Constraints: |
| | | | |
| | | | The value must be in CIDR format, for example, **192.168.0.0/16**. |
| | | | |
| | | | If you want to update the CIDR block of the VPC, the new CIDR block must contain all subnets in the VPC. |
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| routes | No | Array of :ref:`route ` objects | - Specifies the route list. For details, see :ref:`Table 4 `. |
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enable_shared_snat | No | Boolean | Specifies whether the shared SNAT function is enabled. The value **true** indicates that the function is enabled, and the value **false** indicates that the function is not enabled. |
+--------------------+-----------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _vpc_api01_0004__table1696324019336:
.. table:: **Table 4** **route** objects
+-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+=================+=================+=================+==========================================================================================================================+
| destination | No | String | - Specifies the destination network segment of a route. |
| | | | - The value must be in CIDR format. |
+-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------+
| nexthop | No | String | - Specifies the next hop of a route. |
| | | | - The value must be an IP address and must belong to the subnet in the VPC. Otherwise, this value does not take effect. |
+-----------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------+
Example Request
---------------
- Change the name, description, and CIDR block of the VPC whose ID is 99d9d709-8478-4b46-9f3f-2206b1023fd3 to **vpc1**, **test1**, and **192.168.0.0/16**, respectively.
.. code-block:: text
PUT https://{Endpoint}/v1/{project_id}/vpcs/99d9d709-8478-4b46-9f3f-2206b1023fd3
{
"vpc": {
"name": "vpc1",
"description": "test1",
"cidr": "192.168.0.0/16",
"enable_shared_snat": true
}
}
Response Parameters
-------------------
.. table:: **Table 5** Response parameter
+------+---------------------------------------------------+-------------------------------------------------------------------+
| Name | Type | Description |
+======+===================================================+===================================================================+
| vpc | :ref:`vpc ` object | :ref:`Specifies the VPC objects. ` |
+------+---------------------------------------------------+-------------------------------------------------------------------+
.. _vpc_api01_0004__table22527411:
.. table:: **Table 6** VPC objects
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Type | Description |
+=======================+====================================================================+=======================================================================================================================================================================================+
| id | String | Specifies a resource ID in UUID format. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | String | Specifies the VPC name. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| description | String | - Provides supplementary information about the VPC. |
| | | - The value can contain no more than 255 characters and cannot contain angle brackets (< or >). |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| cidr | String | - Specifies the available IP address ranges for subnets in the VPC. |
| | | - Possible values are as follows: |
| | | |
| | | - 10.0.0.0/8-24 |
| | | - 172.16.0.0/12-24 |
| | | - 192.168.0.0/16-24 |
| | | |
| | | - If **cidr** is not specified, the default value is left blank. |
| | | - The value must be in CIDR format, for example, **192.168.0.0/16**. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| status | String | - Specifies the VPC status. |
| | | - Possible values are as follows: |
| | | |
| | | - **CREATING**: The VPC is being created. |
| | | - **OK**: The VPC is created successfully. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enterprise_project_id | String | - Specifies the enterprise project ID. |
| | | - The value is **0** or a string that contains a maximum of 36 characters in UUID format with hyphens (-). Value **0** indicates the default enterprise project. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| routes | Array of :ref:`route ` objects | - Specifies the route information. |
| | | - For details, see the description of the :ref:`route objects `. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enable_shared_snat | Boolean | Specifies whether the shared SNAT function is enabled. The value **true** indicates that the function is enabled, and the value **false** indicates that the function is not enabled. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _vpc_api01_0004__table3576833291556:
.. table:: **Table 7** **route** objects
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------+
| Name | Type | Description |
+=======================+=======================+==========================================================================================================================+
| destination | String | - Specifies the destination network segment of a route. |
| | | - The value must be in CIDR format. |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------+
| nexthop | String | - Specifies the next hop of a route. |
| | | - The value must be an IP address and must belong to the subnet in the VPC. Otherwise, this value does not take effect. |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------+
Example Response
----------------
.. code-block::
{
"vpc": {
"id": "99d9d709-8478-4b46-9f3f-2206b1023fd3",
"name": "vpc1",
"description": "test1",
"cidr": "192.168.0.0/16",
"status": "OK",
"enterprise_project_id": "0",
"routes": [],
"enable_shared_snat": true
}
}
Status Code
-----------
See :ref:`Status Codes `.
Error Code
----------
See :ref:`Error Codes `.