MCPcopy Index your code
hub / github.com/docker/cli / mergeNodeUpdate

Function mergeNodeUpdate

cli/command/node/update.go:83–120  ·  view source on GitHub ↗
(flags *pflag.FlagSet)

Source from the content-addressed store, hash-verified

81}
82
83func mergeNodeUpdate(flags *pflag.FlagSet) func(*swarm.Node) error {
84 return func(node *swarm.Node) error {
85 spec := &node.Spec
86
87 if flags.Changed(flagRole) {
88 str, err := flags.GetString(flagRole)
89 if err != nil {
90 return err
91 }
92 spec.Role = swarm.NodeRole(str)
93 }
94 if flags.Changed(flagAvailability) {
95 str, err := flags.GetString(flagAvailability)
96 if err != nil {
97 return err
98 }
99 spec.Availability = swarm.NodeAvailability(str)
100 }
101 if spec.Annotations.Labels == nil {
102 spec.Annotations.Labels = make(map[string]string)
103 }
104 if flags.Changed(flagLabelAdd) {
105 labels := flags.Lookup(flagLabelAdd).Value.(*opts.ListOpts).GetSlice()
106 maps.Copy(spec.Annotations.Labels, opts.ConvertKVStringsToMap(labels))
107 }
108 if flags.Changed(flagLabelRemove) {
109 keys := flags.Lookup(flagLabelRemove).Value.(*opts.ListOpts).GetSlice()
110 for _, k := range keys {
111 // if a key doesn't exist, fail the command explicitly
112 if _, exists := spec.Annotations.Labels[k]; !exists {
113 return fmt.Errorf("key %s doesn't exist in node's labels", k)
114 }
115 delete(spec.Annotations.Labels, k)
116 }
117 }
118 return nil
119 }
120}
121
122const (
123 flagRole = "role"

Callers 1

runUpdateFunction · 0.85

Calls 1

GetSliceMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…