Merge pull request #7343 from rainzm/gt/details

Modify detail for guesttemplate and scalinggroup
This commit is contained in:
Zexi Li
2020-07-27 19:48:11 +08:00
committed by GitHub
4 changed files with 42 additions and 16 deletions
+2 -3
View File
@@ -57,6 +57,7 @@ type GuestTemplateDetails struct {
Secgroups []string `json:"secgroups"`
Zone string `json:"zone"`
ZoneId string `json:"zone_id"`
Brand string `json:"brand"`
ConfigInfo GuestTemplateConfigInfo `json:"config_info"`
@@ -71,9 +72,7 @@ type GuestTemplateListInput struct {
}
type GuestTemplateConfigInfo struct {
Region string `json:"region"`
Zone string `json:"zone"`
Hypervisor string `json:"hypervisor"`
Metadata map[string]string `json:"metadata"`
Secgroup string `json:"secgroup"`
Sku GuestTemplateSku `json:"sku"`
Disks []GuestTemplateDisk `json:"disks"`
+9 -3
View File
@@ -134,9 +134,15 @@ type ScalingGroupDetails struct {
// example: OneCloud
Brand string `json:"brand"`
// description: 网络ID
// example: net-12345
Networks []string `json:"networks"`
// description: 网络信息
Networks []ScalingGroupNetwork `json:"networks"`
}
type ScalingGroupNetwork struct {
Id string `json:"id"`
Name string `json:"name"`
GuestIpStart string `json:"guest_ip_start"`
GuestIpEnd string `json:"guest_ip_end"`
}
type ScalingGroupResourceInfo struct {
+4 -10
View File
@@ -345,25 +345,19 @@ func (gt *SGuestTemplate) getMoreDetails(ctx context.Context, userCred mcclient.
return out, err
}
configInfo := computeapis.GuestTemplateConfigInfo{}
if len(input.PreferRegion) != 0 {
region := CloudregionManager.FetchRegionById(input.PreferRegion)
if region != nil {
input.PreferRegion = region.GetName()
}
configInfo.Region = input.PreferRegion
}
if len(input.PreferZone) != 0 {
zone := ZoneManager.FetchZoneById(input.PreferZone)
if zone != nil {
input.PreferZone = zone.GetName()
}
out.ZoneId = zone.GetId()
out.Zone = input.PreferZone
configInfo.Zone = input.PreferZone
}
configInfo.Hypervisor = gt.Hypervisor
out.Brand = Hypervisor2Brand(gt.Hypervisor)
// metadata
configInfo.Metadata = input.Metadata
// sku deal
if len(input.InstanceType) > 0 {
skuOutput := computeapis.GuestTemplateSku{}
+27
View File
@@ -373,6 +373,21 @@ func (sgm *SScalingGroupManager) FetchCustomizeColumns(
n, _ = sg.ScalingPolicyNumber()
rows[i].ScalingPolicyNumber = n
rows[i].Brand = Hypervisor2Brand(sg.Hypervisor)
nets, err := sg.Networks()
if err != nil {
log.Errorf("sg.Networks error: %s", err)
continue
}
sgNets := make([]api.ScalingGroupNetwork, 0, len(nets))
for i := range nets {
sgNets = append(sgNets, api.ScalingGroupNetwork{
Id: nets[i].GetId(),
Name: nets[i].GetName(),
GuestIpStart: nets[i].GuestIpStart,
GuestIpEnd: nets[i].GuestIpEnd,
})
}
rows[i].Networks = sgNets
}
return rows
}
@@ -704,6 +719,18 @@ func (s *SGuest) PerformDetachScalingGroup(ctx context.Context, userCred mcclien
return nil, nil
}
func (sg *SScalingGroup) Networks() ([]SNetwork, error) {
nets := make([]SNetwork, 0, 1)
sgnQuery := ScalingGroupNetworkManager.Query("network_id").Equals("scaling_group_id", sg.Id).SubQuery()
netQuery := NetworkManager.Query().In("id", sgnQuery)
err := db.FetchModelObjects(NetworkManager, netQuery, &nets)
if err != nil {
return nil, errors.Wrap(err, "db.FetchModelObjects")
}
return nets, nil
}
func (sg *SScalingGroup) NetworkIds() ([]string, error) {
sgnQuery := ScalingGroupNetworkManager.Query("network_id").Equals("scaling_group_id", sg.Id)
rows, err := sgnQuery.Rows()