mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
华为云删除硬盘时删除快照
This commit is contained in:
@@ -18,16 +18,16 @@ type IBaseManager interface {
|
||||
|
||||
type IManager interface {
|
||||
IBaseManager
|
||||
// 获取资源列表 GET <base_url>/cloudservers/?<querys>
|
||||
List(querys map[string]string) (*responses.ListResult, error)
|
||||
// 根据上文获取资源列表 GET <base_url>/cloudservers/<cloudserver_id>/nics?<querys>
|
||||
ListInContext(ctx IManagerContext, querys map[string]string) (*responses.ListResult, error)
|
||||
ListInContextWithSpec(ctx IManagerContext, spec string, querys map[string]string, responseKey string) (*responses.ListResult, error)
|
||||
// 获取资源列表 GET <base_url>/cloudservers/?<queries>
|
||||
List(queries map[string]string) (*responses.ListResult, error)
|
||||
// 根据上文获取资源列表 GET <base_url>/cloudservers/<cloudserver_id>/nics?<queries>
|
||||
ListInContext(ctx IManagerContext, queries map[string]string) (*responses.ListResult, error)
|
||||
ListInContextWithSpec(ctx IManagerContext, spec string, queries map[string]string, responseKey string) (*responses.ListResult, error)
|
||||
|
||||
// 查询单个资源 GET <base_url>/cloudservers/<cloudserver_id>?<querys>
|
||||
Get(id string, querys map[string]string) (jsonutils.JSONObject, error)
|
||||
// 根据上文获取资源查询单个资源 GET <base_url>/cloudservers/<cloudserver_id>/nics/<nic_id>?<querys>
|
||||
GetInContext(ctx IManagerContext, id string, querys map[string]string) (jsonutils.JSONObject, error)
|
||||
// 查询单个资源 GET <base_url>/cloudservers/<cloudserver_id>?<queries>
|
||||
Get(id string, queries map[string]string) (jsonutils.JSONObject, error)
|
||||
// 根据上文获取资源查询单个资源 GET <base_url>/cloudservers/<cloudserver_id>/nics/<nic_id>?<queries>
|
||||
GetInContext(ctx IManagerContext, id string, queries map[string]string) (jsonutils.JSONObject, error)
|
||||
|
||||
// 创建单个资源 POST <base_url>/cloudservers
|
||||
Create(params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
@@ -48,7 +48,7 @@ type IManager interface {
|
||||
// 根据上文删除单个资源 DELETE <base_url>/cloudservers/<cloudserver_id>/nics/<nic_id>
|
||||
DeleteInContext(ctx IManagerContext, id string, params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
// 根据上文和spec删除单个资源
|
||||
DeleteInContextWithSpec(ctx IManagerContext, id string, spec string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error)
|
||||
DeleteInContextWithSpec(ctx IManagerContext, id string, spec string, queries map[string]string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error)
|
||||
// 批量执行操作 POST <base_url>/cloudservers/<action>
|
||||
// BatchPerformAction(action string, params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
// 执行操作 POST <base_url>/cloudservers/<cloudserver_id>/<action>
|
||||
|
||||
@@ -118,26 +118,26 @@ func (self *SResourceManager) ListInContext(ctx manager.IManagerContext, queries
|
||||
return self.ListInContextWithSpec(ctx, "", queries, self.KeywordPlural)
|
||||
}
|
||||
|
||||
func (self *SResourceManager) ListInContextWithSpec(ctx manager.IManagerContext, spec string, querys map[string]string, responseKey string) (*responses.ListResult, error) {
|
||||
func (self *SResourceManager) ListInContextWithSpec(ctx manager.IManagerContext, spec string, queries map[string]string, responseKey string) (*responses.ListResult, error) {
|
||||
request := self.newRequest("GET", "", spec, ctx)
|
||||
for k, v := range querys {
|
||||
for k, v := range queries {
|
||||
request.AddQueryParam(k, v)
|
||||
}
|
||||
|
||||
return self._list(request, responseKey)
|
||||
}
|
||||
|
||||
func (self *SResourceManager) Get(id string, querys map[string]string) (jsonutils.JSONObject, error) {
|
||||
return self.GetInContext(nil, id, querys)
|
||||
func (self *SResourceManager) Get(id string, queries map[string]string) (jsonutils.JSONObject, error) {
|
||||
return self.GetInContext(nil, id, queries)
|
||||
}
|
||||
|
||||
func (self *SResourceManager) GetInContext(ctx manager.IManagerContext, id string, querys map[string]string) (jsonutils.JSONObject, error) {
|
||||
return self.GetInContextWithSpec(ctx, id, "", querys, self.Keyword)
|
||||
func (self *SResourceManager) GetInContext(ctx manager.IManagerContext, id string, queries map[string]string) (jsonutils.JSONObject, error) {
|
||||
return self.GetInContextWithSpec(ctx, id, "", queries, self.Keyword)
|
||||
}
|
||||
|
||||
func (self *SResourceManager) GetInContextWithSpec(ctx manager.IManagerContext, id string, spec string, querys map[string]string, responseKey string) (jsonutils.JSONObject, error) {
|
||||
func (self *SResourceManager) GetInContextWithSpec(ctx manager.IManagerContext, id string, spec string, queries map[string]string, responseKey string) (jsonutils.JSONObject, error) {
|
||||
request := self.newRequest("GET", id, spec, ctx)
|
||||
for k, v := range querys {
|
||||
for k, v := range queries {
|
||||
request.AddQueryParam(k, v)
|
||||
}
|
||||
|
||||
@@ -186,11 +186,15 @@ func (self *SResourceManager) Delete(id string, params jsonutils.JSONObject) (js
|
||||
}
|
||||
|
||||
func (self *SResourceManager) DeleteInContext(ctx manager.IManagerContext, id string, params jsonutils.JSONObject) (jsonutils.JSONObject, error) {
|
||||
return self.DeleteInContextWithSpec(ctx, id, "", params, self.Keyword)
|
||||
return self.DeleteInContextWithSpec(ctx, id, "", nil, params, self.Keyword)
|
||||
}
|
||||
|
||||
func (self *SResourceManager) DeleteInContextWithSpec(ctx manager.IManagerContext, id string, spec string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error) {
|
||||
func (self *SResourceManager) DeleteInContextWithSpec(ctx manager.IManagerContext, id string, spec string, queries map[string]string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error) {
|
||||
request := self.newRequest("DELETE", id, spec, ctx)
|
||||
for k, v := range queries {
|
||||
request.AddQueryParam(k, v)
|
||||
}
|
||||
|
||||
content := getContent(params)
|
||||
if len(content) > 0 {
|
||||
request.SetContent([]byte(content))
|
||||
|
||||
@@ -448,8 +448,11 @@ func (self *SRegion) CreateDisk(zoneId string, category string, name string, siz
|
||||
return disk.ID, err
|
||||
}
|
||||
|
||||
// https://support.huaweicloud.com/api-evs/zh-cn_topic_0058762428.html
|
||||
// 默认删除云硬盘关联的所有快照
|
||||
func (self *SRegion) DeleteDisk(diskId string) error {
|
||||
return DoDelete(self.ecsClient.Disks.Delete, diskId, nil, nil)
|
||||
queries := map[string]string{"cascade": "true"}
|
||||
return DoDeleteWithSpec(self.ecsClient.Disks.DeleteInContextWithSpec, nil, diskId, "", queries, nil)
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1112,7 +1112,7 @@ func (self *SRegion) AttachDisk(instanceId string, diskId string, device string)
|
||||
// 默认非强制卸载。delete_flag=0
|
||||
func (self *SRegion) DetachDisk(instanceId string, diskId string) error {
|
||||
path := fmt.Sprintf("detachvolume/%s", diskId)
|
||||
return DoDeleteWithSpec(self.ecsClient.Servers.DeleteInContextWithSpec, nil, instanceId, path, nil)
|
||||
return DoDeleteWithSpec(self.ecsClient.Servers.DeleteInContextWithSpec, nil, instanceId, path, nil, nil)
|
||||
}
|
||||
|
||||
// 目前无接口支持
|
||||
|
||||
@@ -147,5 +147,5 @@ func (self *SRegion) GetNetwroks(vpcId string) ([]SNetwork, error) {
|
||||
|
||||
func (self *SRegion) deleteNetwork(vpcId string, networkId string) error {
|
||||
ctx := &modules.SManagerContext{InstanceId: vpcId, InstanceManager: self.ecsClient.Vpcs}
|
||||
return DoDeleteWithSpec(self.ecsClient.Subnets.DeleteInContextWithSpec, ctx, networkId, "", nil)
|
||||
return DoDeleteWithSpec(self.ecsClient.Subnets.DeleteInContextWithSpec, ctx, networkId, "", nil, nil)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ type createFunc func(params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
type updateFunc func(id string, params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
type updateFunc2 func(ctx manager.IManagerContext, id string, spec string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error)
|
||||
type deleteFunc func(id string, params jsonutils.JSONObject) (jsonutils.JSONObject, error)
|
||||
type deleteFunc2 func(ctx manager.IManagerContext, id string, spec string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error)
|
||||
type deleteFunc2 func(ctx manager.IManagerContext, id string, spec string, queries map[string]string, params jsonutils.JSONObject, responseKey string) (jsonutils.JSONObject, error)
|
||||
type listInCtxFunc func(ctx manager.IManagerContext, querys map[string]string) (*responses.ListResult, error)
|
||||
type listInCtxWithSpecFunc func(ctx manager.IManagerContext, spec string, querys map[string]string, responseKey string) (*responses.ListResult, error)
|
||||
|
||||
@@ -172,11 +172,11 @@ func DoDelete(deleteFunc deleteFunc, id string, params jsonutils.JSONObject, res
|
||||
return unmarshalResult(ret, err, result)
|
||||
}
|
||||
|
||||
func DoDeleteWithSpec(deleteFunc deleteFunc2, ctx manager.IManagerContext, id string, spec string, params jsonutils.JSONObject) error {
|
||||
func DoDeleteWithSpec(deleteFunc deleteFunc2, ctx manager.IManagerContext, id string, spec string, queries map[string]string, params jsonutils.JSONObject) error {
|
||||
if len(id) == 0 {
|
||||
return fmt.Errorf(" id should not be empty")
|
||||
}
|
||||
|
||||
_, err := deleteFunc(ctx, id, spec, params, "")
|
||||
_, err := deleteFunc(ctx, id, spec, queries, params, "")
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user