Creating a PVC (to be discarded)
Function
This API is used to create a PersistentVolumeClaim (PVC) in a specified namespace. A PVC is a request for PersistentVolume (PV). The PV carries details of real cloud storage such as EVS disks, SFS file systems, and OBS buckets. This API is to be deprecated. Use the corresponding Kubernetes PVC API instead.
The URL for storage management is in the format of https://{clusterid}.Endpoint/uri. In the URL, {clusterid} indicates the cluster ID, and uri indicates the resource path, that is, the path for API access. If https://Endpoint/uri is used, the X-Cluster-ID parameter in the request header must be specified.
Calling Method
For details, see Calling APIs.
URI
POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
namespace |
Yes |
String |
Namespace where the PVC is located. Constraints:
|
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
Content-Type |
Yes |
String |
Message body type (format). |
X-Auth-Token |
Yes |
String |
Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token. For details, see Obtaining a User Token. |
X-Cluster-ID |
No |
String |
Cluster ID. This field is mandatory when the URL format https://Endpoint/uri is used. For details about how to obtain the value, see How to Obtain Parameters in the API URI. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
apiVersion |
Yes |
String |
API version. The value is fixed at v1. |
kind |
Yes |
String |
API type. The value is fixed at PersistentVolumeClaim. |
metadata |
Yes |
Cluster object metadata, which is a collection of attributes. |
|
spec |
Yes |
PersistentVolumeClaimSpec object |
Detailed description of the cluster object. CCE creates or updates objects by defining or updating spec. |
status |
No |
PersistentVolumeClaimStatus object |
PVC status. The request to create a PVC does not need to carry this parameter. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
name |
Yes |
String |
PVC name. Enter 1 to 253 characters starting and ending with a letter or digit. Only lowercase letters, digits, hyphens (-), and periods (.) are allowed. PVC names must be unique in a namespace. |
labels |
No |
String |
PVC labels, in the format of key-value pairs.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
volumeID |
Yes |
String |
ID of an existing storage volume.
|
storageType |
Yes |
String |
Cloud storage class. This parameter is used together with volumeID. That is, volumeID and storageType must be configured at the same time.
|
accessModes |
Yes |
Array of strings |
Access mode of the volume. Only the first value in all selected options is valid.
|
storageClassName |
No |
String |
Storage class name of the PVC. |
volumeName |
No |
String |
Name of the PV bound to the PVC. |
resources |
No |
ResourceRequirements object |
Resource requests and limits. |
volumeMode |
No |
String |
PV type specified by the PVC. |
Response Parameters
Status code: 201
Parameter |
Type |
Description |
---|---|---|
apiVersion |
String |
API version. The value is fixed at v1. |
kind |
String |
API type. The value is fixed at PersistentVolumeClaim. |
metadata |
Cluster object metadata, which is a collection of attributes. |
|
spec |
PersistentVolumeClaimSpec object |
Detailed description of the cluster object. CCE creates or updates objects by defining or updating spec. |
status |
PersistentVolumeClaimStatus object |
PVC status. The request to create a PVC does not need to carry this parameter. |
Parameter |
Type |
Description |
---|---|---|
name |
String |
PVC name. Enter 1 to 253 characters starting and ending with a letter or digit. Only lowercase letters, digits, hyphens (-), and periods (.) are allowed. PVC names must be unique in a namespace. |
labels |
String |
PVC labels, in the format of key-value pairs.
|
Parameter |
Type |
Description |
---|---|---|
volumeID |
String |
ID of an existing storage volume.
|
storageType |
String |
Cloud storage class. This parameter is used together with volumeID. That is, volumeID and storageType must be configured at the same time.
|
accessModes |
Array of strings |
Access mode of the volume. Only the first value in all selected options is valid.
|
storageClassName |
String |
Storage class name of the PVC. |
volumeName |
String |
Name of the PV bound to the PVC. |
resources |
ResourceRequirements object |
Resource requests and limits. |
volumeMode |
String |
PV type specified by the PVC. |
Example Requests
Specifying an EVS volume ID and creating a PVC
POST /api/v1/namespaces/default/cloudpersistentvolumeclaims { "apiVersion" : "v1", "kind" : "PersistentVolumeClaim", "metadata" : { "name" : "csms-dev-create", "namespace" : "default" }, "spec" : { "volumeID" : "86b29e16-23db-11e7-9c83-fa163ec08232", "storageType" : "bs", "accessModes" : [ "ReadWriteMany" ] } }
Example Responses
Status code: 201
The job for creating a PVC is successfully delivered.
{ "kind" : "PersistentVolumeClaim", "apiVersion" : "v1", "metadata" : { "name" : " csms-dev-create ", "namespace" : "default", "selfLink" : "/api/v1/namespaces/default/persistentvolumeclaims/db-mysql-0", "uid" : "86b29e16-23db-11e7-9c83-fa163ec08232", "resourceVersion" : "1793115", "creationTimestamp" : "2017-04-18T02:05:42Z" }, "spec" : { "volumeName" : "csms-dev-create ", "accessModes" : [ "ReadWriteMany" ], "resources" : { "requests" : { "storage" : "1Gi" } } }, "status" : { "phase" : "Pending", "accessModes" : [ "ReadWriteMany" ] } }
SDK Sample Code
The SDK sample code is as follows.
Specifying an EVS volume ID and creating a PVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; import java.util.List; import java.util.ArrayList; public class CreateCloudPersistentVolumeClaimsSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateCloudPersistentVolumeClaimsRequest request = new CreateCloudPersistentVolumeClaimsRequest(); request.withNamespace("{namespace}"); PersistentVolumeClaim body = new PersistentVolumeClaim(); List<PersistentVolumeClaimSpec.AccessModesEnum> listSpecAccessModes = new ArrayList<>(); listSpecAccessModes.add(PersistentVolumeClaimSpec.AccessModesEnum.fromValue("ReadWriteMany")); PersistentVolumeClaimSpec specbody = new PersistentVolumeClaimSpec(); specbody.withVolumeID("86b29e16-23db-11e7-9c83-fa163ec08232") .withStorageType("bs") .withAccessModes(listSpecAccessModes); PersistentVolumeClaimMetadata metadatabody = new PersistentVolumeClaimMetadata(); metadatabody.withName("csms-dev-create"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withKind("PersistentVolumeClaim"); body.withApiVersion("v1"); request.withBody(body); try { CreateCloudPersistentVolumeClaimsResponse response = client.createCloudPersistentVolumeClaims(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Specifying an EVS volume ID and creating a PVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] credentials = BasicCredentials(ak, sk) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateCloudPersistentVolumeClaimsRequest() request.namespace = "{namespace}" listAccessModesSpec = [ "ReadWriteMany" ] specbody = PersistentVolumeClaimSpec( volume_id="86b29e16-23db-11e7-9c83-fa163ec08232", storage_type="bs", access_modes=listAccessModesSpec ) metadatabody = PersistentVolumeClaimMetadata( name="csms-dev-create" ) request.body = PersistentVolumeClaim( spec=specbody, metadata=metadatabody, kind="PersistentVolumeClaim", api_version="v1" ) response = client.create_cloud_persistent_volume_claims(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Specifying an EVS volume ID and creating a PVC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateCloudPersistentVolumeClaimsRequest{} request.Namespace = "{namespace}" var listAccessModesSpec = []model.PersistentVolumeClaimSpecAccessModes{ model.GetPersistentVolumeClaimSpecAccessModesEnum().READ_WRITE_MANY, } specbody := &model.PersistentVolumeClaimSpec{ VolumeID: "86b29e16-23db-11e7-9c83-fa163ec08232", StorageType: "bs", AccessModes: listAccessModesSpec, } metadatabody := &model.PersistentVolumeClaimMetadata{ Name: "csms-dev-create", } request.Body = &model.PersistentVolumeClaim{ Spec: specbody, Metadata: metadatabody, Kind: "PersistentVolumeClaim", ApiVersion: "v1", } response, err := client.CreateCloudPersistentVolumeClaims(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
201 |
The job for creating a PVC is successfully delivered. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot