1. go get github.com/gophercloud/gophercloud


import (
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack"
"fmt"
"crypto/rand" "github.com/gophercloud/gophercloud/pagination"
"golang.org/x/crypto/ssh"
"time"
"net"
"github.com/golang/glog"
"os"
"github.com/gophercloud/gophercloud/openstack/identity/v3/projects"
"encoding/json"
"github.com/gophercloud/gophercloud/openstack/identity/v3/domains"
"github.com/gophercloud/gophercloud/openstack/imageservice/v2/images"
"github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
"github.com/gophercloud/gophercloud/openstack/compute/v2/flavors"
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/availabilityzones"
)
//认证
scop := gophercloud.AuthScope{
ProjectName:"xx",
DomainName: "xx",
}
opts := gophercloud.AuthOptions{
IdentityEndpoint: "http://xx:5000/v3",
Username: "xx",
Password: "xxxxxxx",
DomainName: "default",
Scope:&scop,
}
provider, err := openstack.AuthenticatedClient(opts)
if err != nil {
fmt.Printf("AuthenticatedClient : %v" , err)
return
} func ListZones(provider *gophercloud.ProviderClient) (result []availabilityzones.AvailabilityZone) { method := "ListZones"
client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager,_ := availabilityzones.List(client).AllPages() result, err = availabilityzones.ExtractAvailabilityZones(pager) return result
}
func ListProject(provider *gophercloud.ProviderClient) (result []projects.Project) {
method := "ListProject"
client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager := projects.List(client, projects.ListOpts{})
fmt.Println(pager)
err = pager.EachPage(func(page pagination.Page) (bool, error) {
extract, _ := projects.ExtractProjects(page)
result = extract
return true, nil
})
return result
} func ListDomain(provider *gophercloud.ProviderClient) (result []domains.Domain) {
method := "ListProject"
client, err := openstack.NewIdentityV3(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager := domains.List(client, domains.ListOpts{})
fmt.Println(pager)
err = pager.EachPage(func(page pagination.Page) (bool, error) {
extract, _ := domains.ExtractDomains(page)
result = extract
return true, nil
})
return result
} func ListImage(provider *gophercloud.ProviderClient) (result []images.Image) {
method := "ListProject"
client, err := openstack.NewImageServiceV2(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager := images.List(client, images.ListOpts{})
fmt.Println(pager)
err = pager.EachPage(func(page pagination.Page) (bool, error) {
extract, _ := images.ExtractImages(page)
result = extract
return true, nil
})
return result
} func ListNetwork(provider *gophercloud.ProviderClient) (result []networks.Network) {
method := "ListNetwork"
client, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager := networks.List(client, networks.ListOpts{})
fmt.Println(pager)
err = pager.EachPage(func(page pagination.Page) (bool, error) {
extract, _ := networks.ExtractNetworks(page)
result = extract
return true, nil
})
return result
} func ListFlavor(provider *gophercloud.ProviderClient) (result []flavors.Flavor) {
method := "ListNetwork"
client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
fmt.Println(client)
if err != nil {
fmt.Printf("%s : %v" , method, err)
return result
}
pager := flavors.ListDetail(client, flavors.ListOpts{})
fmt.Println(pager)
err = pager.EachPage(func(page pagination.Page) (bool, error) {
extract, _ := flavors.ExtractFlavors(page)
result = extract
return true, nil
})
return result
} func CreateInstance(provider *gophercloud.ProviderClient, name string) { fmt.Println("create instance..........")
client, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{
Region: "RegionOne",
})
ss, err := servers.Create(client, servers.CreateOpts{
Name: name,
FlavorRef: "64",
ImageRef: "aba55c25-60b5-4097-882d-9625fbc8fc11",
AvailabilityZone:"nova",
Networks: []servers.Network{
servers.Network{UUID:"79e9b0c2-7e49-49f9-a7e2-0e03dd2055b3"},
},
AdminPass:"root", }).Extract() if err != nil {
fmt.Printf("Create : %v", err)
return
}
fmt.Println(ss)
}

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. Oracle 执行计划的查看方式

    访问数据的方法:一.访问表的方法:1.全表扫描,2.ROWID扫描                                二.访问索引的方法:1.索引唯一性扫描,2.索引范围扫描,3.索引全扫 ...

  2. iOS audio不支持循环播放

    解决办法:监听播放完成事件(注意点,audio标签不能设置循环播放,去除标签 loop="loop"或者 loop="false",不然不走播放完成事件) $( ...

  3. MySQL学习【第十一篇存储引擎之事务解释】

    一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Ato ...

  4. python 用户注册用户名

    实现用户注册网站,编辑用户名时判断是否已经存在: 若存在则提示“The name you used have already existed,please change your name” 若不存在 ...

  5. Red Hat 7.5 Yum Replacement

    This system is not registered with an entitlement server. You can use subscription-manager to regist ...

  6. BootStrapValidate 简单使用

    前阵子用了bootstrapvalidate写了一个登录验证,这里小记一笔 首先需要引入 bootstrapValidator.css //可不引入 jquery-2.1.0.min.js boots ...

  7. 宏观看restframework序列化

    序列化 序列化意义 web有两种应用模式,一种是前后端不分离,一种是前后端分离,当前后端分离的时候,后端只需要向前端传输数据即可,不需要进行其他的操作,一般如果是中大型公司,都是前后端分离,这也是目前 ...

  8. android studio 调试技巧(简直太好用)

    android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...

  9. 生成并调用so动态库

    本文更新于2019-01-03. 生成库 头文件fn.h如下: #ifndef __FN_H__ #define __FN_H__ #ifdef __cplusplus extern "C& ...

  10. 学习笔记二:异步FIFO

      , ) //用格雷码的局限性:循环计数深度必须是2的n次幂,否则就失去了每次只变化一位的特性 (wclk,wrstn,wdata,wfull,winc,rclk,rrstn,rdata,rempt ...