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. Spring+Hibernate+struts2+JPA 注解+跨域//完成手机端点击加载更多 下拉加载更多

    一.使用IDEA新建一个maven项目(student) 1.1.0编写pom文件,添加项目所需要的包 <?xml version="1.0" encoding=" ...

  2. mysql将日期字符串转换

    举个例子: 给定字符串为07/31/2018,想要把格式转换成20180731 需要用到以下两个函数: date_format(date,’%Y-%m-%d’) ————–>oracle中的to ...

  3. iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况

    1.自己先写一个 Demo 演示一下利用bugly测试崩溃的具体情况. 在ViewController里面实现崩溃代码如下:  运行后 毫无疑问程序报错了! 2.使用到第三方的框架Bugly,官方下载 ...

  4. Java常用修饰符总结

    修饰符是用于限定类型以及类型成员申明的一种符号,可用于修饰类.变量和方法,分为访问修饰符和非访问修饰符.访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能. ...

  5. Linux基础-3.用户、群组和权限

    1.用户及passwd文件 1)掌握/etc/passwd文件的功能:存储所有用户的相关信息,每一个用户占用一行记录,该文件也被称为用户信息数据库(Database) 2)/etc/passwd文件中 ...

  6. WebGl 缩放(矩阵变换)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. mac安装配置mysql

    目录 mac安装配置mysql 1.mysql的安装 2.设置root用户的密码 3.分别执行一下命令 4.配置mysql环境变量 mac安装配置mysql 1.mysql的安装 ​ 安装过程十分简单 ...

  8. python学习_条件判断语句_if

    #条件判断语句(if)#语法:if条件表达式:语句# 代码块#执行流程:if语句在执行时,会先对条件表达式进行求值判断#如果为True,则执行if后面的语句#如果为False,则不执行#默认情况下,i ...

  9. BugFree后台统计Bug信息

    以下为二维表信息 //统计严重等级Bug SELECT severity,count(severity) FROM `bf_bugview` where product_id=476 GROUP BY ...

  10. leetcode记录-字符串转整数

    实现 atoi,将字符串转为整数. 该函数首先根据需要丢弃任意多的空格字符,直到找到第一个非空格字符为止.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字 ...