openstack 修改兼容多集群热加载 bug

This commit is contained in:
qiwang 2024-01-03 20:36:50 +08:00
parent 03456c9a57
commit ed1cfbc87f
4 changed files with 84 additions and 24 deletions

View File

@ -30,7 +30,7 @@ openstackConfig:
OpenstackVolumev2Url: "http://10.105.20.9:8776/v2/aa7366b7f0e9453a9ba8bc699aa97b1e"
OpenstackLimitsUrl: "http://10.105.20.9:8774"
OpenstackBareMetalUrl: ""
Platform: "zhijiang"
Platform: "ZhiJiang"
Id: "default"
Nudt:
USER: "admin"

View File

@ -126,6 +126,9 @@ func SignClient(r *http.Request, Platform string) (*http.Client, error) {
var t Token
result, _ := io.ReadAll(respUrl.Body)
respUrl.Header.Get(C.OpenstackConfig.TokenHeader)
fmt.Println("Token###########:", respUrl.Header.Get(C.OpenstackConfig.TokenHeader))
json.Unmarshal(result, &t)
//设置client信任所有证书
@ -186,3 +189,59 @@ func GetOpenstackConfWithPlatform(platform string) (*config.Conf, error) {
}
return &conf, nil
}
func GetToken(Platform string) (token string) {
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:
}
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)
respUrl.Header.Get(C.OpenstackConfig.TokenHeader)
fmt.Println("Token###########:", respUrl.Header.Get(C.OpenstackConfig.TokenHeader))
json.Unmarshal(result, &t)
return respUrl.Header.Get(C.OpenstackConfig.TokenHeader)
}

View File

@ -1,11 +1,12 @@
package logic
import (
"bytes"
"context"
"fmt"
"gitlink.org.cn/jcce-pcm/pcm-participant-openstack/internal/common"
"gitlink.org.cn/jcce-pcm/pcm-participant-openstack/internal/svc"
"gitlink.org.cn/jcce-pcm/pcm-participant-openstack/openstack"
"gitlink.org.cn/jcce-pcm/utils/tool"
"k8s.io/apimachinery/pkg/util/json"
"github.com/zeromicro/go-zero/core/logx"
@ -33,26 +34,27 @@ func (l *ListServersLogic) ListServers(in *openstack.ListServersReq) (*openstack
if err != nil {
return nil, err
}
reqByte, err := json.Marshal(in)
body, err := common.SendRequest("GET", openstackUrl+"/v2.0/security-groups", bytes.NewBuffer(reqByte), in.Platform)
token := common.GetToken(in.Platform)
//reqByte, err := json.Marshal(in)
/*body, err := common.SendRequest("GET", openstackUrl+"/servers", bytes.NewBuffer(reqByte), in.Platform)
json.Unmarshal(*body, &resp)
return &resp, nil
/* token := common.GetToken()
statusCode, body, err := tool.HttpClientWithBodyAndCode(tool.GET, openstackUrl+"/servers", nil, token)
return &resp, nil*/
statusCode, body, err := tool.HttpClientWithBodyAndCode(tool.GET, openstackUrl+"/servers", nil, token)
if err != nil {
return nil, err
}
if statusCode == 200 {
err := json.Unmarshal(body, &resp)
if err != nil {
return nil, err
fmt.Println(err)
}
if statusCode == 200 {
err := json.Unmarshal(body, &resp)
if err != nil {
fmt.Println(err)
}
resp.Code = 200
resp.Msg = "Success"
} else if statusCode != 200 {
json.Unmarshal(body, &resp)
resp.Code = 400
resp.Msg = "Failure"
}
return &resp, nil*/
resp.Code = 200
resp.Msg = "Success"
} else if statusCode != 200 {
json.Unmarshal(body, &resp)
resp.Code = 400
resp.Msg = "Failure"
}
return &resp, nil
}

View File

@ -4147,7 +4147,7 @@ service Openstack {
rpc ChangeAdministrativePassword(ChangeAdministrativePasswordReq) returns (ChangeAdministrativePasswordResp);//
rpc RescueServer(RescueServerReq) returns (RescueServerResp);//
rpc UnRescue(UnRescueServerReq) returns (UnRescueServerResp);//
rpc SuspendServer(SuspendServerReq) returns (SuspendServerResp);
rpc SuspendServer(SuspendServerReq) returns (SuspendServerResp); //
rpc AddSecurityGroupToServer(AddSecurityGroupToServerReq) returns (AddSecurityGroupToServerResp);//
rpc removeSecurityGroup(removeSecurityGroupReq) returns (removeSecurityGroupResp);//
//(Flavors)
@ -4205,7 +4205,6 @@ service Openstack {
rpc DeleteFirewallRule(DeleteFirewallRuleReq)returns(DeleteFirewallRuleResp);
rpc ListFirewallRules(ListFirewallRulesReq)returns(ListFirewallRulesResp);
rpc ShowFirewallRuleDetails(ShowFirewallRuleDetailsReq)returns(ShowFirewallRuleDetailsResp);
//
rpc ListSecurityGroups(ListSecurityGroupsReq)returns(ListSecurityGroupsResp);
rpc CreateSecurityGroup(CreateSecurityGroupReq)returns(CreateSecurityGroupResp);
@ -4217,12 +4216,12 @@ service Openstack {
rpc CreateSecurityGroupRule(CreateSecurityGroupRuleReq)returns(CreateSecurityGroupRuleResp);
rpc ShowSecurityGroupRule(ShowSecurityGroupRuleReq)returns(ShowSecurityGroupRuleResp);
rpc DeleteSecurityGroupRule(DeleteSecurityGroupRuleReq)returns(DeleteSecurityGroupRuleResp);
// Images from glance
rpc CreateImage(CreateImageReq) returns (CreateImageResp);
rpc ListImages(ListImagesReq) returns (ListImagesResp);
rpc DeleteImage(DeleteImageReq) returns (DeleteImageResp);
rpc UploadImage(UploadOsImageReq) returns (UploadOsImageResp);
// Bare Metal
rpc ListNodes(ListNodesReq) returns (ListNodesResp);
rpc CreateNode(CreateNodeReq) returns (CreateNodeResp);