mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 06:09:39 +08:00
fix(region): vendor update (#23819)
This commit is contained in:
@@ -98,7 +98,7 @@ require (
|
||||
k8s.io/cri-api v0.28.15
|
||||
k8s.io/klog/v2 v2.20.0
|
||||
moul.io/http2curl/v2 v2.3.0
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251117093436-5d20ee2245bf
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251124060311-cef8482caf89
|
||||
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0
|
||||
yunion.io/x/jsonutils v1.0.1-0.20250507052344-1abcf4f443b1
|
||||
yunion.io/x/log v1.0.1-0.20240305175729-7cf2d6cd5a91
|
||||
|
||||
@@ -1672,8 +1672,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.20251117093436-5d20ee2245bf h1:gf0g/dfVIr77Uh+V7/YcY99GGqKYEwvYcUNirx50+aM=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251117093436-5d20ee2245bf/go.mod h1:MeA5UnvNhLXMvy+xPMOzRqjWMWMkZ3QXZP0u1bYEM0M=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251124060311-cef8482caf89 h1:v4dD4xxL5EU/LaQVsCMR5z6GON2CTzH4tcGG9smv9vU=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251124060311-cef8482caf89/go.mod h1:JlmQ8iuGdaAlUkivFVcUAJgi6QYr5jz1vKv7pQ5m7p8=
|
||||
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0 h1:msG4SiDSVU7CrXH06WuHlNEZXIooTcmNbfrIGHuIHBU=
|
||||
yunion.io/x/executor v0.0.0-20250518005516-5402e9e0bed0/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws=
|
||||
yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634=
|
||||
|
||||
Vendored
+1
-1
@@ -2264,7 +2264,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.20251117093436-5d20ee2245bf
|
||||
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20251124060311-cef8482caf89
|
||||
## explicit; go 1.24
|
||||
yunion.io/x/cloudmux/pkg/apis
|
||||
yunion.io/x/cloudmux/pkg/apis/billing
|
||||
|
||||
+7
-7
@@ -35,11 +35,11 @@ import (
|
||||
* {"arn":"arn:aws:organizations::285906155448:account/o-vgh74bqhdw/285906155448","email":"swordqiu@gmail.com","id":"285906155448","joined_method":"INVITED","joined_timestamp":"2021-02-09T03:55:27.724000Z","name":"qiu jian","status":"ACTIVE"}
|
||||
*/
|
||||
type SAccount struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Arn string `json:"arn"`
|
||||
Email string `json:"email"`
|
||||
Status string `json:"status"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Arn string `json:"arn"`
|
||||
Email string `json:"email"`
|
||||
State string `json:"state"`
|
||||
|
||||
JoinedMethod string `json:"joined_method"`
|
||||
JoinedTimestamp time.Time `json:"joined_timestamp"`
|
||||
@@ -201,7 +201,7 @@ func (r *SRegion) ListAccounts() ([]SAccount, error) {
|
||||
Name: *actPtr.Name,
|
||||
Arn: *actPtr.Arn,
|
||||
Email: *actPtr.Email,
|
||||
Status: string(actPtr.Status),
|
||||
State: string(actPtr.State),
|
||||
JoinedMethod: string(actPtr.JoinedMethod),
|
||||
JoinedTimestamp: *actPtr.JoinedTimestamp,
|
||||
}
|
||||
@@ -253,7 +253,7 @@ func (awscli *SAwsClient) GetSubAccounts() ([]cloudprovider.SSubAccount, error)
|
||||
subAccounts := []cloudprovider.SSubAccount{}
|
||||
for _, account := range accounts {
|
||||
subAccount := cloudprovider.SSubAccount{}
|
||||
switch account.Status {
|
||||
switch account.State {
|
||||
case "ACTIVE":
|
||||
subAccount.HealthStatus = api.CLOUD_PROVIDER_HEALTH_NORMAL
|
||||
case "PENDING_ACTIVATION":
|
||||
|
||||
-79
@@ -15,16 +15,7 @@
|
||||
package esxi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/vmware/govmomi/object"
|
||||
"github.com/vmware/govmomi/vim25/mo"
|
||||
"github.com/vmware/govmomi/vim25/types"
|
||||
|
||||
"yunion.io/x/pkg/errors"
|
||||
|
||||
"yunion.io/x/cloudmux/pkg/cloudprovider"
|
||||
)
|
||||
|
||||
type SCluster struct {
|
||||
@@ -35,76 +26,6 @@ func NewCluster(manager *SESXiClient, cluster *mo.ClusterComputeResource, dc *SD
|
||||
return &SCluster{SManagedObject: newManagedObject(manager, cluster, dc)}
|
||||
}
|
||||
|
||||
func (cluster *SCluster) ListResourcePools() ([]mo.ResourcePool, error) {
|
||||
var pools, result []mo.ResourcePool
|
||||
err := cluster.manager.scanMObjects(cluster.object.Entity().Self, RESOURCEPOOL_PROPS, &pools)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "scanMObjects")
|
||||
}
|
||||
for i := range pools {
|
||||
if pools[i].Parent.Type == "ClusterComputeResource" {
|
||||
continue
|
||||
}
|
||||
result = append(result, pools[i])
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (cluster *SCluster) getDefaultResourcePool() (mo.ResourcePool, error) {
|
||||
pools := []mo.ResourcePool{}
|
||||
err := cluster.manager.scanMObjects(cluster.object.Entity().Self, RESOURCEPOOL_PROPS, &pools)
|
||||
if err != nil {
|
||||
return mo.ResourcePool{}, errors.Wrap(err, "scanMObjects")
|
||||
}
|
||||
for i := range pools {
|
||||
if pools[i].Parent.Type == "ClusterComputeResource" {
|
||||
return pools[i], nil
|
||||
}
|
||||
}
|
||||
return mo.ResourcePool{}, cloudprovider.ErrNotFound
|
||||
}
|
||||
|
||||
func (cluster *SCluster) CreateResourcePool(name string) (*mo.ResourcePool, error) {
|
||||
if len(name) == 0 {
|
||||
return nil, errors.Error("empty name str")
|
||||
}
|
||||
root, err := cluster.getDefaultResourcePool()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "getDefaultResourcePool")
|
||||
}
|
||||
pool := object.NewResourcePool(cluster.manager.client.Client, root.Reference())
|
||||
pool.InventoryPath = fmt.Sprintf("/%s/host/%s/Resources", cluster.datacenter.GetName(), cluster.GetName())
|
||||
_, err = pool.Create(context.Background(), name, types.DefaultResourceConfigSpec())
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "pool.Create")
|
||||
}
|
||||
|
||||
pools, err := cluster.ListResourcePools()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "listResourcePools")
|
||||
}
|
||||
for i := range pools {
|
||||
p := NewResourcePool(cluster.manager, &pools[i], cluster.datacenter)
|
||||
if p.GetName() == name {
|
||||
return &pools[i], nil
|
||||
}
|
||||
}
|
||||
return nil, errors.Wrap(cloudprovider.ErrNotFound, "AfterCreate")
|
||||
}
|
||||
|
||||
func (cluster *SCluster) SyncResourcePool(name string) (*mo.ResourcePool, error) {
|
||||
pools, err := cluster.ListResourcePools()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ListResourcePools")
|
||||
}
|
||||
for i := range pools {
|
||||
if pools[i].Entity().Name == name {
|
||||
return &pools[i], nil
|
||||
}
|
||||
}
|
||||
return cluster.CreateResourcePool(name)
|
||||
}
|
||||
|
||||
func (cluster *SCluster) getoCluster() *mo.ClusterComputeResource {
|
||||
return cluster.object.(*mo.ClusterComputeResource)
|
||||
}
|
||||
|
||||
+2
-8
@@ -118,18 +118,12 @@ func (dc *SDatacenter) GetResourcePools() ([]cloudprovider.ICloudProject, error)
|
||||
}
|
||||
|
||||
func (dc *SDatacenter) listResourcePools() ([]mo.ResourcePool, error) {
|
||||
var pools, result []mo.ResourcePool
|
||||
var pools []mo.ResourcePool
|
||||
err := dc.manager.scanMObjects(dc.object.Entity().Self, RESOURCEPOOL_PROPS, &pools)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "scanMObjects")
|
||||
}
|
||||
for i := range pools {
|
||||
if pools[i].Parent.Type == "ClusterComputeResource" {
|
||||
continue
|
||||
}
|
||||
result = append(result, pools[i])
|
||||
}
|
||||
return result, nil
|
||||
return pools, nil
|
||||
}
|
||||
|
||||
func (dc *SDatacenter) ListClusters() ([]*SCluster, error) {
|
||||
|
||||
+27
-166
@@ -145,31 +145,6 @@ func (host *SHost) GetName() string {
|
||||
return formatName(host.SManagedObject.GetName())
|
||||
}
|
||||
|
||||
func (host *SHost) GetSchedtags() ([]string, error) {
|
||||
clusters, err := host.datacenter.listClusters()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cpName := host.datacenter.manager.cpcfg.Name
|
||||
reference := host.GetHostSystem().Reference()
|
||||
tags := make([]string, 0, 1)
|
||||
oDatacenter := host.datacenter.getDatacenter()
|
||||
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/%s/%s", cpName, oDatacenter.Name, oc.Name))
|
||||
continue Loop
|
||||
}
|
||||
}
|
||||
}
|
||||
return tags, nil
|
||||
}
|
||||
|
||||
func (host *SHost) getHostSystem() *mo.HostSystem {
|
||||
return host.object.(*mo.HostSystem)
|
||||
}
|
||||
@@ -330,10 +305,7 @@ func (host *SHost) GetIStorageById(id string) (cloudprovider.ICloudStorage, erro
|
||||
}
|
||||
|
||||
func (host *SHost) GetEnabled() bool {
|
||||
if host.getHostSystem().Summary.Runtime.InMaintenanceMode {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
return !host.getHostSystem().Summary.Runtime.InMaintenanceMode
|
||||
}
|
||||
|
||||
func (host *SHost) GetHostStatus() string {
|
||||
@@ -784,6 +756,7 @@ type SCreateVMParam struct {
|
||||
Disks []SDiskInfo
|
||||
Nics []jsonutils.JSONObject
|
||||
ProjectId string
|
||||
ResourcePool string
|
||||
InstanceSnapshotInfo SEsxiInstanceSnapshotInfo
|
||||
EnableEsxiSwap bool
|
||||
}
|
||||
@@ -868,7 +841,7 @@ func (host *SHost) needScsi(disks []SDiskInfo) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (host *SHost) addDisks(ctx context.Context, dc *SDatacenter, ds *SDatastore, disks []SDiskInfo, uuid string, objectVm *object.VirtualMachine) (*SVirtualMachine, error) {
|
||||
func (host *SHost) addDisks(ctx context.Context, ds *SDatastore, disks []SDiskInfo, uuid string, objectVm *object.VirtualMachine) (*SVirtualMachine, error) {
|
||||
getVM := func() (*SVirtualMachine, error) {
|
||||
var moVM mo.VirtualMachine
|
||||
err := host.manager.reference2Object(objectVm.Reference(), VIRTUAL_MACHINE_PROPS, &moVM)
|
||||
@@ -1054,9 +1027,10 @@ func (host *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat
|
||||
|
||||
firmware := ""
|
||||
if len(params.Bios) != 0 {
|
||||
if params.Bios == "BIOS" {
|
||||
switch params.Bios {
|
||||
case "BIOS":
|
||||
firmware = "bios"
|
||||
} else if params.Bios == "UEFI" {
|
||||
case "UEFI":
|
||||
firmware = "efi"
|
||||
}
|
||||
}
|
||||
@@ -1165,7 +1139,7 @@ func (host *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat
|
||||
return
|
||||
}
|
||||
|
||||
pool, err := host.GetResourcePool()
|
||||
pool, err := host.SyncResourcePool(params.ResourcePool)
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, "GetResourcePool")
|
||||
return
|
||||
@@ -1183,7 +1157,7 @@ func (host *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat
|
||||
}
|
||||
vmRef := info.Result.(types.ManagedObjectReference)
|
||||
objectVM := object.NewVirtualMachine(host.manager.client.Client, vmRef)
|
||||
vm, err = host.addDisks(ctx, dc, ds, params.Disks, params.Uuid, objectVM)
|
||||
vm, err = host.addDisks(ctx, ds, params.Disks, params.Uuid, objectVM)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1288,9 +1262,9 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, snapshot
|
||||
return nil, errors.Wrap(err, "GetFolder")
|
||||
}
|
||||
|
||||
resourcePool, err := host.GetResourcePool()
|
||||
resourcePool, err := host.SyncResourcePool(params.ResourcePool)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "GetResourcePool")
|
||||
return nil, errors.Wrap(err, "SyncResourcePool")
|
||||
}
|
||||
|
||||
poolref := resourcePool.Reference()
|
||||
@@ -1504,10 +1478,7 @@ func (host *SHost) changeNic(device types.BaseVirtualDevice, update types.BaseVi
|
||||
|
||||
func (host *SHost) isVersion50() bool {
|
||||
version := host.GetVersion()
|
||||
if strings.HasPrefix(version, "5.") {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
return strings.HasPrefix(version, "5.")
|
||||
}
|
||||
|
||||
func (host *SHost) getVmVersion() string {
|
||||
@@ -1684,33 +1655,6 @@ func (host *SHost) FileUrlPathToDsPath(path string) (string, error) {
|
||||
return newPath, nil
|
||||
}
|
||||
|
||||
/*func (host *SHost) FindNetworkByVlanID(vlanID int32) (IVMNetwork, error) {
|
||||
if host.IsActiveVlanID(vlanID) {
|
||||
net, err := host.findBasicNetwork(vlanID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "findBasicNetwork error")
|
||||
}
|
||||
if net != nil {
|
||||
return net, nil
|
||||
}
|
||||
|
||||
// no found in basic network
|
||||
dvpg, err := host.findVlanDVPG(vlanID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "findVlanDVPG")
|
||||
}
|
||||
return dvpg, nil
|
||||
}
|
||||
n, err := host.findBasicNetwork(vlanID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "find Basic network")
|
||||
}
|
||||
if n != nil {
|
||||
return n, err
|
||||
}
|
||||
return host.findNovlanDVPG()
|
||||
}*/
|
||||
|
||||
// IsActiveVlanID will detect if vlanID is active that means vlanID in (1, 4095).
|
||||
func (host *SHost) IsActiveVlanID(vlanID int32) bool {
|
||||
if vlanID > 1 && vlanID < 4095 {
|
||||
@@ -1719,25 +1663,6 @@ func (host *SHost) IsActiveVlanID(vlanID int32) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
/*func (host *SHost) findBasicNetwork(vlanID int32) (IVMNetwork, error) {
|
||||
nets, err := host.getBasicNetworks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(nets) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
if !host.IsActiveVlanID(vlanID) {
|
||||
return nets[0], nil
|
||||
}
|
||||
for i := range nets {
|
||||
if nets[i].GetVlanId() == vlanID {
|
||||
return nets[i], nil
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}*/
|
||||
|
||||
func (host *SHost) getBasicNetworks() ([]IVMNetwork, error) {
|
||||
nets, err := host.GetNetworks()
|
||||
if err != nil {
|
||||
@@ -1784,24 +1709,6 @@ func (host *SHost) getNetworkById(netId string) (IVMNetwork, error) {
|
||||
return nil, errors.ErrNotFound
|
||||
}
|
||||
|
||||
/*func (host *SHost) findNovlanDVPG() (*SDistributedVirtualPortgroup, error) {
|
||||
nets, err := host.datacenter.GetNetworks()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "SHost.datacenter.GetNetworks")
|
||||
}
|
||||
for _, net := range nets {
|
||||
dvpg, ok := net.(*SDistributedVirtualPortgroup)
|
||||
if !ok || !dvpg.ContainHost(host) || len(dvpg.GetActivePorts()) == 0 {
|
||||
continue
|
||||
}
|
||||
nvlan := dvpg.GetVlanId()
|
||||
if !host.IsActiveVlanID(nvlan) {
|
||||
return dvpg, nil
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}*/
|
||||
|
||||
func (host *SHost) findDVPGById(id string) (*SDistributedVirtualPortgroup, error) {
|
||||
nets, err := host.datacenter.GetNetworks()
|
||||
if err != nil {
|
||||
@@ -1815,34 +1722,6 @@ func (host *SHost) findDVPGById(id string) (*SDistributedVirtualPortgroup, error
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
/*func (host *SHost) findVlanDVPG(vlanId int32) (*SDistributedVirtualPortgroup, error) {
|
||||
nets, err := host.datacenter.GetNetworks()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "SHost.datacenter.GetNetworks")
|
||||
}
|
||||
for _, net := range nets {
|
||||
dvpg, ok := net.(*SDistributedVirtualPortgroup)
|
||||
if !ok || len(dvpg.GetActivePorts()) == 0 {
|
||||
continue
|
||||
}
|
||||
nvlan := dvpg.GetVlanId()
|
||||
if nvlan == vlanId {
|
||||
if dvpg.ContainHost(host) {
|
||||
return dvpg, nil
|
||||
}
|
||||
msg := "Find dvpg with correct vlan but it didn't contain this host"
|
||||
log.Debugf(msg)
|
||||
// add host to dvg
|
||||
// err := dvpg.AddHostToDVS(host)
|
||||
// if err != nil {
|
||||
// return nil, errors.Wrapf(err, "dvpg %s add host to dvs error", dvpg.GetName())
|
||||
// }
|
||||
continue
|
||||
}
|
||||
}
|
||||
return nil, nil
|
||||
}*/
|
||||
|
||||
func (host *SHost) GetHostSystem() *object.HostSystem {
|
||||
return object.NewHostSystem(host.manager.client.Client, host.getHostSystem().Reference())
|
||||
}
|
||||
@@ -1883,47 +1762,29 @@ func (host *SHost) getParent() (*mo.ComputeResource, error) {
|
||||
return mcr, nil
|
||||
}
|
||||
|
||||
func (host *SHost) GetResourcePools() ([]mo.ResourcePool, error) {
|
||||
cluster, err := host.GetCluster()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "GetCluster")
|
||||
}
|
||||
return cluster.ListResourcePools()
|
||||
}
|
||||
|
||||
func (host *SHost) GetCluster() (*SCluster, error) {
|
||||
cluster, err := host.getCluster()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "getCluster")
|
||||
}
|
||||
return NewCluster(host.manager, cluster, host.datacenter), nil
|
||||
}
|
||||
|
||||
func (host *SHost) SyncResourcePool(name string) (*object.ResourcePool, error) {
|
||||
cluster, err := host.GetCluster()
|
||||
if err != nil {
|
||||
log.Errorf("failed to get host %s cluster info: %v", host.GetName(), err)
|
||||
if len(name) == 0 {
|
||||
return host.GetResourcePool()
|
||||
}
|
||||
pool, err := cluster.SyncResourcePool(name)
|
||||
dc, err := host.GetDatacenter()
|
||||
if err != nil {
|
||||
log.Errorf("failed to sync resourcePool(%s) for cluster %s error: %v", name, cluster.GetName(), err)
|
||||
return host.GetResourcePool()
|
||||
return nil, errors.Wrap(err, "GetDatacenter")
|
||||
}
|
||||
return object.NewResourcePool(host.manager.client.Client, pool.Reference()), nil
|
||||
}
|
||||
|
||||
func (host *SHost) getCluster() (*mo.ClusterComputeResource, error) {
|
||||
moHost := host.getHostSystem()
|
||||
if moHost.Parent.Type != "ClusterComputeResource" {
|
||||
return nil, fmt.Errorf("host %s parent is not the cluster resource", host.GetName())
|
||||
}
|
||||
cluster := &mo.ClusterComputeResource{}
|
||||
err := host.manager.reference2Object(*moHost.Parent, []string{"name", "resourcePool"}, cluster)
|
||||
pools, err := dc.listResourcePools()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "SESXiClient.reference2Object")
|
||||
return nil, errors.Wrap(err, "ListResourcePools")
|
||||
}
|
||||
return cluster, nil
|
||||
for i := range pools {
|
||||
pool := NewResourcePool(host.manager, &pools[i], host.datacenter)
|
||||
if strings.EqualFold(strings.Join(pool.GetPath(), "/"), name) ||
|
||||
strings.EqualFold(strings.Join(pool.GetPath(), "|"), name) ||
|
||||
strings.EqualFold(pool.GetName(), name) {
|
||||
log.Debugf("SyncResourcePool: %s found", strings.Join(pool.GetPath(), "|"))
|
||||
return object.NewResourcePool(host.manager.client.Client, pools[i].Reference()), nil
|
||||
}
|
||||
}
|
||||
log.Errorf("SyncResourcePool: %s not found", name)
|
||||
return host.GetResourcePool()
|
||||
}
|
||||
|
||||
func (host *SHost) GetSiblingHosts() ([]*SHost, error) {
|
||||
|
||||
+34
-13
@@ -15,20 +15,19 @@
|
||||
package esxi
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/vmware/govmomi/vim25/mo"
|
||||
|
||||
api "yunion.io/x/cloudmux/pkg/apis/compute"
|
||||
"yunion.io/x/cloudmux/pkg/multicloud"
|
||||
"yunion.io/x/log"
|
||||
)
|
||||
|
||||
var RESOURCEPOOL_PROPS = []string{"name", "parent", "host"}
|
||||
var RESOURCEPOOL_PROPS = []string{"resourcePool"}
|
||||
|
||||
type SResourcePool struct {
|
||||
multicloud.SProjectBase
|
||||
multicloud.STagBase
|
||||
|
||||
SManagedObject
|
||||
}
|
||||
|
||||
@@ -40,17 +39,39 @@ func (pool *SResourcePool) GetStatus() string {
|
||||
return api.EXTERNAL_PROJECT_STATUS_AVAILABLE
|
||||
}
|
||||
|
||||
func (pool *SResourcePool) GetName() string {
|
||||
path := pool.GetPath()
|
||||
if len(path) > 5 {
|
||||
path = path[5:]
|
||||
func (pool *SResourcePool) getParentEntity(obj *mo.ManagedEntity) *mo.ManagedEntity {
|
||||
parent := obj.Parent
|
||||
if parent != nil {
|
||||
var entity mo.ManagedEntity
|
||||
err := pool.manager.reference2Object(*parent, []string{"name", "parent"}, &entity)
|
||||
if err != nil {
|
||||
log.Errorf("%s", err)
|
||||
return nil
|
||||
}
|
||||
return &entity
|
||||
}
|
||||
name := []string{}
|
||||
for _, _name := range path {
|
||||
p, _ := url.PathUnescape(_name)
|
||||
name = append([]string{p}, name...)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (pool *SResourcePool) fetchPath() []string {
|
||||
path := []string{pool.GetName()}
|
||||
obj := pool.object.Entity()
|
||||
for obj != nil {
|
||||
obj = pool.getParentEntity(obj)
|
||||
if obj == nil || (obj.Self.Type == "ResourcePool" && obj.Name == "Resources") {
|
||||
break
|
||||
}
|
||||
path = append(path, obj.Name)
|
||||
}
|
||||
return strings.Join(name, "/")
|
||||
reverseArray(path)
|
||||
return path
|
||||
}
|
||||
|
||||
func (pool *SResourcePool) GetPath() []string {
|
||||
if pool.path == nil {
|
||||
pool.path = pool.fetchPath()
|
||||
}
|
||||
return pool.path
|
||||
}
|
||||
|
||||
func NewResourcePool(manager *SESXiClient, rp *mo.ResourcePool, dc *SDatacenter) *SResourcePool {
|
||||
|
||||
-8
@@ -44,14 +44,6 @@ func (host *SHost) GetSysTags() map[string]string {
|
||||
if dc != nil {
|
||||
tags["datacenter"] = dc.GetName()
|
||||
}
|
||||
cluster, _ := host.GetCluster()
|
||||
if cluster != nil {
|
||||
tags["cluster"] = cluster.GetName()
|
||||
}
|
||||
resourcePool, _ := host.GetResourcePool()
|
||||
if resourcePool != nil {
|
||||
tags["resource_pool"] = resourcePool.Name()
|
||||
}
|
||||
paths := host.GetPath()
|
||||
for i := 3; i < len(paths); i++ {
|
||||
tags[fmt.Sprintf("folder_%d", i-3)] = paths[i]
|
||||
|
||||
+9
-5
@@ -20,16 +20,20 @@ import (
|
||||
)
|
||||
|
||||
type SOracleTag struct {
|
||||
Tags map[string]string `json:"freeformTags"`
|
||||
SysTags struct {
|
||||
OracleTags map[string]string `json:"Oracle-Tags"`
|
||||
} `json:"definedTags"`
|
||||
}
|
||||
|
||||
func (self SOracleTag) GetSysTags() map[string]string {
|
||||
return nil
|
||||
func (ot SOracleTag) GetSysTags() map[string]string {
|
||||
return ot.SysTags.OracleTags
|
||||
}
|
||||
|
||||
func (self SOracleTag) GetTags() (map[string]string, error) {
|
||||
return nil, errors.Wrapf(cloudprovider.ErrNotImplemented, "GetTags")
|
||||
func (ot SOracleTag) GetTags() (map[string]string, error) {
|
||||
return ot.Tags, nil
|
||||
}
|
||||
|
||||
func (self SOracleTag) SetTags(tags map[string]string, replace bool) error {
|
||||
func (ot SOracleTag) SetTags(tags map[string]string, replace bool) error {
|
||||
return errors.Wrap(cloudprovider.ErrNotImplemented, "SetTags")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user