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. 框架 Hibernate

    Hibernate 在test01右键新建其他找到hibernate文件夹下的Hibernate Configuration File(cfg.xml) <?xml version=" ...

  2. pl/sql下载

    详解Oracle客户端工具:PL/SQL工具下载: 下载地址:http://www.oraclejsq.com/article/010100114.html

  3. ztz11的noip模拟赛T2:查房

    链接: https://www.luogu.org/problemnew/show/U46611 思路: 这道题告你n-1条边就是骗你的 部分分也是骗你的 这道题连对边5分钟的事 一个点对另一个点有影 ...

  4. MySQL语句详解(用户表、密码、权限、远程)

    注: mysql.user表中Host为%的含义 Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1.这里的意思就是说root用户只能通过192.168 ...

  5. cmd命令操作Mysql数据库

    在一次考试中,笔者因考试的电脑上没有安装操作Mysql数据库的可视化工具而不知如何操作数据库,所以在这里可以提醒各位掌握 命令行来操作数据库也是非常重要的. 笔者以惨痛的教训来警惕大家. 进入正题: ...

  6. activemq的高级特性:通配符式分层订阅

    activemq的高级特性之通配符式分层订阅 队列的名称可以分层:aa.bb.cc.dd 可以匹配:aa.bb.cc.dd,aa.*.cc.dd,aa.> *:匹配当前层的内容 >:任何一 ...

  7. php的mysqli_connect函数显示 No such file or directory错误以及localhost换成127.0.0.1执行成功

    Centos7环境-php7-MariaDB5.5.60 (新安装的php7,执行php -m 显示有mysqli模块,php.ini没有改其它) 测试代码为: <?php //~ echo d ...

  8. 大专生自学html5到找到工作的心得

    先做个自我介绍,我13年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了.13年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学 ...

  9. Centos7前后台运行jar包

    方式一: java -jar lf-test-1.0-SNAPSHOT.jar 前台运行,当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出. 方式二: java -ja ...

  10. 以某课网日志分析为例 进入大数据 Spark SQL 的世界

    第1章 初探大数据 本章将介绍为什么要学习大数据.如何学好大数据.如何快速转型大数据岗位.本项目实战课程的内容安排.本项目实战课程的前置内容介绍.开发环境介绍.同时为大家介绍项目中涉及的Hadoop. ...