openstack golang sdk使用
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使用的更多相关文章
- openstack python sdk list tenants get token get servers
1,openstack python sdk 获取token 获取租户tenants projects #!/bin/bash export OS_PROJECT_DOMAIN_ID=default ...
- 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)
Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...
- GOLANG SDK下载
如果没有FQ的话是不能访问国外网站的,但是golang提供了中国站点,要下载sdk可以在中国站点下载 中国站点: http://www.golangtc.com/download
- elasticsearch golang的sdk使用
文档第一 <elasticsearch权威指南>直接看官网在线版的,比较新,网上那些pdf版的,都是2.x版的,许多不兼容 官方API手册,可以选择版本. golang sdk库的选择 主 ...
- Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)
Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...
- golang环境
Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea.LiteIDE.Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj ...
- Windows搭建golang开发平台
Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea.LiteIDE.Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj ...
- 2017.4.5 OpenStack简介
OpenStack 管理的资源不是单机的而是一个分布的系统,把分布的计算.存储.网络.设备.资源组织起来,形成一个完整的云计算系统:OpenStack 也提供一个 UI,这里包括一个图形化的 UI:H ...
- go-elasticsearch 来自官方的 golang es client
elasticsearch 终于有了官方的golang sdk 了,地址 https://github.com/elastic/go-elasticsearch 当前还不稳定,同时主要是对于es7 的 ...
随机推荐
- 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. ...
- 【CSS3基础-Flex布局】
关于Flex 背景 在flex布局出现以前,常用的水平和垂直居中对齐方式有很多.flex布局的出现基本规范了这一过程. 通过justify-content和align-items两个属性即解决了水平居 ...
- 搭建springboot项目
1.搭建环境windows10+jdk1.8+eclipse4.8+maven 2.为了学习微服务架构学习搭建基础项目 3.分为两种搭建方式为maven项目和单独建立springboot项目(ecli ...
- ibatis运行的SQL语句的输出——通过配置log4j
将ibatis 的log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句 ### 设置Logger输出级别和输出目的地 ###log4j.rootLogger=debug,st ...
- Sppring MVC核心应用-2
一.Spring MVC框架中400状态码的请求错误:控制台BindException异常, 解决方法: 二.Sping 表单标签 三.数据校验 实现JSR 303验证步骤 四.REST风格 五.Sp ...
- html网站meta标签大全
案例 一.天猫 <meta charset="utf-8"> <title>天猫TMALL</title> <meta name=&quo ...
- crontab基础笔记 思维导图版
直接上图吧----------------------------------------------------------------------------------------------- ...
- CentOS6安装各种大数据软件 第三章:Linux基础软件的安装
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- CDH部署(以5.7.5为例)
博客园首发,转载请注明出处https://www.cnblogs.com/tzxxh/p/9120020.html 一.准备工作(下面的内容括号内写master的表示仅在master节点执行,all代 ...
- Nginx中配置http和https做反向代理
参考:http://www.zslin.com/web/article/detail/73 1.安装 sudo apt-get install nginx 2.配置: http_demo.conf # ...