前置条件
开通服务
申请开通云办公服务的具体操作请参考开通云办公服务API
获取AK/SK
开发者在使用前需先获取账号的ak、sk、projectId、endpoint。
您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的 AK/SK。更多信息请查看访问密钥。 endpoint 华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点。 projectId 云服务所在项目 ID ,根据你想操作的项目所属区域选择对应的项目 ID 。
运行环境
Go 1.16 及其以上版本。
SDK获取和安装
SDK获取和安装
Copied!
go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3
示例代码
调用前请替换示例中的变量,请根据需要执行的方法注释掉无关方法,并执行Run Application。
Copied!
package main
import (
"fmt"
"os"
coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config"
workspace "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2"
workspaceModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2/model"
workspaceRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2/region"
)
type WorkspaceDesktopsManageDemo struct{}
func NewWorkspaceDesktopsManageDemoDefault() WorkspaceDesktopsManageDemo {
w := WorkspaceDesktopsManageDemo{}
return w
}
func main() {
ak := os.Getenv("HUAWEICLOUD_SDK_AK")
sk := os.Getenv("HUAWEICLOUD_SDK_SK")
projectId := "<YOUR PROJECTID>"
auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build()
config := coreConfig.DefaultHttpConfig()
config.WithIgnoreSSLVerification(true)
client := *workspace.NewWorkspaceClient(workspace.WorkspaceClientBuilder().
WithCredential(auth).
WithRegion(workspaceRegion.ValueOf("cn-north-4")).
WithHttpConfig(config).
Build())
workspaceDesktopsManageDemoListDesktops(client)
}
func workspaceDesktopsManageDemoListDesktops(workspaceClient workspace.WorkspaceClient) {
listDesktopsRequestParam := workspaceModel.ListDesktopsRequest{}
listDesktopsResponse, err := workspaceClient.ListDesktops(&listDesktopsRequestParam)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(listDesktopsResponse.String())
}
func workspaceDesktopsManageDemoCreateDesktop(workspaceClient workspace.WorkspaceClient) {
userName := "{your userName string}"
userEmail := "{your userEmail string}"
userGroup := "{your userGroup string}"
productId := "{your productId string}"
imageId := "{your imageId string}"
imageType := "{your imageType string}"
volumeType := "{your volumeType string}"
volumeSize := int32(80)
desktops := make([]workspaceModel.Desktop, 0)
desktops = append(desktops,
workspaceModel.Desktop{
UserName: userName,
UserEmail: userEmail,
UserGroup: &userGroup,
},
)
createDesktopReq := workspaceModel.CreateDesktopReq{}
createDesktopReqDesktopTypeParam := workspaceModel.GetCreateDesktopReqDesktopTypeEnum().DEDICATED
createDesktopReqRootVolumeParam := workspaceModel.Volume{
Type: volumeType,
Size: volumeSize,
}
createDesktopReq.ProductId = productId
createDesktopReq.ImageId = imageId
createDesktopReq.ImageType = imageType
createDesktopReq.DesktopType = createDesktopReqDesktopTypeParam
createDesktopReq.Desktops = desktops
createDesktopReq.RootVolume = &createDesktopReqRootVolumeParam
createDesktopRequestParam := workspaceModel.CreateDesktopRequest{
Body: &createDesktopReq,
}
createDesktopResponse, err := workspaceClient.CreateDesktop(&createDesktopRequestParam)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(createDesktopResponse.String())
}
func workspaceDesktopsManageDemoBatchRunDesktops(workspaceClient workspace.WorkspaceClient) {
desktopId := "{your desktopId string}"
opType := "{your opType string}"
desktopIds := make([]string, 0)
desktopIds = append(desktopIds, desktopId)
batchActionDesktopsReq := workspaceModel.BatchActionDesktopsReq{}
batchActionDesktopsReq.DesktopIds = desktopIds
batchActionDesktopsReq.OpType = opType
batchRunDesktopsRequestParam := workspaceModel.BatchRunDesktopsRequest{
Body: &batchActionDesktopsReq,
}
batchRunDesktopsResponse, err := workspaceClient.BatchRunDesktops(&batchRunDesktopsRequestParam)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(batchRunDesktopsResponse.String())
}
func workspaceDesktopsManageDemoDeleteDesktop(workspaceClient workspace.WorkspaceClient) {
desktopId := "{your desktopId string}"
deleteDesktopRequestParam := workspaceModel.DeleteDesktopRequest{
DesktopId: desktopId,
}
deleteDesktopResponse, err := workspaceClient.DeleteDesktop(&deleteDesktopRequestParam)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(deleteDesktopResponse.String())
}
版本说明
本示例基于华为云SDK开发
功能介绍
基于华为云 Go SDK对云办公桌面进行操作的代码示例。 其中包括:对云办公桌面进行操作的增(创建桌面)、删(删除单个桌面)、改(操作桌面)、查(查询桌面列表)。 本示例将以上操作整合,完成了从云办公桌面的创建到查询、修改,再到删除的整个生命周期的覆盖。
前置条件
开通服务
申请开通云办公服务的具体操作请参考开通云办公服务API
获取AK/SK
开发者在使用前需先获取账号的ak、sk、projectId、endpoint。
您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。请在华为云控制台“我的凭证-访问密钥”页面上创建和查看您的 AK/SK。更多信息请查看访问密钥。 endpoint 华为云各服务应用区域和各服务的终端节点,详情请查看地区和终端节点。 projectId 云服务所在项目 ID ,根据你想操作的项目所属区域选择对应的项目 ID 。
运行环境
Go 1.16 及其以上版本。
SDK获取和安装
SDK获取和安装
示例代码
调用前请替换示例中的变量,请根据需要执行的方法注释掉无关方法,并执行Run Application。
package main import ( "fmt" "os" coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" coreConfig "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" workspace "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2" workspaceModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2/model" workspaceRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/workspace/v2/region" ) type WorkspaceDesktopsManageDemo struct{} func NewWorkspaceDesktopsManageDemoDefault() WorkspaceDesktopsManageDemo { w := WorkspaceDesktopsManageDemo{} return w } func main() { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") projectId := "<YOUR PROJECTID>" auth := coreBasic.NewCredentialsBuilder().WithAk(ak).WithSk(sk).WithProjectId(projectId).Build() config := coreConfig.DefaultHttpConfig() config.WithIgnoreSSLVerification(true) client := *workspace.NewWorkspaceClient(workspace.WorkspaceClientBuilder(). WithCredential(auth). WithRegion(workspaceRegion.ValueOf("cn-north-4")). WithHttpConfig(config). Build()) // 查询桌面列表 workspaceDesktopsManageDemoListDesktops(client) // 创建桌面 // workspaceDesktopsManageDemoCreateDesktop(client) // 操作桌面 // workspaceDesktopsManageDemoBatchRunDesktops(client) // 删除单个桌面 // workspaceDesktopsManageDemoDeleteDesktop(client) } func workspaceDesktopsManageDemoListDesktops(workspaceClient workspace.WorkspaceClient) { listDesktopsRequestParam := workspaceModel.ListDesktopsRequest{} listDesktopsResponse, err := workspaceClient.ListDesktops(&listDesktopsRequestParam) if err != nil { fmt.Println(err) return } fmt.Println(listDesktopsResponse.String()) } func workspaceDesktopsManageDemoCreateDesktop(workspaceClient workspace.WorkspaceClient) { userName := "{your userName string}" userEmail := "{your userEmail string}" userGroup := "{your userGroup string}" // 套餐ID productId := "{your productId string}" // 镜像ID imageId := "{your imageId string}" // 镜像类型。private:私有镜像。gold:公共镜像。 imageType := "{your imageType string}" // 系统盘类型。SAS:高IO。 SSD:超高IO。 volumeType := "{your volumeType string}" // 磁盘容量,单位GB。系统盘大小范围[80-32760],数据盘范围[10-32760],大小为10的倍数。 volumeSize := int32(80) desktops := make([]workspaceModel.Desktop, 0) desktops = append(desktops, workspaceModel.Desktop{ UserName: userName, UserEmail: userEmail, UserGroup: &userGroup, }, ) createDesktopReq := workspaceModel.CreateDesktopReq{} createDesktopReqDesktopTypeParam := workspaceModel.GetCreateDesktopReqDesktopTypeEnum().DEDICATED createDesktopReqRootVolumeParam := workspaceModel.Volume{ Type: volumeType, Size: volumeSize, } createDesktopReq.ProductId = productId createDesktopReq.ImageId = imageId createDesktopReq.ImageType = imageType createDesktopReq.DesktopType = createDesktopReqDesktopTypeParam createDesktopReq.Desktops = desktops createDesktopReq.RootVolume = &createDesktopReqRootVolumeParam createDesktopRequestParam := workspaceModel.CreateDesktopRequest{ Body: &createDesktopReq, } createDesktopResponse, err := workspaceClient.CreateDesktop(&createDesktopRequestParam) if err != nil { fmt.Println(err) return } fmt.Println(createDesktopResponse.String()) } func workspaceDesktopsManageDemoBatchRunDesktops(workspaceClient workspace.WorkspaceClient) { desktopId := "{your desktopId string}" // 操作类型。 os-start 启动。 reboot 重启。 os-stop 关机。 opType := "{your opType string}" desktopIds := make([]string, 0) desktopIds = append(desktopIds, desktopId) batchActionDesktopsReq := workspaceModel.BatchActionDesktopsReq{} batchActionDesktopsReq.DesktopIds = desktopIds batchActionDesktopsReq.OpType = opType batchRunDesktopsRequestParam := workspaceModel.BatchRunDesktopsRequest{ Body: &batchActionDesktopsReq, } batchRunDesktopsResponse, err := workspaceClient.BatchRunDesktops(&batchRunDesktopsRequestParam) if err != nil { fmt.Println(err) return } fmt.Println(batchRunDesktopsResponse.String()) } func workspaceDesktopsManageDemoDeleteDesktop(workspaceClient workspace.WorkspaceClient) { desktopId := "{your desktopId string}" deleteDesktopRequestParam := workspaceModel.DeleteDesktopRequest{ DesktopId: desktopId, } deleteDesktopResponse, err := workspaceClient.DeleteDesktop(&deleteDesktopRequestParam) if err != nil { fmt.Println(err) return } fmt.Println(deleteDesktopResponse.String()) }
参考
更多信息请参考: 查询桌面列表API 创建桌面API 删除单个桌面API 操作桌面API
修订记录