1010
1111from azure .cli .core .util import sdk_no_wait
1212
13+ def parse_key_value_list (pairs ):
14+ result = {}
15+ if pairs is None :
16+ return result
17+ for pair in pairs :
18+ if "=" not in pair :
19+ raise ValueError (f"Invalid format '{ pair } '. Expected format key=value." )
20+ key , value = pair .split ("=" , 1 )
21+ result [key .strip ()] = value .strip ()
22+ return result
1323
1424def add_machine (cmd , client , raw_parameters , no_wait ):
1525 resource_group_name = raw_parameters .get ("resource_group_name" )
@@ -29,6 +39,30 @@ def add_machine(cmd, client, raw_parameters, no_wait):
2939 machine ,
3040 )
3141
42+ def update_machine (cmd , client , raw_parameters , existedMachine , no_wait ):
43+ resource_group_name = raw_parameters .get ("resource_group_name" )
44+ cluster_name = raw_parameters .get ("cluster_name" )
45+ nodepool_name = raw_parameters .get ("nodepool_name" )
46+ machine_name = raw_parameters .get ("machine_name" )
47+
48+ updated_machine = updateMachine (cmd , raw_parameters , existedMachine )
49+
50+ return sdk_no_wait (
51+ no_wait ,
52+ client .begin_create_or_update ,
53+ resource_group_name ,
54+ cluster_name ,
55+ nodepool_name ,
56+ machine_name ,
57+ updated_machine ,
58+ )
59+
60+ def updateMachine (cmd , raw_parameters , existedMachine ):
61+ existedMachine = update_machine_tags (cmd , raw_parameters , existedMachine )
62+ existedMachine .properties .kubernetes = update_machine_kubernetes_profile_taints_labels (cmd , raw_parameters , existedMachine )
63+
64+ return existedMachine
65+
3266
3367def constructMachine (cmd , raw_parameters , machine_name ):
3468 machine_name = raw_parameters .get ("machine_name" )
@@ -114,6 +148,25 @@ def set_machine_kubernetes_profile(cmd, raw_parameters):
114148 )
115149 return machineKubernetesProfile
116150
151+ def update_machine_tags (cmd , raw_parameters , existedMachine ):
152+ tags = raw_parameters .get ("tags" )
153+ if tags is not None and len (tags ) != 0 :
154+ existedMachine .properties .tags = tags
155+ return existedMachine
156+
157+ def update_machine_kubernetes_profile_taints_labels (cmd , raw_parameters , existedMachine ):
158+ taints_raw = raw_parameters .get ("node_taints" )
159+ if taints_raw is not None :
160+ node_taints = [x .strip () for x in (taints_raw .split ("," ) if taints_raw else [])]
161+ existedMachine .properties .kubernetes .node_taints = node_taints
162+
163+ labels_raw = raw_parameters .get ("labels" )
164+ labels = parse_key_value_list (labels_raw )
165+ if labels is not None and len (labels ) != 0 :
166+ existedMachine .properties .kubernetes .node_labels = labels
167+
168+ return existedMachine .properties .kubernetes
169+
117170
118171def set_machine_os_profile (cmd , raw_parameters ):
119172 MachineOSProfile = cmd .get_models (
0 commit comments