Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,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)
}

大佬总结

以上是大佬教程为你收集整理的openstack golang sdk使用全部内容,希望文章能够帮你解决openstack golang sdk使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。