diff --git a/go.mod b/go.mod index 105c758ae2..ee0558ee76 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,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.20230714020436-02f1bfcc8e8e + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230720081437-38d4b6ea7d8a yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 diff --git a/go.sum b/go.sum index 59b75e87fc..919ad1f45a 100644 --- a/go.sum +++ b/go.sum @@ -1174,8 +1174,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.20230714020436-02f1bfcc8e8e h1:5X432B4i7RMiA76FAFwQueyIvyw3t0LgjyrS+a37wfA= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230714020436-02f1bfcc8e8e/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230720081437-38d4b6ea7d8a h1:ujMlchmj27KG+aPwhZ3zOVhbLVvBtNKb+bq2+A++jK0= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230720081437-38d4b6ea7d8a/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= diff --git a/vendor/modules.txt b/vendor/modules.txt index 2f4d981185..de3953cb95 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1440,7 +1440,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.20230714020436-02f1bfcc8e8e +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230720081437-38d4b6ea7d8a ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing diff --git a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/storagecache.go b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/storagecache.go index cd9d39a378..f382fe2df4 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/storagecache.go +++ b/vendor/yunion.io/x/cloudmux/pkg/multicloud/esxi/storagecache.go @@ -92,15 +92,23 @@ func (self *SDatastoreImageCache) GetPath() string { return path.Join(self.datastore.GetMountPoint(), IMAGE_CACHE_DIR_NAME) } -func (self *SDatastoreImageCache) getTempalteVMs() ([]*SVirtualMachine, error) { - return self.datastore.FetchTemplateVMs() +func (self *SDatastore) getTempalteVMs() ([]*SVirtualMachine, error) { + return self.FetchTemplateVMs() } -func (self *SDatastoreImageCache) getFakeTempateVMs() ([]*SVirtualMachine, error) { +func (self *SDatastoreImageCache) getTempalteVMs() ([]*SVirtualMachine, error) { + return self.getTempalteVMs() +} + +func (self *SDatastore) getFakeTempateVMs() ([]*SVirtualMachine, error) { if tempalteNameRegex == nil { return nil, nil } - return self.datastore.FetchFakeTempateVMs("") + return self.FetchFakeTempateVMs("") +} + +func (self *SDatastoreImageCache) getFakeTempateVMs() ([]*SVirtualMachine, error) { + return self.datastore.getFakeTempateVMs() } func (self *SDatastoreImageCache) GetIImageInImagecache() ([]cloudprovider.ICloudImage, error) { @@ -153,12 +161,12 @@ func (self *SDatastoreImageCache) GetIImageInImagecache() ([]cloudprovider.IClou var ErrTimeConsuming = errors.Error("time consuming") -func (self *SDatastoreImageCache) getTemplateVMsFromCache() ([]*SVirtualMachine, error) { - ihosts, err := self.datastore.getCachedAttachedHosts() +func (self *SDatastore) getTemplateVMsFromCache() ([]*SVirtualMachine, error) { + ihosts, err := self.getCachedAttachedHosts() if err != nil { return nil, err } - dsRef := self.datastore.getDatastore().Self + dsRef := self.getDatastore().Self ret := make([]*SVirtualMachine, 0) for i := range ihosts { tvms := ihosts[i].(*SHost).tempalteVMs @@ -178,20 +186,23 @@ func (self *SDatastoreImageCache) getTemplateVMsFromCache() ([]*SVirtualMachine, return ret, nil } -func (self *SDatastoreImageCache) GetIImageInTemplateVMs() ([]cloudprovider.ICloudImage, error) { - ret := make([]cloudprovider.ICloudImage, 0, 2) - log.Infof("start to GetIImages") +func (self *SDatastoreImageCache) getTemplateVMsFromCache() ([]*SVirtualMachine, error) { + return self.datastore.getTemplateVMsFromCache() +} - datastore := self.datastore - if datastore.datacenter.ihosts != nil { +func (self *SDatastore) GetICloudImages(cache *SDatastoreImageCache) ([]cloudprovider.ICloudImage, error) { + ret := make([]cloudprovider.ICloudImage, 0, 2) + + if self.datacenter.ihosts != nil { vms, err := self.getTemplateVMsFromCache() if err == nil { for i := range vms { - ret = append(ret, NewVMTemplate(vms[i], self)) + ret = append(ret, NewVMTemplate(vms[i], cache)) } return ret, nil } } + realTemplates, err := self.getTempalteVMs() if err != nil { return nil, errors.Wrap(err, "getTemplateVMs") @@ -202,20 +213,33 @@ func (self *SDatastoreImageCache) GetIImageInTemplateVMs() ([]cloudprovider.IClo } for i := range realTemplates { - ret = append(ret, NewVMTemplate(realTemplates[i], self)) + ret = append(ret, NewVMTemplate(realTemplates[i], cache)) } for i := range fakeTemplates { - ret = append(ret, NewVMTemplate(fakeTemplates[i], self)) + ret = append(ret, NewVMTemplate(fakeTemplates[i], cache)) } + return ret, nil +} - log.Infof("get templates successfully") - log.Debugf("fake template name: ") - for i := range fakeTemplates { - log.Debugf("%s ", fakeTemplates[i].GetName()) +func (self *SDatastoreImageCache) GetIImageInTemplateVMs() ([]cloudprovider.ICloudImage, error) { + if self.host == nil { + return self.datastore.GetICloudImages(self) } - log.Debugf("real template name: ") - for i := range realTemplates { - log.Debugf("%s ", realTemplates[i].GetName()) + storages, err := self.host.GetIStorages() + if err != nil { + return nil, err + } + ret := []cloudprovider.ICloudImage{} + for i := range storages { + storage := storages[i].(*SDatastore) + if !storage.isLocalVMFS() { + continue + } + images, err := storage.GetICloudImages(self) + if err != nil { + return nil, err + } + ret = append(ret, images...) } return ret, nil } @@ -223,7 +247,6 @@ func (self *SDatastoreImageCache) GetIImageInTemplateVMs() ([]cloudprovider.IClo func (self *SDatastoreImageCache) GetIImageInTemplateVMsById(id string) (cloudprovider.ICloudImage, error) { if tempalteNameRegex != nil { vm, err := self.datastore.FetchFakeTempateVMById(id, "") - log.Infof("FetchFakeTempateVMById: %v, %v", vm, err) if err == nil { return NewVMTemplate(vm, self), nil } @@ -231,11 +254,25 @@ func (self *SDatastoreImageCache) GetIImageInTemplateVMsById(id string) (cloudpr return nil, err } } - vm, err := self.datastore.FetchTemplateVMById(id) - if err == nil { - return NewVMTemplate(vm, self), nil + if self.host == nil { + vm, err := self.datastore.FetchTemplateVMById(id) + if err == nil { + return NewVMTemplate(vm, self), nil + } + return nil, err } - return nil, err + storages, err := self.host.GetIStorages() + if err != nil { + return nil, err + } + for i := range storages { + storage := storages[i].(*SDatastore) + vm, err := storage.FetchTemplateVMById(id) + if err == nil { + return NewVMTemplate(vm, self), nil + } + } + return nil, errors.Wrapf(cloudprovider.ErrNotFound, id) } func (self *SDatastoreImageCache) GetICustomizedCloudImages() ([]cloudprovider.ICloudImage, error) {