mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
Merge pull request #7343 from rainzm/gt/details
Modify detail for guesttemplate and scalinggroup
This commit is contained in:
@@ -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"`
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user