Skip to content

Commit f8306f5

Browse files
kinarashahAlena Prokharchyk
authored andcommitted
update cloudCredentialSchema if it already exists and resourceFields change
1 parent 0348c77 commit f8306f5

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

pkg/controllers/management/drivers/nodedriver/machine_driver.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"github.com/rancher/rancher/pkg/controllers/management/drivers"
7+
"reflect"
78
"strings"
89
"sync"
910

@@ -178,7 +179,7 @@ func (m *Lifecycle) download(obj *v3.NodeDriver) (*v3.NodeDriver, error) {
178179

179180
func (m *Lifecycle) createCredSchema(obj *v3.NodeDriver, credFields map[string]v3.Field) (*v3.NodeDriver, error) {
180181
name := credentialConfigSchemaName(obj.Spec.DisplayName)
181-
_, err := m.schemaLister.Get("", name)
182+
credSchema, err := m.schemaLister.Get("", name)
182183
if err != nil {
183184
if errors.IsNotFound(err) {
184185
credentialSchema := &v3.DynamicSchema{
@@ -199,6 +200,13 @@ func (m *Lifecycle) createCredSchema(obj *v3.NodeDriver, credFields map[string]v
199200
return obj, err
200201
}
201202
return obj, err
203+
} else if !reflect.DeepEqual(credSchema.Spec.ResourceFields, credFields) {
204+
toUpdate := credSchema.DeepCopy()
205+
toUpdate.Spec.ResourceFields = credFields
206+
_, err := m.schemaClient.Update(toUpdate)
207+
if err != nil {
208+
return obj, err
209+
}
202210
}
203211
return obj, nil
204212
}
@@ -297,7 +305,7 @@ func (m *Lifecycle) createOrUpdateNodeForEmbeddedTypeWithParents(embeddedType, f
297305
}
298306
if _, ok := nodeSchema.Spec.ResourceFields[fieldName]; !ok {
299307
// if embedded we add the type to schema
300-
logrus.Infof("uploading %s to node schema", fieldName)
308+
logrus.Infof("uploading %s to %s schema", fieldName, schemaID)
301309
nodeSchema.Spec.ResourceFields[fieldName] = v3.Field{
302310
Create: true,
303311
Nullable: true,
@@ -309,7 +317,7 @@ func (m *Lifecycle) createOrUpdateNodeForEmbeddedTypeWithParents(embeddedType, f
309317
} else {
310318
// if not we delete it from schema
311319
if _, ok := nodeSchema.Spec.ResourceFields[fieldName]; ok {
312-
logrus.Infof("deleting %s from node schema", fieldName)
320+
logrus.Infof("deleting %s from %s schema", fieldName, schemaID)
313321
delete(nodeSchema.Spec.ResourceFields, fieldName)
314322
shouldUpdate = true
315323
}

0 commit comments

Comments
 (0)