diff --git a/pkg/compute/guestdrivers/aliyun.go b/pkg/compute/guestdrivers/aliyun.go index 8b724ff283..908bad6ff4 100644 --- a/pkg/compute/guestdrivers/aliyun.go +++ b/pkg/compute/guestdrivers/aliyun.go @@ -150,9 +150,6 @@ func fetchIVMinfo(desc SAliyunVMCreateConfig, iVM cloudprovider.ICloudVM, guestI } data.Add(jsonutils.NewString("root"), "account") data.Add(jsonutils.NewString(encpasswd), "key") - } else { - data.Add(jsonutils.NewString(""), "account") - data.Add(jsonutils.NewString(""), "key") } if len(desc.OsDistribution) > 0 { diff --git a/pkg/compute/models/networks.go b/pkg/compute/models/networks.go index 33a529f53a..d090098234 100644 --- a/pkg/compute/models/networks.go +++ b/pkg/compute/models/networks.go @@ -734,6 +734,30 @@ func isExitNetworkInfo(netConfig *SNetworkConfig) bool { return false } +func (self *SNetwork) getZone() *SZone { + wire := self.GetWire() + if wire != nil { + return wire.GetZone() + } + return nil +} + +func (self *SNetwork) getVpc() *SVpc { + wire := self.GetWire() + if wire != nil { + return wire.getVpc() + } + return nil +} + +func (self *SNetwork) getRegion() *SCloudregion { + wire := self.GetWire() + if wire != nil { + return wire.getRegion() + } + return nil +} + func (self *SNetwork) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSONDict { wire := self.GetWire() extra.Add(jsonutils.NewString(wire.Name), "wire") @@ -747,6 +771,34 @@ func (self *SNetwork) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSOND extra.Add(jsonutils.NewInt(int64(self.GetBaremetalNicsCount())), "bm_vnics") extra.Add(jsonutils.NewInt(int64(self.GetGroupNicsCount())), "group_vnics") extra.Add(jsonutils.NewInt(int64(self.GetReservedNicsCount())), "reserve_vnics") + + zone := self.getZone() + if zone != nil { + extra.Add(jsonutils.NewString(zone.GetId()), "zone_id") + extra.Add(jsonutils.NewString(zone.GetName()), "zone") + if len(zone.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(zone.GetExternalId()), "zone_external_id") + } + } + + region := self.getRegion() + if region != nil { + extra.Add(jsonutils.NewString(region.GetId()), "region_id") + extra.Add(jsonutils.NewString(region.GetName()), "region") + if len(region.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(region.GetExternalId()), "region_external_id") + } + } + + vpc := self.getVpc() + if vpc != nil { + extra.Add(jsonutils.NewString(vpc.GetId()), "vpc_id") + extra.Add(jsonutils.NewString(vpc.GetName()), "vpc") + if len(vpc.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(vpc.GetExternalId()), "vpc_external_id") + } + } + return extra } diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index e2d11f3b72..67fd0cbc82 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -124,7 +124,12 @@ func (self *SVpc) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSONDict extra.Add(jsonutils.NewInt(int64(self.GetWireCount())), "wire_count") extra.Add(jsonutils.NewInt(int64(self.GetNetworkCount())), "network_count") region := self.GetRegion() - extra.Add(jsonutils.NewString(region.GetName()), "region") + if region != nil { + extra.Add(jsonutils.NewString(region.GetName()), "region") + if len(region.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(region.GetExternalId()), "region_external_id") + } + } return extra } diff --git a/pkg/compute/models/wires.go b/pkg/compute/models/wires.go index 7dea974aed..1fb0031c48 100644 --- a/pkg/compute/models/wires.go +++ b/pkg/compute/models/wires.go @@ -38,7 +38,7 @@ type SWire struct { VpcId string `wdith:"36" charset:"ascii" nullable:"false" list:"admin" create:"admin_required"` } -func (manager *SWireManager) GetContextManager() []db.IModelManager { +func (manager *SWireManager) GetGContextManager() []db.IModelManager { return []db.IModelManager{ZoneManager, VpcManager} } @@ -561,3 +561,48 @@ func (manager *SWireManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu return q, err } + +func (self *SWire) getRegion() *SCloudregion { + zone := self.GetZone() + if zone != nil { + return zone.GetRegion() + } + return nil +} + +func (self *SWire) GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict { + extra := self.SStandaloneResourceBase.GetCustomizeColumns(ctx, userCred, query) + return self.getMoreDetails(extra) +} + +func (self *SWire) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict { + extra := self.SStandaloneResourceBase.GetExtraDetails(ctx, userCred, query) + return self.getMoreDetails(extra) +} + +func (self *SWire) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSONDict { + extra.Add(jsonutils.NewInt(int64(self.NetworkCount())), "networks") + zone := self.GetZone() + if zone != nil { + extra.Add(jsonutils.NewString(zone.GetName()), "zone") + if len(zone.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(zone.GetExternalId()), "zone_external_id") + } + } + region := self.getRegion() + if region != nil { + extra.Add(jsonutils.NewString(region.GetId()), "region_id") + extra.Add(jsonutils.NewString(region.GetName()), "region") + if len(region.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(region.GetExternalId()), "region_external_id") + } + } + vpc := self.getVpc() + if vpc != nil { + extra.Add(jsonutils.NewString(vpc.GetName()), "vpc") + if len(vpc.GetExternalId()) > 0 { + extra.Add(jsonutils.NewString(vpc.GetExternalId()), "vpc_external_id") + } + } + return extra +} \ No newline at end of file