云办公服务桌面管理
引导式阅读
Go
云办公服务桌面管理
作者
c***r
上架时间
2023-11-17 07:04:12

版本说明

本示例基于华为云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获取和安装

go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3

示例代码

调用前请替换示例中的变量,请根据需要执行的方法注释掉无关方法,并执行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()) }

修订记录

发布日期 文档版本 修订说明
2022-10-17 1.0 文档首次发布