1. go get github.com/gophercloud/gophercloud

  1.  
  1. import (
  2. "github.com/gophercloud/gophercloud"
  3. "github.com/gophercloud/gophercloud/openstack"
  4. "fmt"
  5. "crypto/rand"
  6.  
  7. "github.com/gophercloud/gophercloud/pagination"
  8. "golang.org/x/crypto/ssh"
  9. "time"
  10. "net"
  11. "github.com/golang/glog"
  12. "os"
  13. "github.com/gophercloud/gophercloud/openstack/identity/v3/projects"
  14. "encoding/json"
  15. "github.com/gophercloud/gophercloud/openstack/identity/v3/domains"
  16. "github.com/gophercloud/gophercloud/openstack/imageservice/v2/images"
  17. "github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
  18. "github.com/gophercloud/gophercloud/openstack/compute/v2/flavors"
  19. "github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
  20. "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones"
  21. )
  1. //认证
  2. scop := gophercloud.AuthScope{
  3. ProjectName:"xx",
  4. DomainName: "xx",
  5. }
  6. opts := gophercloud.AuthOptions{
  7. IdentityEndpoint: "http://xx:5000/v3",
  8. Username: "xx",
  9. Password: "xxxxxxx",
  10. DomainName: "default",
  11. Scope:&scop,
  12. }
  13. provider, err := openstack.AuthenticatedClient(opts)
  14. if err != nil {
  15. fmt.Printf("AuthenticatedClient : %v" , err)
  16. return
  17. }
  18.  
  19. func ListZones(provider *gophercloud.ProviderClient) (result []availabilityzones.AvailabilityZone) {
  20.  
  21. method := "ListZones"
  22. client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
  23. Region: "RegionOne",
  24. })
  25. fmt.Println(client)
  26. if err != nil {
  27. fmt.Printf("%s : %v" , method, err)
  28. return result
  29. }
  30. pager,_ := availabilityzones.List(client).AllPages()
  31.  
  32. result, err = availabilityzones.ExtractAvailabilityZones(pager)
  33.  
  34. return result
  35. }
  36. func ListProject(provider *gophercloud.ProviderClient) (result []projects.Project) {
  37. method := "ListProject"
  38. client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{
  39. Region: "RegionOne",
  40. })
  41. fmt.Println(client)
  42. if err != nil {
  43. fmt.Printf("%s : %v" , method, err)
  44. return result
  45. }
  46. pager := projects.List(client, projects.ListOpts{})
  47. fmt.Println(pager)
  48. err = pager.EachPage(func(page pagination.Page) (bool, error) {
  49. extract, _ := projects.ExtractProjects(page)
  50. result = extract
  51. return true, nil
  52. })
  53. return result
  54. }
  55.  
  56. func ListDomain(provider *gophercloud.ProviderClient) (result []domains.Domain) {
  57. method := "ListProject"
  58. client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{
  59. Region: "RegionOne",
  60. })
  61. fmt.Println(client)
  62. if err != nil {
  63. fmt.Printf("%s : %v" , method, err)
  64. return result
  65. }
  66. pager := domains.List(client, domains.ListOpts{})
  67. fmt.Println(pager)
  68. err = pager.EachPage(func(page pagination.Page) (bool, error) {
  69. extract, _ := domains.ExtractDomains(page)
  70. result = extract
  71. return true, nil
  72. })
  73. return result
  74. }
  75.  
  76. func ListImage(provider *gophercloud.ProviderClient) (result []images.Image) {
  77. method := "ListProject"
  78. client, err := openstack.NewImageServiceV2(provider, gophercloud.EndpointOpts{
  79. Region: "RegionOne",
  80. })
  81. fmt.Println(client)
  82. if err != nil {
  83. fmt.Printf("%s : %v" , method, err)
  84. return result
  85. }
  86. pager := images.List(client, images.ListOpts{})
  87. fmt.Println(pager)
  88. err = pager.EachPage(func(page pagination.Page) (bool, error) {
  89. extract, _ := images.ExtractImages(page)
  90. result = extract
  91. return true, nil
  92. })
  93. return result
  94. }
  95.  
  96. func ListNetwork(provider *gophercloud.ProviderClient) (result []networks.Network) {
  97. method := "ListNetwork"
  98. client, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{
  99. Region: "RegionOne",
  100. })
  101. fmt.Println(client)
  102. if err != nil {
  103. fmt.Printf("%s : %v" , method, err)
  104. return result
  105. }
  106. pager := networks.List(client, networks.ListOpts{})
  107. fmt.Println(pager)
  108. err = pager.EachPage(func(page pagination.Page) (bool, error) {
  109. extract, _ := networks.ExtractNetworks(page)
  110. result = extract
  111. return true, nil
  112. })
  113. return result
  114. }
  115.  
  116. func ListFlavor(provider *gophercloud.ProviderClient) (result []flavors.Flavor) {
  117. method := "ListNetwork"
  118. client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
  119. Region: "RegionOne",
  120. })
  121. fmt.Println(client)
  122. if err != nil {
  123. fmt.Printf("%s : %v" , method, err)
  124. return result
  125. }
  126. pager := flavors.ListDetail(client, flavors.ListOpts{})
  127. fmt.Println(pager)
  128. err = pager.EachPage(func(page pagination.Page) (bool, error) {
  129. extract, _ := flavors.ExtractFlavors(page)
  130. result = extract
  131. return true, nil
  132. })
  133. return result
  134. }
  135.  
  136. func CreateInstance(provider *gophercloud.ProviderClient, name string) {
  137.  
  138. fmt.Println("create instance..........")
  139. client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
  140. Region: "RegionOne",
  141. })
  142. ss, err := servers.Create(client, servers.CreateOpts{
  143. Name: name,
  144. FlavorRef: "64",
  145. ImageRef: "aba55c25-60b5-4097-882d-9625fbc8fc11",
  146. AvailabilityZone:"nova",
  147. Networks: []servers.Network{
  148. servers.Network{UUID:"79e9b0c2-7e49-49f9-a7e2-0e03dd2055b3"},
  149. },
  150. AdminPass:"root",
  151.  
  152. }).Extract()
  153.  
  154. if err != nil {
  155. fmt.Printf("Create : %v", err)
  156. return
  157. }
  158. fmt.Println(ss)
  159. }

openstack golang sdk使用的更多相关文章

  1. openstack python sdk list tenants get token get servers

    1,openstack python sdk 获取token 获取租户tenants projects #!/bin/bash export OS_PROJECT_DOMAIN_ID=default ...

  2. 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)

    Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...

  3. GOLANG SDK下载

    如果没有FQ的话是不能访问国外网站的,但是golang提供了中国站点,要下载sdk可以在中国站点下载 中国站点: http://www.golangtc.com/download

  4. elasticsearch golang的sdk使用

    文档第一 <elasticsearch权威指南>直接看官网在线版的,比较新,网上那些pdf版的,都是2.x版的,许多不兼容 官方API手册,可以选择版本. golang sdk库的选择 主 ...

  5. Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)

    Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...

  6. golang环境

    Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea.LiteIDE.Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj ...

  7. Windows搭建golang开发平台

    Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea.LiteIDE.Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj ...

  8. 2017.4.5 OpenStack简介

    OpenStack 管理的资源不是单机的而是一个分布的系统,把分布的计算.存储.网络.设备.资源组织起来,形成一个完整的云计算系统:OpenStack 也提供一个 UI,这里包括一个图形化的 UI:H ...

  9. go-elasticsearch 来自官方的 golang es client

    elasticsearch 终于有了官方的golang sdk 了,地址 https://github.com/elastic/go-elasticsearch 当前还不稳定,同时主要是对于es7 的 ...

随机推荐

  1. LINUX下安装pcre出现WARNING: 'aclocal-1.15' is missing on your system错误的解决办法

    1.下载安装包 wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 2.解压 tar -xzvf automake-1.15.tar. ...

  2. 【CSS3基础-Flex布局】

    关于Flex 背景 在flex布局出现以前,常用的水平和垂直居中对齐方式有很多.flex布局的出现基本规范了这一过程. 通过justify-content和align-items两个属性即解决了水平居 ...

  3. 搭建springboot项目

    1.搭建环境windows10+jdk1.8+eclipse4.8+maven 2.为了学习微服务架构学习搭建基础项目 3.分为两种搭建方式为maven项目和单独建立springboot项目(ecli ...

  4. ibatis运行的SQL语句的输出——通过配置log4j

    将ibatis 的log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句 ### 设置Logger输出级别和输出目的地 ###log4j.rootLogger=debug,st ...

  5. Sppring MVC核心应用-2

    一.Spring MVC框架中400状态码的请求错误:控制台BindException异常, 解决方法: 二.Sping 表单标签 三.数据校验 实现JSR 303验证步骤 四.REST风格 五.Sp ...

  6. html网站meta标签大全

    案例 一.天猫 <meta charset="utf-8"> <title>天猫TMALL</title> <meta name=&quo ...

  7. crontab基础笔记 思维导图版

    直接上图吧----------------------------------------------------------------------------------------------- ...

  8. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  9. CDH部署(以5.7.5为例)

    博客园首发,转载请注明出处https://www.cnblogs.com/tzxxh/p/9120020.html 一.准备工作(下面的内容括号内写master的表示仅在master节点执行,all代 ...

  10. Nginx中配置http和https做反向代理

    参考:http://www.zslin.com/web/article/detail/73 1.安装 sudo apt-get install nginx 2.配置: http_demo.conf # ...