kaqing 2.0.91__py3-none-any.whl → 2.0.93__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/commands/bash.py CHANGED
@@ -25,12 +25,16 @@ class Bash(Command):
25
25
  if not(args := self.args(cmd)):
26
26
  return super().run(cmd, s0)
27
27
 
28
- state, args = self.apply_state(args, s0)
28
+ state, args = self.apply_state(args, s0, args_to_check=2)
29
29
  if not self.validate_state(state):
30
30
  return state
31
31
 
32
32
  if state.in_repl:
33
- r = self.exec_with_dir(s0, args)
33
+ if s0.sts != state.sts or s0.pod != state.pod:
34
+ r = self.exec_with_dir(state, args)
35
+ else:
36
+ r = self.exec_with_dir(s0, args)
37
+
34
38
  if not r:
35
39
  state.exit_bash()
36
40
 
adam/commands/command.py CHANGED
@@ -53,8 +53,8 @@ class Command:
53
53
 
54
54
  return a
55
55
 
56
- def apply_state(self, args: list[str], state: ReplState, resolve_pg = True) -> tuple[ReplState, list[str]]:
57
- return state.apply_args(args, cmd=self.command_tokens(), resolve_pg=resolve_pg)
56
+ def apply_state(self, args: list[str], state: ReplState, resolve_pg = True, args_to_check = 6) -> tuple[ReplState, list[str]]:
57
+ return state.apply_args(args, cmd=self.command_tokens(), resolve_pg=resolve_pg, args_to_check=args_to_check)
58
58
 
59
59
  def command_tokens(self):
60
60
  return self.command().split(' ')
adam/commands/nodetool.py CHANGED
@@ -43,13 +43,13 @@ class NodeTool(Command):
43
43
  if state.pod:
44
44
  results: PodExecResult = CassandraNodes.exec(state.pod, state.namespace, command, show_out=True)
45
45
  if results and results.log_file and Config().get('repl.history.push-cat-remote-log-file', True):
46
- ReplSession().prompt_session.history.append_string(f'cat {results.log_file}')
46
+ ReplSession().prompt_session.history.append_string(f'bash cat {results.log_file}')
47
47
  elif state.sts:
48
48
  results: list[PodExecResult] = CassandraClusters.exec(state.sts, state.namespace, command, action='nodetool', show_out=True)
49
49
  if results and Config().get('repl.history.push-cat-remote-log-file', True):
50
50
  for result in results:
51
51
  if result.log_file:
52
- ReplSession().prompt_session.history.append_string(f'cat {result.log_file}@{result.pod}')
52
+ ReplSession().prompt_session.history.append_string(f'bash {result.pod} cat {result.log_file}')
53
53
 
54
54
  return results
55
55
 
adam/k8s_utils/pods.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from collections.abc import Callable
2
2
  from concurrent.futures import ThreadPoolExecutor, as_completed
3
+ from datetime import datetime
3
4
  import sys
4
5
  import time
5
6
  from typing import TypeVar, cast
@@ -106,7 +107,7 @@ class Pods:
106
107
  tty = True
107
108
  exec_command = [shell, '-c', command]
108
109
  if command.endswith(' &'):
109
- log_file = f'/tmp/qing-{random_alphanumeric(6)}.log'
110
+ log_file = f'/tmp/qing-{datetime.now().strftime("%Y%m%d_%H%M%S")}-{random_alphanumeric(3)}.log'
110
111
  command = f"nohup {command.strip(' &')} > {log_file} 2>&1 &"
111
112
  exec_command = [shell, '-c', command]
112
113
  # should be false for starting a backgroud process
adam/repl_commands.py CHANGED
@@ -3,7 +3,6 @@ from adam.commands.app import App
3
3
  from adam.commands.app_ping import AppPing
4
4
  from adam.commands.audit.audit import Audit
5
5
  from adam.commands.audit.audit_repair_tables import AuditRepairTables
6
- from adam.commands.cat import Cat
7
6
  from adam.commands.deploy.code_start import CodeStart
8
7
  from adam.commands.deploy.code_stop import CodeStop
9
8
  from adam.commands.deploy.deploy import Deploy
@@ -15,10 +14,6 @@ from adam.commands.deploy.undeploy_frontend import UndeployFrontend
15
14
  from adam.commands.deploy.undeploy_pg_agent import UndeployPgAgent
16
15
  from adam.commands.deploy.undeploy_pod import UndeployPod
17
16
  from adam.commands.describe.describe import Describe
18
- from adam.commands.describe.describe_keyspace import DescribeKeyspace
19
- from adam.commands.describe.describe_keyspaces import DescribeKeyspaces
20
- from adam.commands.describe.describe_table import DescribeTable
21
- from adam.commands.describe.describe_tables import DescribeTables
22
17
  from adam.commands.shell import Shell
23
18
  from adam.commands.show.show_app_queues import ShowAppQueues
24
19
  from adam.commands.cp import ClipboardCopy
@@ -80,7 +75,7 @@ class ReplCommands:
80
75
  return deduped
81
76
 
82
77
  def navigation() -> list[Command]:
83
- return [Ls(), PreviewTable(), DeviceApp(), DevicePostgres(), DeviceCass(), DeviceAuditLog(), Cd(), Pwd(), Cat(), ClipboardCopy(),
78
+ return [Ls(), PreviewTable(), DeviceApp(), DevicePostgres(), DeviceCass(), DeviceAuditLog(), Cd(), Pwd(), ClipboardCopy(),
84
79
  GetParam(), SetParam(), ShowParams(), ShowKubectlCommands(), ShowLogin(), ShowAdam(), ShowHost()]
85
80
 
86
81
  def cassandra_check() -> list[Command]:
adam/repl_state.py CHANGED
@@ -84,12 +84,12 @@ class ReplState:
84
84
  def __hash__(self):
85
85
  return hash((self.sts, self.pod))
86
86
 
87
- def apply_args(self, args: list[str], cmd: list[str] = None, resolve_pg = True) -> tuple['ReplState', list[str]]:
87
+ def apply_args(self, args: list[str], cmd: list[str] = None, resolve_pg = True, args_to_check = 6) -> tuple['ReplState', list[str]]:
88
88
  state = self
89
89
 
90
90
  new_args = []
91
91
  for index, arg in enumerate(args):
92
- if index < 6:
92
+ if index < args_to_check:
93
93
  state = copy.copy(state)
94
94
 
95
95
  s, n = KubeContext.is_sts_name(arg)
adam/version.py CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- __version__ = "2.0.91" #: the working version
4
+ __version__ = "2.0.93" #: 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: 2.0.91
3
+ Version: 2.0.93
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -10,13 +10,13 @@ adam/embedded_params.py,sha256=LObTQtC5A6sfRPjHNNcJZr2GUVYoQ1TNAR-zPmQoZRc,4930
10
10
  adam/log.py,sha256=gg5DK52wLPc9cjykeh0WFHyAk1qI3HEpGaAK8W2dzXY,1146
11
11
  adam/pod_exec_result.py,sha256=WBXJSvxzXp9TfsfXeHtIvgz8GvfMAAcH5M03GISLqzw,1046
12
12
  adam/repl.py,sha256=G2d9cMZfYQ7BMABCNXgc4RSdRhAPBhS5h3hFENTGRVM,9559
13
- adam/repl_commands.py,sha256=yJVVBAememAXU6NAIYOiOC7qwNsm3m1OYjoBlLKwG3Y,5004
13
+ adam/repl_commands.py,sha256=GKdpHm4e0it7qVwjzBrsIoa5szpvZC30kJmHbWCvooA,4691
14
14
  adam/repl_session.py,sha256=uIogcvWBh7wd8QQ-p_JgLsyJ8YJgINw5vOd6JIsd7Vo,472
15
- adam/repl_state.py,sha256=dXyGlWXcSsfCjrYwMhU44PVn_oThSZ8dhJ5HCVE8-qU,8743
15
+ adam/repl_state.py,sha256=QB6U-MJkOZEUU_7pc-cTBusnuvrphuxI8k7Y9jo19zU,8774
16
16
  adam/utils.py,sha256=sbsNZP3qGJtb6fXCa4dDXHry5ay9ev583cCZIQzy07s,7382
17
17
  adam/utils_athena.py,sha256=tU6Arg4g7eKV6ei9SLgakOJJqxKgSCsII-7a68OI7_g,3199
18
18
  adam/utils_net.py,sha256=65fhBnWMCkhGtyHqz95qcHaCo35q-WX1RBkkXG8dKpI,416
19
- adam/version.py,sha256=TE_FtcdQhHRvd4huualymKiwOVRcNwzqlVHBnhLSyV8,139
19
+ adam/version.py,sha256=CF87sQqFhUHjH8upOFyh3pOn0m9iQJ3aDvGUkM8T2js,139
20
20
  adam/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  adam/checks/check.py,sha256=Qopr3huYcMu2bzQgb99dEUYjFzkjKHRI76S6KA9b9Rk,702
22
22
  adam/checks/check_context.py,sha256=FEHkQ32jY1EDopQ2uYWqy9v7aEEX1orLpJWhopwAlh4,402
@@ -52,12 +52,11 @@ adam/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  adam/commands/alter_tables.py,sha256=Q5vXHE4_1_6v6wtYwqST7_QwpXINb1xq0Sm448Z2Y7Q,3582
53
53
  adam/commands/app.py,sha256=7alV8wK801t67_rUe6EmhtHJTl-6K7fGCm6Uz1dDgpM,1963
54
54
  adam/commands/app_ping.py,sha256=Xk7cfefphXM2w-UvpnhNUTZ3BU38f0deehUb2FEyLCI,1337
55
- adam/commands/bash.py,sha256=rWYY_dZ0ZaEsAHLVorCD5gPckjkKWH-o6dT4VmKDzmA,2758
56
- adam/commands/cat.py,sha256=YaefSfLKYJqd8j1oWjU8QWwAtcyl2I93e2NeMeMKud0,1590
55
+ adam/commands/bash.py,sha256=ly2BGSvquCtvUazo2rtqxJkqzNHyf7_Gvt1IISNGR9w,2909
57
56
  adam/commands/cd.py,sha256=GyNyJnbxX7afrk7xwvXDhEtSdWnAgnz0dpDJXO2dO7w,4728
58
57
  adam/commands/check.py,sha256=853FPfgTMGxQXI_5UaPAtzaSWB_BvEVm48EkJhsHe4w,2181
59
58
  adam/commands/cli_commands.py,sha256=PEEyrG9yz7RAEZwHbbuFpyE3fVi8vrIWbr0d1H0Gp9o,3620
60
- adam/commands/command.py,sha256=w3AthcMShBfhVzRfFq3LhXN76pRNVAuqt5vdMkxHFls,4064
59
+ adam/commands/command.py,sha256=PCnEOZqZP6lHONOz2HhoJqNhBfOckhgEauFjZq_mgHc,4112
61
60
  adam/commands/command_helpers.py,sha256=leOJJK1UXczNTJHN9TGMCbIpUpmpreULvQ-TvnsYS7w,1134
62
61
  adam/commands/commands_utils.py,sha256=ShUcxtDSd9B3NM0GDj3NBvKdmjCGY8qXgeUJpzNF63E,3122
63
62
  adam/commands/cp.py,sha256=dyQViRDPNqsKRkxPb7WyEVIBNw7YB6IfYa2q3VtfzyA,3107
@@ -68,7 +67,7 @@ adam/commands/issues.py,sha256=VS-PC7e-2lywsa-lbmoUX8IY77OPGzFudwbw1g8XmQc,2599
68
67
  adam/commands/login.py,sha256=bj95WWIF7mJDJhnyS9T8xvaZUGL37dj7GlH8TgmODbk,1877
69
68
  adam/commands/logs.py,sha256=T-O9DYXmWEm4G1I5SM6MwyeRwq2aT-WMqNW0XA2MWmo,1165
70
69
  adam/commands/ls.py,sha256=aNBIoUUCFxWMJ9O6IV6qbw5XRHmaQqOD6dgjMf9EWkU,5766
71
- adam/commands/nodetool.py,sha256=g_ADdVOM0VlYEsD5oa0nAylffkRz6jwkrShA9uKPU1s,2994
70
+ adam/commands/nodetool.py,sha256=9OktRKHVpeVqThqFMk_v1hZA967OOJbRJawKePyaut4,3004
72
71
  adam/commands/nodetool_commands.py,sha256=5IgWC3rmeDD1cgwqQjiiWzi-wJpJ3n_8pAzz_9phXuk,2635
73
72
  adam/commands/param_get.py,sha256=kPAAppK2T0tEFRnSIVFLDPIIGHhgLA7drJhn8TRyvvE,1305
74
73
  adam/commands/param_set.py,sha256=QDIuqfU80aWCB16OK49yf7XRaRTWwiLkwMsJuVikq9I,1271
@@ -164,7 +163,7 @@ adam/k8s_utils/deployment.py,sha256=3oZPfPgQfqtAQaxEFL4daUfRSieRAhysmuaWMzUYgXk,
164
163
  adam/k8s_utils/ingresses.py,sha256=ul3Z6fDGc_Cxcn-ExP0vXhZatoShCUZFtpwtCY4Qx7o,3460
165
164
  adam/k8s_utils/jobs.py,sha256=gJpBpjcZ_FlkWJJIlavbHC_bqdmvv-GMVo8UZVh0sOQ,2610
166
165
  adam/k8s_utils/kube_context.py,sha256=xJF_72vUJu-X9MpIYzOIfnj7KEWU7a_sLBR-H3994Y0,3311
167
- adam/k8s_utils/pods.py,sha256=w8KyYryRi7LHjRP1yCxYYawe4zkmwRffg6uJgtZTTEw,10993
166
+ adam/k8s_utils/pods.py,sha256=MzUazbOwp2VqjvOQlWNHqqBvIJZDsEord52_XLS2c2E,11066
168
167
  adam/k8s_utils/secrets.py,sha256=tBSKLknHlwdwyTzqvtJ2YS-y9x4gvW57Ug9sOkK_U50,2413
169
168
  adam/k8s_utils/service_accounts.py,sha256=v2oQSqCrNvt2uRnKlNwR3fjtpUG7oF5nqgzEB7NnT-U,6349
170
169
  adam/k8s_utils/services.py,sha256=EOJJGACVbbRvu5T3rMKqIJqgYic1_MSJ17EA0TJ6UOk,3156
@@ -184,8 +183,8 @@ adam/sso/idp.py,sha256=fvcwUw_URTgsO6ySaqTIw0zQT2qRO1IPSGhf6rPtybo,5804
184
183
  adam/sso/idp_login.py,sha256=QAtCUeDTVWliJy40RK_oac8Vgybr13xH8wzeBoxPaa8,1754
185
184
  adam/sso/idp_session.py,sha256=9BUHNRf70u4rVKrVY1HKPOEmOviXvkjam8WJxmXSKIM,1735
186
185
  adam/sso/sso_config.py,sha256=5N8WZgIJQBtHUy585XLRWKjpU87_v6QluyNK9E27D5s,2459
187
- kaqing-2.0.91.dist-info/METADATA,sha256=yagJcxO7gKMvac3lZBLG4NkmHwH5tlhragoKQfrm7xk,132
188
- kaqing-2.0.91.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
189
- kaqing-2.0.91.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
190
- kaqing-2.0.91.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
191
- kaqing-2.0.91.dist-info/RECORD,,
186
+ kaqing-2.0.93.dist-info/METADATA,sha256=0Iyn4GWHg-GSuZwqsNUy-HPUfPQ31nr6u5-_3wHhIbg,132
187
+ kaqing-2.0.93.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
188
+ kaqing-2.0.93.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
189
+ kaqing-2.0.93.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
190
+ kaqing-2.0.93.dist-info/RECORD,,
adam/commands/cat.py DELETED
@@ -1,54 +0,0 @@
1
- from adam.commands.command import Command
2
- from adam.k8s_utils.cassandra_nodes import CassandraNodes
3
- from adam.repl_state import ReplState, RequiredState
4
- from adam.utils import log2
5
-
6
- class Cat(Command):
7
- COMMAND = 'cat'
8
-
9
- # the singleton pattern
10
- def __new__(cls, *args, **kwargs):
11
- if not hasattr(cls, 'instance'): cls.instance = super(Cat, 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 Cat.COMMAND
20
-
21
- def required(self):
22
- return RequiredState.NAMESPACE
23
-
24
- def run(self, cmd: str, state: ReplState):
25
- if not(args := self.args(cmd)):
26
- return super().run(cmd, state)
27
-
28
- state, args = self.apply_state(args, state)
29
- if not self.validate_state(state):
30
- return state
31
-
32
- if len(args) < 1:
33
- if state.in_repl:
34
- log2('File name is required.')
35
- else:
36
- log2('* File name is missing.')
37
- Command.display_help()
38
-
39
- return 'command-missing'
40
-
41
- arg = args[0]
42
- if '@' in arg:
43
- path_and_pod = arg.split('@')
44
- CassandraNodes.exec(path_and_pod[1], state.namespace, f'cat {path_and_pod[0]}')
45
- else:
46
- CassandraNodes.exec(state.pod, state.namespace, f'cat {arg}')
47
-
48
- return state
49
-
50
- def completion(self, state: ReplState):
51
- return super().completion(state)
52
-
53
- def help(self, _: ReplState):
54
- return f'{Cat.COMMAND} <path>[@<pod>] \t print content of the file'