kaqing 2.0.14__py3-none-any.whl → 2.0.189__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.
- adam/__init__.py +0 -2
- adam/app_session.py +9 -12
- adam/apps.py +20 -6
- adam/batch.py +16 -6
- adam/checks/check_utils.py +19 -49
- adam/checks/compactionstats.py +1 -1
- adam/checks/cpu.py +9 -3
- adam/checks/cpu_metrics.py +52 -0
- adam/checks/disk.py +3 -4
- adam/checks/gossip.py +1 -1
- adam/checks/memory.py +3 -3
- adam/checks/status.py +1 -1
- adam/columns/columns.py +3 -1
- adam/columns/cpu.py +3 -1
- adam/columns/cpu_metrics.py +22 -0
- adam/columns/memory.py +3 -4
- adam/commands/__init__.py +24 -0
- adam/commands/alter_tables.py +66 -0
- adam/commands/app/app.py +38 -0
- adam/commands/{app_ping.py → app/app_ping.py} +8 -14
- adam/commands/app/show_app_actions.py +49 -0
- adam/commands/{show → app}/show_app_id.py +9 -12
- adam/commands/{show → app}/show_app_queues.py +8 -14
- adam/commands/app/utils_app.py +106 -0
- adam/commands/audit/__init__.py +0 -0
- adam/commands/audit/audit.py +67 -0
- adam/commands/audit/audit_repair_tables.py +72 -0
- adam/commands/audit/audit_run.py +50 -0
- adam/commands/audit/completions_l.py +15 -0
- adam/commands/audit/show_last10.py +36 -0
- adam/commands/audit/show_slow10.py +36 -0
- adam/commands/audit/show_top10.py +36 -0
- adam/commands/audit/utils_show_top10.py +71 -0
- adam/commands/bash/__init__.py +5 -0
- adam/commands/bash/bash.py +36 -0
- adam/commands/bash/bash_completer.py +93 -0
- adam/commands/bash/utils_bash.py +16 -0
- adam/commands/cat.py +36 -0
- adam/commands/cd.py +14 -88
- adam/commands/check.py +18 -21
- adam/commands/cli_commands.py +11 -7
- adam/commands/clipboard_copy.py +87 -0
- adam/commands/code.py +57 -0
- adam/commands/command.py +220 -19
- adam/commands/commands_utils.py +28 -31
- adam/commands/cql/__init__.py +0 -0
- adam/commands/cql/completions_c.py +28 -0
- adam/commands/{cqlsh.py → cql/cqlsh.py} +13 -32
- adam/commands/cql/utils_cql.py +305 -0
- adam/commands/deploy/code_start.py +7 -10
- adam/commands/deploy/code_stop.py +4 -21
- adam/commands/deploy/code_utils.py +5 -5
- adam/commands/deploy/deploy.py +4 -40
- adam/commands/deploy/deploy_frontend.py +15 -18
- adam/commands/deploy/deploy_pg_agent.py +4 -7
- adam/commands/deploy/deploy_pod.py +74 -77
- adam/commands/deploy/deploy_utils.py +16 -26
- adam/commands/deploy/undeploy.py +4 -40
- adam/commands/deploy/undeploy_frontend.py +5 -8
- adam/commands/deploy/undeploy_pg_agent.py +7 -8
- adam/commands/deploy/undeploy_pod.py +16 -17
- adam/commands/devices/__init__.py +0 -0
- adam/commands/devices/device.py +149 -0
- adam/commands/devices/device_app.py +163 -0
- adam/commands/devices/device_auit_log.py +49 -0
- adam/commands/devices/device_cass.py +179 -0
- adam/commands/devices/device_export.py +87 -0
- adam/commands/devices/device_postgres.py +160 -0
- adam/commands/devices/devices.py +25 -0
- adam/commands/download_file.py +47 -0
- adam/commands/exit.py +1 -4
- adam/commands/export/__init__.py +0 -0
- adam/commands/export/clean_up_all_export_sessions.py +37 -0
- adam/commands/export/clean_up_export_sessions.py +39 -0
- adam/commands/export/completions_x.py +11 -0
- adam/commands/export/download_export_session.py +40 -0
- adam/commands/export/drop_export_database.py +39 -0
- adam/commands/export/drop_export_databases.py +37 -0
- adam/commands/export/export.py +37 -0
- adam/commands/export/export_databases.py +246 -0
- adam/commands/export/export_select.py +34 -0
- adam/commands/export/export_sessions.py +209 -0
- adam/commands/export/export_use.py +49 -0
- adam/commands/export/export_x_select.py +48 -0
- adam/commands/export/exporter.py +332 -0
- adam/commands/export/import_files.py +44 -0
- adam/commands/export/import_session.py +44 -0
- adam/commands/export/importer.py +81 -0
- adam/commands/export/importer_athena.py +148 -0
- adam/commands/export/importer_sqlite.py +67 -0
- adam/commands/export/show_column_counts.py +45 -0
- adam/commands/export/show_export_databases.py +39 -0
- adam/commands/export/show_export_session.py +39 -0
- adam/commands/export/show_export_sessions.py +37 -0
- adam/commands/export/utils_export.py +344 -0
- adam/commands/find_files.py +51 -0
- adam/commands/find_processes.py +76 -0
- adam/commands/head.py +36 -0
- adam/commands/help.py +14 -9
- adam/commands/intermediate_command.py +52 -0
- adam/commands/issues.py +14 -40
- adam/commands/kubectl.py +38 -0
- adam/commands/login.py +26 -25
- adam/commands/logs.py +5 -7
- adam/commands/ls.py +11 -115
- adam/commands/medusa/medusa.py +4 -46
- adam/commands/medusa/medusa_backup.py +22 -29
- adam/commands/medusa/medusa_restore.py +51 -49
- adam/commands/medusa/medusa_show_backupjobs.py +20 -21
- adam/commands/medusa/medusa_show_restorejobs.py +16 -21
- adam/commands/medusa/utils_medusa.py +15 -0
- adam/commands/nodetool.py +8 -17
- adam/commands/param_get.py +11 -14
- adam/commands/param_set.py +9 -13
- adam/commands/postgres/completions_p.py +22 -0
- adam/commands/postgres/postgres.py +49 -73
- adam/commands/postgres/postgres_databases.py +270 -0
- adam/commands/postgres/postgres_ls.py +4 -8
- adam/commands/postgres/postgres_preview.py +5 -9
- adam/commands/postgres/utils_postgres.py +79 -0
- adam/commands/preview_table.py +10 -69
- adam/commands/pwd.py +14 -43
- adam/commands/reaper/reaper.py +6 -49
- adam/commands/reaper/reaper_forward.py +49 -56
- adam/commands/reaper/reaper_forward_session.py +6 -0
- adam/commands/reaper/reaper_forward_stop.py +10 -16
- adam/commands/reaper/reaper_restart.py +8 -15
- adam/commands/reaper/reaper_run_abort.py +8 -33
- adam/commands/reaper/reaper_runs.py +43 -58
- adam/commands/reaper/reaper_runs_abort.py +29 -49
- adam/commands/reaper/reaper_schedule_activate.py +14 -33
- adam/commands/reaper/reaper_schedule_start.py +9 -33
- adam/commands/reaper/reaper_schedule_stop.py +9 -33
- adam/commands/reaper/reaper_schedules.py +4 -14
- adam/commands/reaper/reaper_status.py +8 -16
- adam/commands/reaper/utils_reaper.py +203 -0
- adam/commands/repair/repair.py +4 -46
- adam/commands/repair/repair_log.py +6 -12
- adam/commands/repair/repair_run.py +29 -36
- adam/commands/repair/repair_scan.py +33 -41
- adam/commands/repair/repair_stop.py +6 -13
- adam/commands/report.py +25 -21
- adam/commands/restart.py +27 -28
- adam/commands/rollout.py +20 -25
- adam/commands/shell.py +12 -4
- adam/commands/show/show.py +15 -46
- adam/commands/show/show_adam.py +3 -3
- adam/commands/show/show_cassandra_repairs.py +37 -0
- adam/commands/show/show_cassandra_status.py +48 -52
- adam/commands/show/show_cassandra_version.py +5 -18
- adam/commands/show/show_cli_commands.py +56 -0
- adam/commands/show/show_host.py +33 -0
- adam/commands/show/show_login.py +23 -27
- adam/commands/show/show_params.py +2 -5
- adam/commands/show/show_processes.py +18 -21
- adam/commands/show/show_storage.py +11 -20
- adam/commands/watch.py +27 -30
- adam/config.py +8 -6
- adam/embedded_params.py +1 -1
- adam/log.py +4 -4
- adam/pod_exec_result.py +13 -5
- adam/repl.py +136 -120
- adam/repl_commands.py +66 -24
- adam/repl_session.py +8 -1
- adam/repl_state.py +343 -73
- adam/sql/__init__.py +0 -0
- adam/sql/lark_completer.py +284 -0
- adam/sql/lark_parser.py +604 -0
- adam/sql/sql_completer.py +118 -0
- adam/sql/sql_state_machine.py +630 -0
- adam/sql/term_completer.py +76 -0
- adam/sso/authn_ad.py +7 -9
- adam/sso/authn_okta.py +4 -6
- adam/sso/cred_cache.py +4 -6
- adam/sso/idp.py +10 -13
- adam/utils.py +539 -11
- adam/utils_athena.py +145 -0
- adam/utils_audits.py +102 -0
- adam/utils_issues.py +32 -0
- adam/utils_k8s/__init__.py +0 -0
- adam/utils_k8s/app_clusters.py +28 -0
- adam/utils_k8s/app_pods.py +36 -0
- adam/utils_k8s/cassandra_clusters.py +44 -0
- adam/{k8s_utils → utils_k8s}/cassandra_nodes.py +12 -5
- adam/{k8s_utils → utils_k8s}/custom_resources.py +16 -17
- adam/{k8s_utils → utils_k8s}/deployment.py +2 -2
- adam/{k8s_utils → utils_k8s}/ingresses.py +2 -2
- adam/{k8s_utils → utils_k8s}/jobs.py +7 -11
- adam/utils_k8s/k8s.py +96 -0
- adam/{k8s_utils → utils_k8s}/kube_context.py +3 -3
- adam/{k8s_utils → utils_k8s}/pods.py +132 -83
- adam/{k8s_utils → utils_k8s}/secrets.py +7 -3
- adam/{k8s_utils → utils_k8s}/service_accounts.py +5 -4
- adam/{k8s_utils → utils_k8s}/services.py +2 -2
- adam/{k8s_utils → utils_k8s}/statefulsets.py +9 -16
- adam/utils_local.py +4 -0
- adam/utils_net.py +24 -0
- adam/utils_repl/__init__.py +0 -0
- adam/utils_repl/appendable_completer.py +6 -0
- adam/utils_repl/automata_completer.py +48 -0
- adam/utils_repl/repl_completer.py +172 -0
- adam/utils_repl/state_machine.py +173 -0
- adam/utils_sqlite.py +137 -0
- adam/version.py +1 -1
- {kaqing-2.0.14.dist-info → kaqing-2.0.189.dist-info}/METADATA +1 -1
- kaqing-2.0.189.dist-info/RECORD +253 -0
- kaqing-2.0.189.dist-info/top_level.txt +2 -0
- teddy/__init__.py +0 -0
- teddy/lark_parser.py +436 -0
- teddy/lark_parser2.py +618 -0
- adam/commands/app.py +0 -67
- adam/commands/bash.py +0 -87
- adam/commands/cp.py +0 -95
- adam/commands/cql_utils.py +0 -53
- adam/commands/devices.py +0 -89
- adam/commands/postgres/postgres_session.py +0 -247
- adam/commands/reaper/reaper_session.py +0 -159
- adam/commands/show/show_app_actions.py +0 -53
- adam/commands/show/show_commands.py +0 -61
- adam/commands/show/show_repairs.py +0 -47
- adam/k8s_utils/cassandra_clusters.py +0 -48
- kaqing-2.0.14.dist-info/RECORD +0 -167
- kaqing-2.0.14.dist-info/top_level.txt +0 -1
- /adam/{k8s_utils → commands/app}/__init__.py +0 -0
- /adam/{k8s_utils → utils_k8s}/config_maps.py +0 -0
- /adam/{k8s_utils → utils_k8s}/volumes.py +0 -0
- {kaqing-2.0.14.dist-info → kaqing-2.0.189.dist-info}/WHEEL +0 -0
- {kaqing-2.0.14.dist-info → kaqing-2.0.189.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Callable
|
|
3
|
+
|
|
4
|
+
import sqlparse
|
|
5
|
+
from sqlparse.sql import Token
|
|
6
|
+
|
|
7
|
+
from adam.sql.term_completer import TermCompleter
|
|
8
|
+
from adam.utils_repl.automata_completer import AutomataCompleter
|
|
9
|
+
from adam.sql.sql_state_machine import AthenaStateMachine, CqlStateMachine, SqlStateMachine
|
|
10
|
+
from adam.utils_repl.state_machine import State
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"SqlCompleter",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
def default_columns(x: list[str]):
|
|
17
|
+
return 'id,x.,y.,z.'.split(',')
|
|
18
|
+
|
|
19
|
+
class SqlVariant(Enum):
|
|
20
|
+
SQL = 'sql'
|
|
21
|
+
CQL = 'cql'
|
|
22
|
+
ATHENA = 'athena'
|
|
23
|
+
|
|
24
|
+
class SqlCompleter(AutomataCompleter[Token]):
|
|
25
|
+
def tokens(self, text: str) -> list[Token]:
|
|
26
|
+
tokens = []
|
|
27
|
+
|
|
28
|
+
stmts = sqlparse.parse(text)
|
|
29
|
+
if stmts:
|
|
30
|
+
for stmt in stmts:
|
|
31
|
+
tokens.extend(stmt.tokens)
|
|
32
|
+
|
|
33
|
+
return tokens
|
|
34
|
+
|
|
35
|
+
def __init__(self,
|
|
36
|
+
tables: Callable[[], list[str]],
|
|
37
|
+
dml: str = None,
|
|
38
|
+
expandables: dict = {},
|
|
39
|
+
variant: SqlVariant = SqlVariant.SQL,
|
|
40
|
+
debug = False):
|
|
41
|
+
machine = SqlStateMachine(debug=debug)
|
|
42
|
+
if variant == SqlVariant.CQL:
|
|
43
|
+
machine = CqlStateMachine(debug=debug)
|
|
44
|
+
elif variant == SqlVariant.ATHENA:
|
|
45
|
+
machine = AthenaStateMachine(debug=debug)
|
|
46
|
+
super().__init__(machine, dml, debug)
|
|
47
|
+
|
|
48
|
+
self.tables = tables
|
|
49
|
+
if 'columns' not in expandables:
|
|
50
|
+
expandables['columns'] = default_columns
|
|
51
|
+
self.expandables = expandables
|
|
52
|
+
self.variant = variant
|
|
53
|
+
self.debug = debug
|
|
54
|
+
|
|
55
|
+
def suggestions_completer(self, state: State, suggestions: str) -> list[str]:
|
|
56
|
+
if not suggestions:
|
|
57
|
+
return None
|
|
58
|
+
|
|
59
|
+
terms = []
|
|
60
|
+
for suggestion in suggestions.split(','):
|
|
61
|
+
terms.extend(self._terms(state, suggestion))
|
|
62
|
+
|
|
63
|
+
return TermCompleter(terms)
|
|
64
|
+
|
|
65
|
+
def _terms(self, state: State, word: str) -> list[str]:
|
|
66
|
+
terms = []
|
|
67
|
+
|
|
68
|
+
if word.startswith('`') and word.endswith('`'):
|
|
69
|
+
terms.append(word.strip('`'))
|
|
70
|
+
elif word == 'tables':
|
|
71
|
+
terms.extend(self.tables())
|
|
72
|
+
elif word == 'columns':
|
|
73
|
+
if 'last_name' in state.context and (n := state.context['last_name']):
|
|
74
|
+
if 'last_namespace' in state.context and (ns := state.context['last_namespace']):
|
|
75
|
+
n = f'{ns}.{n}'
|
|
76
|
+
terms.extend(self._call_expandable(word, [n]))
|
|
77
|
+
else:
|
|
78
|
+
terms.extend(self._call_expandable(word, []))
|
|
79
|
+
elif word == 'partition-columns':
|
|
80
|
+
terms.extend(self._call_expandable(word, []))
|
|
81
|
+
elif word == 'table-props':
|
|
82
|
+
terms.extend(self._call_expandable(word).keys())
|
|
83
|
+
elif word == 'table-prop-values':
|
|
84
|
+
if 'last_name' in state.context and state.context['last_name']:
|
|
85
|
+
table_props = self._call_expandable('table-props')
|
|
86
|
+
terms.extend(table_props[state.context['last_name']])
|
|
87
|
+
elif word == 'single':
|
|
88
|
+
terms.append("'")
|
|
89
|
+
elif word == 'comma':
|
|
90
|
+
terms.append(",")
|
|
91
|
+
elif word in self.machine.expandable_names():
|
|
92
|
+
terms.extend(self._call_expandable(word))
|
|
93
|
+
else:
|
|
94
|
+
terms.append(word)
|
|
95
|
+
|
|
96
|
+
return terms
|
|
97
|
+
|
|
98
|
+
def _call_expandable(self, name: str, *args):
|
|
99
|
+
if name in self.expandables:
|
|
100
|
+
c = self.expandables[name]
|
|
101
|
+
if args:
|
|
102
|
+
return c(args)
|
|
103
|
+
else:
|
|
104
|
+
return c()
|
|
105
|
+
|
|
106
|
+
return []
|
|
107
|
+
|
|
108
|
+
def completions_for_nesting(self, dml: str = None):
|
|
109
|
+
if dml:
|
|
110
|
+
return {dml: SqlCompleter(self.tables, dml, expandables=self.expandables, variant=self.variant)}
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
word: SqlCompleter(self.tables, word, expandables=self.expandables, variant=self.variant)
|
|
114
|
+
for word in self.machine.suggestions[''].strip(' ').split(',')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
def __str__(self):
|
|
118
|
+
return f'{self.variant}, {self.first_term}'
|