加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

openstack golang sdk使用

发布时间:2020-12-16 09:32:28 所属栏目:大数据 来源:网络整理
导读: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""gi

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,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)
		return result
	}
	pager := domains.List(client,domains.ListOpts{})
	fmt.Println(pager)
	err = pager.EachPage(func(page pagination.Page) (bool,_ := 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,err)
		return result
	}
	pager := images.List(client,images.ListOpts{})
	fmt.Println(pager)
	err = pager.EachPage(func(page pagination.Page) (bool,_ := 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,err)
		return result
	}
	pager := networks.List(client,networks.ListOpts{})
	fmt.Println(pager)
	err = pager.EachPage(func(page pagination.Page) (bool,_ := networks.ExtractNetworks(page)
		result = extract
		return true,nil
	})
	return result
}

func ListFlavor(provider *gophercloud.ProviderClient) (result []flavors.Flavor) {
	method := "ListNetwork"
	client,err)
		return result
	}
	pager := flavors.ListDetail(client,flavors.ListOpts{})
	fmt.Println(pager)
	err = pager.EachPage(func(page pagination.Page) (bool,_ := flavors.ExtractFlavors(page)
		result = extract
		return true,nil
	})
	return result
}


func CreateInstance(provider *gophercloud.ProviderClient,name string) {

	fmt.Println("create instance..........")
	client,})
	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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读