Modify the configuration information of OpenStack

This commit is contained in:
qiwang 2024-06-07 15:00:18 +08:00
parent ec2a5c49f8
commit 93a52baa19
8 changed files with 71 additions and 144 deletions

View File

@ -1,5 +1,6 @@
Name: pcm.openstack.rpc
ListenOn: 0.0.0.0:2010
AdapterId: 1706858330967773113
Timeout: 100000 # 100s设置rpc服务的响应的超时时间若超过10s还未返回则结束请求
@ -40,15 +41,15 @@ openstackConfig:
USER: "admin"
PASSWORD: "Nudt@1234"
DOMAIN: "Default"
TokenUrl: "http://192.168.249.113:35357/v3/auth/tokens?nocatalog"
TokenUrl: "http://192.168.249.113:5000/v3/auth/tokens?nocatalog"
Status_created: 201
ProjectName: "admin"
TokenHeader: X-Subject-Token
AuthMethod: "password"
OpenstackNetworkUrl: "http://192.168.249.113:9696"
OpenstackImageUrl: "http://192.168.249.113:9292"
OpenstackComputeUrl: "http://192.168.249.113:8774/v2.1/9f6db6c0f4704390b34991faf60c1822"
OpenstackVolumev2Url: "http://192.168.249.113:8776/v2/9f6db6c0f4704390b34991faf60c1822"
OpenstackComputeUrl: "http://192.168.249.113:8774/v2.1/96f6c96fb5d44dc99f0820b723339495"
OpenstackVolumev2Url: "http://192.168.249.113:8776/v2/96f6c96fb5d44dc99f0820b723339495"
OpenstackLimitsUrl: "http://192.168.249.113:8774"
OpenstackBareMetalUrl: ""
Platform: "Nudt_Openstack_T"

2
go.mod
View File

@ -8,7 +8,7 @@ require (
github.com/prometheus/common v0.52.2
github.com/robfig/cron/v3 v3.0.1
github.com/zeromicro/go-zero v1.6.3
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240526092556-fbc927603839
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240607015319-029eeaba931d
google.golang.org/grpc v1.63.0
google.golang.org/protobuf v1.33.0
k8s.io/apimachinery v0.29.3

8
go.sum
View File

@ -154,8 +154,12 @@ github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE
github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
github.com/zeromicro/go-zero v1.6.3 h1:OL0NnHD5LdRNDolfcK9vUkJt7K8TcBE3RkzfM8poOVw=
github.com/zeromicro/go-zero v1.6.3/go.mod h1:XZL435ZxVi9MSXXtw2MRQhHgx6OoX3++MRMOE9xU70c=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240526092556-fbc927603839 h1:Jpbjes+D5jkiNitw2aY625I4xGHy8O4ivZgsBKD0Lk8=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240526092556-fbc927603839/go.mod h1:bVCQZ/6Qa5nHzMbQE0oEl75xkUX09Dvs3B2uwVVEpiQ=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240606042411-8d2c4ce27e51 h1:ucM/+ORzMI0lOKo8fKpTkFPEtWl/BpUd3KI0vNLLVdM=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240606042411-8d2c4ce27e51/go.mod h1:bVCQZ/6Qa5nHzMbQE0oEl75xkUX09Dvs3B2uwVVEpiQ=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240607011205-ccb597154a3a h1:LAvMDJK5HiRq14kQARl4U62t64gve9bx0Q/AifvYHWI=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240607011205-ccb597154a3a/go.mod h1:bVCQZ/6Qa5nHzMbQE0oEl75xkUX09Dvs3B2uwVVEpiQ=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240607015319-029eeaba931d h1:mlFuWBVyaIUHoK7vd1SPZSbrMq69Cci0LeVZU95uCg4=
gitlink.org.cn/JointCloud/pcm-coordinator v0.0.0-20240607015319-029eeaba931d/go.mod h1:bVCQZ/6Qa5nHzMbQE0oEl75xkUX09Dvs3B2uwVVEpiQ=
go.etcd.io/etcd/api/v3 v3.5.13 h1:8WXU2/NBge6AUF1K1gOexB6e07NgsN1hXK0rSTtgSp4=
go.etcd.io/etcd/api/v3 v3.5.13/go.mod h1:gBqlqkcMMZMVTMm4NDZloEVJzxQOQIls8splbqBDa0c=
go.etcd.io/etcd/client/pkg/v3 v3.5.13 h1:RVZSAnWWWiI5IrYAXjQorajncORbS0zI48LQlE2kQWg=

View File

@ -2,31 +2,6 @@ package common
import "time"
/*type Auth struct {
Auth struct {
Identity struct {
Methods []string `json:"methods"`
Password struct {
User struct {
Name string `json:"name"`
Password string `json:"password"`
Domain struct {
Name string `json:"name"`
} `json:"domain"`
} `json:"user"`
} `json:"password"`
} `json:"identity"`
Scope struct {
Project struct {
Name string `json:"name"`
Domain struct {
Name string `json:"name"`
} `json:"domain"`
} `json:"project"`
} `json:"scope"`
} `json:"auth"`
}*/
type Auth struct {
Auth struct {
Identity struct {

36
internal/common/server.go Normal file
View File

@ -0,0 +1,36 @@
package common
type CreateSerReq struct {
Platform string `json:"platform,omitempty"`
CrServer CrServer `json:"crServer,omitempty"`
}
type CrServer struct {
Server Server `json:"server,omitempty"`
}
type Server struct {
FlavorRef string `json:"flavorRef,omitempty"`
Name string `json:"name,omitempty"`
Networks []Networks `json:"networks,omitempty"`
ImageRef string `json:"imageRef,omitempty"`
AccessIPv4 string `json:"accessIPv4,omitempty"`
AccessIPv6 string `json:"accessIPv6,omitempty"`
AdminPass string `json:"adminPass,omitempty"`
MinCount int64 `json:"min_count,omitempty"`
}
type Networks struct {
Uuid string `json:"uuid,omitempty"`
}
type CreateServerResp struct {
Code int64 `json:"code"`
Msg string `json:"msg"`
Data string `json:"data"`
Server ServerResp `json:"server,omitempty"`
}
type ServerResp struct {
Id string `json:"id,omitempty"`
}

View File

@ -14,76 +14,12 @@ import (
var FileName string
var C config.Config
//var (
// token, expiredAt = GenerateToken()
//)
var (
token string
expiredAt time.Time
platform string
)
/*func GenerateToken() (string, string, time.Time) {
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)
return Platform, respUrl.Header.Get(C.OpenstackConfig.TokenHeader), t.Token.ExpiresAt
}*/
/*func GetToken() string {
if time.Now().After(expiredAt) {
Platform, token, expiredAt = GenerateToken()
}
return token
}*/
func GetOpenstackConfWithPlatform(platform string) (*config.Conf, error) {
var conf config.Conf
switch platform {

View File

@ -1,13 +1,14 @@
package cron
import (
"bytes"
"fmt"
"github.com/go-resty/resty/v2"
"github.com/zeromicro/go-zero/core/logx"
coreClient "gitlink.org.cn/JointCloud/pcm-coordinator/api/client"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils/httputils"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/common"
"gitlink.org.cn/JointCloud/pcm-openstack/openstack"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/config"
"k8s.io/apimachinery/pkg/util/json"
"log"
"net/http"
@ -17,16 +18,16 @@ import (
var AdapterId int64
var CoreUrl string
var C config.Config
func PullTaskInfo() {
httpClient := resty.New().R()
result, _ := httpClient.SetHeader("Content-Type", "application/json").
SetQueryParam("adapterId", strconv.FormatInt(AdapterId, 10)).
Get(CoreUrl + "/pcm/v1/core/pullTaskInfo")
SetQueryParam("adapterId", strconv.FormatInt(1706858330967773113, 10)).
Get("http://127.0.0.1:8999" + "/pcm/v1/core/pullTaskInfo")
var resp coreClient.PullTaskInfoResp
//var respserver openstack.CreateServerResp
err := json.Unmarshal(result.Body(), &resp)
if err != nil {
return
@ -34,14 +35,17 @@ func PullTaskInfo() {
if resp.VmInfoList != nil && len(resp.VmInfoList) != 0 {
var oldVmInfoList []coreClient.VmInfo
CreateServerReq := &openstack.CreateServerReq{}
CreateServerReq := common.CreateSerReq{}
for i, vmInfo := range resp.VmInfoList {
if vmInfo.Status == "Saved" {
CreateServerReq.CrServer.Server.Networks = make([]common.Networks, len(resp.VmInfoList))
CreateServerReq.Platform = vmInfo.Platform
CreateServerReq.CrServer.Server.Name = vmInfo.VmName
CreateServerReq.CrServer.Server.FlavorRef = vmInfo.FlavorRef
CreateServerReq.CrServer.Server.ImageRef = vmInfo.ImageRef
CreateServerReq.CrServer.Server.Networks[i].Uuid = vmInfo.NetworkUuid
CreateServerReq.CrServer.Server.Networks[i].Uuid = vmInfo.Uuid
CreateServerReq.CrServer.Server.MinCount = vmInfo.MinCount
respServer, err := CreateServer(CreateServerReq)
if err != nil {
log.Print(err)
@ -58,42 +62,43 @@ func PullTaskInfo() {
// push submitted mark to coordinator
PushReq := coreClient.PushTaskInfoReq{
AdapterId: AdapterId,
AdapterId: 1706858330967773113,
VmInfoList: resp.VmInfoList,
}
if len(PushReq.VmInfoList) != 0 {
url := CoreUrl + "/pcm/v1/core/pushTaskInfo"
url := "http://127.0.0.1:8999" + "/pcm/v1/core/pushTaskInfo"
method := "POST"
jsonStr, _ := json.Marshal(PushReq)
payload := strings.NewReader(string(jsonStr))
payload := bytes.NewBuffer(jsonStr)
client := &http.Client{}
req, _ := http.NewRequest(method, url, payload)
req.Header.Add("Content-Type", "application/json")
_, err := client.Do(req)
resp, err := client.Do(req)
if err != nil {
return
}
fmt.Print(resp)
}
}
func CreateServer(req *openstack.CreateServerReq) (*openstack.CreateServerResp, error) {
var resp openstack.CreateServerResp
func CreateServer(req common.CreateSerReq) (common.CreateServerResp, error) {
var resp common.CreateServerResp
platform, err := common.GetOpenstackConfWithPlatform(req.Platform)
token := common.GetToken(req.Platform)
fmt.Println("错误", err)
reqByte, err := json.Marshal(req.CrServer)
if err != nil {
return nil, err
log.Print(err)
}
payload := strings.NewReader(string(reqByte))
openstackUrl := platform.OpenstackComputeUrl
statusCode, body, err := httputils.HttpClientWithBodyAndCode(httputils.POST, openstackUrl+"/servers", payload, token)
fmt.Println("返回值", body)
if err != nil {
return nil, err
log.Print(err)
}
logx.Infof("pcm-openstack call createServer 返回结果! statusCode %s: ,\n body: %s ,\n err: %s", statusCode, body, err)
if statusCode == 202 {
@ -108,5 +113,5 @@ func CreateServer(req *openstack.CreateServerReq) (*openstack.CreateServerResp,
resp.Code = 400
resp.Msg = "Failure"
}
return &resp, nil
return resp, nil
}

View File

@ -1,25 +1,17 @@
package main
import (
"context"
"flag"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/core/service"
"github.com/zeromicro/go-zero/zrpc"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
"gitlink.org.cn/JointCloud/pcm-coordinator/rpc/client/participantservice"
"gitlink.org.cn/JointCloud/pcm-coordinator/rpc/pcmCore"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/common"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/config"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/pkg/cron"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/server"
"gitlink.org.cn/JointCloud/pcm-openstack/internal/svc"
"gitlink.org.cn/JointCloud/pcm-openstack/openstack"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
"strconv"
)
// var configFile = flag.String("f", "etc/pcmopenstack.yaml", "the config file")
@ -30,9 +22,6 @@ func main() {
conf.MustLoad(common.FileName, &common.C)
ctx := svc.NewServiceContext(common.C)
//解析业务配置
//var c config.Config
//conf.MustLoad(*configFile, &c)
//ctx := svc.NewServiceContext(c)
s := zrpc.MustNewServer(common.C.RpcServerConf, func(grpcServer *grpc.Server) {
openstack.RegisterOpenstackServer(grpcServer, server.NewOpenstackServer(ctx))
if common.C.Mode == service.DevMode || common.C.Mode == service.TestMode {
@ -44,32 +33,13 @@ func main() {
ctx.Cron.Start()
cron.AddCronGroup(ctx)
// 推送p端静态信息
PushParticipantInfo(ctx.Config, ctx.ParticipantRpc)
logx.Infof("Starting rpc server at %s...\n", common.C.ListenOn)
// PushParticipantInfo(ctx.Config, ctx.ParticipantRpc)
// logx.Infof("Starting rpc server at %s...\n", common.C.ListenOn)
s.Start()
//var bootstrapConfig commonConfig.BootstrapConfig
//nacosConfig := bootstrapConfig.NacosConfig
/* serviceConfigContent := nacosConfig.InitConfig(func(data string) {
err := conf.LoadFromYamlBytes([]byte(data), &c)
if err != nil {
panic(err)
}
})*/
//err := conf.LoadFromYamlBytes([]byte(serviceConfigContent), &c)
/*if err != nil {
panic(err)
}*/
// start log component
//logx.MustSetup(c.LogConf)
// 注册到nacos
// nacosConfig.Discovery(&c.RpcServerConf)
//rpc log
//s.AddUnaryInterceptors(rpcserver.LoggerInterceptor)
//logic.InitCron(ctx)
}
// PushParticipantInfo 推送p端静态信息
/*// PushParticipantInfo 推送p端静态信息
func PushParticipantInfo(config config.Config, participantService participantservice.ParticipantService) {
participantId, err := utils.GetParticipantId(*&common.FileName)
if err != nil {
@ -96,4 +66,4 @@ func PushParticipantInfo(config config.Config, participantService participantser
// 更新本地配置文件ParticipantId
utils.UpdateParticipantId(*&common.FileName, strconv.FormatInt(resp.ParticipantId, 10))
}
}*/