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

111 lines
2.5 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{}
func (a *HuaweiCloud) AvailableCheck(instanceID string) bool {
//TODO implement me
panic("implement me")
}
func (a *HuaweiCloud) StartInstances(instanceID string) (string, error) {
//TODO implement me
panic("implement me")
}
func (a *HuaweiCloud) DeleteInstance(instanceID string) (string, error) {
//TODO implement me
panic("implement me")
}
func (a *HuaweiCloud) StopInstance(instanceID string) (string, error) {
//TODO implement me
panic("implement me")
}
func (a *HuaweiCloud) RebootInstances(instanceID string) (string, error) {
//TODO implement me
panic("implement me")
}
var serverbody model.PrePaidServer
var hwConfigMap map[string]interface{}
var hwclient ecs.EcsClient
func HWCloudConfig(authConfigs map[string]interface{}, ecsConfigs map[string]interface{}) {
hwConfigMap = ecsConfigs
jsonData, err := json.Marshal(ecsConfigs)
if err != nil {
return
}
err = json.Unmarshal(jsonData, &serverbody)
if err != nil {
return
}
ak := authConfigs["AccessKeyId"].(string)
sk := authConfigs["AccessKeySecret"].(string)
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
Build()
hwclient = *ecs.NewEcsClient(
ecs.EcsClientBuilder().
WithRegion(region.ValueOf(ecsConfigs["Region"].(string))).
WithCredential(auth).
Build())
}
func (a *HuaweiCloud) CreateServer() (string, 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, timeout int) (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
}