fix:增加openstack 接口
This commit is contained in:
parent
640946f6f0
commit
df4720f104
|
@ -249,4 +249,6 @@ service pcm {
|
|||
get /vm/listVolumeTypes (ListVolumeTypesReq) returns (ListVolumeTypesResp)
|
||||
@handler CreateImageHandler
|
||||
post /vm/createImage (CreateImageReq) returns (CreateImageResp)
|
||||
@handler UploadImageHandler
|
||||
post /vm/uploadImage (UploadOsImageReq) returns (UploadOsImageResp)
|
||||
}
|
|
@ -206,6 +206,16 @@ type(
|
|||
}
|
||||
|
||||
)
|
||||
type(
|
||||
UploadOsImageReq{
|
||||
ImageId string `form:"image_id" copier:"ImageId"`
|
||||
}
|
||||
UploadOsImageResp {
|
||||
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||
}
|
||||
)
|
||||
|
||||
type(
|
||||
DeleteImageReq{
|
||||
|
|
|
@ -398,6 +398,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
|||
Path: "/vm/createImage",
|
||||
Handler: vm.CreateImageHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/vm/uploadImage",
|
||||
Handler: vm.UploadImageHandler(serverCtx),
|
||||
},
|
||||
},
|
||||
rest.WithPrefix("/pcm/v1"),
|
||||
)
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package vm
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"PCM/adaptor/PCM-CORE/api/internal/logic/vm"
|
||||
"PCM/adaptor/PCM-CORE/api/internal/svc"
|
||||
"PCM/adaptor/PCM-CORE/api/internal/types"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
func UploadImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.UploadOsImageReq
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := vm.NewUploadImageLogic(r.Context(), svcCtx)
|
||||
resp, err := l.UploadImage(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package vm
|
||||
|
||||
import (
|
||||
"PCM/adaptor/PCM-VM/PCM-OPENSTACK/rpc/openstack"
|
||||
"PCM/common/result"
|
||||
"PCM/common/tool"
|
||||
"PCM/common/xerr"
|
||||
"context"
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
|
||||
"PCM/adaptor/PCM-CORE/api/internal/svc"
|
||||
"PCM/adaptor/PCM-CORE/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type UploadImageLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewUploadImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UploadImageLogic {
|
||||
return &UploadImageLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *UploadImageLogic) UploadImage(req *types.UploadOsImageReq) (resp *types.UploadOsImageResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
UploadOsImageReq := &openstack.UploadOsImageReq{}
|
||||
err = copier.CopyWithOption(UploadOsImageReq, req, copier.Option{Converters: tool.Converters})
|
||||
CreateImageResp, err := l.svcCtx.OpenstackRpc.UploadImage(l.ctx, UploadOsImageReq)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(xerr.NewErrMsg("c端创建失败"), "c端创建失败 : %v ,req:%+v", err, req)
|
||||
}
|
||||
marshal, err := json.Marshal(&CreateImageResp)
|
||||
if err != nil {
|
||||
return nil, result.NewDefaultError(err.Error())
|
||||
}
|
||||
json.Unmarshal(marshal, &resp)
|
||||
err = copier.CopyWithOption(&resp, &CreateImageResp, copier.Option{Converters: tool.Converters})
|
||||
return resp, err
|
||||
}
|
|
@ -2253,6 +2253,16 @@ type CreateImageResp struct {
|
|||
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||
}
|
||||
|
||||
type UploadOsImageReq struct {
|
||||
ImageId string `form:"image_id" copier:"ImageId"`
|
||||
}
|
||||
|
||||
type UploadOsImageResp struct {
|
||||
Code int32 `json:"code,omitempty" copier:"Code"`
|
||||
Msg string `json:"msg,omitempty" copier:"Msg"`
|
||||
ErrorMsg string `json:"errorMsg,omitempty" copier:"ErrorMsg"`
|
||||
}
|
||||
|
||||
type DeleteImageReq struct {
|
||||
ImageId string `form:"image_id" copier:"ImageId"`
|
||||
}
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
package logic
|
||||
|
||||
import (
|
||||
"PCM/adaptor/PCM-VM/PCM-OPENSTACK/rpc/internal/common"
|
||||
"PCM/common/tool"
|
||||
"context"
|
||||
"fmt"
|
||||
"k8s.io/apimachinery/pkg/util/json"
|
||||
|
||||
"PCM/adaptor/PCM-VM/PCM-OPENSTACK/rpc/internal/svc"
|
||||
"PCM/adaptor/PCM-VM/PCM-OPENSTACK/rpc/openstack"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type UploadImageLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewUploadImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UploadImageLogic {
|
||||
return &UploadImageLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *UploadImageLogic) UploadImage(in *openstack.UploadOsImageReq) (*openstack.UploadOsImageResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
var resp openstack.UploadOsImageResp
|
||||
openstackUrl := "http://10.105.20.9:9292"
|
||||
token := common.GetToken()
|
||||
statusCode, body, err := tool.HttpClientWithBodyAndCode(tool.PUT, openstackUrl+"/v2/images/"+in.ImageId+"/file", nil, token)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if statusCode == 204 {
|
||||
err := json.Unmarshal(body, &resp)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
resp.Code = 200
|
||||
resp.Msg = "Success"
|
||||
} else if statusCode != 204 {
|
||||
json.Unmarshal(body, &resp)
|
||||
resp.Code = 400
|
||||
resp.Msg = "Failure"
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
|
@ -130,6 +130,11 @@ func (s *OpenstackServer) DeleteImage(ctx context.Context, in *openstack.DeleteI
|
|||
return l.DeleteImage(in)
|
||||
}
|
||||
|
||||
func (s *OpenstackServer) UploadImage(ctx context.Context, in *openstack.UploadOsImageReq) (*openstack.UploadOsImageResp, error) {
|
||||
l := logic.NewUploadImageLogic(ctx, s.svcCtx)
|
||||
return l.UploadImage(in)
|
||||
}
|
||||
|
||||
// Bare Metal
|
||||
func (s *OpenstackServer) ListNodes(ctx context.Context, in *openstack.ListNodesReq) (*openstack.ListNodesResp, error) {
|
||||
l := logic.NewListNodesLogic(ctx, s.svcCtx)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -46,6 +46,7 @@ type OpenstackClient interface {
|
|||
CreateImage(ctx context.Context, in *CreateImageReq, opts ...grpc.CallOption) (*CreateImageResp, error)
|
||||
LisImages(ctx context.Context, in *ListImagesReq, opts ...grpc.CallOption) (*ListImagesResp, error)
|
||||
DeleteImage(ctx context.Context, in *DeleteImageReq, opts ...grpc.CallOption) (*DeleteImageResp, error)
|
||||
UploadImage(ctx context.Context, in *UploadOsImageReq, opts ...grpc.CallOption) (*UploadOsImageResp, error)
|
||||
// Bare Metal
|
||||
ListNodes(ctx context.Context, in *ListNodesReq, opts ...grpc.CallOption) (*ListNodesResp, error)
|
||||
CreateNode(ctx context.Context, in *CreateNodeReq, opts ...grpc.CallOption) (*CreateNodeResp, error)
|
||||
|
@ -259,6 +260,15 @@ func (c *openstackClient) DeleteImage(ctx context.Context, in *DeleteImageReq, o
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *openstackClient) UploadImage(ctx context.Context, in *UploadOsImageReq, opts ...grpc.CallOption) (*UploadOsImageResp, error) {
|
||||
out := new(UploadOsImageResp)
|
||||
err := c.cc.Invoke(ctx, "/openstack.Openstack/UploadImage", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *openstackClient) ListNodes(ctx context.Context, in *ListNodesReq, opts ...grpc.CallOption) (*ListNodesResp, error) {
|
||||
out := new(ListNodesResp)
|
||||
err := c.cc.Invoke(ctx, "/openstack.Openstack/ListNodes", in, out, opts...)
|
||||
|
@ -395,6 +405,7 @@ type OpenstackServer interface {
|
|||
CreateImage(context.Context, *CreateImageReq) (*CreateImageResp, error)
|
||||
LisImages(context.Context, *ListImagesReq) (*ListImagesResp, error)
|
||||
DeleteImage(context.Context, *DeleteImageReq) (*DeleteImageResp, error)
|
||||
UploadImage(context.Context, *UploadOsImageReq) (*UploadOsImageResp, error)
|
||||
// Bare Metal
|
||||
ListNodes(context.Context, *ListNodesReq) (*ListNodesResp, error)
|
||||
CreateNode(context.Context, *CreateNodeReq) (*CreateNodeResp, error)
|
||||
|
@ -479,6 +490,9 @@ func (UnimplementedOpenstackServer) LisImages(context.Context, *ListImagesReq) (
|
|||
func (UnimplementedOpenstackServer) DeleteImage(context.Context, *DeleteImageReq) (*DeleteImageResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteImage not implemented")
|
||||
}
|
||||
func (UnimplementedOpenstackServer) UploadImage(context.Context, *UploadOsImageReq) (*UploadOsImageResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UploadImage not implemented")
|
||||
}
|
||||
func (UnimplementedOpenstackServer) ListNodes(context.Context, *ListNodesReq) (*ListNodesResp, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented")
|
||||
}
|
||||
|
@ -906,6 +920,24 @@ func _Openstack_DeleteImage_Handler(srv interface{}, ctx context.Context, dec fu
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Openstack_UploadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UploadOsImageReq)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(OpenstackServer).UploadImage(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/openstack.Openstack/UploadImage",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(OpenstackServer).UploadImage(ctx, req.(*UploadOsImageReq))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _Openstack_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ListNodesReq)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -1213,6 +1245,10 @@ var Openstack_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "DeleteImage",
|
||||
Handler: _Openstack_DeleteImage_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UploadImage",
|
||||
Handler: _Openstack_UploadImage_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ListNodes",
|
||||
Handler: _Openstack_ListNodes_Handler,
|
||||
|
|
|
@ -17,7 +17,6 @@ type (
|
|||
BulkCreateNetworksReq = openstack.BulkCreateNetworksReq
|
||||
BulkCreateNetworksResp = openstack.BulkCreateNetworksResp
|
||||
CreateImageReq = openstack.CreateImageReq
|
||||
CreateImageReq_Tags = openstack.CreateImageReq_Tags
|
||||
CreateImageResp = openstack.CreateImageResp
|
||||
CreateImageResp_Locations = openstack.CreateImageResp_Locations
|
||||
CreateImageResp_Tags = openstack.CreateImageResp_Tags
|
||||
|
@ -181,6 +180,7 @@ type (
|
|||
StopServerResp = openstack.StopServerResp
|
||||
Subnet = openstack.Subnet
|
||||
SubnetResp = openstack.SubnetResp
|
||||
Tags = openstack.Tags
|
||||
UpdateNetworkReq = openstack.UpdateNetworkReq
|
||||
UpdateNetworkResp = openstack.UpdateNetworkResp
|
||||
UpdateServerReq = openstack.UpdateServerReq
|
||||
|
@ -204,6 +204,8 @@ type (
|
|||
UpdateVolumeResp_Links = openstack.UpdateVolumeResp_Links
|
||||
UpdateVolumeResp_Metadata = openstack.UpdateVolumeResp_Metadata
|
||||
UpdateVolumeResp_Volume = openstack.UpdateVolumeResp_Volume
|
||||
UploadOsImageReq = openstack.UploadOsImageReq
|
||||
UploadOsImageResp = openstack.UploadOsImageResp
|
||||
|
||||
Openstack interface {
|
||||
// Servers
|
||||
|
@ -230,6 +232,7 @@ type (
|
|||
CreateImage(ctx context.Context, in *CreateImageReq, opts ...grpc.CallOption) (*CreateImageResp, error)
|
||||
LisImages(ctx context.Context, in *ListImagesReq, opts ...grpc.CallOption) (*ListImagesResp, error)
|
||||
DeleteImage(ctx context.Context, in *DeleteImageReq, opts ...grpc.CallOption) (*DeleteImageResp, error)
|
||||
UploadImage(ctx context.Context, in *UploadOsImageReq, opts ...grpc.CallOption) (*UploadOsImageResp, error)
|
||||
// Bare Metal
|
||||
ListNodes(ctx context.Context, in *ListNodesReq, opts ...grpc.CallOption) (*ListNodesResp, error)
|
||||
CreateNode(ctx context.Context, in *CreateNodeReq, opts ...grpc.CallOption) (*CreateNodeResp, error)
|
||||
|
@ -365,6 +368,11 @@ func (m *defaultOpenstack) DeleteImage(ctx context.Context, in *DeleteImageReq,
|
|||
return client.DeleteImage(ctx, in, opts...)
|
||||
}
|
||||
|
||||
func (m *defaultOpenstack) UploadImage(ctx context.Context, in *UploadOsImageReq, opts ...grpc.CallOption) (*UploadOsImageResp, error) {
|
||||
client := openstack.NewOpenstackClient(m.cli.Conn())
|
||||
return client.UploadImage(ctx, in, opts...)
|
||||
}
|
||||
|
||||
// Bare Metal
|
||||
func (m *defaultOpenstack) ListNodes(ctx context.Context, in *ListNodesReq, opts ...grpc.CallOption) (*ListNodesResp, error) {
|
||||
client := openstack.NewOpenstackClient(m.cli.Conn())
|
||||
|
|
|
@ -1542,13 +1542,15 @@ message DeleteImageResp{
|
|||
string error_msg =3;// @gotags: copier:"ErrorMsg"
|
||||
}
|
||||
|
||||
message UploadImageReq{
|
||||
message UploadOsImageReq{
|
||||
string image_id = 1; // @gotags: copier:"ImageId"
|
||||
|
||||
}
|
||||
|
||||
message UploadImageResp{
|
||||
|
||||
message UploadOsImageResp{
|
||||
int32 code = 1; // @gotags: copier:"Code"
|
||||
string msg = 2; // @gotags: copier:"Msg"
|
||||
string error_msg =3;// @gotags: copier:"ErrorMsg"
|
||||
}
|
||||
/******************WangQi Images API End*************************/
|
||||
|
||||
|
@ -1929,7 +1931,7 @@ service Openstack {
|
|||
rpc CreateImage(CreateImageReq) returns (CreateImageResp);
|
||||
rpc LisImages(ListImagesReq) returns (ListImagesResp);
|
||||
rpc DeleteImage(DeleteImageReq) returns (DeleteImageResp);
|
||||
rpc UploadImage(UploadImageReq) returns (UploadImageResp);
|
||||
rpc UploadImage(UploadOsImageReq) returns (UploadOsImageResp);
|
||||
|
||||
// Bare Metal
|
||||
rpc ListNodes(ListNodesReq) returns (ListNodesResp);
|
||||
|
|
Loading…
Reference in New Issue