forked from JointCloud/pcm-openstack
openstack 修改兼容多集群热加载
This commit is contained in:
parent
9a69ae0a12
commit
f4089bf62a
|
@ -2,6 +2,7 @@ package common
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"gitlink.org.cn/jcce-pcm/pcm-participant-openstack/internal/config"
|
||||
"io"
|
||||
|
@ -21,10 +22,10 @@ var C config.Config
|
|||
var (
|
||||
token string
|
||||
expiredAt time.Time
|
||||
Platform string
|
||||
// Platform string
|
||||
)
|
||||
|
||||
func GenerateToken() (string, string, time.Time) {
|
||||
/*func GenerateToken() (string, string, time.Time) {
|
||||
a := Auth{}
|
||||
var (
|
||||
TokenUrl string
|
||||
|
@ -45,7 +46,7 @@ func GenerateToken() (string, string, time.Time) {
|
|||
a.Auth.Identity.Password.User.Name = C.OpenstackConfig.Nudt.USER
|
||||
a.Auth.Identity.Password.User.Password = C.OpenstackConfig.Nudt.PASSWORD
|
||||
a.Auth.Identity.Password.User.Domain.Name = C.OpenstackConfig.Nudt.DOMAIN
|
||||
TokenUrl = C.OpenstackConfig.ZhiJiang.TokenUrl
|
||||
TokenUrl = C.OpenstackConfig.Nudt.TokenUrl
|
||||
default:
|
||||
//return nil, fmt.Errorf("platform %s not supported", Platform)
|
||||
}
|
||||
|
@ -75,13 +76,102 @@ func GenerateToken() (string, string, time.Time) {
|
|||
json.Unmarshal(result, &t)
|
||||
|
||||
return Platform, respUrl.Header.Get(C.OpenstackConfig.TokenHeader), t.Token.ExpiresAt
|
||||
}*/
|
||||
|
||||
func SignClient(r *http.Request, Platform string) (*http.Client, error) {
|
||||
a := Auth{}
|
||||
var (
|
||||
TokenUrl string
|
||||
)
|
||||
switch Platform {
|
||||
case C.OpenstackConfig.ZhiJiang.Platform:
|
||||
a.Auth.Scope.Project.Name = C.OpenstackConfig.ZhiJiang.USER
|
||||
a.Auth.Scope.Project.Domain.Id = C.OpenstackConfig.ZhiJiang.Id
|
||||
a.Auth.Identity.Methods = append(a.Auth.Identity.Methods, C.OpenstackConfig.ZhiJiang.AuthMethod)
|
||||
a.Auth.Identity.Password.User.Name = C.OpenstackConfig.ZhiJiang.USER
|
||||
a.Auth.Identity.Password.User.Password = C.OpenstackConfig.ZhiJiang.PASSWORD
|
||||
a.Auth.Identity.Password.User.Domain.Name = C.OpenstackConfig.ZhiJiang.DOMAIN
|
||||
TokenUrl = C.OpenstackConfig.ZhiJiang.TokenUrl
|
||||
case C.OpenstackConfig.Nudt.Platform:
|
||||
a.Auth.Scope.Project.Name = C.OpenstackConfig.Nudt.USER
|
||||
a.Auth.Scope.Project.Domain.Id = C.OpenstackConfig.Nudt.Id
|
||||
a.Auth.Identity.Methods = append(a.Auth.Identity.Methods, C.OpenstackConfig.Nudt.AuthMethod)
|
||||
a.Auth.Identity.Password.User.Name = C.OpenstackConfig.Nudt.USER
|
||||
a.Auth.Identity.Password.User.Password = C.OpenstackConfig.Nudt.PASSWORD
|
||||
a.Auth.Identity.Password.User.Domain.Name = C.OpenstackConfig.Nudt.DOMAIN
|
||||
TokenUrl = C.OpenstackConfig.Nudt.TokenUrl
|
||||
default:
|
||||
return nil, fmt.Errorf("platform %s not supported", Platform)
|
||||
}
|
||||
jsonStr, _ := json.Marshal(a)
|
||||
req_url, err := http.NewRequest("POST", TokenUrl, bytes.NewBuffer(jsonStr))
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
c := http.Client{Timeout: time.Duration(3) * time.Second}
|
||||
|
||||
respUrl, err := c.Do(req_url)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if respUrl.StatusCode != C.OpenstackConfig.Status_created {
|
||||
panic("获取token失败")
|
||||
}
|
||||
|
||||
defer respUrl.Body.Close()
|
||||
|
||||
var t Token
|
||||
|
||||
result, _ := io.ReadAll(respUrl.Body)
|
||||
json.Unmarshal(result, &t)
|
||||
|
||||
//设置client信任所有证书
|
||||
tr := &http.Transport{
|
||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
}
|
||||
client := &http.Client{
|
||||
Transport: tr,
|
||||
}
|
||||
return client, nil
|
||||
|
||||
//return Platform, respUrl.Header.Get(C.OpenstackConfig.TokenHeader), t.Token.ExpiresAt
|
||||
}
|
||||
|
||||
func GetToken() string {
|
||||
/*func GetToken() string {
|
||||
if time.Now().After(expiredAt) {
|
||||
Platform, token, expiredAt = GenerateToken()
|
||||
}
|
||||
return token
|
||||
}*/
|
||||
|
||||
func SendRequest(method, url string, in io.Reader, Platform string) (*[]byte, error) {
|
||||
r, err := http.NewRequest(method, url, in)
|
||||
if err != nil {
|
||||
fmt.Println("Error creating new request:", err)
|
||||
return nil, err
|
||||
}
|
||||
signedR, err := SignClient(r, Platform)
|
||||
if err != nil {
|
||||
fmt.Println("Error signing request:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res, err := signedR.Do(r)
|
||||
if err != nil {
|
||||
fmt.Println("Error sending request:", err)
|
||||
return nil, err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
body, err := io.ReadAll(res.Body)
|
||||
if err != nil {
|
||||
fmt.Println("Error reading response body:", err)
|
||||
return nil, err
|
||||
}
|
||||
return &body, nil
|
||||
}
|
||||
|
||||
func GetOpenstackConfWithPlatform(platform string) (*config.Conf, error) {
|
||||
|
|
Loading…
Reference in New Issue