mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
fix(region): esxi name and tag sync (#17884)
This commit is contained in:
@@ -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.20230829080506-5b975c64c67c
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230830094721-0de402b6b61e
|
||||
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
|
||||
|
||||
@@ -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.20230829080506-5b975c64c67c h1:QVorptnv2PtZPQEEbFl4kugZrC/g9HsBOwTr2ufwQ/0=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230829080506-5b975c64c67c/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230830094721-0de402b6b61e h1:ZzUdPfGtUTtRnObm1VV3/tdNwnvoLwJwM5vAYiE+Zs0=
|
||||
yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230830094721-0de402b6b61e/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=
|
||||
|
||||
@@ -780,7 +780,3 @@ func (self *SESXiGuestDriver) StartDeleteGuestTask(ctx context.Context, userCred
|
||||
params.Add(jsonutils.JSONTrue, "delete_snapshots")
|
||||
return self.SBaseGuestDriver.StartDeleteGuestTask(ctx, userCred, guest, params, parentTaskId)
|
||||
}
|
||||
|
||||
func (self *SESXiGuestDriver) RequestRemoteUpdate(ctx context.Context, guest *models.SGuest, userCred mcclient.TokenCredential, replaceTags bool) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1437,7 +1437,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.20230829080506-5b975c64c67c
|
||||
# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230830094721-0de402b6b61e
|
||||
## explicit; go 1.18
|
||||
yunion.io/x/cloudmux/pkg/apis
|
||||
yunion.io/x/cloudmux/pkg/apis/billing
|
||||
|
||||
+67
-3
@@ -124,19 +124,83 @@ func (svm *SVirtualMachine) GetTags() (map[string]string, error) {
|
||||
}{}
|
||||
jsonutils.Update(&value, val)
|
||||
_, ok := ret[value.Key]
|
||||
if ok {
|
||||
if ok && len(value.Value) > 0 {
|
||||
result[ret[value.Key]] = value.Value
|
||||
}
|
||||
}
|
||||
for _, key := range ret {
|
||||
_, ok := result[key]
|
||||
if !ok {
|
||||
result[key] = ""
|
||||
delete(result, key)
|
||||
}
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (svm *SVirtualMachine) SetTags(tags map[string]string, replace bool) error {
|
||||
oldTags, err := svm.GetTags()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "GetTags")
|
||||
}
|
||||
|
||||
added, removed := map[string]string{}, map[string]string{}
|
||||
for k, v := range tags {
|
||||
oldValue, ok := oldTags[k]
|
||||
if !ok {
|
||||
added[k] = v
|
||||
} else if oldValue != v {
|
||||
removed[k] = oldValue
|
||||
added[k] = v
|
||||
}
|
||||
}
|
||||
if replace {
|
||||
for k, v := range oldTags {
|
||||
newValue, ok := tags[k]
|
||||
if !ok {
|
||||
removed[k] = v
|
||||
} else if v != newValue {
|
||||
added[k] = newValue
|
||||
removed[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cfm := object.NewCustomFieldsManager(svm.manager.client.Client)
|
||||
ctx := context.Background()
|
||||
|
||||
for k := range removed {
|
||||
id, err := cfm.FindKey(ctx, k)
|
||||
if err != nil {
|
||||
if !strings.Contains(err.Error(), "not found") {
|
||||
return errors.Wrapf(err, "FindKey %s", k)
|
||||
}
|
||||
continue
|
||||
}
|
||||
err = cfm.Set(ctx, svm.object.Reference(), id, "")
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "Set")
|
||||
}
|
||||
}
|
||||
for k, v := range added {
|
||||
id, err := cfm.FindKey(ctx, k)
|
||||
if err != nil {
|
||||
if !strings.Contains(err.Error(), "not found") {
|
||||
return errors.Wrapf(err, "FindKey %s", k)
|
||||
}
|
||||
ref, err := cfm.Add(ctx, k, "VirtualMachine", nil, nil)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "Add %s", k)
|
||||
}
|
||||
id = ref.Key
|
||||
}
|
||||
err = cfm.Set(ctx, svm.object.Reference(), id, v)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "Set")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (svm *SVirtualMachine) getVirtualMachine() *mo.VirtualMachine {
|
||||
return svm.object.(*mo.VirtualMachine)
|
||||
}
|
||||
@@ -231,7 +295,7 @@ func (svm *SVirtualMachine) rebuildDisk(ctx context.Context, disk *SVirtualDisk,
|
||||
}
|
||||
|
||||
func (svm *SVirtualMachine) UpdateVM(ctx context.Context, name string) error {
|
||||
return cloudprovider.ErrNotImplemented
|
||||
return svm.DoRename(ctx, name)
|
||||
}
|
||||
|
||||
// TODO: detach disk to a separate directory, so as to keep disk independent of VM
|
||||
|
||||
Reference in New Issue
Block a user