周玉环 d906a41c2e first commit 2 hari lalu
..
auth d906a41c2e first commit 2 hari lalu
cloudpods d906a41c2e first commit 2 hari lalu
example d906a41c2e first commit 2 hari lalu
informer d906a41c2e first commit 2 hari lalu
models d906a41c2e first commit 2 hari lalu
modulebase d906a41c2e first commit 2 hari lalu
modules d906a41c2e first commit 2 hari lalu
options d906a41c2e first commit 2 hari lalu
utils d906a41c2e first commit 2 hari lalu
LICENSE d906a41c2e first commit 2 hari lalu
README.md d906a41c2e first commit 2 hari lalu
aksk.go d906a41c2e first commit 2 hari lalu
assume.go d906a41c2e first commit 2 hari lalu
cas.go d906a41c2e first commit 2 hari lalu
catalog.go d906a41c2e first commit 2 hari lalu
doc.go d906a41c2e first commit 2 hari lalu
input.go d906a41c2e first commit 2 hari lalu
mcclient.go d906a41c2e first commit 2 hari lalu
oauth2.go d906a41c2e first commit 2 hari lalu
oidc.go d906a41c2e first commit 2 hari lalu
rand.go d906a41c2e first commit 2 hari lalu
saml.go d906a41c2e first commit 2 hari lalu
session.go d906a41c2e first commit 2 hari lalu
token.go d906a41c2e first commit 2 hari lalu
token2.go d906a41c2e first commit 2 hari lalu
token3.go d906a41c2e first commit 2 hari lalu
tokenman.go d906a41c2e first commit 2 hari lalu
tokensimple.go d906a41c2e first commit 2 hari lalu
verify.go d906a41c2e first commit 2 hari lalu

README.md

Yunion OneCloud API go library

Login to first controlplane node of your cluster and execute ocadm cluster rcadmin to get auth info.

For example:

$ ocadm cluster rcadmin
export OS_AUTH_URL=https://10.127.100.2:30500/v3
export OS_USERNAME=sysadmin
export OS_PASSWORD=7AQMP9H2umQvbxxx
export OS_PROJECT_DOMAIN=default
export OS_PROJECT_NAME=system
export YUNION_INSECURE=true
export OS_REGION_NAME=region0
export OS_ENDPOINT_TYPE=publicURL

Sample code

package main

import (
	"context"
	"fmt"

	"yunion.io/x/jsonutils"

	"yunion.io/x/onecloud/pkg/mcclient"
	modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
)

func main() {
	client := mcclient.NewClient("https://10.127.100.2:30500/v3",
		60,
		true,
		true,
		"",
		"")
	token, err := client.Authenticate("sysadmin", "7AQMP9H2umQvbxxx", "Default", "system", "Default")
	if err != nil {
		panic(err)
	}
	s := client.NewSession(context.Background(),
		"region0",
		"",
		"publicURL",
		token,
		)

	params := jsonutils.NewDict()
	params.Set("scope", jsonutils.NewString("system"))

	result, err := modules.Servers.List(s, params)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s", jsonutils.Marshal(result).PrettyString())
}

使用统一API入口调用

package main

import (
	"context"
	"fmt"

	"yunion.io/x/jsonutils"

	"yunion.io/x/onecloud/pkg/mcclient"
	modules "yunion.io/x/onecloud/pkg/mcclient/modules/compute"
)

// 文档说明: https://www.cloudpods.org/docs/development/apisdk/apigateway/
func main() {
	client := mcclient.NewClient("https://10.127.100.2/api/s/identity/v3", // 注意此地址不带端口
		60,
		true,
		true,
		"",
		"")
	token, err := client.Authenticate("sysadmin", "7AQMP9H2umQvbxxx", "Default", "system", "Default")
	if err != nil {
		panic(err)
	}
	s := client.NewSession(context.Background(),
		"region0",
		"",
		"apigateway", // 注意此endpoint类型
		token,
		)


	params := jsonutils.NewDict()
	params.Set("scope", jsonutils.NewString("system"))

	result, err := modules.Servers.List(s, params)
	if err != nil {
		panic(err)
	}
	fmt.Printf("%s", jsonutils.Marshal(result).PrettyString())
}