Skip to content

Commit 68654d4

Browse files
committed
[#29216] yb-ctl: internal refactor to use dict
Summary: For displaying status info, the old code used a list of kv tuples. Use a dict instead to make this cleaner and prepare for outputting info in json format in the future. No user-visible changes should be present. Jira: DB-18987 Test Plan: On Almalinux 8 bin/yb-ctl start --rf 3 --num_drives 4 sleep 5 bin/yb-ctl status should show something like ---------------------------------------------------------------------------------------------------- | Node Count: 3 | Replication Factor: 3 | ---------------------------------------------------------------------------------------------------- | JDBC : jdbc:postgresql://127.0.0.41:5433/yugabyte | | YSQL Shell : bin/ysqlsh -h 127.0.0.41 | | YCQL Shell : bin/ycqlsh 127.0.0.41 | | YEDIS Shell : bin/redis-cli -h 127.0.0.41 | | Web UI : http://127.0.0.41:7000/ | | Cluster Data : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data | ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- | Node 1: yb-tserver (pid 3780945), yb-master (pid 3780936) | ---------------------------------------------------------------------------------------------------- | JDBC : jdbc:postgresql://127.0.0.41:5433/yugabyte | | YSQL Shell : bin/ysqlsh -h 127.0.0.41 | | YCQL Shell : bin/ycqlsh 127.0.0.41 | | YEDIS Shell : bin/redis-cli -h 127.0.0.41 | | data-dir[0] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-1/yb-data | | data-dir[1] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-2/yb-data | | data-dir[2] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-3/yb-data | | data-dir[3] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-4/yb-data | | yb-tserver Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-1/yb-data/tserver/logs | | yb-master Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-1/disk-1/yb-data/master/logs | ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- | Node 2: yb-tserver (pid 3780948), yb-master (pid 3780939) | ---------------------------------------------------------------------------------------------------- | JDBC : jdbc:postgresql://127.0.0.42:5433/yugabyte | | YSQL Shell : bin/ysqlsh -h 127.0.0.42 | | YCQL Shell : bin/ycqlsh 127.0.0.42 | | YEDIS Shell : bin/redis-cli -h 127.0.0.42 | | data-dir[0] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-1/yb-data | | data-dir[1] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-2/yb-data | | data-dir[2] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-3/yb-data | | data-dir[3] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-4/yb-data | | yb-tserver Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-1/yb-data/tserver/logs | | yb-master Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-2/disk-1/yb-data/master/logs | ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- | Node 3: yb-tserver (pid 3780951), yb-master (pid 3780942) | ---------------------------------------------------------------------------------------------------- | JDBC : jdbc:postgresql://127.0.0.43:5433/yugabyte | | YSQL Shell : bin/ysqlsh -h 127.0.0.43 | | YCQL Shell : bin/ycqlsh 127.0.0.43 | | YEDIS Shell : bin/redis-cli -h 127.0.0.43 | | data-dir[0] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-1/yb-data | | data-dir[1] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-2/yb-data | | data-dir[2] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-3/yb-data | | data-dir[3] : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-4/yb-data | | yb-tserver Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-1/yb-data/tserver/logs | | yb-master Logs : /net/dev-server-jason/share/code/yugabyte-db/4/build/latest/cluster_data/node-3/disk-1/yb-data/master/logs | ---------------------------------------------------------------------------------------------------- Close: #29216 Reviewers: sanketh, patnaik.balivada, #db-approvers, hsunder Reviewed By: patnaik.balivada, #db-approvers, hsunder Subscribers: patnaik.balivada, devops Differential Revision: https://phorge.dev.yugabyte.com/D47948
1 parent cc9e979 commit 68654d4

File tree

1 file changed

+18
-26
lines changed
  • scripts/installation/bin

1 file changed

+18
-26
lines changed

scripts/installation/bin/yb-ctl

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,7 +1732,7 @@ class ClusterControl:
17321732
print("-" * 100)
17331733
print("| {:<96} |".format(title))
17341734
print("-" * 100)
1735-
for k, v in body_kv_list:
1735+
for k, v in body_kv_list.items():
17361736
print("| {:20}: {:<74} |".format(k, v))
17371737
print("-" * 100)
17381738

@@ -1743,14 +1743,11 @@ class ClusterControl:
17431743
title = "Node Count: {} | Replication Factor: {}".format(
17441744
num_servers, self.get_replication_factor())
17451745
info_kv_list = self.gen_status_tserver_connectivity(DaemonId(DAEMON_TYPE_TSERVER, 1))
1746-
info_kv_list.extend([
1747-
# TODO: this might cause issues if the first master is down...
1748-
("Web UI", "http://{}/".format(
1749-
self.options.get_client_advertise_host_port(
1750-
DaemonId(DAEMON_TYPE_MASTER, 1),
1751-
"http"))),
1752-
("Cluster Data", self.options.cluster_base_dir)
1753-
])
1746+
# TODO: this might cause issues if the first master is down...
1747+
info_kv_list["Web UI"] = "http://{}/".format(self.options.get_client_advertise_host_port(
1748+
DaemonId(DAEMON_TYPE_MASTER, 1),
1749+
"http"))
1750+
info_kv_list["Cluster Data"] = self.options.cluster_base_dir
17541751
self.print_status_box(title, info_kv_list)
17551752
if more_info:
17561753
status_cmd = "yb-ctl"
@@ -1761,7 +1758,7 @@ class ClusterControl:
17611758
print("For more info, please use: {}".format(status_cmd))
17621759

17631760
def gen_status_tserver_connectivity(self, tserver_daemon_id):
1764-
info_kv_list = []
1761+
info_kv_list = dict()
17651762
if not tserver_daemon_id:
17661763
return info_kv_list
17671764

@@ -1777,11 +1774,8 @@ class ClusterControl:
17771774
self.options.get_client_tool_path('ysqlsh'), ip_address, ysql_port,
17781775
YSQL_DEFAULT_PORT)
17791776

1780-
info_kv_list.extend([
1781-
("JDBC", "jdbc:postgresql://{}:{}/yugabyte".format(
1782-
ip_address, ysql_port)),
1783-
("YSQL Shell", ysqlsh_cmd_line)
1784-
])
1777+
info_kv_list["JDBC"] = "jdbc:postgresql://{}:{}/yugabyte".format(ip_address, ysql_port)
1778+
info_kv_list["YSQL Shell"] = ysqlsh_cmd_line
17851779

17861780
# -----------------------------------------------------------------------------------------
17871781
# cqlsh command line
@@ -1794,8 +1788,7 @@ class ClusterControl:
17941788
if ycql_port != YCQL_DEFAULT_PORT:
17951789
cqlsh_cmd_line += ' %s' % ycql_port
17961790

1797-
info_kv_list.append(
1798-
("YCQL Shell", cqlsh_cmd_line))
1791+
info_kv_list["YCQL Shell"] = cqlsh_cmd_line
17991792

18001793
# -----------------------------------------------------------------------------------------
18011794
# redis-cli command line
@@ -1806,7 +1799,7 @@ class ClusterControl:
18061799
redis_cli_cmd_line = format_cmd_line_with_host_port(
18071800
self.options.get_client_tool_path('redis-cli'), ip_address, yedis_port,
18081801
YEDIS_DEFAULT_PORT)
1809-
info_kv_list.append(("YEDIS Shell", redis_cli_cmd_line))
1802+
info_kv_list["YEDIS Shell"] = redis_cli_cmd_line
18101803
return info_kv_list
18111804

18121805
def show_node_status(self, daemon_index, server_counts=None):
@@ -1818,19 +1811,18 @@ class ClusterControl:
18181811
master_daemon_id = DaemonId(DAEMON_TYPE_MASTER, daemon_index) if is_master else None
18191812

18201813
info_kv_list = self.gen_status_tserver_connectivity(tserver_daemon_id)
1821-
log_kv_list = []
1814+
log_kv_list = dict()
18221815
for idx, node_dir in enumerate(self.get_base_node_dirs(daemon_index)):
18231816
data_path = os.path.join(node_dir, "yb-data")
18241817
if idx == 0:
18251818
if is_tserver:
1826-
log_kv_list.append(
1827-
("yb-tserver Logs", os.path.join(data_path, DAEMON_TYPE_TSERVER, "logs")))
1819+
log_kv_list["yb-tserver Logs"] = os.path.join(data_path, DAEMON_TYPE_TSERVER,
1820+
"logs")
18281821
if is_master:
1829-
log_kv_list.append(
1830-
("yb-master Logs", os.path.join(data_path, DAEMON_TYPE_MASTER, "logs")))
1831-
info_kv_list.append(
1832-
("data-dir[{}]".format(idx), data_path))
1833-
info_kv_list.extend(log_kv_list)
1822+
log_kv_list["yb-master Logs"] = os.path.join(data_path, DAEMON_TYPE_MASTER,
1823+
"logs")
1824+
info_kv_list["data-dir[{}]".format(idx)] = data_path
1825+
info_kv_list |= log_kv_list
18341826

18351827
master_pid = self.get_pid(master_daemon_id) if master_daemon_id else None
18361828
process_list = []

0 commit comments

Comments
 (0)