mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
feat(esxi): add GetSchedtags implementation for esxi.SHost
This commit is contained in:
@@ -104,3 +104,7 @@ func (cluster *SCluster) SyncResourcePool(name string) (*mo.ResourcePool, error)
|
||||
}
|
||||
return cluster.CreateResourcePool(name)
|
||||
}
|
||||
|
||||
func (cluster *SCluster) getoCluster() *mo.ClusterComputeResource {
|
||||
return cluster.object.(*mo.ClusterComputeResource)
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ type SDatacenter struct {
|
||||
istorages []cloudprovider.ICloudStorage
|
||||
inetworks []IVMNetwork
|
||||
iresoucePool []cloudprovider.ICloudProject
|
||||
clusters []*SCluster
|
||||
|
||||
Name string
|
||||
}
|
||||
@@ -148,6 +149,9 @@ func (dc *SDatacenter) GetCluster(cluster string) (*SCluster, error) {
|
||||
}
|
||||
|
||||
func (dc *SDatacenter) listClusters() ([]*SCluster, error) {
|
||||
if dc.clusters != nil {
|
||||
return dc.clusters, nil
|
||||
}
|
||||
clusters := []mo.ClusterComputeResource{}
|
||||
err := dc.manager.scanMObjects(dc.object.Entity().Self, RESOURCEPOOL_PROPS, &clusters)
|
||||
if err != nil {
|
||||
|
||||
@@ -128,6 +128,29 @@ func (self *SHost) GetMetadata() *jsonutils.JSONDict {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *SHost) GetSchedtags() ([]string, error) {
|
||||
clusters, err := self.datacenter.listClusters()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
reference := self.GetoHostSystem().Reference()
|
||||
tags := make([]string, 0, 1)
|
||||
Loop:
|
||||
for i := range clusters {
|
||||
oc := clusters[i].getoCluster()
|
||||
if len(oc.Host) == 0 {
|
||||
continue
|
||||
}
|
||||
for _, h := range oc.Host {
|
||||
if h == reference {
|
||||
tags = append(tags, fmt.Sprintf("cluster:%s", oc.Name))
|
||||
continue Loop
|
||||
}
|
||||
}
|
||||
}
|
||||
return tags, nil
|
||||
}
|
||||
|
||||
func (self *SHost) getHostSystem() *mo.HostSystem {
|
||||
return self.object.(*mo.HostSystem)
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/multicloud"
|
||||
)
|
||||
|
||||
var RESOURCEPOOL_PROPS = []string{"name", "parent"}
|
||||
var RESOURCEPOOL_PROPS = []string{"name", "parent", "host"}
|
||||
|
||||
type SResourcePool struct {
|
||||
multicloud.SResourceBase
|
||||
|
||||
Reference in New Issue
Block a user