From 81802d29d1c13c00a15405242bddb842dba3a786 Mon Sep 17 00:00:00 2001 From: ioito Date: Thu, 6 Jun 2019 16:10:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=9B=E5=BB=BAserver?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/mcclient/example/server.go | 93 ++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 pkg/mcclient/example/server.go diff --git a/pkg/mcclient/example/server.go b/pkg/mcclient/example/server.go new file mode 100644 index 0000000000..e747a8dec0 --- /dev/null +++ b/pkg/mcclient/example/server.go @@ -0,0 +1,93 @@ +package example + +import ( + "context" + + "yunion.io/x/onecloud/pkg/mcclient/options" + + "yunion.io/x/jsonutils" + "yunion.io/x/log" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/modules" +) + +const ( + AuthURL = "https://10.168.222.209:5000/v3" + DomainName = "Default" + TenantDomain = "" + TenantName = "system" + Username = "a" + Password = "a" + Region = "Yunion" + EndpointType = "publicURL" + Debug = false +) + +func getSession() (*mcclient.ClientSession, error) { + client := mcclient.NewClient(AuthURL, 10, Debug, true, "", "") + token, err := client.Authenticate(Username, Password, DomainName, TenantName, TenantDomain) + if err != nil { + return nil, err + } + return client.NewSession(context.Background(), Region, "", EndpointType, token, "v2"), nil +} + +func CreateServerExample() error { + session, err := getSession() + if err != nil { + log.Errorf("get session error: %v", err) + return err + } + // params := options.ServerCreateOptions{} + // params.NAME = "test-create" + // params.VcpuCount = 1 + // params.MEMSPEC = "2G" + // params.Disk = []string{"a4171f87-7e70-43bf-852e-4a3e1bf7deab:local"} + + // 参数参考: docs/schemas/instance.yaml#InstanceCreate + params := map[string]interface{}{ + "name": "test-create", + "vcpu_count": 1, + "vmem_size": 2048, + "disks": []map[string]string{ + map[string]string{ + "image_id": "a4171f87-7e70-43bf-852e-4a3e1bf7deab", + "disk_type": "sys", + "backend": "local", + }, + }, + } + resp, err := modules.Servers.Create(session, jsonutils.Marshal(params)) + if err != nil { + log.Errorf("create server error: %v", err) + return err + } + log.Infof("result: %s", resp.PrettyString()) + return nil +} + +func GetServerExample() error { + session, err := getSession() + if err != nil { + log.Errorf("get session error: %v", err) + return err + } + + pendingDelete := true //回收站实例 + opts := options.ServerListOptions{} + opts.PendingDelete = &pendingDelete + + params, err := options.StructToParams(opts) + if err != nil { + log.Errorf("params error: %v", err) + return err + } + + server, err := modules.Servers.Get(session, "test-create", params) + if err != nil { + log.Errorf("get server info error") + return err + } + log.Infof("server info: %s", server.PrettyString()) + return nil +}