功能介紹
該API用于在指定的Namespace下通過 云存儲(chǔ) 服務(wù)中的云存儲(chǔ)(EVS、 SFS 、OBS)去創(chuàng)建PVC(PersistentVolumeClaim)。該API待廢棄,請(qǐng)使用Kubernetes PVC相關(guān)接口。
存儲(chǔ)管理的URL格式為:https://{clusterid}.Endpoint/uri。其中{clusterid}為集群ID,uri為資源路徑,也即API訪問的路徑。如果使用https://Endpoint/uri,則必須指定請(qǐng)求header中的X-Cluster-ID參數(shù)。
調(diào)用方法
請(qǐng)參見如何調(diào)用API。
URI
POST /api/v1/namespaces/{namespace}/cloudpersistentvolumeclaims
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
namespace |
是 |
String |
指定PersistentVolumeClaim所在的命名空間。 使用namespace有如下約束:
|
請(qǐng)求參數(shù)
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
Content-Type |
是 |
String |
消息體的類型(格式) |
|
X-Auth-Token |
是 |
String |
調(diào)用接口的認(rèn)證方式分為Token和AK/SK兩種,如果您使用的Token方式,此參數(shù)為必填,請(qǐng)?zhí)顚慣oken的值,獲取方式請(qǐng)參見獲取token。 |
|
X-Cluster-ID |
否 |
String |
集群ID,使用https://Endpoint/uri這種URL格式時(shí)必須指定此參數(shù)。獲取方式請(qǐng)參見如何獲取接口URI中參數(shù)。 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
apiVersion |
是 |
String |
API版本,固定值v1 |
|
kind |
是 |
String |
API類型,固定值PersistentVolumeClaim |
|
metadata |
是 |
metadata是集群對(duì)象的元數(shù)據(jù)定義,是集合類的元素類型,包含一組由不同名稱定義的屬性。 |
|
|
spec |
是 |
spec是集合類的元素類型,用戶對(duì)需要管理的集群對(duì)象進(jìn)行詳細(xì)描述的主體部分都在spec中給出。系統(tǒng)通過spec的描述來創(chuàng)建或更新對(duì)象。 |
|
|
status |
否 |
status是當(dāng)前PersistentVolumeClaim的狀態(tài)信息,創(chuàng)建時(shí)不需要添加status參數(shù)。 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
name |
是 |
String |
PersistentVolumeClaim名稱,可以包含小寫字母、數(shù)字、連字符和點(diǎn),開頭和結(jié)尾必須是字母或數(shù)字,最長(zhǎng)253個(gè)字符,同一namespace下name不能重復(fù)。 |
|
labels |
否 |
String |
PersistentVolumeClaim標(biāo)簽,key/value對(duì)格式。
|
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
volumeID |
是 |
String |
資源需為已經(jīng)存在的存儲(chǔ)資源
|
|
storageType |
是 |
String |
云存儲(chǔ)的類型,和volumeID搭配使用。即volumeID和storageType必須同時(shí)被配置。
|
|
accessModes |
是 |
Array of strings |
指定volume應(yīng)該具有的訪問模式,列表中僅第一個(gè)配置參數(shù)有效。
|
|
storageClassName |
否 |
String |
PVC的StorageClass名稱 |
|
volumeName |
否 |
String |
PVC綁定的PV名稱 |
|
resources |
否 |
資源需求和限制 |
|
|
volumeMode |
否 |
String |
PVC指定的PV類型 |
響應(yīng)參數(shù)
狀態(tài)碼: 201
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
apiVersion |
String |
API版本,固定值v1 |
|
kind |
String |
API類型,固定值PersistentVolumeClaim |
|
metadata |
metadata是集群對(duì)象的元數(shù)據(jù)定義,是集合類的元素類型,包含一組由不同名稱定義的屬性。 |
|
|
spec |
spec是集合類的元素類型,用戶對(duì)需要管理的集群對(duì)象進(jìn)行詳細(xì)描述的主體部分都在spec中給出。系統(tǒng)通過spec的描述來創(chuàng)建或更新對(duì)象。 |
|
|
status |
status是當(dāng)前PersistentVolumeClaim的狀態(tài)信息,創(chuàng)建時(shí)不需要添加status參數(shù)。 |
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
name |
String |
PersistentVolumeClaim名稱,可以包含小寫字母、數(shù)字、連字符和點(diǎn),開頭和結(jié)尾必須是字母或數(shù)字,最長(zhǎng)253個(gè)字符,同一namespace下name不能重復(fù)。 |
|
labels |
String |
PersistentVolumeClaim標(biāo)簽,key/value對(duì)格式。
|
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
volumeID |
String |
資源需為已經(jīng)存在的存儲(chǔ)資源
|
|
storageType |
String |
云存儲(chǔ)的類型,和volumeID搭配使用。即volumeID和storageType必須同時(shí)被配置。
|
|
accessModes |
Array of strings |
指定volume應(yīng)該具有的訪問模式,列表中僅第一個(gè)配置參數(shù)有效。
|
|
storageClassName |
String |
PVC的StorageClass名稱 |
|
volumeName |
String |
PVC綁定的PV名稱 |
|
resources |
資源需求和限制 |
|
|
volumeMode |
String |
PVC指定的PV類型 |
請(qǐng)求示例
指定EVS 云硬盤 ID創(chuàng)建PersistentVolumeClaim
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" ]
}
}
響應(yīng)示例
狀態(tài)碼: 201
創(chuàng)建PersistentVolumeClaim作業(yè)下發(fā)成功。
{
"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代碼示例
SDK代碼示例如下。
指定EVS云硬盤ID創(chuàng)建PersistentVolumeClaim
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) {
String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials()
.withAk(ak)
.withSk(sk);
CceClient client = CceClient.newBuilder()
.withCredential(auth)
.withRegion(CceRegion.valueOf("cn-north-4"))
.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());
}
}
}
指定EVS云硬盤ID創(chuàng)建PersistentVolumeClaim
# coding: utf-8
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__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
credentials = BasicCredentials(ak, sk) \
client = CceClient.new_builder() \
.with_credentials(credentials) \
.with_region(CceRegion.value_of("cn-north-4")) \
.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)
指定EVS云硬盤ID創(chuàng)建PersistentVolumeClaim
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() {
ak := "<YOUR AK>"
sk := "<YOUR SK>"
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
Build()
client := cce.NewCceClient(
cce.CceClientBuilder().
WithRegion(region.ValueOf("cn-north-4")).
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)
}
}
更多編程語言的SDK代碼示例,請(qǐng)參見API Explorer的代碼示例頁簽,可生成自動(dòng)對(duì)應(yīng)的SDK代碼示例。
狀態(tài)碼
|
狀態(tài)碼 |
描述 |
|---|---|
|
201 |
創(chuàng)建PersistentVolumeClaim作業(yè)下發(fā)成功。 |
錯(cuò)誤碼
請(qǐng)參見錯(cuò)誤碼。
