kaqing 2.0.94__py3-none-any.whl → 2.0.96__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.

@@ -1,6 +1,12 @@
1
+ import concurrent
2
+ import time
3
+ import requests
4
+
1
5
  from adam.commands.command import Command
6
+ from adam.config import Config
2
7
  from adam.repl_state import ReplState
3
- from adam.utils_athena import run_audit_query
8
+ from adam.utils import log, log2
9
+ from adam.utils_athena import audit_query, run_audit_query
4
10
 
5
11
  class AuditRepairTables(Command):
6
12
  COMMAND = 'audit repair'
@@ -13,6 +19,7 @@ class AuditRepairTables(Command):
13
19
 
14
20
  def __init__(self, successor: Command=None):
15
21
  super().__init__(successor)
22
+ self.auto_repaired = False
16
23
 
17
24
  def command(self):
18
25
  return AuditRepairTables.COMMAND
@@ -23,20 +30,65 @@ class AuditRepairTables(Command):
23
30
 
24
31
  state, args = self.apply_state(args, state)
25
32
 
26
- tables = ['audit']
33
+ tables = Config().get('audit.tables', 'audit').split(',')
27
34
  if args:
28
35
  tables = args
29
36
 
30
- for table in tables:
31
- run_audit_query(f'MSCK REPAIR TABLE {table}')
37
+ self.repair(tables)
32
38
 
33
39
  return state
34
40
 
35
41
  def completion(self, state: ReplState):
36
42
  if state.device == ReplState.L:
43
+ if not self.auto_repaired:
44
+ if hours := Config().get('audit.athena.auto-repair.elapsed_hours', 12):
45
+ with concurrent.futures.ThreadPoolExecutor(max_workers=Config().get('audit.workers', 3)) as executor:
46
+ executor.submit(self.auto_repair, hours,)
47
+
37
48
  return super().completion(state)
38
49
 
39
50
  return {}
40
51
 
52
+ def auto_repair(self, hours: int):
53
+ self.auto_repaired = True
54
+
55
+ state, _, rs = audit_query(f'select * from meta')
56
+ if state == 'SUCCEEDED':
57
+ do_repair = True
58
+ if len(rs) > 1:
59
+ try:
60
+ checked_in = float(rs[1]['Data'][0]['VarCharValue'])
61
+ do_repair = checked_in + hours * 60 * 60 < time.time()
62
+ except:
63
+ pass
64
+
65
+ if do_repair:
66
+ tables = Config().get('audit.athena.tables', 'audit').split(',')
67
+ self.repair(tables, show_sql=True)
68
+ log2(f'Audit tables have been auto-repaired.')
69
+
70
+ def repair(self, tables: list[str], show_sql = False):
71
+ with concurrent.futures.ThreadPoolExecutor(max_workers=Config().get('audit.workers', 3)) as executor:
72
+ for table in tables:
73
+ if show_sql:
74
+ log(f'MSCK REPAIR TABLE {table}')
75
+
76
+ executor.submit(run_audit_query, f'MSCK REPAIR TABLE {table}', None,)
77
+ executor.submit(self.check_in,)
78
+
41
79
  def help(self, _: ReplState):
42
- return f"{AuditRepairTables.COMMAND} \t run MSCK REPAIR command for new partition discovery"
80
+ return f"{AuditRepairTables.COMMAND} \t run MSCK REPAIR command for new partition discovery"
81
+
82
+ def check_in(self):
83
+ payload = {
84
+ 'action': 'check-in'
85
+ }
86
+ audit_endpoint = Config().get("audit.endpoint", "https://4psvtaxlcb.execute-api.us-west-2.amazonaws.com/prod/")
87
+ try:
88
+ response = requests.post(audit_endpoint, json=payload, timeout=Config().get("audit.timeout", 10))
89
+ if response.status_code in [200, 201]:
90
+ Config().debug(response.text)
91
+ else:
92
+ log2(f"Error: {response.status_code} {response.text}")
93
+ except requests.exceptions.Timeout as e:
94
+ log2(f"Timeout occurred: {e}")
adam/commands/ls.py CHANGED
@@ -137,7 +137,7 @@ class Ls(Command):
137
137
  if state.pod:
138
138
  return {}
139
139
 
140
- if not state.sts:
140
+ if state.device == ReplState.C and not state.sts:
141
141
  return {Ls.COMMAND: {n: None for n in StatefulSets.list_sts_names()}}
142
142
 
143
143
  return {Ls.COMMAND: None}
adam/config.py CHANGED
@@ -39,7 +39,7 @@ class Config:
39
39
  return get_deep_keys(self.params)
40
40
 
41
41
  def is_debug(self):
42
- return os.getenv('QING_DEV').lower() == 'true' or Config().get('debug', False)
42
+ return os.getenv('QING_DEV', 'false').lower() == 'true' or Config().get('debug', False)
43
43
 
44
44
  def debug(self, s: None):
45
45
  if self.is_debug():
adam/embedded_params.py CHANGED
@@ -1,2 +1,2 @@
1
1
  def config():
2
- return {'app': {'console-endpoint': 'https://{host}/{env}/{app}/static/console/index.html', 'cr': {'cluster-regex': '(.*?-.*?)-.*', 'group': 'ops.c3.ai', 'v': 'v2', 'plural': 'c3cassandras'}, 'label': 'c3__app_id-0', 'login': {'admin-group': '{host}/C3.ClusterAdmin', 'ingress': '{app_id}-k8singr-appleader-001', 'timeout': 5, 'session-check-url': 'https://{host}/{env}/{app}/api/8/C3/userSessionToken', 'cache-creds': True, 'cache-username': True, 'url': 'https://{host}/{env}/{app}', 'another': "You're logged in to {has}. However, for this app, you need to log in to {need}.", 'token-server-url': 'http://localhost:{port}', 'password-max-length': 128}, 'strip': '0'}, 'audit': {'endpoint': 'https://4psvtaxlcb.execute-api.us-west-2.amazonaws.com/prod/', 'workers': 3, 'timeout': 10, 'log-audit-queries': False, 'athena': {'region': 'us-west-2', 'catalog': 'AwsDataCatalog', 'database': 'audit', 'tables': 'audit', 'output': 's3://s3.ops--audit/ddl/results'}}, 'bash': {'workers': 32}, 'cassandra': {'service-name': 'all-pods-service'}, 'cql': {'workers': 32, 'samples': 3, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-superuser', 'password-item': 'password'}, 'alter-tables': {'excludes': 'system_auth,system_traces,reaper_db,system_distributed,system_views,system,system_schema,system_virtual_schema', 'gc-grace-periods': '3600,86400,864000,7776000', 'batching': True}}, 'checks': {'compactions-threshold': 250, 'cpu-busy-threshold': 98.0, 'cpu-threshold': 0.0, 'cassandra-data-path': '/c3/cassandra', 'root-disk-threshold': 50, 'cassandra-disk-threshold': 50, 'snapshot-size-cmd': "ls /c3/cassandra/data/data/*/*/snapshots | grep snapshots | sed 's/:$//g' | xargs -I {} du -sk {} | awk '{print $1}' | awk '{s+=$1} END {print s}'", 'snapshot-size-threshold': '40G', 'table-sizes-cmd': "ls -Al /c3/cassandra/data/data/ | awk '{print $9}' | sed 's/\\^r//g' | xargs -I {} du -sk /c3/cassandra/data/data/{}"}, 'get-host-id': {'workers': 32}, 'idps': {'ad': {'email-pattern': '.*@c3.ai', 'uri': 'https://login.microsoftonline.com/53ad779a-93e7-485c-ba20-ac8290d7252b/oauth2/v2.0/authorize?response_type=id_token&response_mode=form_post&client_id=00ff94a8-6b0a-4715-98e0-95490012d818&scope=openid+email+profile&redirect_uri=https%3A%2F%2Fplat.c3ci.cloud%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://login.microsoftonline.com/common/discovery/keys', 'contact': 'Please contact ted.tran@c3.ai.', 'whitelist-file': '/kaqing/members'}, 'okta': {'default': True, 'email-pattern': '.*@c3iot.com', 'uri': 'https://c3energy.okta.com/oauth2/v1/authorize?response_type=id_token&response_mode=form_post&client_id={client_id}&scope=openid+email+profile+groups&redirect_uri=https%3A%2F%2F{host}%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://c3energy.okta.com/oauth2/v1/keys'}}, 'issues': {'workers': 32}, 'logs': {'path': '/c3/cassandra/logs/system.log'}, 'medusa': {'restore-auto-complete': False}, 'nodetool': {'workers': 32, 'samples': 3, 'commands_in_line': 40}, 'pg': {'name-pattern': '^{namespace}.*-k8spg-.*', 'excludes': '.helm., -admin-secret', 'agent': {'name': 'ops-pg-agent', 'just-in-time': False, 'timeout': 86400, 'image': 'seanahnsf/kaqing'}, 'default-db': 'postgres', 'default-schema': 'postgres', 'secret': {'endpoint-key': 'postgres-db-endpoint', 'port-key': 'postgres-db-port', 'username-key': 'postgres-admin-username', 'password-key': 'postgres-admin-password'}}, 'pod': {'name': 'ops', 'image': 'seanahnsf/kaqing-cloud', 'sa': {'name': 'ops', 'proto': 'c3', 'additional-cluster-roles': 'c3aiops-k8ssandra-operator'}, 'label-selector': 'run=ops'}, 'preview': {'rows': 10}, 'processes': {'columns': 'pod,cpu,mem', 'header': 'POD_NAME,CPU,MEM/LIMIT'}, 'reaper': {'service-name': 'reaper-service', 'port-forward': {'timeout': 86400, 'local-port': 9001}, 'abort-runs-batch': 10, 'show-runs-batch': 100, 'pod': {'cluster-regex': '(.*?-.*?-.*?-.*?)-.*', 'label-selector': 'k8ssandra.io/reaper={cluster}-reaper'}, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-reaper-ui', 'password-item': 'password'}}, 'repair': {'log-path': '/home/cassrepair/logs/', 'image': 'ci-registry.c3iot.io/cloudops/cassrepair:2.0.14', 'secret': 'ciregistryc3iotio', 'env': {'interval': 24, 'timeout': 60, 'pr': False, 'runs': 1}}, 'repl': {'start-drive': 'a', 'auto-enter-app': 'c3/c3', 'auto-enter-only-cluster': 'cluster', 'history': {'push-cat-remote-log-file': True}}, 'status': {'columns': 'status,address,load,tokens,owns,host_id,gossip,compactions', 'header': '--,Address,Load,Tokens,Owns,Host ID,GOSSIP,COMPACTIONS'}, 'storage': {'columns': 'pod,volume_root,volume_cassandra,snapshots,data,compactions', 'header': 'POD_NAME,VOLUME /,VOLUME CASS,SNAPSHOTS,DATA,COMPACTIONS'}, 'watch': {'auto': 'rollout', 'timeout': 3600, 'interval': 10}, 'debug': False, 'debugs': {'timings': False, 'exit-on-error': False, 'show-parallelism': False}}
2
+ return {'app': {'console-endpoint': 'https://{host}/{env}/{app}/static/console/index.html', 'cr': {'cluster-regex': '(.*?-.*?)-.*', 'group': 'ops.c3.ai', 'v': 'v2', 'plural': 'c3cassandras'}, 'label': 'c3__app_id-0', 'login': {'admin-group': '{host}/C3.ClusterAdmin', 'ingress': '{app_id}-k8singr-appleader-001', 'timeout': 5, 'session-check-url': 'https://{host}/{env}/{app}/api/8/C3/userSessionToken', 'cache-creds': True, 'cache-username': True, 'url': 'https://{host}/{env}/{app}', 'another': "You're logged in to {has}. However, for this app, you need to log in to {need}.", 'token-server-url': 'http://localhost:{port}', 'password-max-length': 128}, 'strip': '0'}, 'audit': {'endpoint': 'https://4psvtaxlcb.execute-api.us-west-2.amazonaws.com/prod/', 'workers': 3, 'timeout': 10, 'log-audit-queries': False, 'athena': {'auto-repair': {'elapsed_hours': 12}, 'region': 'us-west-2', 'catalog': 'AwsDataCatalog', 'database': 'audit', 'tables': 'audit', 'output': 's3://s3.ops--audit/ddl/results'}}, 'bash': {'workers': 32}, 'cassandra': {'service-name': 'all-pods-service'}, 'cql': {'workers': 32, 'samples': 3, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-superuser', 'password-item': 'password'}, 'alter-tables': {'excludes': 'system_auth,system_traces,reaper_db,system_distributed,system_views,system,system_schema,system_virtual_schema', 'gc-grace-periods': '3600,86400,864000,7776000', 'batching': True}}, 'checks': {'compactions-threshold': 250, 'cpu-busy-threshold': 98.0, 'cpu-threshold': 0.0, 'cassandra-data-path': '/c3/cassandra', 'root-disk-threshold': 50, 'cassandra-disk-threshold': 50, 'snapshot-size-cmd': "ls /c3/cassandra/data/data/*/*/snapshots | grep snapshots | sed 's/:$//g' | xargs -I {} du -sk {} | awk '{print $1}' | awk '{s+=$1} END {print s}'", 'snapshot-size-threshold': '40G', 'table-sizes-cmd': "ls -Al /c3/cassandra/data/data/ | awk '{print $9}' | sed 's/\\^r//g' | xargs -I {} du -sk /c3/cassandra/data/data/{}"}, 'get-host-id': {'workers': 32}, 'idps': {'ad': {'email-pattern': '.*@c3.ai', 'uri': 'https://login.microsoftonline.com/53ad779a-93e7-485c-ba20-ac8290d7252b/oauth2/v2.0/authorize?response_type=id_token&response_mode=form_post&client_id=00ff94a8-6b0a-4715-98e0-95490012d818&scope=openid+email+profile&redirect_uri=https%3A%2F%2Fplat.c3ci.cloud%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://login.microsoftonline.com/common/discovery/keys', 'contact': 'Please contact ted.tran@c3.ai.', 'whitelist-file': '/kaqing/members'}, 'okta': {'default': True, 'email-pattern': '.*@c3iot.com', 'uri': 'https://c3energy.okta.com/oauth2/v1/authorize?response_type=id_token&response_mode=form_post&client_id={client_id}&scope=openid+email+profile+groups&redirect_uri=https%3A%2F%2F{host}%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://c3energy.okta.com/oauth2/v1/keys'}}, 'issues': {'workers': 32}, 'logs': {'path': '/c3/cassandra/logs/system.log'}, 'medusa': {'restore-auto-complete': False}, 'nodetool': {'workers': 32, 'samples': 3, 'commands_in_line': 40}, 'pg': {'name-pattern': '^{namespace}.*-k8spg-.*', 'excludes': '.helm., -admin-secret', 'agent': {'name': 'ops-pg-agent', 'just-in-time': False, 'timeout': 86400, 'image': 'seanahnsf/kaqing'}, 'default-db': 'postgres', 'default-schema': 'postgres', 'secret': {'endpoint-key': 'postgres-db-endpoint', 'port-key': 'postgres-db-port', 'username-key': 'postgres-admin-username', 'password-key': 'postgres-admin-password'}}, 'pod': {'name': 'ops', 'image': 'seanahnsf/kaqing-cloud', 'sa': {'name': 'ops', 'proto': 'c3', 'additional-cluster-roles': 'c3aiops-k8ssandra-operator'}, 'label-selector': 'run=ops'}, 'preview': {'rows': 10}, 'processes': {'columns': 'pod,cpu,mem', 'header': 'POD_NAME,CPU,MEM/LIMIT'}, 'reaper': {'service-name': 'reaper-service', 'port-forward': {'timeout': 86400, 'local-port': 9001}, 'abort-runs-batch': 10, 'show-runs-batch': 100, 'pod': {'cluster-regex': '(.*?-.*?-.*?-.*?)-.*', 'label-selector': 'k8ssandra.io/reaper={cluster}-reaper'}, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-reaper-ui', 'password-item': 'password'}}, 'repair': {'log-path': '/home/cassrepair/logs/', 'image': 'ci-registry.c3iot.io/cloudops/cassrepair:2.0.14', 'secret': 'ciregistryc3iotio', 'env': {'interval': 24, 'timeout': 60, 'pr': False, 'runs': 1}}, 'repl': {'start-drive': 'a', 'auto-enter-app': 'c3/c3', 'auto-enter-only-cluster': 'cluster', 'history': {'push-cat-remote-log-file': True}, 'background-process': {'auto-nohup': True}}, 'status': {'columns': 'status,address,load,tokens,owns,host_id,gossip,compactions', 'header': '--,Address,Load,Tokens,Owns,Host ID,GOSSIP,COMPACTIONS'}, 'storage': {'columns': 'pod,volume_root,volume_cassandra,snapshots,data,compactions', 'header': 'POD_NAME,VOLUME /,VOLUME CASS,SNAPSHOTS,DATA,COMPACTIONS'}, 'watch': {'auto': 'rollout', 'timeout': 3600, 'interval': 10}, 'debug': False, 'debugs': {'timings': False, 'exit-on-error': False, 'show-parallelism': False}}
adam/repl.py CHANGED
@@ -94,6 +94,8 @@ def enter_repl(state: ReplState):
94
94
  Config().wait_log(f'Moving to {state.app_env}/{state.app_app}...')
95
95
  else:
96
96
  Config().wait_log(f'Moving to {state.app_env}...')
97
+ elif state.device == ReplState.P:
98
+ Config().wait_log('Inspecting postgres database instances...')
97
99
 
98
100
  kb = KeyBindings()
99
101
 
adam/utils_k8s/pods.py CHANGED
@@ -107,17 +107,19 @@ class Pods:
107
107
  tty = True
108
108
  exec_command = [shell, '-c', command]
109
109
  if command.endswith(' &'):
110
- command = command.strip(' &')
111
- cmd_name = ''
112
- if command.startswith('nodetool '):
113
- cmd_name = f".{'_'.join(command.split(' ')[5:])}"
114
-
115
- log_file = f'/tmp/qing-{datetime.now().strftime("%d%H%M%S")}{cmd_name}.log'
116
- command = f"nohup {command} > {log_file} 2>&1 &"
117
- exec_command = [shell, '-c', command]
118
110
  # should be false for starting a backgroud process
119
111
  tty = False
120
112
 
113
+ if Config().get('repl.background-process.auto-nohup', True):
114
+ command = command.strip(' &')
115
+ cmd_name = ''
116
+ if command.startswith('nodetool '):
117
+ cmd_name = f".{'_'.join(command.split(' ')[5:])}"
118
+
119
+ log_file = f'/tmp/qing-{datetime.now().strftime("%d%H%M%S")}{cmd_name}.log'
120
+ command = f"nohup {command} > {log_file} 2>&1 &"
121
+ exec_command = [shell, '-c', command]
122
+
121
123
  k_command = f'kubectl exec {pod_name} -c {container} -n {namespace} -- {shell} -c "{command}"'
122
124
  if show_out:
123
125
  print(k_command)
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.94" #: the working version
4
+ __version__ = "2.0.96" #: 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.94
3
+ Version: 2.0.96
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -4,19 +4,19 @@ adam/apps.py,sha256=okYibOEiCVoM5zsPUKaLJZlwlnvWSHKL7U2J1Yk3-Aw,6701
4
4
  adam/batch.py,sha256=zXLh_dlfJ1vsW3YUUlMW8NXi2SMg3db3xhZiHaldUKY,25251
5
5
  adam/cli.py,sha256=03pIZdomAu7IL-GSP6Eun_PKwwISShRAmfx6eVRPGC0,458
6
6
  adam/cli_group.py,sha256=W3zy1BghCtVcEXizq8fBH-93ZRVVwgAyGPzy0sHno1Y,593
7
- adam/config.py,sha256=kUgxjrRB3USmRgQVEp9ROOT23Qya2nRIKNbyiWBUCpw,2871
7
+ adam/config.py,sha256=GRtfpGgGwfeYdVSPfk3LKCRXlOEJZ2vmXM3ADr7IhVk,2880
8
8
  adam/embedded_apps.py,sha256=lKPx63mKzJbNmwz0rgL4gF76M9fDGxraYTtNAIGnZ_s,419
9
- adam/embedded_params.py,sha256=LObTQtC5A6sfRPjHNNcJZr2GUVYoQ1TNAR-zPmQoZRc,4930
9
+ adam/embedded_params.py,sha256=mxwL1A9iBsRkKPjL8xkFZ67wwknm2EPI3PstrF6Rvt0,5012
10
10
  adam/log.py,sha256=gg5DK52wLPc9cjykeh0WFHyAk1qI3HEpGaAK8W2dzXY,1146
11
11
  adam/pod_exec_result.py,sha256=WBXJSvxzXp9TfsfXeHtIvgz8GvfMAAcH5M03GISLqzw,1046
12
- adam/repl.py,sha256=zvzHyAuU2XTyp5o7oKd0NBpUNgn-o24cIwR9s32de50,9559
12
+ adam/repl.py,sha256=wo-QGBnySC2cLsQl7M17qGsPVe68oIvJIHkGnZbjMhA,9668
13
13
  adam/repl_commands.py,sha256=GKdpHm4e0it7qVwjzBrsIoa5szpvZC30kJmHbWCvooA,4691
14
14
  adam/repl_session.py,sha256=uIogcvWBh7wd8QQ-p_JgLsyJ8YJgINw5vOd6JIsd7Vo,472
15
15
  adam/repl_state.py,sha256=VlQpV19Sg5vL8H3o8lQxZB5atyuTuN5iEQsd6xpSkQQ,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=ReUVXcGktIMxyKbTuYBaSJNNFvh4zcn67ln883F8x-g,139
19
+ adam/version.py,sha256=xdZjjjSYZ9S8l6d5Gt2_xrewmog-qY9Ja-f12xFxwvU,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
@@ -66,7 +66,7 @@ adam/commands/help.py,sha256=4IzR4p8UiXr00o1TaymHWm8957EWbWRyuvhrJzZzvc0,1734
66
66
  adam/commands/issues.py,sha256=VS-PC7e-2lywsa-lbmoUX8IY77OPGzFudwbw1g8XmQc,2599
67
67
  adam/commands/login.py,sha256=bj95WWIF7mJDJhnyS9T8xvaZUGL37dj7GlH8TgmODbk,1877
68
68
  adam/commands/logs.py,sha256=GBVztFlCQfd4jfMtqydPjWS9xsB5mV4Aj4ohSQFm6i0,1165
69
- adam/commands/ls.py,sha256=qrtlYTfJG3_p7jrMkB2mv4V8fHf8MLr24V9bJXRPHNA,5766
69
+ adam/commands/ls.py,sha256=HzfKvaFTrPMKl7N3PtVciuBGj2lZIe9eeEohgDyyav8,5798
70
70
  adam/commands/nodetool.py,sha256=j_DS5Tqe_NLpq2d0kTCC9IyNcl9krEHsB-URwBPeHVU,2356
71
71
  adam/commands/nodetool_commands.py,sha256=5IgWC3rmeDD1cgwqQjiiWzi-wJpJ3n_8pAzz_9phXuk,2635
72
72
  adam/commands/param_get.py,sha256=kPAAppK2T0tEFRnSIVFLDPIIGHhgLA7drJhn8TRyvvE,1305
@@ -80,7 +80,7 @@ adam/commands/shell.py,sha256=wY_PIx7Lt6vuxhFArlfxdEnBbrouCJ3yNHhFn17DEqw,848
80
80
  adam/commands/watch.py,sha256=fU2LGll-Igl08HpUQALOnh8l3s3AMGFX26NCLhqbfcw,2438
81
81
  adam/commands/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  adam/commands/audit/audit.py,sha256=uXyzGRRW4mfg4AAjxMe6yrTrC3UNQnZh9_8n7-Y3EVE,2324
83
- adam/commands/audit/audit_repair_tables.py,sha256=5Glsy29md3KH_4_smuVBeu6c4zygICPK8Jiv-fNRC38,1186
83
+ adam/commands/audit/audit_repair_tables.py,sha256=ciKmacngg1r14uR8Z_uzgNH_sk0QlCQvJHLjcWeeDnQ,3330
84
84
  adam/commands/cql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  adam/commands/cql/cql_completions.py,sha256=dXe51NTWEJis76587IWSn9Av-cjC0J6KMaxlBKfF4wM,411
86
86
  adam/commands/cql/cql_table_completer.py,sha256=Tth6lmZ1eCEbJeAVZojTx594ttQeeVf-OjhhkSLyRnI,312
@@ -177,14 +177,14 @@ adam/utils_k8s/deployment.py,sha256=SLhnMm5GMXwEldj2OupSFBUsvNjynwSNrv5tIDvLMrc,
177
177
  adam/utils_k8s/ingresses.py,sha256=ul3Z6fDGc_Cxcn-ExP0vXhZatoShCUZFtpwtCY4Qx7o,3460
178
178
  adam/utils_k8s/jobs.py,sha256=gJpBpjcZ_FlkWJJIlavbHC_bqdmvv-GMVo8UZVh0sOQ,2610
179
179
  adam/utils_k8s/kube_context.py,sha256=xJF_72vUJu-X9MpIYzOIfnj7KEWU7a_sLBR-H3994Y0,3311
180
- adam/utils_k8s/pods.py,sha256=3lfHfyIYg5tI4O544aww2k-LsvMfPGTESYXCjcfKb6Y,11217
180
+ adam/utils_k8s/pods.py,sha256=FJ8T9pVSH4AavNYbJnc7BmLlTZySU7jJHYu3v2OplJ8,11319
181
181
  adam/utils_k8s/secrets.py,sha256=tBSKLknHlwdwyTzqvtJ2YS-y9x4gvW57Ug9sOkK_U50,2413
182
182
  adam/utils_k8s/service_accounts.py,sha256=v2oQSqCrNvt2uRnKlNwR3fjtpUG7oF5nqgzEB7NnT-U,6349
183
183
  adam/utils_k8s/services.py,sha256=EOJJGACVbbRvu5T3rMKqIJqgYic1_MSJ17EA0TJ6UOk,3156
184
184
  adam/utils_k8s/statefulsets.py,sha256=5g7KxGRHgEewT8rnZneDTaJDylUf-dHH2edWJEoorr8,4667
185
185
  adam/utils_k8s/volumes.py,sha256=RIBmlOSWM3V3QVXLCFT0owVOyh4rGG1ETp521a-6ndo,1137
186
- kaqing-2.0.94.dist-info/METADATA,sha256=6pfzONIF7eW7jS-zkyDJSzYe9ups6XXoZh-fqHen5a0,132
187
- kaqing-2.0.94.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
188
- kaqing-2.0.94.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
189
- kaqing-2.0.94.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
190
- kaqing-2.0.94.dist-info/RECORD,,
186
+ kaqing-2.0.96.dist-info/METADATA,sha256=J4ItcIQYIVs3zvCR-iC8SzFFT2yyzrPbZX1zK_vic7g,132
187
+ kaqing-2.0.96.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
188
+ kaqing-2.0.96.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
189
+ kaqing-2.0.96.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
190
+ kaqing-2.0.96.dist-info/RECORD,,