kaqing 1.98.15__py3-none-any.whl → 2.0.145__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of kaqing might be problematic. Click here for more details.

Files changed (180) hide show
  1. adam/app_session.py +1 -1
  2. adam/apps.py +2 -2
  3. adam/batch.py +30 -31
  4. adam/checks/check_utils.py +4 -4
  5. adam/checks/compactionstats.py +1 -1
  6. adam/checks/cpu.py +2 -2
  7. adam/checks/disk.py +1 -1
  8. adam/checks/gossip.py +1 -1
  9. adam/checks/memory.py +3 -3
  10. adam/checks/status.py +1 -1
  11. adam/commands/alter_tables.py +81 -0
  12. adam/commands/app.py +3 -3
  13. adam/commands/app_ping.py +2 -2
  14. adam/commands/audit/audit.py +86 -0
  15. adam/commands/audit/audit_repair_tables.py +77 -0
  16. adam/commands/audit/audit_run.py +58 -0
  17. adam/commands/audit/show_last10.py +51 -0
  18. adam/commands/audit/show_slow10.py +50 -0
  19. adam/commands/audit/show_top10.py +48 -0
  20. adam/commands/audit/utils_show_top10.py +59 -0
  21. adam/commands/bash/bash.py +133 -0
  22. adam/commands/bash/bash_completer.py +93 -0
  23. adam/commands/cat.py +56 -0
  24. adam/commands/cd.py +12 -82
  25. adam/commands/check.py +6 -0
  26. adam/commands/cli_commands.py +3 -3
  27. adam/commands/code.py +60 -0
  28. adam/commands/command.py +48 -12
  29. adam/commands/commands_utils.py +4 -5
  30. adam/commands/cql/cql_completions.py +28 -0
  31. adam/commands/cql/cql_utils.py +209 -0
  32. adam/commands/{cqlsh.py → cql/cqlsh.py} +15 -10
  33. adam/commands/deploy/__init__.py +0 -0
  34. adam/commands/{frontend → deploy}/code_start.py +1 -1
  35. adam/commands/{frontend → deploy}/code_stop.py +1 -1
  36. adam/commands/{frontend → deploy}/code_utils.py +2 -2
  37. adam/commands/deploy/deploy.py +48 -0
  38. adam/commands/deploy/deploy_frontend.py +52 -0
  39. adam/commands/deploy/deploy_pg_agent.py +38 -0
  40. adam/commands/deploy/deploy_pod.py +110 -0
  41. adam/commands/deploy/deploy_utils.py +29 -0
  42. adam/commands/deploy/undeploy.py +48 -0
  43. adam/commands/deploy/undeploy_frontend.py +41 -0
  44. adam/commands/deploy/undeploy_pg_agent.py +42 -0
  45. adam/commands/deploy/undeploy_pod.py +51 -0
  46. adam/commands/devices/__init__.py +0 -0
  47. adam/commands/devices/device.py +27 -0
  48. adam/commands/devices/device_app.py +146 -0
  49. adam/commands/devices/device_auit_log.py +43 -0
  50. adam/commands/devices/device_cass.py +145 -0
  51. adam/commands/devices/device_export.py +86 -0
  52. adam/commands/devices/device_postgres.py +109 -0
  53. adam/commands/devices/devices.py +25 -0
  54. adam/commands/export/__init__.py +0 -0
  55. adam/commands/export/clean_up_export_session.py +53 -0
  56. adam/commands/{frontend/teardown_frontend.py → export/clean_up_export_sessions.py} +9 -11
  57. adam/commands/export/drop_export_database.py +58 -0
  58. adam/commands/export/drop_export_databases.py +46 -0
  59. adam/commands/export/export.py +83 -0
  60. adam/commands/export/export_databases.py +170 -0
  61. adam/commands/export/export_select.py +85 -0
  62. adam/commands/export/export_select_x.py +54 -0
  63. adam/commands/export/export_use.py +55 -0
  64. adam/commands/export/exporter.py +364 -0
  65. adam/commands/export/import_session.py +68 -0
  66. adam/commands/export/importer.py +67 -0
  67. adam/commands/export/importer_athena.py +80 -0
  68. adam/commands/export/importer_sqlite.py +47 -0
  69. adam/commands/export/show_column_counts.py +63 -0
  70. adam/commands/export/show_export_databases.py +39 -0
  71. adam/commands/export/show_export_session.py +51 -0
  72. adam/commands/export/show_export_sessions.py +47 -0
  73. adam/commands/export/utils_export.py +291 -0
  74. adam/commands/help.py +12 -7
  75. adam/commands/issues.py +6 -0
  76. adam/commands/kubectl.py +41 -0
  77. adam/commands/login.py +9 -5
  78. adam/commands/logs.py +2 -1
  79. adam/commands/ls.py +4 -107
  80. adam/commands/medusa/medusa.py +2 -26
  81. adam/commands/medusa/medusa_backup.py +2 -2
  82. adam/commands/medusa/medusa_restore.py +3 -4
  83. adam/commands/medusa/medusa_show_backupjobs.py +4 -3
  84. adam/commands/medusa/medusa_show_restorejobs.py +3 -3
  85. adam/commands/nodetool.py +9 -4
  86. adam/commands/param_set.py +1 -1
  87. adam/commands/postgres/postgres.py +42 -43
  88. adam/commands/postgres/postgres_context.py +248 -0
  89. adam/commands/postgres/postgres_preview.py +0 -1
  90. adam/commands/postgres/postgres_utils.py +31 -0
  91. adam/commands/postgres/psql_completions.py +10 -0
  92. adam/commands/preview_table.py +18 -40
  93. adam/commands/pwd.py +2 -28
  94. adam/commands/reaper/reaper.py +4 -24
  95. adam/commands/reaper/reaper_restart.py +1 -1
  96. adam/commands/reaper/reaper_session.py +2 -2
  97. adam/commands/repair/repair.py +3 -27
  98. adam/commands/repair/repair_log.py +1 -1
  99. adam/commands/repair/repair_run.py +2 -2
  100. adam/commands/repair/repair_scan.py +2 -7
  101. adam/commands/repair/repair_stop.py +1 -1
  102. adam/commands/report.py +6 -0
  103. adam/commands/restart.py +2 -2
  104. adam/commands/rollout.py +1 -1
  105. adam/commands/shell.py +33 -0
  106. adam/commands/show/show.py +11 -26
  107. adam/commands/show/show_app_actions.py +3 -0
  108. adam/commands/show/show_app_id.py +1 -1
  109. adam/commands/show/show_app_queues.py +3 -2
  110. adam/commands/show/show_cassandra_status.py +3 -3
  111. adam/commands/show/show_cassandra_version.py +3 -3
  112. adam/commands/show/show_commands.py +4 -1
  113. adam/commands/show/show_host.py +33 -0
  114. adam/commands/show/show_login.py +3 -0
  115. adam/commands/show/show_processes.py +1 -1
  116. adam/commands/show/show_repairs.py +2 -2
  117. adam/commands/show/show_storage.py +1 -1
  118. adam/commands/watch.py +1 -1
  119. adam/config.py +16 -3
  120. adam/embedded_params.py +1 -1
  121. adam/pod_exec_result.py +10 -2
  122. adam/repl.py +132 -117
  123. adam/repl_commands.py +62 -18
  124. adam/repl_state.py +276 -55
  125. adam/sql/__init__.py +0 -0
  126. adam/sql/sql_completer.py +120 -0
  127. adam/sql/sql_state_machine.py +617 -0
  128. adam/sql/term_completer.py +76 -0
  129. adam/sso/authenticator.py +1 -1
  130. adam/sso/authn_ad.py +36 -56
  131. adam/sso/authn_okta.py +6 -32
  132. adam/sso/cred_cache.py +1 -1
  133. adam/sso/idp.py +74 -9
  134. adam/sso/idp_login.py +2 -2
  135. adam/sso/idp_session.py +10 -7
  136. adam/utils.py +85 -4
  137. adam/utils_athena.py +145 -0
  138. adam/utils_audits.py +102 -0
  139. adam/utils_k8s/__init__.py +0 -0
  140. adam/utils_k8s/app_clusters.py +33 -0
  141. adam/utils_k8s/app_pods.py +31 -0
  142. adam/{k8s_utils → utils_k8s}/cassandra_clusters.py +6 -21
  143. adam/{k8s_utils → utils_k8s}/cassandra_nodes.py +12 -5
  144. adam/utils_k8s/config_maps.py +34 -0
  145. adam/utils_k8s/deployment.py +56 -0
  146. adam/{k8s_utils → utils_k8s}/jobs.py +1 -1
  147. adam/{k8s_utils → utils_k8s}/kube_context.py +1 -1
  148. adam/utils_k8s/pods.py +342 -0
  149. adam/{k8s_utils → utils_k8s}/secrets.py +4 -0
  150. adam/utils_k8s/service_accounts.py +169 -0
  151. adam/{k8s_utils → utils_k8s}/statefulsets.py +5 -4
  152. adam/{k8s_utils → utils_k8s}/volumes.py +9 -0
  153. adam/utils_net.py +24 -0
  154. adam/utils_repl/__init__.py +0 -0
  155. adam/utils_repl/automata_completer.py +48 -0
  156. adam/utils_repl/repl_completer.py +46 -0
  157. adam/utils_repl/state_machine.py +173 -0
  158. adam/utils_sqlite.py +101 -0
  159. adam/version.py +1 -1
  160. {kaqing-1.98.15.dist-info → kaqing-2.0.145.dist-info}/METADATA +1 -1
  161. kaqing-2.0.145.dist-info/RECORD +227 -0
  162. adam/commands/bash.py +0 -87
  163. adam/commands/cql_utils.py +0 -53
  164. adam/commands/devices.py +0 -89
  165. adam/commands/frontend/setup.py +0 -60
  166. adam/commands/frontend/setup_frontend.py +0 -58
  167. adam/commands/frontend/teardown.py +0 -61
  168. adam/commands/postgres/postgres_session.py +0 -225
  169. adam/commands/user_entry.py +0 -77
  170. adam/k8s_utils/pods.py +0 -211
  171. kaqing-1.98.15.dist-info/RECORD +0 -160
  172. /adam/commands/{frontend → audit}/__init__.py +0 -0
  173. /adam/{k8s_utils → commands/bash}/__init__.py +0 -0
  174. /adam/{medusa_show_restorejobs.py → commands/cql/__init__.py} +0 -0
  175. /adam/{k8s_utils → utils_k8s}/custom_resources.py +0 -0
  176. /adam/{k8s_utils → utils_k8s}/ingresses.py +0 -0
  177. /adam/{k8s_utils → utils_k8s}/services.py +0 -0
  178. {kaqing-1.98.15.dist-info → kaqing-2.0.145.dist-info}/WHEEL +0 -0
  179. {kaqing-1.98.15.dist-info → kaqing-2.0.145.dist-info}/entry_points.txt +0 -0
  180. {kaqing-1.98.15.dist-info → kaqing-2.0.145.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,173 @@
1
+ from abc import abstractmethod
2
+ from typing import Generic, TypeVar
3
+
4
+ __all__ = [
5
+ 'State',
6
+ 'StateMachine',
7
+ ]
8
+
9
+ T = TypeVar('T')
10
+
11
+ class State:
12
+ def __init__(self, state: str, comeback_token: str = None, comeback_state: str = None):
13
+ self.state = state
14
+ self.comeback_token = comeback_token
15
+ self.comeback_state = comeback_state
16
+ self.context: dict[str, str] = {}
17
+
18
+ def __str__(self):
19
+ return f'{self.state if self.state else None} comeback[{self.comeback_token} {self.comeback_state}]'
20
+
21
+ class StateMachine(Generic[T]):
22
+ @abstractmethod
23
+ def spec(self) -> str:
24
+ return None
25
+
26
+ @abstractmethod
27
+ def keywords(self) -> list[str]:
28
+ return None
29
+
30
+ def expandable_names(self):
31
+ return []
32
+
33
+ def incomplete_name_transition_condition(self, from_s: str, token: str, to_s: str, suggestions: str) -> list[str]:
34
+ if not suggestions:
35
+ return None
36
+
37
+ tokens = [token]
38
+ if '|' in token:
39
+ tokens = token.split('|')
40
+
41
+ if 'name' not in tokens:
42
+ return None
43
+
44
+ return tokens
45
+
46
+ def __init__(self, indent=0, push_level = 0, debug = False):
47
+ self.states: dict[str, State] = {}
48
+ self.suggestions: dict[str, str] = {}
49
+
50
+ self.indent = indent
51
+ self.push_level = push_level
52
+ self.comebacks: dict[int, str] = {}
53
+ self.debug = debug
54
+
55
+ from_ss_to_add = []
56
+ from_ss = ['']
57
+ words: str = None
58
+ for l in self.spec():
59
+ t_and_w = l.split('^')
60
+ if len(t_and_w) > 1:
61
+ words = t_and_w[1].strip()
62
+ else:
63
+ words = None
64
+
65
+ tks = t_and_w[0].strip(' ').split('>')
66
+ if not l.startswith('-'):
67
+ if words:
68
+ self.suggestions[tks[0].strip(' ')] = words
69
+
70
+ if len(tks) == 1:
71
+ from_ss_to_add.append(tks[0].strip(' '))
72
+ continue
73
+
74
+ from_ss = []
75
+ from_ss.extend(from_ss_to_add)
76
+ from_ss_to_add = []
77
+ from_ss.append(tks[0].strip(' '))
78
+
79
+ self.add_transitions(from_ss, tks, words)
80
+
81
+ def add_transitions(self, from_ss: list[str], tks: list[str], words: str):
82
+ token = tks[1].strip(' ')
83
+ if len(tks) > 2:
84
+ to_s = tks[2].strip(' ')
85
+ for from_s in from_ss:
86
+ self.add_whitespace_transition(from_s, to_s)
87
+ self.add_transition(from_s, token, to_s)
88
+ self.add_incomplete_name_transition(from_s, token, to_s, words)
89
+ elif '<' in tks[0]:
90
+ from_and_token = tks[0].split('<')
91
+ if len(from_and_token) > 1:
92
+ for from_s in from_ss:
93
+ self.add_comeback_transition(from_s, from_and_token[1], tks[1].strip(' '))
94
+
95
+ def add_whitespace_transition(self, from_s: str, to_s: str):
96
+ if self.witespace_transition_condition(from_s, to_s):
97
+ if self.debug:
98
+ print(f'{from_s[:-1]} > _ = {to_s}')
99
+ self.states[f'{from_s[:-1]} > _'] = State(from_s)
100
+
101
+ def witespace_transition_condition(self, from_s: str, to_s: str):
102
+ return from_s.endswith('_')
103
+
104
+ def add_incomplete_name_transition(self, from_s: str, token: str, to_s: str, words: str):
105
+ if tokens := self.incomplete_name_transition_condition(from_s, token, to_s, words):
106
+ self.suggestions[to_s] = words
107
+ for token in tokens:
108
+ if self.debug:
109
+ print(f'{to_s} > {token} = {to_s}')
110
+ self.states[f'{to_s} > {token}'] = State(to_s)
111
+
112
+ def add_transition(self, from_s: str, token: str, to_s: str):
113
+ tokens = [token]
114
+ if '|' in token:
115
+ tokens = token.split('|')
116
+
117
+ for t in tokens:
118
+ if t == '_or_':
119
+ t = '||'
120
+ elif t == 'pipe':
121
+ t = '|'
122
+ elif t == '_rdr0_':
123
+ t = '<'
124
+ elif t == '_rdr1_':
125
+ t = '>'
126
+ elif t == '_rdr2_':
127
+ t = '2>'
128
+
129
+ if self.debug:
130
+ print(f'{from_s} > {t} = {to_s}')
131
+ self.states[f'{from_s} > {t}'] = State(to_s)
132
+
133
+ def add_comeback_transition(self, from_s: str, token: str, to_s: str):
134
+ key = f'{from_s} > ('
135
+ orig = self.states[key]
136
+ if not orig:
137
+ raise Exception(f'from state not found for {key}')
138
+
139
+ orig.comeback_token = token
140
+ orig.comeback_state = to_s
141
+ if self.debug:
142
+ print(f'{from_s} > ) = {to_s}')
143
+ self.states[key] = orig
144
+
145
+ def traverse_tokens(self, tokens: list[str], state: State = State('')):
146
+ for token in tokens[:-1]:
147
+ if not token:
148
+ continue
149
+
150
+ if self.debug:
151
+ print(f'{token} ', end='')
152
+
153
+ last_name = None
154
+
155
+ if (t := token.lower()) in self.keywords():
156
+ token = t
157
+ elif token in ['*', ',', '.']:
158
+ pass
159
+ else:
160
+ last_name = token
161
+ token = 'word'
162
+
163
+ try:
164
+ context = state.context
165
+ state = self.states[f'{state.state} > {token}']
166
+ state.context = context
167
+
168
+ if last_name:
169
+ state.context['last_name'] = last_name
170
+ except:
171
+ pass
172
+
173
+ return state
adam/utils_sqlite.py ADDED
@@ -0,0 +1,101 @@
1
+ import functools
2
+ import glob
3
+ import os
4
+ import sqlite3
5
+ import pandas
6
+
7
+ from adam.config import Config
8
+ from adam.utils import lines_to_tabular, log
9
+
10
+ # no state utility class
11
+ class SQLite:
12
+ def local_db_dir():
13
+ return Config().get('export.sqlite.local-db-dir', '/tmp/qing-db')
14
+
15
+ def keyspace(database: str):
16
+ return '_'.join(database.replace(".db", "").split('_')[1:])
17
+
18
+ def connect(session: str):
19
+ os.makedirs(SQLite.local_db_dir(), exist_ok=True)
20
+
21
+ conn = None
22
+
23
+ try:
24
+ conn = sqlite3.connect(f'{SQLite.local_db_dir()}/{session}_root.db')
25
+ cursor = None
26
+ try:
27
+ cursor = conn.cursor()
28
+ for d in SQLite.database_names(session):
29
+ if d != f'{session}_root.db':
30
+ q = f"ATTACH DATABASE '{SQLite.local_db_dir()}/{d}' AS {SQLite.keyspace(d)};"
31
+ cursor.execute(q)
32
+ finally:
33
+ if cursor:
34
+ cursor.close()
35
+ finally:
36
+ pass
37
+
38
+ return conn
39
+
40
+ @functools.lru_cache()
41
+ def database_names(prefix: str = None):
42
+ Config().wait_log('Inspecting export databases...')
43
+
44
+ pattern = f'{SQLite.local_db_dir()}/s*.db'
45
+ if prefix:
46
+ pattern = f'{SQLite.local_db_dir()}/{prefix}*'
47
+ return [os.path.basename(f) for f in glob.glob(pattern)]
48
+
49
+ def clear_cache(cache: str = None):
50
+ SQLite.database_names.cache_clear()
51
+ SQLite.table_names.cache_clear()
52
+
53
+ @functools.lru_cache()
54
+ def table_names(database: str):
55
+ tokens = database.replace('.db', '').split('_')
56
+ ts_prefix = tokens[0]
57
+ keyspace = '_'.join(tokens[1:])
58
+
59
+ conn = None
60
+ tables = []
61
+ try:
62
+ conn = sqlite3.connect(f'{SQLite.local_db_dir()}/{ts_prefix}_{keyspace}.db')
63
+ cursor = None
64
+ try:
65
+ cursor = conn.cursor()
66
+ cursor.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;")
67
+
68
+ tables = [row[0] for row in cursor.fetchall() if row[0] != "sqlite_sequence"]
69
+ finally:
70
+ if cursor:
71
+ cursor.close()
72
+
73
+ return tables
74
+ except sqlite3.Error as e:
75
+ print(f"Error connecting to or querying the database: {e}")
76
+ return []
77
+ finally:
78
+ if conn:
79
+ conn.close()
80
+
81
+ @functools.lru_cache()
82
+ def column_names(tables: list[str] = [], database: str = None, function: str = 'audit', partition_cols_only = False):
83
+ pass
84
+
85
+ def run_query(query: str, database: str = None, conn_passed = None):
86
+ conn = None
87
+ try:
88
+ if not conn_passed:
89
+ conn = SQLite.connect(database)
90
+
91
+ df = SQLite.query(conn_passed if conn_passed else conn, query)
92
+ lines = ['\t'.join(map(str, line)) for line in df.values.tolist()]
93
+ log(lines_to_tabular(lines, header='\t'.join(df.columns.tolist()), separator='\t'))
94
+
95
+ return len(lines)
96
+ finally:
97
+ if conn:
98
+ conn.close()
99
+
100
+ def query(conn, sql: str) -> tuple[str, str, list]:
101
+ return pandas.read_sql_query(sql, conn)
adam/version.py CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- __version__ = "1.98.15" #: the working version
4
+ __version__ = "2.0.145" #: the working version
5
5
  __release__ = "1.0.0" #: the release version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaqing
3
- Version: 1.98.15
3
+ Version: 2.0.145
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -0,0 +1,227 @@
1
+ adam/__init__.py,sha256=oVw1FNd9HZPJ7wm6BNn5ybyNGJLjJ8kopMeBiwgMaOI,59
2
+ adam/app_session.py,sha256=Klypm4JYHOlovaRCHAZ2P_Mj_nheMlcQgX403R0TJGk,6969
3
+ adam/apps.py,sha256=okYibOEiCVoM5zsPUKaLJZlwlnvWSHKL7U2J1Yk3-Aw,6701
4
+ adam/batch.py,sha256=V_2DvL4p6FVHda-d1EysXK47-9vYNR3Gc7FPj9E0JOo,23974
5
+ adam/cli.py,sha256=03pIZdomAu7IL-GSP6Eun_PKwwISShRAmfx6eVRPGC0,458
6
+ adam/cli_group.py,sha256=W3zy1BghCtVcEXizq8fBH-93ZRVVwgAyGPzy0sHno1Y,593
7
+ adam/config.py,sha256=JMMUj2yOt_3xsdAB6HxFSM0uk1hlgvIOIY3RbYw09Nw,2978
8
+ adam/embedded_apps.py,sha256=lKPx63mKzJbNmwz0rgL4gF76M9fDGxraYTtNAIGnZ_s,419
9
+ adam/embedded_params.py,sha256=ILtMk8b8nndeNTbo2WTVRjvmZTw0-Z3GhnV2zs7evp0,5671
10
+ adam/log.py,sha256=gg5DK52wLPc9cjykeh0WFHyAk1qI3HEpGaAK8W2dzXY,1146
11
+ adam/pod_exec_result.py,sha256=YORij4tRFBOzLEcLQOz3HcKQgltm7T5YaNre1ju8yRc,1245
12
+ adam/repl.py,sha256=LpybDEyefLAI_onG4dFA-SM5Fc72PD_u4zGk39tz3kE,7543
13
+ adam/repl_commands.py,sha256=EuTX1BL3nuR9IH2k_VNMvzdlEHUj_enF6l6HjH0MRpM,6386
14
+ adam/repl_session.py,sha256=uIogcvWBh7wd8QQ-p_JgLsyJ8YJgINw5vOd6JIsd7Vo,472
15
+ adam/repl_state.py,sha256=iwqAQzCqTsxYzEwRC_cJLZJFj898MBDJWrrifiCPIxs,14774
16
+ adam/utils.py,sha256=axob6v4iPqW9aDYtPZL-9SzhA_79PK3DzcyzSxwBXV0,9136
17
+ adam/utils_athena.py,sha256=OQZ4RnzmuVsNibeHQ3K3qMbgGVU7Q4dOrf1dQjqXOSg,5250
18
+ adam/utils_audits.py,sha256=pQT0Nijmp2nsdtSa8a7iaq-YywoGBGKf7GES6dnUT3c,3974
19
+ adam/utils_net.py,sha256=byEtNVr8iG9UaD7dM77dN2WEBClB7YNKult7LKFTCOc,428
20
+ adam/utils_sqlite.py,sha256=8AljTXc6uLkkXSNkmQ1AnNLnt54ifPn27WZKEY_mnFc,3178
21
+ adam/version.py,sha256=Ept3qeiNOX84Ak9g40EQBUGQT1x7sOYA4lO1cp4JBhw,140
22
+ adam/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ adam/checks/check.py,sha256=Qopr3huYcMu2bzQgb99dEUYjFzkjKHRI76S6KA9b9Rk,702
24
+ adam/checks/check_context.py,sha256=FEHkQ32jY1EDopQ2uYWqy9v7aEEX1orLpJWhopwAlh4,402
25
+ adam/checks/check_result.py,sha256=5_DVNgkCC9t7xFJYNsjd9bfXA1I4vYb6K3kmN8cdMrA,669
26
+ adam/checks/check_utils.py,sha256=z6MqlCZg1YMJZgDe0GGq4sYBaQ2w0_wXsbTLjlAEz1Q,3772
27
+ adam/checks/compactionstats.py,sha256=NFi9RcRImZqCJBZs3LH851RHmlu4BO0s_QOsvkdUxKQ,2304
28
+ adam/checks/cpu.py,sha256=5KK-t1_2TSbT0lX6syEBRF1kZPoFQMOr1EJejFFq5gs,2666
29
+ adam/checks/disk.py,sha256=y0gwfh-MuEx0Ot7EXf8d7Q0ovbkThFMS1yWrIeeVe84,5214
30
+ adam/checks/gossip.py,sha256=60PeVkhtMWziiYILPwMKfesFjOanIn-nxeZZL5nUHQs,3119
31
+ adam/checks/issue.py,sha256=u3E6yCpDGGJiveKXdpkrKq7HQRTrG7aR2XLCoO-ys7U,498
32
+ adam/checks/memory.py,sha256=1TPoC_eL7QmMMJfaclW3hoSxudsUc4qvrzzb0Z4f5Kw,3056
33
+ adam/checks/status.py,sha256=4IFCesrovCbGKgbJxLr0VxjGGWmmF23ZQNfHUFb5Kyg,2140
34
+ adam/columns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ adam/columns/column.py,sha256=O_5ptfx136BKdLo8enDvSL3HlId1dkjMM2XUumg1tNA,956
36
+ adam/columns/columns.py,sha256=AzovFIwOhBDQHc4bFEbhMoxxuOCIbxIzXfp6fQyiRYk,1645
37
+ adam/columns/compactions.py,sha256=ybIEYTkDuRTBLIUNurGhu1jhVnf1UEpJ0abo3GTgmKw,928
38
+ adam/columns/cpu.py,sha256=rPb4pOFNZDOplggaUmSZbpCPgZxyWVXO_JXLcE4YPlM,493
39
+ adam/columns/dir_data.py,sha256=gDLcrwMZ6dEVTmpvc35yX3iNY97mQ5q0eQojm8tZ2so,545
40
+ adam/columns/dir_snapshots.py,sha256=OSseuf7gAvT-_ujLvGt43jF-q7QVJNDcvqOK47QSJbk,451
41
+ adam/columns/gossip.py,sha256=KKUycFG-8YxMh9VYUrYOFwPVvnh-0i19k---DrpW93g,656
42
+ adam/columns/host_id.py,sha256=oqesvFCzUu0utkcH5mhYg0vx7lAW2EIDoezgY_CCP_Y,350
43
+ adam/columns/memory.py,sha256=GinntQroWK6kxn6PrumkJd9ok2skTWXLepM1U6lzc4g,701
44
+ adam/columns/node_address.py,sha256=PqSm2FtR0NAhc-R17sPRJJ3c6eWlJLHPctu8RsCslcM,355
45
+ adam/columns/node_load.py,sha256=Oc-kdfezYBP5eWDug-ijgM48x6XRNjwxxoQDZt_MbQc,349
46
+ adam/columns/node_owns.py,sha256=Iv5FDYV0m3ZM2JK05Fl485ZxDgOxZHDIN9KYNJc6Zdg,349
47
+ adam/columns/node_status.py,sha256=im52GfdETXVJVM00fU5OjJM2FvLZrgqpLkWKCwWhjAs,353
48
+ adam/columns/node_tokens.py,sha256=38D9xJ3uA48gzEYBtIiIUbZJcteM1H4KryzJNn01uZ8,353
49
+ adam/columns/node_utils.py,sha256=ql2StXmASC7equuabZVZEQ_BPTu2KkS99gY_3JXpIvU,774
50
+ adam/columns/pod_name.py,sha256=IYw0ZKA7Fb9LaGXENqzZTiTgL98tahwFRtfy0KkKh2Q,280
51
+ adam/columns/volume_cassandra.py,sha256=9KRNOzjNYganI9avN6zaA5_-7yxD4rV-KNxro9CSUg4,753
52
+ adam/columns/volume_root.py,sha256=29ujLoCAf9LO75u62LxEaPD58s6ihV-tcK17OeLSOM0,556
53
+ adam/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ adam/commands/alter_tables.py,sha256=OiRI3_qoQ7BWOco7gmHL65NoaTwpbFTAxmWEJSg1PsY,3122
55
+ adam/commands/app.py,sha256=KejN5TlR_0uC1RZKD62awJ7dtGa9qzNzx3umhTubHZI,1948
56
+ adam/commands/app_ping.py,sha256=YxuTvhIiZWfhr_OKquGAhRQfrhPdE8zL5tsb3MDf48Y,1294
57
+ adam/commands/cat.py,sha256=RlF3RbVsNumbwGn3NxQlAq12l9iK8zW0oi4TSyWednU,1842
58
+ adam/commands/cd.py,sha256=yEapkSTRmUJXQmQkseyIkatnU7xeJDOXGOlPJoJEZaw,1260
59
+ adam/commands/check.py,sha256=DOWoTpyuwgXm0wGCjLeAljkTkXbAoeh7zmBAUxePFFo,2306
60
+ adam/commands/cli_commands.py,sha256=vZMgXBQpTfiJ9E4v9yHB6WwcJgO6UcqWF3NuRspicq8,3620
61
+ adam/commands/code.py,sha256=x1xCNlm5eb33SJUbvFLTUTbqNdOJhhTAt7PSgwvIO8I,1905
62
+ adam/commands/command.py,sha256=I_AkmSS8am0_ZQTQJ0qR2vSo7trU5Sa4T4o1wfXXeos,4285
63
+ adam/commands/command_helpers.py,sha256=leOJJK1UXczNTJHN9TGMCbIpUpmpreULvQ-TvnsYS7w,1134
64
+ adam/commands/commands_utils.py,sha256=lRzLrgDklmDPDDS3brG_ZVBabpG4M9W-fi_1bw799dE,3093
65
+ adam/commands/cp.py,sha256=dyQViRDPNqsKRkxPb7WyEVIBNw7YB6IfYa2q3VtfzyA,3107
66
+ adam/commands/exit.py,sha256=5MWUAmzYBlsrp0CoiTDB13SUkX9Ya18UlGeOIPia6TA,798
67
+ adam/commands/help.py,sha256=v8VPGfnMC_PY_oqJUlwdAqIeJ9-EicvMEVT1RDKSmyI,1907
68
+ adam/commands/issues.py,sha256=6r6CbdTgzMbi-lMmyQMAjmKyJgVD-n05IUrGQ-lsnp4,2724
69
+ adam/commands/kubectl.py,sha256=PV_MTbqQOXRFoRPOnyhxOmJnAZaF7SXCT5FhPZWRtso,1048
70
+ adam/commands/login.py,sha256=FB6fESfgEyC8hYCK5ncqt7-M8bfQgu4KOWzE-J6ApyA,1975
71
+ adam/commands/logs.py,sha256=61iHB6iinNTGlYqdNad2c21pF7LlRjbdKiSjWTM5QTw,1197
72
+ adam/commands/ls.py,sha256=utw8giqHnaNP1yzLkdRCb8S8xsT6gc8pAQgR7VWeG24,1265
73
+ adam/commands/nodetool.py,sha256=_KjNH7LtZWZQS-01NSiTF5BwNYvh0wutQx_aLrmd7r8,2554
74
+ adam/commands/nodetool_commands.py,sha256=5IgWC3rmeDD1cgwqQjiiWzi-wJpJ3n_8pAzz_9phXuk,2635
75
+ adam/commands/param_get.py,sha256=kPAAppK2T0tEFRnSIVFLDPIIGHhgLA7drJhn8TRyvvE,1305
76
+ adam/commands/param_set.py,sha256=QDIuqfU80aWCB16OK49yf7XRaRTWwiLkwMsJuVikq9I,1271
77
+ adam/commands/preview_table.py,sha256=gKxqQ7wOjZTRKx4Tc7DDhPDIrAczpkQV5qqQz2uJRMM,2717
78
+ adam/commands/pwd.py,sha256=kvY3MKouf7CM2hJHa7NinZphzbkO6RTEfYvOhRTFtrY,1405
79
+ adam/commands/report.py,sha256=hgLOF_yDxkfAd00DSAZWtAMT3ksNt-U-1rpDT6a8vE4,2069
80
+ adam/commands/restart.py,sha256=SAxWHvglTckQJ0tJe5t-HWsVerbreNMM-7Nb9PAqno4,2044
81
+ adam/commands/rollout.py,sha256=Db9P4Owd3aPcRLIGhwyEElBNm_2Ke54KbiXyVKmztcE,2959
82
+ adam/commands/shell.py,sha256=wY_PIx7Lt6vuxhFArlfxdEnBbrouCJ3yNHhFn17DEqw,848
83
+ adam/commands/watch.py,sha256=fU2LGll-Igl08HpUQALOnh8l3s3AMGFX26NCLhqbfcw,2438
84
+ adam/commands/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ adam/commands/audit/audit.py,sha256=JJWM2Y72GB_0_9Bc-EfRsuxvswqU69Xyas9CARvQSU0,3090
86
+ adam/commands/audit/audit_repair_tables.py,sha256=n8JeKiasiW1S3ZmWN8M5Lr_ZY4zSRXCMjXWKrMzo7Ns,2700
87
+ adam/commands/audit/audit_run.py,sha256=xZFfz0jPMMbdwAMActKSaZDGb5NI8c0AHqOnyn2pnEQ,1875
88
+ adam/commands/audit/show_last10.py,sha256=_Pw2D-0U2l5ZFCK9bJvBaUKvw7otgqBWmw6K1--BHJ0,1452
89
+ adam/commands/audit/show_slow10.py,sha256=YocvcpoH8-dCx5Uu__HVasF6JsuADbG-QLW28Iq75EY,1471
90
+ adam/commands/audit/show_top10.py,sha256=bHG_AvaN4W5VV7FzzjFEaJyO5zYKOMVz4_qIAt1M1es,1502
91
+ adam/commands/audit/utils_show_top10.py,sha256=LtRZ0wDPDYQ9S3PlUIBbAP8zYzKPB58n1iIcHLca8P8,1865
92
+ adam/commands/bash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ adam/commands/bash/bash.py,sha256=7oA_rc4HUikwksXUytWvQPfLcxeMXegaa0fqcNED-uA,5452
94
+ adam/commands/bash/bash_completer.py,sha256=IStUg5LLTqc3vjupw33WtXUG9zRQ37BctjDYGDyYEXU,3883
95
+ adam/commands/cql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ adam/commands/cql/cql_completions.py,sha256=b07Q13al887-wMUlW2sC9BcD043WxMAIGA6sGXop3pY,1249
97
+ adam/commands/cql/cql_utils.py,sha256=g9qmyOcr5xyr6RmgPwJHP9YJtWs_gwlI3cLbV0SPczA,7740
98
+ adam/commands/cql/cqlsh.py,sha256=4yhDqqeodxBiPKQl6pyPNOiedz_aiJVOV9HhJIsfkeE,2937
99
+ adam/commands/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ adam/commands/deploy/code_start.py,sha256=-iH8HThTNM83IfBxT_LqTByuHVatV9d-Il4OYOfrwLI,1370
101
+ adam/commands/deploy/code_stop.py,sha256=ch7ZMgosvTHsGaIcDwQY5XYh_5HYrUjBkZFOI-d2gOU,1696
102
+ adam/commands/deploy/code_utils.py,sha256=cRvktxpAB2-QBX7-eYt9O57uio58X763uXWotTci3mc,3296
103
+ adam/commands/deploy/deploy.py,sha256=t54wa0cKXUpNFT0jvwaK-mWszFwGxbcpLZjz94ujHk4,1402
104
+ adam/commands/deploy/deploy_frontend.py,sha256=S3SvJD4JZQ9kDOOP_mrTnZFDl54AHhio5xxNgIUBZVk,1704
105
+ adam/commands/deploy/deploy_pg_agent.py,sha256=v1jVzNnNIxsemHVzGb6iDvvztjLTmHoCVRdZ_S1ATQM,1203
106
+ adam/commands/deploy/deploy_pod.py,sha256=wmPNfGcSd71t4INhZ49k_4N9zODxYhwp2EGVDsq2Zs4,4178
107
+ adam/commands/deploy/deploy_utils.py,sha256=P_Z-8tY_ZZuucsHL-8r5rt1c0LfIM-CYpvPsTiM4oe8,1241
108
+ adam/commands/deploy/undeploy.py,sha256=4Vces7YmTdYWnlXU6HCsjCjI3jCUFPV3AeWkUqwZoGY,1456
109
+ adam/commands/deploy/undeploy_frontend.py,sha256=gHekPn7l19JgVbhneKpQ7ModNoDFmzWRMyQv9v4FBxo,1261
110
+ adam/commands/deploy/undeploy_pg_agent.py,sha256=q-ulXsNzIij1Ac4VFtF-_YnsA6fgZsugLfOuYFIhqOg,1304
111
+ adam/commands/deploy/undeploy_pod.py,sha256=GJGJrVCpecr5p1B5zntlzLSXnFvhG_UYb3PR21GpdsM,1938
112
+ adam/commands/devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
+ adam/commands/devices/device.py,sha256=7v_kzH90YtoZrcml2aH0FaVM0ycnDFt99XJraAg6sgo,692
114
+ adam/commands/devices/device_app.py,sha256=XZ5b-ybGFIJ_VVrs5YmAAyQbA7BkxtT6RI8bOVgwA1c,5606
115
+ adam/commands/devices/device_auit_log.py,sha256=oFk3AfjiRqj7Unhq_v3hy9y7wVwMwzg3oFDK-ePG7dI,1346
116
+ adam/commands/devices/device_cass.py,sha256=QKS7NL0aOwma_uShBshhz0Z6l4ue-YRF3CNWu4dHgTk,5358
117
+ adam/commands/devices/device_export.py,sha256=upaf9GG-fyEtHyufrZ28gWU6zUYZmDgJdipZtvkAG8A,3061
118
+ adam/commands/devices/device_postgres.py,sha256=R-9i_jbRw_KUs32g7LIRE6787ySqsk_dpTVaTIR6Pss,4242
119
+ adam/commands/devices/devices.py,sha256=-VV8nU-Qcebx2g2ftOywmgrn8wW7-teCpxFQjU9wBR4,965
120
+ adam/commands/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
+ adam/commands/export/clean_up_export_session.py,sha256=nuDzPqPi2RbOHsFKGOD6H_YBGduuvDgssflf88p_Cnc,1607
122
+ adam/commands/export/clean_up_export_sessions.py,sha256=JDM8AQdyEATS4Q0SxTTu718Mx2rQ0ucVTri1mTp7wLk,1235
123
+ adam/commands/export/drop_export_database.py,sha256=caQkCYXCbKILZR8IQbqFspHj7QBizzlg0saxwBrUXjo,1685
124
+ adam/commands/export/drop_export_databases.py,sha256=KPNTTIen6dUpYUgq9XrrpCEDGeMl7OvqNAyUXSs_nds,1313
125
+ adam/commands/export/export.py,sha256=mPTVPCJbVT1l-wXlKCskYU9pZavaMOQjv4jRzOE695Q,3027
126
+ adam/commands/export/export_databases.py,sha256=Y60Dd2V8S9I-hlCFMlQQF0x3QzSkdPT_DusR_N1OvDQ,5347
127
+ adam/commands/export/export_select.py,sha256=FTqK0L37vI8haU5IE2fTrb0BD9VwlfEOR4NmzDP3T0Q,2659
128
+ adam/commands/export/export_select_x.py,sha256=_wGW_PRBZMhFWGHGBXaakt8ERfsBRBpDGqLRBxbKxMY,1997
129
+ adam/commands/export/export_use.py,sha256=S4QoCoTFBD-gUa3GoYCe2NwpagslzLh4nowAqI_WkBQ,1592
130
+ adam/commands/export/exporter.py,sha256=FPxLlbrgzBvSbHjul0jd115BvuYYjCC97LRpPYapfms,16927
131
+ adam/commands/export/import_session.py,sha256=U9S11szvSmzXmVIZXbK-iowqR26lnYZofz_tSGIfhfU,2136
132
+ adam/commands/export/importer.py,sha256=TttTWE2VK4xjKFnsQyaJ0oRVsUQGdZW93kQmdOKKDI0,2292
133
+ adam/commands/export/importer_athena.py,sha256=3TmAn8Qf3dtwR1ncuF4ml4O02e0TqxG4AZfsp5eKexg,3320
134
+ adam/commands/export/importer_sqlite.py,sha256=WdcmoU0ijzRjeKp9tYOZFJ1cP302MGpII_GpXnzLE1Q,1739
135
+ adam/commands/export/show_column_counts.py,sha256=JWY6rNbaIM63G76e7vj8VwMM98zE_335X2vv0ushCj4,2030
136
+ adam/commands/export/show_export_databases.py,sha256=3nkP1HdF_inRk1ZkO0CkqiNgy2epmuqzuPTJogNwTQ0,1224
137
+ adam/commands/export/show_export_session.py,sha256=EY6gSrPApImuXZ3gPaK7Cl1yzsL9AzwvsB9ToAgD3-Y,1661
138
+ adam/commands/export/show_export_sessions.py,sha256=z_67S4z_woQZA1dRF7X4zdPT0C_fty-W3Ysav1Q8w-4,1615
139
+ adam/commands/export/utils_export.py,sha256=cHYtCCNMyQr45m4u1rAPXF2ga9G1X3HLZ6blTTD7-a0,10696
140
+ adam/commands/medusa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
+ adam/commands/medusa/medusa.py,sha256=KNFjStvilIuOJt3wTtcWmKvdm8FdCnrDY2ltEWbratk,1402
142
+ adam/commands/medusa/medusa_backup.py,sha256=Tns-nBbqTnry8zoCFtXCisco3ipcOgArQbN5rc7SRGY,1801
143
+ adam/commands/medusa/medusa_restore.py,sha256=yvqMZtGsZHlFfBNAfcvzfcCbe1NQdlP3H4JQfsQ0WvU,3274
144
+ adam/commands/medusa/medusa_show_backupjobs.py,sha256=LPLyFOLH2Y3FxjZlW7DoyQKththaieh_gmBFC4YyA_4,1757
145
+ adam/commands/medusa/medusa_show_restorejobs.py,sha256=bj7afDJ7tgvssazOcxru9rCmcwPoDaTAgkYdvHKWhjI,1651
146
+ adam/commands/postgres/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ adam/commands/postgres/postgres.py,sha256=-rsODyqCFQOMKXnmN89oIpDVeWe3r0vVKQIU47TgLgI,3584
148
+ adam/commands/postgres/postgres_context.py,sha256=OBnj-n1OR5b_HXRaM-gr_YuuVBQ3AcwnTpDsTe88e5I,9800
149
+ adam/commands/postgres/postgres_ls.py,sha256=HwZTgwGKXUqHX33S8aQPF6FqCrLqtoz4cLyJV2SpoE0,1186
150
+ adam/commands/postgres/postgres_preview.py,sha256=MLzdEc4mvNj6V1Q8jO5OPznXyYELJHgd35_eQgLlNIU,1274
151
+ adam/commands/postgres/postgres_utils.py,sha256=yzOdeo2opAgCb-hXurD2w2JfJ-g-D4EyBcFDw3ooGe4,889
152
+ adam/commands/postgres/psql_completions.py,sha256=Ep5BIjwH0ZnH1-YbkYdRMdT0r9R6GVVjCKmmUyfP54g,336
153
+ adam/commands/reaper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
+ adam/commands/reaper/reaper.py,sha256=QUvJ9sFMiaUwMDbbCDpTlT8CfadafPa3O5yeJLh2TIo,1977
155
+ adam/commands/reaper/reaper_forward.py,sha256=mUp409MzT91cVXGxoPfBGceaR3qZ0rVdWKGdyzPNzSA,3177
156
+ adam/commands/reaper/reaper_forward_stop.py,sha256=mllxBGxOUkFYMvF0eaFbL5VGMVAiFuT5KY8rKWTIiOE,1384
157
+ adam/commands/reaper/reaper_restart.py,sha256=vqPm-8aY0PnIELxmWF-th3wQFE3f0-8DoJrgRIjb8xc,1290
158
+ adam/commands/reaper/reaper_run_abort.py,sha256=vp69f1zoNodwqx61N0CQaevYoR7qF2rccrzjJuF47qY,1858
159
+ adam/commands/reaper/reaper_runs.py,sha256=uVfAK3Pca_N10XKZ1aeMTrCCM8vDExXBWo84_2UmSqo,3253
160
+ adam/commands/reaper/reaper_runs_abort.py,sha256=HZm8Re66XwgURgd0sJtIF2UIwrdozHQJf1O_ZAsLy-I,2538
161
+ adam/commands/reaper/reaper_schedule_activate.py,sha256=HbwaSeKaDoR2qgiWgglwM5gm-4iTN2xKofiOlhUpvrQ,1952
162
+ adam/commands/reaper/reaper_schedule_start.py,sha256=oDwH99QVyeKgu-jk5-pB7BzUH_rablCbtumNHXjBnpU,1940
163
+ adam/commands/reaper/reaper_schedule_stop.py,sha256=_Ld5BRX5pqfIis5i1KG8yif0q5u9RTaFBmmQwkZuOMY,1929
164
+ adam/commands/reaper/reaper_schedules.py,sha256=-b7eKl0wJT7zMru8qKcLqG5JF0-LfeTcNmlxut9t93E,1263
165
+ adam/commands/reaper/reaper_session.py,sha256=bZyknDtsqlGc2JPMfUg0EXA7fOi_fEIzGiVn5x0HwNs,6650
166
+ adam/commands/reaper/reaper_status.py,sha256=g3Uep1AVYOThAaZoFjn4bWTKHElZnCleJyYYHP9HayY,1967
167
+ adam/commands/repair/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
+ adam/commands/repair/repair.py,sha256=Dp-yTvsT2hJU3xeJ8PA05o2pTtKeCHGsV62TT4GMixk,1339
169
+ adam/commands/repair/repair_log.py,sha256=CZTOfNoJdrmimktZlvzr4Mk3h6ldrtyjsf2aGo7w5oA,1159
170
+ adam/commands/repair/repair_run.py,sha256=JMSr17C_1KanbaL-vtHVhz69fOXzuXAiCRenQVmws9s,2598
171
+ adam/commands/repair/repair_scan.py,sha256=WC79lE4TOw6M7TdG2Zdfswuq9gRejJWoL_B4YWBOm8c,2439
172
+ adam/commands/repair/repair_stop.py,sha256=OJAPeWYmaW7MzoAE4un_qGyegSIJlmykdFaqtGV-k64,1193
173
+ adam/commands/show/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
+ adam/commands/show/show.py,sha256=q1PGgFO2AyyZLhjEFCSh2rmy7o-jLPYPH9Fob0Z1RU4,2197
175
+ adam/commands/show/show_adam.py,sha256=osuafMipN2My4O7bLdukBLsDHtTKguDfTagmgz7aZvw,1314
176
+ adam/commands/show/show_app_actions.py,sha256=TKhvjD5Br63-exbq11V48toXVxX8HhMppg5c1IZsAFE,1977
177
+ adam/commands/show/show_app_id.py,sha256=h2ezkJiu18dyDTIYA9F6crUGyelgOevsJuxh3jOUelg,1384
178
+ adam/commands/show/show_app_queues.py,sha256=1WUVI_PkM7m9vTO2we9Ky3hTkH12YY_R6JpF52uodnQ,1409
179
+ adam/commands/show/show_cassandra_status.py,sha256=j2kr0asSYQ-VTAsJW3Ikqkk2R6ltM-az3HXcACUM4rU,5157
180
+ adam/commands/show/show_cassandra_version.py,sha256=vq9F1O03tkYMlqENxEYFXXh8RnK30lXrFYVIgN4hP_I,1633
181
+ adam/commands/show/show_commands.py,sha256=ivjY3u3Ph969zOh0dYi0KjAfm7ClUGdQpkJLJAvpeUc,1893
182
+ adam/commands/show/show_host.py,sha256=nJZdk3guvHNZqoy5QDW9xff9bmqPgYVVpteXBp9RE8U,877
183
+ adam/commands/show/show_login.py,sha256=9sZYuRX_gdBKL1EJngJPPIBZyfqSlUoaQ0XWiIh1Pfk,1924
184
+ adam/commands/show/show_params.py,sha256=LoBj_ScmtsPrXSUH59p3IYAlmL-0Q_Gb01bp_7zrwQA,1008
185
+ adam/commands/show/show_processes.py,sha256=K7sBSyvCukp3bfoi0SBaqMV5a4Af8paEQXVZJT-gqgE,1770
186
+ adam/commands/show/show_repairs.py,sha256=m82ukc6YxjvJc9rdKXsiJLtXrEUCiaE-VPqgxDsIOeM,1477
187
+ adam/commands/show/show_storage.py,sha256=WuBB5AEFm4g7oBz_YCbtkrF2GEeJ-J2tqCVmvzwmwuI,1837
188
+ adam/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
+ adam/sql/sql_completer.py,sha256=aKYgiCJJmtTZyh8OCJa48XVF4g1WxuRpXD_lpnJvotQ,4000
190
+ adam/sql/sql_state_machine.py,sha256=SQrG0PyJOUouO__sPP1FUu-fnO1sAC-NbKN1zXI9EMc,37936
191
+ adam/sql/term_completer.py,sha256=HZjOV4fEV9LraoMjkk8lHxNvzRtSIYsGUJhSMOhuoHY,2599
192
+ adam/sso/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
+ adam/sso/authenticator.py,sha256=BCm16L9zf5aLU47-sTCnudn2zLPwd8M2wwRminJfsqw,615
194
+ adam/sso/authn_ad.py,sha256=fDW8UR3WWykny5Awa5dQjjBUSFzIDz4aMn-lwXoABl8,5857
195
+ adam/sso/authn_okta.py,sha256=TV5vg7OEQPGFG_DSUQnWn37nbMX_qszZB0GRuQl6kGM,4529
196
+ adam/sso/cred_cache.py,sha256=Y86PDrTsuzoZSd8iae14SAv-YVEnxeaf6LukX35iTnw,2099
197
+ adam/sso/id_token.py,sha256=wmVZ8S0sjScnOxmSvOKlIEKgnvdWqhsgq9XjFe355O4,744
198
+ adam/sso/idp.py,sha256=tt6SjpZ2ix_zgfi3hQS9UUis9fvUWl6b4RLaEJ--ruY,5804
199
+ adam/sso/idp_login.py,sha256=QAtCUeDTVWliJy40RK_oac8Vgybr13xH8wzeBoxPaa8,1754
200
+ adam/sso/idp_session.py,sha256=9BUHNRf70u4rVKrVY1HKPOEmOviXvkjam8WJxmXSKIM,1735
201
+ adam/sso/sso_config.py,sha256=5N8WZgIJQBtHUy585XLRWKjpU87_v6QluyNK9E27D5s,2459
202
+ adam/utils_k8s/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
+ adam/utils_k8s/app_clusters.py,sha256=VUi3deOIqFuvJc7Wobt1QkEDUhRe_k8wj9mAsur1mes,1394
204
+ adam/utils_k8s/app_pods.py,sha256=OM-Hr0tgSBoHXzUEdwzdIZY1KvI_DVa67uRQahNNc9E,1435
205
+ adam/utils_k8s/cassandra_clusters.py,sha256=zux58P2HBzssMQV2jDOEoHbQYjB6pE3JwyiXTHxIVwg,1501
206
+ adam/utils_k8s/cassandra_nodes.py,sha256=SPYWPkjB3ETVcdFveLvvFAGYrrt6K_D6R_XB7Lpd0-k,1550
207
+ adam/utils_k8s/config_maps.py,sha256=vc9A-2D1-1mindCMFL1wuysDOXb0RCl4BdjC6B6usXI,1194
208
+ adam/utils_k8s/custom_resources.py,sha256=cIeaZRQET2DelTGU2f5QsMckh7TddPpWZDFeNK3txeQ,7647
209
+ adam/utils_k8s/deployment.py,sha256=SLhnMm5GMXwEldj2OupSFBUsvNjynwSNrv5tIDvLMrc,2921
210
+ adam/utils_k8s/ingresses.py,sha256=ul3Z6fDGc_Cxcn-ExP0vXhZatoShCUZFtpwtCY4Qx7o,3460
211
+ adam/utils_k8s/jobs.py,sha256=gJpBpjcZ_FlkWJJIlavbHC_bqdmvv-GMVo8UZVh0sOQ,2610
212
+ adam/utils_k8s/kube_context.py,sha256=xJF_72vUJu-X9MpIYzOIfnj7KEWU7a_sLBR-H3994Y0,3311
213
+ adam/utils_k8s/pods.py,sha256=KogA6KKKbx5tQk6n09usnn4rDKsiBberNhBWRqMwYxU,13176
214
+ adam/utils_k8s/secrets.py,sha256=tBSKLknHlwdwyTzqvtJ2YS-y9x4gvW57Ug9sOkK_U50,2413
215
+ adam/utils_k8s/service_accounts.py,sha256=v2oQSqCrNvt2uRnKlNwR3fjtpUG7oF5nqgzEB7NnT-U,6349
216
+ adam/utils_k8s/services.py,sha256=EOJJGACVbbRvu5T3rMKqIJqgYic1_MSJ17EA0TJ6UOk,3156
217
+ adam/utils_k8s/statefulsets.py,sha256=0J_cYRqH96PCcq3tdsRrs4Q4ewv5dT_FMBR0HGAJ3d8,4710
218
+ adam/utils_k8s/volumes.py,sha256=RIBmlOSWM3V3QVXLCFT0owVOyh4rGG1ETp521a-6ndo,1137
219
+ adam/utils_repl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
+ adam/utils_repl/automata_completer.py,sha256=LJP_2WHHR7AtjX00MJ59VGQEL3t0XS-qYnDmMaZe-Tk,1641
221
+ adam/utils_repl/repl_completer.py,sha256=lsu0vWFdTs8SSSY9gxHN-fQSap-Wqz1QhMF4FqGf7qA,1722
222
+ adam/utils_repl/state_machine.py,sha256=SGNFwxERS_nZC4iHomlLCy1FaKuEx3Z2HRAVbsIu4Lc,5424
223
+ kaqing-2.0.145.dist-info/METADATA,sha256=2e9W2dI1RyrfYRGzEJLB0dd7_6d47gvxQmWXwLSB0WI,133
224
+ kaqing-2.0.145.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
225
+ kaqing-2.0.145.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
226
+ kaqing-2.0.145.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
227
+ kaqing-2.0.145.dist-info/RECORD,,
adam/commands/bash.py DELETED
@@ -1,87 +0,0 @@
1
- from adam.commands.command import Command
2
- from adam.k8s_utils.cassandra_clusters import CassandraClusters
3
- from adam.k8s_utils.cassandra_nodes import CassandraNodes
4
- from adam.repl_state import BashSession, ReplState, RequiredState
5
-
6
- class Bash(Command):
7
- COMMAND = 'bash'
8
-
9
- # the singleton pattern
10
- def __new__(cls, *args, **kwargs):
11
- if not hasattr(cls, 'instance'): cls.instance = super(Bash, cls).__new__(cls)
12
-
13
- return cls.instance
14
-
15
- def __init__(self, successor: Command=None):
16
- super().__init__(successor)
17
-
18
- def command(self):
19
- return Bash.COMMAND
20
-
21
- def required(self):
22
- return RequiredState.CLUSTER_OR_POD
23
-
24
- def run(self, cmd: str, s0: ReplState):
25
- if not(args := self.args(cmd)):
26
- return super().run(cmd, s0)
27
-
28
- state, args = self.apply_state(args, s0)
29
- if not self.validate_state(state):
30
- return state
31
-
32
- if state.in_repl:
33
- r = self.exec_with_dir(s0, args)
34
- if not r:
35
- state.exit_bash()
36
-
37
- return 'inconsistent pwd'
38
-
39
- return r
40
- else:
41
- a = ' '.join(args)
42
- command = f'bash -c "{a}"'
43
-
44
- if state.pod:
45
- CassandraNodes.exec(state.pod, state.namespace, command, show_out=True)
46
- elif state.sts:
47
- CassandraClusters.exec(state.sts, state.namespace, command, action='bash', show_out=True)
48
-
49
- return state
50
-
51
- def exec_with_dir(self, state: ReplState, args: list[str]):
52
- session_just_created = False
53
- if not args:
54
- session_just_created = True
55
- session = BashSession(state.device)
56
- state.enter_bash(session)
57
-
58
- if state.bash_session:
59
- if args != ['pwd']:
60
- if args:
61
- args.append('&&')
62
- args.extend(['pwd', '>', f'/tmp/.qing-{state.bash_session.session_id}'])
63
-
64
- if not session_just_created:
65
- if pwd := state.bash_session.pwd(state):
66
- args = ['cd', pwd, '&&'] + args
67
-
68
- a = ' '.join(args)
69
- command = f'bash -c "{a}"'
70
-
71
- rs = []
72
-
73
- if state.pod:
74
- rs = [CassandraNodes.exec(state.pod, state.namespace, command, show_out=not session_just_created)]
75
- elif state.sts:
76
- rs = CassandraClusters.exec(state.sts, state.namespace, command, action='bash', show_out=not session_just_created)
77
-
78
- return rs
79
-
80
- def completion(self, state: ReplState):
81
- if state.pod or state.sts:
82
- return {Bash.COMMAND: None}
83
-
84
- return {}
85
-
86
- def help(self, _: ReplState):
87
- return f'{Bash.COMMAND} [bash-commands]\t run bash'
@@ -1,53 +0,0 @@
1
- import re
2
-
3
- from adam.k8s_utils.cassandra_clusters import CassandraClusters
4
- from adam.k8s_utils.cassandra_nodes import CassandraNodes
5
- from adam.k8s_utils.secrets import Secrets
6
- from adam.repl_state import ReplState
7
-
8
- def run_cql(state: ReplState, cql: str, opts: list = [], show_out = False, use_single_quotes = False):
9
- user, pw = Secrets.get_user_pass(state.sts if state.sts else state.pod, state.namespace, secret_path='cql.secret')
10
- if use_single_quotes:
11
- command = f"cqlsh -u {user} -p {pw} {' '.join(opts)} -e '{cql}'"
12
- else:
13
- command = f'cqlsh -u {user} -p {pw} {" ".join(opts)} -e "{cql}"'
14
-
15
- if state.pod:
16
- return CassandraNodes.exec(state.pod, state.namespace, command, show_out=show_out)
17
- else:
18
- return CassandraClusters.exec(state.sts, state.namespace, command, action='cql')
19
-
20
- def parse_cql_desc_tables(out: str):
21
- # Keyspace data_endpoint_auth
22
- # ---------------------------
23
- # "token"
24
-
25
- # Keyspace reaper_db
26
- # ------------------
27
- # repair_run schema_migration
28
- # repair_run_by_cluster schema_migration_leader
29
-
30
- # Keyspace system
31
- tables_by_keyspace: dict[str, list[str]] = {}
32
- keyspace = None
33
- state = 's0'
34
- for line in out.split('\n'):
35
- if state == 's0':
36
- groups = re.match(r'^Keyspace (.*)$', line)
37
- if groups:
38
- keyspace = groups[1].strip(' \r')
39
- state = 's1'
40
- elif state == 's1':
41
- if line.startswith('---'):
42
- state = 's2'
43
- elif state == 's2':
44
- if not line.strip(' \r'):
45
- state = 's0'
46
- else:
47
- for table in line.split(' '):
48
- if t := table.strip(' \r'):
49
- if not keyspace in tables_by_keyspace:
50
- tables_by_keyspace[keyspace] = []
51
- tables_by_keyspace[keyspace].append(t)
52
-
53
- return tables_by_keyspace