Skip to content

Commit 7c968a4

Browse files
authored
Merge pull request #29 from MZC-CSC/feature_devforswy_0906
Add CompanyInfo API, PlatformRole API, and WorkspaceRole API, Modify disk output form
2 parents ac46204 + 9b7fad8 commit 7c968a4

File tree

8 files changed

+303
-50
lines changed

8 files changed

+303
-50
lines changed

api/actions/app.go

+6
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ func App() *buffalo.App {
6464
api.POST("/availabledisktypebyproviderregion", self.AvailableDiskTypeByProviderRegion)
6565
api.POST("/createmenuresources", CreateMCIAMMenuResources)
6666
api.POST("/getmenutree", GetMCIAMmenuTree)
67+
api.POST("/getcompanyinfo", GetCompanyInfo)
68+
api.POST("/getplatformroles", GetPlatformRoles)
69+
api.POST("/getworkspaceroles", GetWorkspaceRoles)
6770

6871
api.Middleware.Skip(mciammanager.SelfApiMiddleware, AnyController)
6972
api.POST("/{operationId}", mciammanager.ApiMiddleware(AnyController))
@@ -89,6 +92,9 @@ func App() *buffalo.App {
8992
api.POST("/disklookup", self.DiskLookup)
9093
api.POST("/availabledisktypebyproviderregion", self.AvailableDiskTypeByProviderRegion)
9194
api.POST("/getmenutree", GetmenuTree)
95+
api.POST("/getcompanyinfo", GetCompanyInfo)
96+
api.POST("/getplatformroles", GetPlatformRoles)
97+
api.POST("/getworkspaceroles", GetWorkspaceRoles)
9298

9399
// Projects Manage
94100
api.POST("/createproject", CreateProject)

api/actions/metainfo.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package actions
2+
3+
import (
4+
"mc_web_console_api/handler"
5+
"mc_web_console_api/handler/self"
6+
7+
"github.com/gobuffalo/buffalo"
8+
)
9+
10+
func GetCompanyInfo(c buffalo.Context) error {
11+
companiesInfo, err := self.GetCompanyInfo()
12+
if err != nil {
13+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
14+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
15+
}
16+
17+
commonResponse := handler.CommonResponseStatusOK(companiesInfo)
18+
19+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
20+
}
21+
22+
func GetIamCompanyInfo(c buffalo.Context) error {
23+
companiesInfo, err := self.GetCompanyInfo()
24+
if err != nil {
25+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
26+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
27+
}
28+
29+
commonResponse := handler.CommonResponseStatusOK(companiesInfo)
30+
31+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
32+
}

api/actions/role.go

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package actions
2+
3+
import (
4+
"mc_web_console_api/handler"
5+
"mc_web_console_api/handler/self"
6+
7+
"github.com/gobuffalo/buffalo"
8+
)
9+
10+
func GetPlatformRoles(c buffalo.Context) error {
11+
platformRoles, err := self.GetPlatformRoleList()
12+
if err != nil {
13+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
14+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
15+
}
16+
17+
commonResponse := handler.CommonResponseStatusOK(platformRoles)
18+
19+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
20+
}
21+
22+
func GetIamPlatformRoles(c buffalo.Context) error {
23+
platformRoles, err := self.GetPlatformRoleList()
24+
if err != nil {
25+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
26+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
27+
}
28+
29+
commonResponse := handler.CommonResponseStatusOK(platformRoles)
30+
31+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
32+
}
33+
34+
func GetWorkspaceRoles(c buffalo.Context) error {
35+
workspaceRoles, err := self.GetWorkspaceRoleList()
36+
if err != nil {
37+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
38+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
39+
}
40+
41+
commonResponse := handler.CommonResponseStatusOK(workspaceRoles)
42+
43+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
44+
}
45+
46+
func GetIamWorkspaceRoles(c buffalo.Context) error {
47+
workspaceRoles, err := self.GetWorkspaceRoleList()
48+
if err != nil {
49+
commonResponse := handler.CommonResponseStatusBadRequest(err.Error())
50+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
51+
}
52+
53+
commonResponse := handler.CommonResponseStatusOK(workspaceRoles)
54+
55+
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
56+
}

api/handler/self/disk.go

+66-48
Original file line numberDiff line numberDiff line change
@@ -25,45 +25,45 @@ func DiskLookup(c buffalo.Context) error {
2525
awsRootdiskType := "standard / gp2 / gp3"
2626
awsDiskType := "standard / gp2 / gp3 / io1 / io2 / st1 / sc1"
2727
awsDiskSize := "standard|1|1024|GB / gp2|1|16384|GB / gp3|1|16384|GB / io1|4|16384|GB / io2|4|16384|GB / st1|125|16384|GB / sc1|125|16384|GB"
28-
29-
awsDiskInfo := LookupDiskInfo{}
30-
awsDiskInfo.ProviderID = "AWS"
31-
awsDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(awsRootdiskType, " ", ""), "/")
32-
awsDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(awsDiskType, " ", ""), "/")
33-
awsDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(awsDiskSize, " ", ""), "/")
28+
awsDiskInfo := LookupDiskInfo{
29+
ProviderID: "AWS",
30+
RootDiskType: strings.Split(strings.ReplaceAll(awsRootdiskType, " ", ""), "/"),
31+
DataDiskType: strings.Split(strings.ReplaceAll(awsDiskType, " ", ""), "/"),
32+
DiskSize: parseDiskSize(awsDiskSize),
33+
}
3434
diskInfoMap["AWS"] = awsDiskInfo
3535

3636
gcpRootdiskType := "pd-standard / pd-balanced / pd-ssd / pd-extreme"
3737
gcpDiskType := "pd-standard / pd-balanced / pd-ssd / pd-extreme"
3838
gcpDiskSize := "pd-standard|10|65536|GB / pd-balanced|10|65536|GB / pd-ssd|10|65536|GB / pd-extreme|500|65536|GB"
39-
40-
gcpDiskInfo := LookupDiskInfo{}
41-
gcpDiskInfo.ProviderID = "GCP"
42-
gcpDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(gcpRootdiskType, " ", ""), "/")
43-
gcpDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(gcpDiskType, " ", ""), "/")
44-
gcpDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(gcpDiskSize, " ", ""), "/")
39+
gcpDiskInfo := LookupDiskInfo{
40+
ProviderID: "GCP",
41+
RootDiskType: strings.Split(strings.ReplaceAll(gcpRootdiskType, " ", ""), "/"),
42+
DataDiskType: strings.Split(strings.ReplaceAll(gcpDiskType, " ", ""), "/"),
43+
DiskSize: parseDiskSize(gcpDiskSize),
44+
}
4545
diskInfoMap["GCP"] = gcpDiskInfo
4646

4747
aliRootdiskType := "cloud_essd / cloud_efficiency / cloud / cloud_ssd"
4848
aliDiskType := "cloud / cloud_efficiency / cloud_ssd / cloud_essd"
4949
aliDiskSize := "cloud|5|2000|GB / cloud_efficiency|20|32768|GB / cloud_ssd|20|32768|GB / cloud_essd_PL0|40|32768|GB / cloud_essd_PL1|20|32768|GB / cloud_essd_PL2|461|32768|GB / cloud_essd_PL3|1261|32768|GB"
50-
51-
aliDiskInfo := LookupDiskInfo{}
52-
aliDiskInfo.ProviderID = "ALIBABA"
53-
aliDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(aliRootdiskType, " ", ""), "/")
54-
aliDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(aliDiskType, " ", ""), "/")
55-
aliDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(aliDiskSize, " ", ""), "/")
50+
aliDiskInfo := LookupDiskInfo{
51+
ProviderID: "ALIBABA",
52+
RootDiskType: strings.Split(strings.ReplaceAll(aliRootdiskType, " ", ""), "/"),
53+
DataDiskType: strings.Split(strings.ReplaceAll(aliDiskType, " ", ""), "/"),
54+
DiskSize: parseDiskSize(aliDiskSize),
55+
}
5656
diskInfoMap["ALIBABA"] = aliDiskInfo
5757

5858
tencentRootdiskType := "CLOUD_PREMIUM / CLOUD_SSD"
5959
tencentDiskType := "CLOUD_PREMIUM / CLOUD_SSD / CLOUD_HSSD / CLOUD_BASIC / CLOUD_TSSD"
6060
tencentDiskSize := "CLOUD_PREMIUM|10|32000|GB / CLOUD_SSD|20|32000|GB / CLOUD_HSSD|20|32000|GB / CLOUD_BASIC|10|32000|GB / CLOUD_TSSD|10|32000|GB"
61-
62-
tencentDiskInfo := LookupDiskInfo{}
63-
tencentDiskInfo.ProviderID = "TENCENT"
64-
tencentDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(tencentRootdiskType, " ", ""), "/")
65-
tencentDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(tencentDiskType, " ", ""), "/")
66-
tencentDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(tencentDiskSize, " ", ""), "/")
61+
tencentDiskInfo := LookupDiskInfo{
62+
ProviderID: "TENCENT",
63+
RootDiskType: strings.Split(strings.ReplaceAll(tencentRootdiskType, " ", ""), "/"),
64+
DataDiskType: strings.Split(strings.ReplaceAll(tencentDiskType, " ", ""), "/"),
65+
DiskSize: parseDiskSize(tencentDiskSize),
66+
}
6767
diskInfoMap["TENCENT"] = tencentDiskInfo
6868

6969
dataDiskInfoList := []LookupDiskInfo{}
@@ -103,45 +103,45 @@ func AvailableDiskTypeByProviderRegion(c buffalo.Context) error {
103103
awsRootdiskType := "standard / gp2 / gp3"
104104
awsDiskType := "standard / gp2 / gp3 / io1 / io2 / st1 / sc1"
105105
awsDiskSize := "standard|1|1024|GB / gp2|1|16384|GB / gp3|1|16384|GB / io1|4|16384|GB / io2|4|16384|GB / st1|125|16384|GB / sc1|125|16384|GB"
106-
107-
awsDiskInfo := AvailableDiskType{}
108-
awsDiskInfo.ProviderID = "AWS"
109-
awsDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(awsRootdiskType, " ", ""), "/")
110-
awsDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(awsDiskType, " ", ""), "/")
111-
awsDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(awsDiskSize, " ", ""), "/")
106+
awsDiskInfo := AvailableDiskType{
107+
ProviderID: "AWS",
108+
RootDiskType: strings.Split(strings.ReplaceAll(awsRootdiskType, " ", ""), "/"),
109+
DataDiskType: strings.Split(strings.ReplaceAll(awsDiskType, " ", ""), "/"),
110+
DiskSize: parseDiskSize(awsDiskSize),
111+
}
112112
diskInfoMap["AWS"] = awsDiskInfo
113113

114114
gcpRootdiskType := "pd-standard / pd-balanced / pd-ssd / pd-extreme"
115115
gcpDiskType := "pd-standard / pd-balanced / pd-ssd / pd-extreme"
116116
gcpDiskSize := "pd-standard|10|65536|GB / pd-balanced|10|65536|GB / pd-ssd|10|65536|GB / pd-extreme|500|65536|GB"
117-
118-
gcpDiskInfo := AvailableDiskType{}
119-
gcpDiskInfo.ProviderID = "GCP"
120-
gcpDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(gcpRootdiskType, " ", ""), "/")
121-
gcpDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(gcpDiskType, " ", ""), "/")
122-
gcpDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(gcpDiskSize, " ", ""), "/")
117+
gcpDiskInfo := AvailableDiskType{
118+
ProviderID: "GCP",
119+
RootDiskType: strings.Split(strings.ReplaceAll(gcpRootdiskType, " ", ""), "/"),
120+
DataDiskType: strings.Split(strings.ReplaceAll(gcpDiskType, " ", ""), "/"),
121+
DiskSize: parseDiskSize(gcpDiskSize),
122+
}
123123
diskInfoMap["GCP"] = gcpDiskInfo
124124

125125
aliRootdiskType := "cloud_essd / cloud_efficiency / cloud / cloud_ssd"
126126
aliDiskType := "cloud / cloud_efficiency / cloud_ssd / cloud_essd"
127127
aliDiskSize := "cloud|5|2000|GB / cloud_efficiency|20|32768|GB / cloud_ssd|20|32768|GB / cloud_essd_PL0|40|32768|GB / cloud_essd_PL1|20|32768|GB / cloud_essd_PL2|461|32768|GB / cloud_essd_PL3|1261|32768|GB"
128-
129-
aliDiskInfo := AvailableDiskType{}
130-
aliDiskInfo.ProviderID = "ALIBABA"
131-
aliDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(aliRootdiskType, " ", ""), "/")
132-
aliDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(aliDiskType, " ", ""), "/")
133-
aliDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(aliDiskSize, " ", ""), "/")
128+
aliDiskInfo := AvailableDiskType{
129+
ProviderID: "ALIBABA",
130+
RootDiskType: strings.Split(strings.ReplaceAll(aliRootdiskType, " ", ""), "/"),
131+
DataDiskType: strings.Split(strings.ReplaceAll(aliDiskType, " ", ""), "/"),
132+
DiskSize: parseDiskSize(aliDiskSize),
133+
}
134134
diskInfoMap["ALIBABA"] = aliDiskInfo
135135

136136
tencentRootdiskType := "CLOUD_PREMIUM / CLOUD_SSD"
137137
tencentDiskType := "CLOUD_PREMIUM / CLOUD_SSD / CLOUD_HSSD / CLOUD_BASIC / CLOUD_TSSD"
138138
tencentDiskSize := "CLOUD_PREMIUM|10|32000|GB / CLOUD_SSD|20|32000|GB / CLOUD_HSSD|20|32000|GB / CLOUD_BASIC|10|32000|GB / CLOUD_TSSD|10|32000|GB"
139-
140-
tencentDiskInfo := AvailableDiskType{}
141-
tencentDiskInfo.ProviderID = "TENCENT"
142-
tencentDiskInfo.RootDiskType = strings.Split(strings.ReplaceAll(tencentRootdiskType, " ", ""), "/")
143-
tencentDiskInfo.DataDiskType = strings.Split(strings.ReplaceAll(tencentDiskType, " ", ""), "/")
144-
tencentDiskInfo.DiskSize = strings.Split(strings.ReplaceAll(tencentDiskSize, " ", ""), "/")
139+
tencentDiskInfo := AvailableDiskType{
140+
ProviderID: "TENCENT",
141+
RootDiskType: strings.Split(strings.ReplaceAll(tencentRootdiskType, " ", ""), "/"),
142+
DataDiskType: strings.Split(strings.ReplaceAll(tencentDiskType, " ", ""), "/"),
143+
DiskSize: parseDiskSize(tencentDiskSize),
144+
}
145145
diskInfoMap["TENCENT"] = tencentDiskInfo
146146

147147
dataDiskInfoList := []AvailableDiskType{}
@@ -156,3 +156,21 @@ func AvailableDiskTypeByProviderRegion(c buffalo.Context) error {
156156
commonResponse := handler.CommonResponseStatusOK(dataDiskInfoList)
157157
return c.Render(commonResponse.Status.StatusCode, r.JSON(commonResponse))
158158
}
159+
160+
func parseDiskSize(diskSizeString string) []DiskSizeInfo {
161+
diskSizeList := strings.Split(strings.ReplaceAll(diskSizeString, " ", ""), "/")
162+
var diskSizes []DiskSizeInfo
163+
for _, size := range diskSizeList {
164+
parts := strings.Split(size, "|")
165+
if len(parts) == 4 {
166+
diskSizeInfo := DiskSizeInfo{
167+
DiskType: parts[0],
168+
MinSize: parts[1],
169+
MaxSize: parts[2],
170+
Capacity: parts[3],
171+
}
172+
diskSizes = append(diskSizes, diskSizeInfo)
173+
}
174+
}
175+
return diskSizes
176+
}

api/handler/self/metainfo.go

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package self
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
"gopkg.in/yaml.v2"
8+
)
9+
10+
type Company struct {
11+
Id string `json:"id"`
12+
Name string `json:"name"`
13+
Icon string `json:"icon"`
14+
Logo string `json:"logo"`
15+
Alias string `json:"alias"`
16+
Description string `json:"description"`
17+
}
18+
19+
type CompaniesReturn map[string][]Company
20+
21+
func GetCompanyInfo() (*CompaniesReturn, error) {
22+
filePath := "../conf/metainfo.yaml"
23+
file, err := os.ReadFile(filePath)
24+
if err != nil {
25+
return nil, fmt.Errorf("error : Failed read file : %s", err.Error())
26+
}
27+
28+
var data CompaniesReturn
29+
30+
err = yaml.Unmarshal(file, &data)
31+
if err != nil {
32+
return nil, fmt.Errorf("error : Failed to parse metainfo.yaml %s", err.Error())
33+
}
34+
35+
// companies := data["companies"]
36+
37+
return &data, nil
38+
}

api/handler/self/models.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type LookupDiskInfo struct {
1010
DataDiskType []string `json:"datadisktype"`
1111

1212
// disk size range by diskType
13-
DiskSize []string `json:"disksize"`
13+
DiskSize []DiskSizeInfo `json:"disksize"`
1414
}
1515

1616
type AvailableDiskType struct {
@@ -23,5 +23,12 @@ type AvailableDiskType struct {
2323
DataDiskType []string `json:"datadisktype"`
2424

2525
// disk size range by diskType
26-
DiskSize []string `json:"disksize"`
26+
DiskSize []DiskSizeInfo `json:"disksize"`
27+
}
28+
29+
type DiskSizeInfo struct {
30+
DiskType string `json:"diskType"`
31+
MinSize string `json:"minSize"`
32+
MaxSize string `json:"maxSize"`
33+
Capacity string `json:"capacity"`
2734
}

0 commit comments

Comments
 (0)