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. java web 常识

    model.addattribute()的作用: 1.往前台传数据可以传对象,List,通过el表达式${}获取,类似于request.setAttribute("sts",sts ...

  2. SQL循环插入批量数据

    declare @i intdeclare @qid int set @i=1set @qid=100 while @i<50000begininsert into Order(orderid, ...

  3. python散记

    1.AOP 将不同的类的内部中雷同的代码和重复的功能,提取出来以重用. 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等 2.新式类,经典类 新式类 ...

  4. Linux --- Ubuntu16.04.5 LTS 虚拟机安装后的软件安装基础操作总结

    1. 配置安装源 因为默认是使用Ubuntu官方服务器,国内电脑使用外国服务器较慢,所以需使用国内的服务器(以下清华大学服务器为例). 方法一: (此过程很慢,实在不动就取消吧,加载一部分也够用,以后 ...

  5. Symfony 框架实战教程——第一天:创建项目(转)

    这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址  https://www.chrisyue.com/symfony-in-action-day ...

  6. LVM实操

    说明 以下所有操作都基于centos6.9 什么是LVM LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬 ...

  7. 面试被问到IIC,总结。

    Linux3.5内核中,IIC. i2c_add_driver i2c_register_driver a. at24cxx_driver放入i2c_bus_type的drv链表 并且从dev链表里取 ...

  8. flink 根据时间消费kafka

    经常遇到这样的场景,13点-14点的时候flink程序发生了故障,或者集群崩溃,导致实时程序挂掉1小时,程序恢复的时候想把程序倒回13点或者更前,重新消费kafka中的数据. 下面的代码就是根据指定时 ...

  9. leetcode记录-两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...

  10. 20155227 《Java程序设计》实验四 Android开发基础设计实验报告

    20155227 <Java程序设计>实验四 Android开发基础设计实验报告 任务一 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二 ...