86 lines
1.9 KiB
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
|
|
}
|