JCC-CSScheduler/executor/internal/task/create_ecs/huaweicloud.go

86 lines
1.9 KiB
Go

package create_ecs
import (
"encoding/json"
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
ecs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2/model"
region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ecs/v2/region"
)
// HuaweiCloud实现了CloudProvider接口
type HuaweiCloud struct{}
var serverbody model.PrePaidServer
var hwConfigMap map[string]interface{}
var hwclient ecs.EcsClient
func HWCloudConfig(configMap map[string]interface{}) {
hwConfigMap = configMap
jsonData, err := json.Marshal(configMap)
if err != nil {
return
}
err = json.Unmarshal(jsonData, &serverbody)
if err != nil {
return
}
ak := configMap["AccessKeyId"].(string)
sk := configMap["AccessKeySecret"].(string)
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
Build()
hwclient = *ecs.NewEcsClient(
ecs.EcsClientBuilder().
WithRegion(region.ValueOf(configMap["Region"].(string))).
WithCredential(auth).
Build())
}
func (a *HuaweiCloud) CreateServer() (string, error) {
request := &model.CreateServersRequest{}
request.Body = &model.CreateServersRequestBody{
Server: &serverbody,
}
response, err := hwclient.CreateServers(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
//ids := response.ServerIds
return "", nil
}
func (a *HuaweiCloud) RunCommand(commands []string, instanceID string) (string, error) {
//TODO implement me
panic("implement me")
}
func (a *HuaweiCloud) DestroyServer(instanceID string) (string, error) {
request := &model.DeleteServersRequest{}
var listServersbody = []model.ServerId{
{
Id: instanceID,
},
}
request.Body = &model.DeleteServersRequestBody{
Servers: listServersbody,
}
response, err := hwclient.DeleteServers(request)
if err != nil {
return "", err
}
return response.String(), nil
}