diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index 57b6ea13c9..3fe2dd3556 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -394,6 +394,10 @@ func fetchContextObjectId(manager IModelManager, ctx context.Context, userCred m } } +type Data struct { + Name string +} + func listItems(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, ctxId string) (*modules.ListResult, error) { var maxLimit int64 = 2048 limit, _ := query.Int("limit") @@ -419,7 +423,13 @@ func listItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok return nil, err } totalCnt := int64(q.Count()) - log.Debugf("total count %d", totalCnt) + data := Data{} + q.First(&data) + log.Debugf("total count %d result: %v", totalCnt, data) + { + retList, _ := query2List(manager, ctx, userCred, q, queryDict) + log.Errorf("result: %s", retList) + } if totalCnt == 0 { emptyList := modules.ListResult{Data: []jsonutils.JSONObject{}} return &emptyList, nil @@ -458,6 +468,7 @@ func listItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok q = q.Offset(int(offset)) } retList, err := query2List(manager, ctx, userCred, q, queryDict) + log.Errorf("result: %s", retList) if err != nil { return nil, httperrors.NewGeneralError(err) } diff --git a/pkg/compute/models/cloudregions.go b/pkg/compute/models/cloudregions.go index 44a1901655..6909a5c512 100644 --- a/pkg/compute/models/cloudregions.go +++ b/pkg/compute/models/cloudregions.go @@ -309,7 +309,7 @@ func (manager *SCloudregionManager) ListItemFilter(ctx context.Context, q *sqlch wires := WireManager.Query().SubQuery() vpcs := VpcManager.Query().SubQuery() - sq := vpcs.Query(sqlchemy.DISTINCT("cloudregion_id", vpcs.Field("cloudregion_id"))) + sq := vpcs.Query(vpcs.Field("cloudregion_id")) sq = sq.Join(wires, sqlchemy.Equals(vpcs.Field("id"), wires.Field("vpc_id"))) sq = sq.Join(networks, sqlchemy.Equals(wires.Field("id"), networks.Field("wire_id"))) sq = sq.Filter(sqlchemy.Equals(networks.Field("status"), NETWORK_STATUS_AVAILABLE)) diff --git a/pkg/util/azure/azure.go b/pkg/util/azure/azure.go index 7d7f8f4ca8..21cdb92706 100644 --- a/pkg/util/azure/azure.go +++ b/pkg/util/azure/azure.go @@ -54,9 +54,10 @@ func NewAzureClient(providerId string, providerName string, accessKey string, se if _, ok := authAddr[url]; !ok { return nil, httperrors.NewUnauthorizedError("Access url choices: %v", reflect.ValueOf(authAddr).MapKeys()) } - if clientInfo := strings.Split(secret, "/"); len(clientInfo) == 3 { - client := SAzureClient{providerId: providerId, providerName: providerName, tenantId: accessKey, secret: secret, baseUrl: url} - client.clientId, client.clientScret, client.subscriptionId = clientInfo[0], clientInfo[1], clientInfo[2] + if clientInfo, accountInfo := strings.Split(secret, "/"), strings.Split(accessKey, "/"); len(clientInfo) == 2 && len(accountInfo) == 2 { + client := SAzureClient{providerId: providerId, providerName: providerName, secret: secret, baseUrl: url} + client.clientId, client.clientScret = clientInfo[0], clientInfo[1] + client.tenantId, client.subscriptionId = accountInfo[0], accountInfo[1] if err := client.fetchAzureInof(); err != nil { return nil, err } else if err := client.fetchRegions(); err != nil { diff --git a/pkg/util/azure/network.go b/pkg/util/azure/network.go index cbde2e4a00..8577d5e6b0 100644 --- a/pkg/util/azure/network.go +++ b/pkg/util/azure/network.go @@ -26,7 +26,8 @@ func (self *SNetwork) GetMetadata() *jsonutils.JSONDict { } func (self *SNetwork) GetId() string { - return fmt.Sprintf("%s/%s/%s", self.wire.zone.region.GetGlobalId(), self.wire.zone.region.SubscriptionID, self.Name) + vpcName := self.wire.vpc.GetName() + return fmt.Sprintf("%s/%s/%s/%s", self.wire.zone.region.GetGlobalId(), self.wire.zone.region.SubscriptionID, vpcName, self.Name) } func (self *SNetwork) GetName() string { @@ -43,7 +44,7 @@ func (self *SNetwork) IsEmulated() bool { func (self *SNetwork) GetStatus() string { if strings.ToLower(self.Properties.ProvisioningState) == "succeeded" { - return "avaliable" + return "available" } return "disabled" } diff --git a/pkg/util/azure/vpc.go b/pkg/util/azure/vpc.go index e7720cc2ae..ee8233e85e 100644 --- a/pkg/util/azure/vpc.go +++ b/pkg/util/azure/vpc.go @@ -115,7 +115,6 @@ func (self *SVpc) GetISecurityGroups() ([]cloudprovider.ICloudSecurityGroup, err } func (self *SVpc) fetchWires() error { - self.iwires = make([]cloudprovider.ICloudWire, 0) networks := make([]cloudprovider.ICloudNetwork, len(self.Properties.Subnets)) wire := SWire{zone: self.region.izones[0].(*SZone), vpc: self, inetworks: networks} for i, _network := range self.Properties.Subnets { @@ -125,7 +124,7 @@ func (self *SVpc) fetchWires() error { } networks[i] = &network } - self.iwires = append(self.iwires, &wire) + self.iwires = []cloudprovider.ICloudWire{&wire} return nil } diff --git a/pkg/util/azure/wire.go b/pkg/util/azure/wire.go index 9b1cdb8323..3c9fc7a399 100644 --- a/pkg/util/azure/wire.go +++ b/pkg/util/azure/wire.go @@ -21,15 +21,15 @@ func (self *SWire) GetMetadata() *jsonutils.JSONDict { } func (self *SWire) GetId() string { - return fmt.Sprintf("%s-%s", self.zone.region.client.providerId, self.zone.region.GetId()) + return fmt.Sprintf("%s/%s/%s", self.zone.region.GetGlobalId(), self.zone.region.client.subscriptionId, self.vpc.GetName()) } func (self *SWire) GetGlobalId() string { - return fmt.Sprintf("%s/%s", self.zone.region.GetGlobalId(), self.zone.region.client.subscriptionId) + return self.GetId() } func (self *SWire) GetName() string { - return fmt.Sprintf("%s-%s", self.zone.region.client.providerName, self.zone.region.Name) + return fmt.Sprintf("%s-%s", self.zone.region.client.providerName, self.vpc.GetName()) } func (self *SWire) IsEmulated() bool { @@ -81,7 +81,7 @@ func (self *SWire) GetINetworks() ([]cloudprovider.ICloudNetwork, error) { if self.inetworks == nil { self.inetworks = make([]cloudprovider.ICloudNetwork, len(self.vpc.Properties.Subnets)) for i, _netwrok := range self.vpc.Properties.Subnets { - network := SNetwork{wire: self} + network := SNetwork{wire: self, Name: _netwrok.Name, ID: _netwrok.ID} if err := jsonutils.Update(&network, _netwrok); err != nil { return nil, err }