fix(region): esxi name and tag sync (#17884)

This commit is contained in:
屈轩
2023-08-30 20:30:26 +08:00
committed by GitHub
parent db68897a1f
commit f8fa51bad1
5 changed files with 71 additions and 11 deletions
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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=
-4
View File
@@ -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
}
+1 -1
View File
@@ -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
View File
@@ -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