mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix(region): external project sync (#15647)
This commit is contained in:
@@ -81,7 +81,7 @@ require (
|
||||
k8s.io/client-go v0.19.3
|
||||
k8s.io/cluster-bootstrap v0.19.3
|
||||
moul.io/http2curl/v2 v2.3.0
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221228030216-7840b7140ffa
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221229033822-9125be57abc8
|
||||
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656
|
||||
yunion.io/x/jsonutils v1.0.1-0.20220819091305-3bab322ab4fd
|
||||
yunion.io/x/log v1.0.0
|
||||
|
||||
@@ -1158,8 +1158,8 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
|
||||
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221228030216-7840b7140ffa h1:w31Dhfg8D9fufpOP3WD15VpIKBQnBqGGB/kVUkYgH0M=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221228030216-7840b7140ffa/go.mod h1:yEMFtIKPyIdIfPzsw7oTcH41JXc8G5StUAQw3ZoGj5I=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221229033822-9125be57abc8 h1:mwfMHctVw2QGMIt9HWgY8BshxB1vXXxJtBqXtJ8Lm1g=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221229033822-9125be57abc8/go.mod h1:yEMFtIKPyIdIfPzsw7oTcH41JXc8G5StUAQw3ZoGj5I=
|
||||
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656 h1:0zlZD5uhZoIHgLVAWCz2aHaYk2ZrNsACCYD7R6EIBII=
|
||||
yunion.io/x/executor v0.0.0-20211018100936-39a2cd966656/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
|
||||
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
|
||||
|
||||
@@ -267,7 +267,42 @@ func (self *SExternalProject) SyncWithCloudProject(ctx context.Context, userCred
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if account.AutoCreateProject && options.Options.EnableAutoRenameProject {
|
||||
pm, _ := account.GetProjectMapping()
|
||||
if pm != nil && pm.Enabled.IsTrue() && pm.IsNeedProjectSync() && self.ProjectSrc != string(apis.OWNER_SOURCE_LOCAL) {
|
||||
extTags, err := ext.GetTags()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "extModel.GetTags")
|
||||
}
|
||||
find := false
|
||||
if pm.Rules != nil {
|
||||
for _, rule := range *pm.Rules {
|
||||
domainId, projectId, newProj, isMatch := rule.IsMatchTags(extTags)
|
||||
if isMatch && len(newProj) > 0 {
|
||||
domainId, projectId, err = account.getOrCreateTenant(context.TODO(), newProj, "", "", "auto create from tag")
|
||||
if err != nil {
|
||||
log.Errorf("getOrCreateTenant(%s) error: %v", newProj, err)
|
||||
continue
|
||||
}
|
||||
if len(domainId) > 0 && len(projectId) > 0 {
|
||||
self.DomainId = domainId
|
||||
self.ProjectId = projectId
|
||||
find = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if !find && account.AutoCreateProject {
|
||||
desc := fmt.Sprintf("auto create from cloud project %s (%s)", self.Name, self.ExternalId)
|
||||
domainId, projectId, err := account.getOrCreateTenant(ctx, self.Name, self.DomainId, "", desc)
|
||||
if err != nil {
|
||||
log.Errorf("failed to get or create tenant %s(%s) %v", self.Name, self.ExternalId, err)
|
||||
} else {
|
||||
self.DomainId = domainId
|
||||
self.ProjectId = projectId
|
||||
}
|
||||
}
|
||||
} else if account.AutoCreateProject && options.Options.EnableAutoRenameProject {
|
||||
tenant, err := db.TenantCacheManager.FetchTenantById(ctx, self.ProjectId)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "TenantCacheManager.FetchTenantById(%s)", self.ProjectId)
|
||||
|
||||
Vendored
+1
-1
@@ -1439,7 +1439,7 @@ sigs.k8s.io/structured-merge-diff/v4/value
|
||||
# sigs.k8s.io/yaml v1.2.0
|
||||
## explicit; go 1.12
|
||||
sigs.k8s.io/yaml
|
||||
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221228030216-7840b7140ffa
|
||||
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20221229033822-9125be57abc8
|
||||
## explicit; go 1.18
|
||||
yunion.io/x/cloudmux/pkg/apis
|
||||
yunion.io/x/cloudmux/pkg/apis/billing
|
||||
|
||||
+2
-2
@@ -977,8 +977,8 @@ func getResourceGroup(id string) string {
|
||||
break
|
||||
}
|
||||
}
|
||||
if idx > 0 && idx < len(info)-1 {
|
||||
return fmt.Sprintf("%s/%s", info[1], info[idx])
|
||||
if idx > 0 && idx < len(info)-2 {
|
||||
return fmt.Sprintf("%s/%s", info[2], info[idx])
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
+2
-2
@@ -96,12 +96,12 @@ func (self *SESXiClient) getEcsMetrics(metricName string, metricType cloudprovid
|
||||
|
||||
sample, err := perfManager.Query(self.context, queries)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "Query")
|
||||
}
|
||||
|
||||
result, err := perfManager.ToMetricSeries(self.context, sample)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrap(err, "ToMetricSeries")
|
||||
}
|
||||
|
||||
ret := []cloudprovider.MetricValues{}
|
||||
|
||||
+1
-1
@@ -155,7 +155,7 @@ func (self *SDatastoreImageCache) GetIImageInImagecache() ([]cloudprovider.IClou
|
||||
var ErrTimeConsuming = errors.Error("time consuming")
|
||||
|
||||
func (self *SDatastoreImageCache) getTemplateVMsFromCache() ([]*SVirtualMachine, error) {
|
||||
ihosts, err := self.datastore.datacenter.GetIHosts()
|
||||
ihosts, err := self.datastore.getCachedAttachedHosts()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
+30
-1
@@ -53,7 +53,7 @@ var (
|
||||
vmLayoutExProps = []string{"layoutEx.file"}
|
||||
)
|
||||
|
||||
var VIRTUAL_MACHINE_PROPS = []string{"name", "parent", "resourcePool", "snapshot", "config", "availableField"}
|
||||
var VIRTUAL_MACHINE_PROPS = []string{"name", "parent", "resourcePool", "snapshot", "config", "availableField", "datastore"}
|
||||
|
||||
func init() {
|
||||
VIRTUAL_MACHINE_PROPS = append(VIRTUAL_MACHINE_PROPS, vmSummaryProps...)
|
||||
@@ -1588,3 +1588,32 @@ func (self *SVirtualMachine) ResetToInstanceSnapshot(ctx context.Context, idStr
|
||||
}
|
||||
return object.NewTask(self.manager.client.Client, res.Returnval).Wait(ctx)
|
||||
}
|
||||
|
||||
func (vm *SVirtualMachine) GetDatastores() ([]*SDatastore, error) {
|
||||
dsList := make([]*SDatastore, 0)
|
||||
dss := vm.getVirtualMachine().Datastore
|
||||
for i := range dss {
|
||||
var moStore mo.Datastore
|
||||
err := vm.manager.reference2Object(dss[i].Reference(), DATASTORE_PROPS, &moStore)
|
||||
if err != nil {
|
||||
log.Errorf("datastore reference2Object %s", err)
|
||||
return nil, errors.Wrap(err, "reference2Object")
|
||||
}
|
||||
ds := NewDatastore(vm.manager, &moStore, vm.datacenter)
|
||||
dsList = append(dsList, ds)
|
||||
}
|
||||
return dsList, nil
|
||||
}
|
||||
|
||||
func (vm *SVirtualMachine) GetDatastoreNames() []string {
|
||||
dss, err := vm.GetDatastores()
|
||||
if err != nil {
|
||||
log.Errorf("GetDatastores fail %s", err)
|
||||
return nil
|
||||
}
|
||||
names := make([]string, 0, len(dss))
|
||||
for i := range dss {
|
||||
names = append(names, dss[i].GetName())
|
||||
}
|
||||
return names
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user