diff --git a/etc/pcmopenstack.yaml b/etc/pcmopenstack.yaml index 1bd77ab..3301ced 100644 --- a/etc/pcmopenstack.yaml +++ b/etc/pcmopenstack.yaml @@ -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" diff --git a/internal/common/tokenService.go b/internal/common/tokenService.go index 9b99dee..8e36fb7 100644 --- a/internal/common/tokenService.go +++ b/internal/common/tokenService.go @@ -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) +} diff --git a/internal/logic/listserverslogic.go b/internal/logic/listserverslogic.go index 467a583..432b996 100644 --- a/internal/logic/listserverslogic.go +++ b/internal/logic/listserverslogic.go @@ -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 } diff --git a/pb/pcm-openstack.proto b/pb/pcm-openstack.proto index 80072d8..2d13148 100644 --- a/pb/pcm-openstack.proto +++ b/pb/pcm-openstack.proto @@ -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);