diff --git a/lib/cmdlib.py b/lib/cmdlib.py index e75ba33aabfd225f6d37b90fbc8bf5e82bd016ff..a23594fb8b6617e8b846bc662299a7336453a671 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -1774,6 +1774,7 @@ class LUQueryNodes(NoHooksLU): "master_candidate", "master", "offline", + "drained", ) def ExpandNames(self): @@ -1898,6 +1899,8 @@ class LUQueryNodes(NoHooksLU): val = node.name == master_node elif field == "offline": val = node.offline + elif field == "drained": + val = node.drained elif self._FIELDS_DYNAMIC.Matches(field): val = live_data[node.name].get(field, None) else: @@ -6465,6 +6468,7 @@ class IAllocator(object): "primary_ip": ninfo.primary_ip, "secondary_ip": ninfo.secondary_ip, "offline": ninfo.offline, + "drained": ninfo.drained, "master_candidate": ninfo.master_candidate, } diff --git a/lib/rapi/rlib2.py b/lib/rapi/rlib2.py index d2e40514ff91223e7146ed11bf4000702033f756..03f2d7a924d5793953e49fb6bb0b9880f9ae9ecd 100644 --- a/lib/rapi/rlib2.py +++ b/lib/rapi/rlib2.py @@ -39,7 +39,7 @@ I_FIELDS = ["name", "admin_state", "os", "oper_state", "oper_ram", "status", "tags"] -N_FIELDS = ["name", "offline", "master_candidate", +N_FIELDS = ["name", "offline", "master_candidate", "drained", "dtotal", "dfree", "mtotal", "mnode", "mfree", "pinst_cnt", "sinst_cnt", "tags", diff --git a/scripts/gnt-node b/scripts/gnt-node index b6552abf3ee28db654cee1ca3f0dd79b9cf4f21e..75bc419c9425e9c1fd7d85b2813c337f84cfb693 100755 --- a/scripts/gnt-node +++ b/scripts/gnt-node @@ -55,7 +55,7 @@ _LIST_HEADERS = { "serial_no": "SerialNo", "master_candidate": "MasterC", "master": "IsMaster", - "offline": "Offline", + "offline": "Offline", "drained": "Drained", } @@ -140,7 +140,7 @@ def ListNodes(opts, args): val = row[idx] if field in list_type_fields: val = ",".join(val) - elif field in ('master', 'master_candidate', 'offline'): + elif field in ('master', 'master_candidate', 'offline', 'drained'): if val: val = 'Y' else: @@ -323,13 +323,18 @@ def ShowNodeConfig(opts, args): """ cl = GetClient() result = cl.QueryNodes(fields=["name", "pip", "sip", - "pinst_list", "sinst_list"], + "pinst_list", "sinst_list", + "master_candidate", "drained", "offline"], names=args, use_locking=True) - for name, primary_ip, secondary_ip, pinst, sinst in result: + for (name, primary_ip, secondary_ip, pinst, sinst, + is_mc, drained, offline) in result: ToStdout("Node name: %s", name) ToStdout(" primary ip: %s", primary_ip) ToStdout(" secondary ip: %s", secondary_ip) + ToStdout(" master candidate: %s", is_mc) + ToStdout(" drained: %s", drained) + ToStdout(" offline: %s", offline) if pinst: ToStdout(" primary for instances:") for iname in pinst: