paasta-tools 1.21.4__py3-none-any.whl → 1.22.0__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.
- paasta_tools/__init__.py +1 -1
- paasta_tools/api/api.py +5 -0
- paasta_tools/api/api_docs/swagger.json +92 -0
- paasta_tools/api/views/autoscaler.py +122 -0
- paasta_tools/cli/cmds/autoscale.py +126 -7
- paasta_tools/kubernetes/application/controller_wrappers.py +16 -2
- paasta_tools/kubernetes_tools.py +77 -1
- paasta_tools/paastaapi/api/autoscaler_api.py +140 -1
- paasta_tools/paastaapi/model/autoscaling_override.py +180 -0
- paasta_tools/paastaapi/model/inline_response202.py +182 -0
- paasta_tools/paastaapi/models/__init__.py +2 -0
- paasta_tools/setup_kubernetes_job.py +105 -1
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_kubernetes_job.py +105 -1
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/METADATA +1 -1
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/RECORD +70 -68
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/apply_external_resources.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/bounce_log_latency_parser.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_autoscaler_max_instances.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_cassandracluster_services_replication.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_flink_services_health.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_kubernetes_api.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_kubernetes_services_replication.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_manual_oapi_changes.sh +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_oom_events.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_orphans.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_spark_jobs.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/cleanup_kubernetes_cr.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/cleanup_kubernetes_crd.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/cleanup_kubernetes_jobs.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/create_dynamodb_table.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/create_paasta_playground.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/delete_kubernetes_deployments.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/emit_allocated_cpu_metrics.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_all_deployments +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_authenticating_services.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_deployments_for_service.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_services_file.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_services_yaml.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/get_running_task_allocation.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/habitat_fixer.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/ide_helper.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/is_pod_healthy_in_proxy.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/is_pod_healthy_in_smartstack.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/kill_bad_containers.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/kubernetes_remove_evicted_pods.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/mass-deploy-tag.sh +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/mock_patch_checker.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_cleanup_remote_run_resources.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_cleanup_stale_nodes.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_deploy_tron_jobs +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_execute_docker_command.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_secrets_sync.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_tabcomplete.sh +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/paasta_update_soa_memcpu.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/render_template.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/rightsizer_soaconfigs_update.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/service_shard_remove.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/service_shard_update.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_istio_mesh.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_kubernetes_cr.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_kubernetes_crd.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_kubernetes_internal_crd.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/setup_prometheus_adapter_config.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/shared_ip_check.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/synapse_srv_namespaces_fact.py +0 -0
- {paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/timeouts_metrics_prom.py +0 -0
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/LICENSE +0 -0
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/WHEEL +0 -0
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/entry_points.txt +0 -0
- {paasta_tools-1.21.4.dist-info → paasta_tools-1.22.0.dist-info}/top_level.txt +0 -0
|
@@ -21,9 +21,12 @@ Command line options:
|
|
|
21
21
|
- -v, --verbose: Verbose output
|
|
22
22
|
"""
|
|
23
23
|
import argparse
|
|
24
|
+
import json
|
|
24
25
|
import logging
|
|
25
26
|
import sys
|
|
27
|
+
import time
|
|
26
28
|
import traceback
|
|
29
|
+
from typing import Dict
|
|
27
30
|
from typing import List
|
|
28
31
|
from typing import Optional
|
|
29
32
|
from typing import Sequence
|
|
@@ -36,7 +39,11 @@ from paasta_tools.kubernetes.application.controller_wrappers import Application
|
|
|
36
39
|
from paasta_tools.kubernetes.application.controller_wrappers import (
|
|
37
40
|
get_application_wrapper,
|
|
38
41
|
)
|
|
42
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAME
|
|
43
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE
|
|
39
44
|
from paasta_tools.kubernetes_tools import ensure_namespace
|
|
45
|
+
from paasta_tools.kubernetes_tools import get_namespaced_configmap
|
|
46
|
+
from paasta_tools.kubernetes_tools import HpaOverride
|
|
40
47
|
from paasta_tools.kubernetes_tools import InvalidKubernetesConfig
|
|
41
48
|
from paasta_tools.kubernetes_tools import KubeClient
|
|
42
49
|
from paasta_tools.kubernetes_tools import KubernetesDeploymentConfig
|
|
@@ -129,6 +136,8 @@ def main() -> None:
|
|
|
129
136
|
kube_client = KubeClient()
|
|
130
137
|
service_instances_valid = True
|
|
131
138
|
|
|
139
|
+
hpa_overrides = get_hpa_overrides(kube_client)
|
|
140
|
+
|
|
132
141
|
# validate the service_instance names
|
|
133
142
|
service_instances_with_valid_names = get_service_instances_with_valid_names(
|
|
134
143
|
service_instances=args.service_instance_list
|
|
@@ -162,6 +171,7 @@ def main() -> None:
|
|
|
162
171
|
soa_dir=soa_dir,
|
|
163
172
|
metrics_interface=deploy_metrics,
|
|
164
173
|
eks=args.eks,
|
|
174
|
+
hpa_overrides=hpa_overrides,
|
|
165
175
|
)
|
|
166
176
|
else:
|
|
167
177
|
setup_kube_succeeded = False
|
|
@@ -239,6 +249,92 @@ def get_kubernetes_deployment_config(
|
|
|
239
249
|
return service_instance_configs_list
|
|
240
250
|
|
|
241
251
|
|
|
252
|
+
def get_hpa_overrides(kube_client: KubeClient) -> Dict[str, Dict[str, HpaOverride]]:
|
|
253
|
+
"""
|
|
254
|
+
Load autoscaling overrides from the ConfigMap once.
|
|
255
|
+
|
|
256
|
+
This function reads the "paasta-autoscaling-overrides" ConfigMap in the "paasta" namespace
|
|
257
|
+
and extracts all valid (non-expired) overrides to return a dictionary mapping
|
|
258
|
+
service.instance pairs to override data (currently, just min_instances and when the
|
|
259
|
+
override should expire by).
|
|
260
|
+
|
|
261
|
+
The incoming ConfigMap is expected to have the following format:
|
|
262
|
+
{
|
|
263
|
+
$SERVICE_A.$INSTANCE_A: {
|
|
264
|
+
"min_instances": 2,
|
|
265
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
266
|
+
},
|
|
267
|
+
$SERVICE_A.$INSTANCE_B: {
|
|
268
|
+
"min_instances": 3,
|
|
269
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
270
|
+
},
|
|
271
|
+
...
|
|
272
|
+
},
|
|
273
|
+
$SERVICE_B.$INSTANCE_A: {
|
|
274
|
+
"min_instances": 1,
|
|
275
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
276
|
+
},
|
|
277
|
+
$SERVICE_B.$INSTANCE_B: {
|
|
278
|
+
"min_instances": 2,
|
|
279
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
280
|
+
},
|
|
281
|
+
...
|
|
282
|
+
}
|
|
283
|
+
"""
|
|
284
|
+
overrides: Dict[str, Dict[str, HpaOverride]] = {}
|
|
285
|
+
try:
|
|
286
|
+
configmap = get_namespaced_configmap(
|
|
287
|
+
name=AUTOSCALING_OVERRIDES_CONFIGMAP_NAME,
|
|
288
|
+
namespace=AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE,
|
|
289
|
+
kube_client=kube_client,
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
if configmap.data:
|
|
293
|
+
current_time = time.time()
|
|
294
|
+
|
|
295
|
+
for service_instance, override_json in configmap.data.items():
|
|
296
|
+
try:
|
|
297
|
+
service, instance = service_instance.split(".")
|
|
298
|
+
override_metadata = json.loads(override_json)
|
|
299
|
+
expire_after = override_metadata.get("expire_after")
|
|
300
|
+
min_instances = override_metadata.get("min_instances")
|
|
301
|
+
|
|
302
|
+
if expire_after and min_instances:
|
|
303
|
+
if current_time < expire_after:
|
|
304
|
+
if service not in overrides:
|
|
305
|
+
overrides[service] = {}
|
|
306
|
+
|
|
307
|
+
overrides[service][instance] = {
|
|
308
|
+
"min_instances": min_instances,
|
|
309
|
+
"expire_after": expire_after,
|
|
310
|
+
}
|
|
311
|
+
log.info(
|
|
312
|
+
f"Found valid HPA override for {service}: "
|
|
313
|
+
f"{override_metadata.get('min_instances')} (expires at {expire_after})"
|
|
314
|
+
)
|
|
315
|
+
else:
|
|
316
|
+
log.info(
|
|
317
|
+
f"Ignoring expired HPA override for {service}.{instance}"
|
|
318
|
+
f"(expired at {expire_after})"
|
|
319
|
+
)
|
|
320
|
+
else:
|
|
321
|
+
log.warning(
|
|
322
|
+
f"Invalid HPA override for {service}.{instance}: "
|
|
323
|
+
f"missing 'min_instances' or 'expire_after': {override_metadata}"
|
|
324
|
+
)
|
|
325
|
+
except Exception:
|
|
326
|
+
log.exception(
|
|
327
|
+
f"Error parsing override for {service} - proceeding without overrides for this service."
|
|
328
|
+
)
|
|
329
|
+
except Exception:
|
|
330
|
+
# If ConfigMap doesn't exist or there's an error, just return empty dict
|
|
331
|
+
log.exception(
|
|
332
|
+
f"Unable to load the {AUTOSCALING_OVERRIDES_CONFIGMAP_NAME} ConfigMap - proceeding without overrides"
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
return overrides
|
|
336
|
+
|
|
337
|
+
|
|
242
338
|
def setup_kube_deployments(
|
|
243
339
|
kube_client: KubeClient,
|
|
244
340
|
cluster: str,
|
|
@@ -249,6 +345,7 @@ def setup_kube_deployments(
|
|
|
249
345
|
soa_dir: str = DEFAULT_SOA_DIR,
|
|
250
346
|
metrics_interface: metrics_lib.BaseMetrics = metrics_lib.NoMetrics("paasta"),
|
|
251
347
|
eks: bool = False,
|
|
348
|
+
hpa_overrides: Optional[Dict[str, Dict[str, HpaOverride]]] = None,
|
|
252
349
|
) -> bool:
|
|
253
350
|
|
|
254
351
|
if not service_instance_configs_list:
|
|
@@ -260,12 +357,17 @@ def setup_kube_deployments(
|
|
|
260
357
|
for deployment in existing_kube_deployments
|
|
261
358
|
}
|
|
262
359
|
|
|
360
|
+
hpa_overrides = hpa_overrides or {}
|
|
361
|
+
|
|
263
362
|
applications = [
|
|
264
363
|
create_application_object(
|
|
265
364
|
cluster=cluster,
|
|
266
365
|
soa_dir=soa_dir,
|
|
267
366
|
service_instance_config=service_instance,
|
|
268
367
|
eks=eks,
|
|
368
|
+
hpa_override=hpa_overrides.get(service_instance.service, {}).get(
|
|
369
|
+
service_instance.instance, None
|
|
370
|
+
),
|
|
269
371
|
)
|
|
270
372
|
if service_instance
|
|
271
373
|
else (_, None)
|
|
@@ -337,6 +439,7 @@ def create_application_object(
|
|
|
337
439
|
soa_dir: str,
|
|
338
440
|
service_instance_config: Union[KubernetesDeploymentConfig, EksDeploymentConfig],
|
|
339
441
|
eks: bool = False,
|
|
442
|
+
hpa_override: Optional[HpaOverride] = None,
|
|
340
443
|
) -> Tuple[bool, Optional[Application]]:
|
|
341
444
|
try:
|
|
342
445
|
formatted_application = service_instance_config.format_kubernetes_app()
|
|
@@ -344,8 +447,9 @@ def create_application_object(
|
|
|
344
447
|
log.error(traceback.format_exc())
|
|
345
448
|
return False, None
|
|
346
449
|
|
|
347
|
-
app = get_application_wrapper(formatted_application)
|
|
450
|
+
app = get_application_wrapper(formatted_application, hpa_override)
|
|
348
451
|
app.load_local_config(soa_dir, cluster, eks)
|
|
452
|
+
|
|
349
453
|
return True, app
|
|
350
454
|
|
|
351
455
|
|
|
@@ -21,9 +21,12 @@ Command line options:
|
|
|
21
21
|
- -v, --verbose: Verbose output
|
|
22
22
|
"""
|
|
23
23
|
import argparse
|
|
24
|
+
import json
|
|
24
25
|
import logging
|
|
25
26
|
import sys
|
|
27
|
+
import time
|
|
26
28
|
import traceback
|
|
29
|
+
from typing import Dict
|
|
27
30
|
from typing import List
|
|
28
31
|
from typing import Optional
|
|
29
32
|
from typing import Sequence
|
|
@@ -36,7 +39,11 @@ from paasta_tools.kubernetes.application.controller_wrappers import Application
|
|
|
36
39
|
from paasta_tools.kubernetes.application.controller_wrappers import (
|
|
37
40
|
get_application_wrapper,
|
|
38
41
|
)
|
|
42
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAME
|
|
43
|
+
from paasta_tools.kubernetes_tools import AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE
|
|
39
44
|
from paasta_tools.kubernetes_tools import ensure_namespace
|
|
45
|
+
from paasta_tools.kubernetes_tools import get_namespaced_configmap
|
|
46
|
+
from paasta_tools.kubernetes_tools import HpaOverride
|
|
40
47
|
from paasta_tools.kubernetes_tools import InvalidKubernetesConfig
|
|
41
48
|
from paasta_tools.kubernetes_tools import KubeClient
|
|
42
49
|
from paasta_tools.kubernetes_tools import KubernetesDeploymentConfig
|
|
@@ -129,6 +136,8 @@ def main() -> None:
|
|
|
129
136
|
kube_client = KubeClient()
|
|
130
137
|
service_instances_valid = True
|
|
131
138
|
|
|
139
|
+
hpa_overrides = get_hpa_overrides(kube_client)
|
|
140
|
+
|
|
132
141
|
# validate the service_instance names
|
|
133
142
|
service_instances_with_valid_names = get_service_instances_with_valid_names(
|
|
134
143
|
service_instances=args.service_instance_list
|
|
@@ -162,6 +171,7 @@ def main() -> None:
|
|
|
162
171
|
soa_dir=soa_dir,
|
|
163
172
|
metrics_interface=deploy_metrics,
|
|
164
173
|
eks=args.eks,
|
|
174
|
+
hpa_overrides=hpa_overrides,
|
|
165
175
|
)
|
|
166
176
|
else:
|
|
167
177
|
setup_kube_succeeded = False
|
|
@@ -239,6 +249,92 @@ def get_kubernetes_deployment_config(
|
|
|
239
249
|
return service_instance_configs_list
|
|
240
250
|
|
|
241
251
|
|
|
252
|
+
def get_hpa_overrides(kube_client: KubeClient) -> Dict[str, Dict[str, HpaOverride]]:
|
|
253
|
+
"""
|
|
254
|
+
Load autoscaling overrides from the ConfigMap once.
|
|
255
|
+
|
|
256
|
+
This function reads the "paasta-autoscaling-overrides" ConfigMap in the "paasta" namespace
|
|
257
|
+
and extracts all valid (non-expired) overrides to return a dictionary mapping
|
|
258
|
+
service.instance pairs to override data (currently, just min_instances and when the
|
|
259
|
+
override should expire by).
|
|
260
|
+
|
|
261
|
+
The incoming ConfigMap is expected to have the following format:
|
|
262
|
+
{
|
|
263
|
+
$SERVICE_A.$INSTANCE_A: {
|
|
264
|
+
"min_instances": 2,
|
|
265
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
266
|
+
},
|
|
267
|
+
$SERVICE_A.$INSTANCE_B: {
|
|
268
|
+
"min_instances": 3,
|
|
269
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
270
|
+
},
|
|
271
|
+
...
|
|
272
|
+
},
|
|
273
|
+
$SERVICE_B.$INSTANCE_A: {
|
|
274
|
+
"min_instances": 1,
|
|
275
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
276
|
+
},
|
|
277
|
+
$SERVICE_B.$INSTANCE_B: {
|
|
278
|
+
"min_instances": 2,
|
|
279
|
+
"expire_after": "2023-10-01T00:00:00Z"
|
|
280
|
+
},
|
|
281
|
+
...
|
|
282
|
+
}
|
|
283
|
+
"""
|
|
284
|
+
overrides: Dict[str, Dict[str, HpaOverride]] = {}
|
|
285
|
+
try:
|
|
286
|
+
configmap = get_namespaced_configmap(
|
|
287
|
+
name=AUTOSCALING_OVERRIDES_CONFIGMAP_NAME,
|
|
288
|
+
namespace=AUTOSCALING_OVERRIDES_CONFIGMAP_NAMESPACE,
|
|
289
|
+
kube_client=kube_client,
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
if configmap.data:
|
|
293
|
+
current_time = time.time()
|
|
294
|
+
|
|
295
|
+
for service_instance, override_json in configmap.data.items():
|
|
296
|
+
try:
|
|
297
|
+
service, instance = service_instance.split(".")
|
|
298
|
+
override_metadata = json.loads(override_json)
|
|
299
|
+
expire_after = override_metadata.get("expire_after")
|
|
300
|
+
min_instances = override_metadata.get("min_instances")
|
|
301
|
+
|
|
302
|
+
if expire_after and min_instances:
|
|
303
|
+
if current_time < expire_after:
|
|
304
|
+
if service not in overrides:
|
|
305
|
+
overrides[service] = {}
|
|
306
|
+
|
|
307
|
+
overrides[service][instance] = {
|
|
308
|
+
"min_instances": min_instances,
|
|
309
|
+
"expire_after": expire_after,
|
|
310
|
+
}
|
|
311
|
+
log.info(
|
|
312
|
+
f"Found valid HPA override for {service}: "
|
|
313
|
+
f"{override_metadata.get('min_instances')} (expires at {expire_after})"
|
|
314
|
+
)
|
|
315
|
+
else:
|
|
316
|
+
log.info(
|
|
317
|
+
f"Ignoring expired HPA override for {service}.{instance}"
|
|
318
|
+
f"(expired at {expire_after})"
|
|
319
|
+
)
|
|
320
|
+
else:
|
|
321
|
+
log.warning(
|
|
322
|
+
f"Invalid HPA override for {service}.{instance}: "
|
|
323
|
+
f"missing 'min_instances' or 'expire_after': {override_metadata}"
|
|
324
|
+
)
|
|
325
|
+
except Exception:
|
|
326
|
+
log.exception(
|
|
327
|
+
f"Error parsing override for {service} - proceeding without overrides for this service."
|
|
328
|
+
)
|
|
329
|
+
except Exception:
|
|
330
|
+
# If ConfigMap doesn't exist or there's an error, just return empty dict
|
|
331
|
+
log.exception(
|
|
332
|
+
f"Unable to load the {AUTOSCALING_OVERRIDES_CONFIGMAP_NAME} ConfigMap - proceeding without overrides"
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
return overrides
|
|
336
|
+
|
|
337
|
+
|
|
242
338
|
def setup_kube_deployments(
|
|
243
339
|
kube_client: KubeClient,
|
|
244
340
|
cluster: str,
|
|
@@ -249,6 +345,7 @@ def setup_kube_deployments(
|
|
|
249
345
|
soa_dir: str = DEFAULT_SOA_DIR,
|
|
250
346
|
metrics_interface: metrics_lib.BaseMetrics = metrics_lib.NoMetrics("paasta"),
|
|
251
347
|
eks: bool = False,
|
|
348
|
+
hpa_overrides: Optional[Dict[str, Dict[str, HpaOverride]]] = None,
|
|
252
349
|
) -> bool:
|
|
253
350
|
|
|
254
351
|
if not service_instance_configs_list:
|
|
@@ -260,12 +357,17 @@ def setup_kube_deployments(
|
|
|
260
357
|
for deployment in existing_kube_deployments
|
|
261
358
|
}
|
|
262
359
|
|
|
360
|
+
hpa_overrides = hpa_overrides or {}
|
|
361
|
+
|
|
263
362
|
applications = [
|
|
264
363
|
create_application_object(
|
|
265
364
|
cluster=cluster,
|
|
266
365
|
soa_dir=soa_dir,
|
|
267
366
|
service_instance_config=service_instance,
|
|
268
367
|
eks=eks,
|
|
368
|
+
hpa_override=hpa_overrides.get(service_instance.service, {}).get(
|
|
369
|
+
service_instance.instance, None
|
|
370
|
+
),
|
|
269
371
|
)
|
|
270
372
|
if service_instance
|
|
271
373
|
else (_, None)
|
|
@@ -337,6 +439,7 @@ def create_application_object(
|
|
|
337
439
|
soa_dir: str,
|
|
338
440
|
service_instance_config: Union[KubernetesDeploymentConfig, EksDeploymentConfig],
|
|
339
441
|
eks: bool = False,
|
|
442
|
+
hpa_override: Optional[HpaOverride] = None,
|
|
340
443
|
) -> Tuple[bool, Optional[Application]]:
|
|
341
444
|
try:
|
|
342
445
|
formatted_application = service_instance_config.format_kubernetes_app()
|
|
@@ -344,8 +447,9 @@ def create_application_object(
|
|
|
344
447
|
log.error(traceback.format_exc())
|
|
345
448
|
return False, None
|
|
346
449
|
|
|
347
|
-
app = get_application_wrapper(formatted_application)
|
|
450
|
+
app = get_application_wrapper(formatted_application, hpa_override)
|
|
348
451
|
app.load_local_config(soa_dir, cluster, eks)
|
|
452
|
+
|
|
349
453
|
return True, app
|
|
350
454
|
|
|
351
455
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
k8s_itests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
k8s_itests/test_autoscaling.py,sha256=gX30L1wG1sDBaM0wE2aYR4OqHPSLvQBZ6LV0mLTrXZA,536
|
|
3
3
|
k8s_itests/utils.py,sha256=PNibpYR0-g8Jcts9CjpkNb3oVzmdk9tZQrrNRuATCCM,966
|
|
4
|
-
paasta_tools/__init__.py,sha256=
|
|
4
|
+
paasta_tools/__init__.py,sha256=t8XiLjvZXh6dTrPIbHbG5uSNFHdxp-tUFJtAsZSn0Ok,865
|
|
5
5
|
paasta_tools/adhoc_tools.py,sha256=OfhyZwilB93kNX8r4Nq_KyZCvsZ4rNX-FBcQAi41KCM,4751
|
|
6
6
|
paasta_tools/apply_external_resources.py,sha256=DHZJ8zkGQKTBR6Ku2lNxnrdHo8rD7PD0rZEN2yloOn8,3375
|
|
7
7
|
paasta_tools/async_utils.py,sha256=ELB2qHP-F2IlMes-kxgy5q9PRUSUTZ-AKw5hQ2K0l_E,3514
|
|
@@ -43,7 +43,7 @@ paasta_tools/generate_services_yaml.py,sha256=BM760XGEOmLeJcEm0ez5nBZ2NmFJWsNXbZ
|
|
|
43
43
|
paasta_tools/hacheck.py,sha256=GtQd32G4JoB2bOWqzH9h9NPrkg8a50i-iXAblfYz2p4,2748
|
|
44
44
|
paasta_tools/iptables.py,sha256=SQ7hutHarfCd13oAknKv_h9rUuln4rf11W6C2HHUy9g,7518
|
|
45
45
|
paasta_tools/kafkacluster_tools.py,sha256=NMfowdpYhFpXW55MKx_eX6rrQj5Fn-5M_9ryZKd749A,4992
|
|
46
|
-
paasta_tools/kubernetes_tools.py,sha256=
|
|
46
|
+
paasta_tools/kubernetes_tools.py,sha256=nHc1CdVMrGg3DJTdu49viog6cXdhQrgvFbqrZ-QZquA,180306
|
|
47
47
|
paasta_tools/list_kubernetes_service_instances.py,sha256=UEPiTqNxUAqUgSyPzJlNcrI2W4HBwpngzDM1QD6AAVQ,3910
|
|
48
48
|
paasta_tools/list_tron_namespaces.py,sha256=wfSkPY9_C-RkORmnon3DWL2lVZ4GNSSDG9VkFrDfY1E,1679
|
|
49
49
|
paasta_tools/long_running_service_tools.py,sha256=PE4K9opcx16tEc3XxWgQBKCpV4cJYS2JfN-dyTFhmB4,26137
|
|
@@ -71,7 +71,7 @@ paasta_tools/setup_istio_mesh.py,sha256=RbgurGILky-vuLU0QZ3KL1pg5Ku47vDkfaX6JFwE
|
|
|
71
71
|
paasta_tools/setup_kubernetes_cr.py,sha256=5iDiizK1WZLk5FEm-RWBCWDWM6ilAwqa-hrEk84eJD8,14638
|
|
72
72
|
paasta_tools/setup_kubernetes_crd.py,sha256=kDpZKbpQa8niY-dhEKf_Q5IE5h7yDRES_Wg-2atJ6kY,4033
|
|
73
73
|
paasta_tools/setup_kubernetes_internal_crd.py,sha256=bkc4t2hUM9JoTIVDnfZWsVkoQ-IlRoTI-E_FISLGpk4,4642
|
|
74
|
-
paasta_tools/setup_kubernetes_job.py,sha256=
|
|
74
|
+
paasta_tools/setup_kubernetes_job.py,sha256=_jJsBqy6vlv2ngtJIDZNxcsPS6Gk5nz--DmyqK9YPRM,16942
|
|
75
75
|
paasta_tools/setup_prometheus_adapter_config.py,sha256=DCA0-AY8dPivV5D4FxMGY1wIoIvWXXWV_3V5O1LJBXc,40741
|
|
76
76
|
paasta_tools/setup_tron_namespace.py,sha256=CGVrTyHb6ypagIRrYLSpVDV-Kd-VxcLoEC_6K98M1OM,9729
|
|
77
77
|
paasta_tools/slack.py,sha256=WEJsTcr2vCdftG4bVkePNBFaC2hzEzMDwglHA0UC0s8,2700
|
|
@@ -82,16 +82,16 @@ paasta_tools/tron_tools.py,sha256=2yAEpSeYMW08daISa1jchKQNrR_PvNdsYLj23YIwEU0,55
|
|
|
82
82
|
paasta_tools/utils.py,sha256=Quv5vRco_4jfdb1VYIy2BT6EeX0g0J0KZKVNuSWY_V8,147400
|
|
83
83
|
paasta_tools/yaml_tools.py,sha256=rusVYsqENcjdF7URmm3aUEvQ1rskX0JJZ1jxbf4vkAw,1262
|
|
84
84
|
paasta_tools/api/__init__.py,sha256=H0VmJeHyCSXD9GbiEjjQwcB_sKOcoBiyK-IEJMmtCyQ,578
|
|
85
|
-
paasta_tools/api/api.py,sha256=
|
|
85
|
+
paasta_tools/api/api.py,sha256=SwlBbwH9e8ihnBSSkLU65CHrnzyQeDHPfRg_ik5LWZU,9859
|
|
86
86
|
paasta_tools/api/client.py,sha256=RwEeM0fiwdcEpJQQEocuhdEZVnMdh8QwRHTwbx3wFP8,3614
|
|
87
87
|
paasta_tools/api/settings.py,sha256=UbRnHL2GKeRfzfQ4qdlDy2KapGR-GoGpXK0SzNXUeM4,1303
|
|
88
|
-
paasta_tools/api/api_docs/swagger.json,sha256=
|
|
88
|
+
paasta_tools/api/api_docs/swagger.json,sha256=SgRjrGL8hQpITv00g_bTlxdBADed6Br-0vE3ULkaFto,89395
|
|
89
89
|
paasta_tools/api/tweens/__init__.py,sha256=nN1myeu8LuQKCDxz4XF9f55IDi13DSQgQ5e7OLP7DK8,144
|
|
90
90
|
paasta_tools/api/tweens/auth.py,sha256=dran1Duk0tInhN_dutg-QgRcPfc5DADk5h7D2WVBPek,4197
|
|
91
91
|
paasta_tools/api/tweens/profiling.py,sha256=prvrusCyDzP2j-64UCI-XGYxqDyyx8CDLKXl64oi-6M,3756
|
|
92
92
|
paasta_tools/api/tweens/request_logger.py,sha256=Yu4bciKzJw9aR8ib9L6KIZepVDnh4ksTmRdAQRIwVc4,3826
|
|
93
93
|
paasta_tools/api/views/__init__.py,sha256=H0VmJeHyCSXD9GbiEjjQwcB_sKOcoBiyK-IEJMmtCyQ,578
|
|
94
|
-
paasta_tools/api/views/autoscaler.py,sha256=
|
|
94
|
+
paasta_tools/api/views/autoscaler.py,sha256=4SIPhqoiIRl4rc0duhpYUXIycJ25SQvyRZlHb2qvRN4,8745
|
|
95
95
|
paasta_tools/api/views/exception.py,sha256=sHdSArpJNh2z-azJNiGtodPPUREMwb7IinOI8H7B_i0,1457
|
|
96
96
|
paasta_tools/api/views/flink.py,sha256=X7GHgWaunGarll31FUIYb9Apm9RomcJp2uFmbRrb2H8,2475
|
|
97
97
|
paasta_tools/api/views/instance.py,sha256=mL5V5d3LDcD_0Ex_mrRZZv20x-5qhfuTokBjfSpKvfw,13830
|
|
@@ -113,7 +113,7 @@ paasta_tools/cli/fsm_cmd.py,sha256=c6FFvmaDxEe21MiqL_lrn9uWpnmh2pCNhh1ZjU4ahJA,4
|
|
|
113
113
|
paasta_tools/cli/paasta_tabcomplete.sh,sha256=qbQKSriz_L4MogA12L_8i-tg0Lplpshbk_FUMjK6uG0,929
|
|
114
114
|
paasta_tools/cli/utils.py,sha256=Y1WsUtorvePHT5v3wRAhy_98gxzRou1bhFRirwddIMs,37738
|
|
115
115
|
paasta_tools/cli/cmds/__init__.py,sha256=H0VmJeHyCSXD9GbiEjjQwcB_sKOcoBiyK-IEJMmtCyQ,578
|
|
116
|
-
paasta_tools/cli/cmds/autoscale.py,sha256=
|
|
116
|
+
paasta_tools/cli/cmds/autoscale.py,sha256=lJV3gRxjuxD40QdE6lRX5uoBO44PmnbJrkC2IiIlJAo,9533
|
|
117
117
|
paasta_tools/cli/cmds/check.py,sha256=OSEFTL_r22I8lrxS4XHa3syMxz6nrgN_7DH1B57h2ho,12968
|
|
118
118
|
paasta_tools/cli/cmds/cook_image.py,sha256=L2fDzY1s4yB4A43QcFMOJv6CMUlyB7587WtwFSAZ-38,5273
|
|
119
119
|
paasta_tools/cli/cmds/get_docker_image.py,sha256=STzXTABDvwI4yVRtF2PihsIXjdb3C62eFEV_O9HdB6s,2677
|
|
@@ -193,7 +193,7 @@ paasta_tools/instance/kubernetes.py,sha256=abgU_f-YAh2kOVruh_nAXGX4TOvOix-iwfM3Q
|
|
|
193
193
|
paasta_tools/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
194
194
|
paasta_tools/kubernetes/remote_run.py,sha256=vGWwL-ZqAfBV1CVTuRS1ggAxdTCxt7fxMFaWN5GfrRY,17685
|
|
195
195
|
paasta_tools/kubernetes/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
196
|
-
paasta_tools/kubernetes/application/controller_wrappers.py,sha256=
|
|
196
|
+
paasta_tools/kubernetes/application/controller_wrappers.py,sha256=nyUW-qtgNha5YzqTmwFfwVAcepKGqd9kl8ERpeNpt-k,19150
|
|
197
197
|
paasta_tools/kubernetes/application/tools.py,sha256=-qbkn4ynM_LFa-NfiDMFZ3G4jty93DWKbx3_Go3OIIo,3618
|
|
198
198
|
paasta_tools/kubernetes/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
199
199
|
paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py,sha256=_IkK7vm3FlOF5hYq1M2Xf5DIu-j5d7HJUVmoVetCB94,5287
|
|
@@ -225,7 +225,7 @@ paasta_tools/paastaapi/exceptions.py,sha256=MMmblQNMKiyfW37_1IN7ZdZkad5GHQf6hW3u
|
|
|
225
225
|
paasta_tools/paastaapi/model_utils.py,sha256=jn9jqNrG-qm-vb6w3dfJv7gunaFtX5NkqqlZtLe2h8M,74015
|
|
226
226
|
paasta_tools/paastaapi/rest.py,sha256=jSS2J2DRpNLtkK98EDgQcMO1MkTocTP244_rzeuXvQU,12197
|
|
227
227
|
paasta_tools/paastaapi/api/__init__.py,sha256=HkTSCN0zRGu6mtrPDQmdoPrrVzam8A-ljnGL6Ys3GOE,229
|
|
228
|
-
paasta_tools/paastaapi/api/autoscaler_api.py,sha256=
|
|
228
|
+
paasta_tools/paastaapi/api/autoscaler_api.py,sha256=0lTQ6JBTmt_HJ7x2EM03r1NESxlZJ5sJSRBNgGQ1toQ,15912
|
|
229
229
|
paasta_tools/paastaapi/api/default_api.py,sha256=Kl6pqZNzydLVC-MVZYGjXzXcHI69RTSHvcX9FqnWQoU,20369
|
|
230
230
|
paasta_tools/paastaapi/api/remote_run_api.py,sha256=MdnmIFSsvj501_vgaNIkVKidLpmTBtpyc9Op-3tJwFk,21409
|
|
231
231
|
paasta_tools/paastaapi/api/resources_api.py,sha256=jctcU5rMlUTza0f3zHnfl1B469amc1t6ahB5xI__fbc,5468
|
|
@@ -234,6 +234,7 @@ paasta_tools/paastaapi/apis/__init__.py,sha256=1Q2S7uGtbgDu6a4-c3xx5Ei9JM1YIzctM
|
|
|
234
234
|
paasta_tools/paastaapi/model/__init__.py,sha256=N49d9K35V_Hd5lOHWcMeVRl0Iy_-L-03rZgfKXwlESM,348
|
|
235
235
|
paasta_tools/paastaapi/model/adhoc_launch_history.py,sha256=fX6_aW7tXbYwAXAIe6NbOwX74K9QPO7X3DJ5Rk8U8Ek,6944
|
|
236
236
|
paasta_tools/paastaapi/model/autoscaler_count_msg.py,sha256=Ddk0WnduLIMqs25BxAws1mM1lFNDGn1RwOndIrd-rWY,6937
|
|
237
|
+
paasta_tools/paastaapi/model/autoscaling_override.py,sha256=PTUpUBIYuhRQdOeMRwKlW5fAhRspaNAr1FIZ7Wqqjcw,7001
|
|
237
238
|
paasta_tools/paastaapi/model/deploy_queue.py,sha256=VTymHx6AFSUPLFnhO28GgZSib-MDa24RAgXeqbB0wbY,7292
|
|
238
239
|
paasta_tools/paastaapi/model/deploy_queue_service_instance.py,sha256=KSglH6b2uatNeU_4jG9-EJ3uhKvzF21JbTmcWA4AREM,8370
|
|
239
240
|
paasta_tools/paastaapi/model/envoy_backend.py,sha256=BOv0oDcjVRLiFmTbAkufL9AiaBZFhYgPAF0C3JcP384,7659
|
|
@@ -249,6 +250,7 @@ paasta_tools/paastaapi/model/hpa_metric.py,sha256=VmzyIDhtVmJZwesarVojDoWR8sQDRt
|
|
|
249
250
|
paasta_tools/paastaapi/model/inline_object.py,sha256=KZyF22Vv0oDJJkeZwozhjbgFgoQJP4qY_wcXfLqHX3I,6555
|
|
250
251
|
paasta_tools/paastaapi/model/inline_response200.py,sha256=5t4-jtpWG0zWSSrqZTpckgS1jqdBYHRGJqelpDwcolY,6691
|
|
251
252
|
paasta_tools/paastaapi/model/inline_response2001.py,sha256=B83DDjFDB-fK8T9xK58mJFvsE4_QKiL6WgZjXZiROqA,6579
|
|
253
|
+
paasta_tools/paastaapi/model/inline_response202.py,sha256=ZngMZ_GHBmgx6gVuPlr1WZmn3ymCRSEG7_iePMmvmA0,7327
|
|
252
254
|
paasta_tools/paastaapi/model/instance_bounce_status.py,sha256=pWoHZtKd_bx0crlL6IgFqE6w22Ke5MYPvOmD8C0MDRU,8444
|
|
253
255
|
paasta_tools/paastaapi/model/instance_mesh_status.py,sha256=2DHz4ToNM2b12e0U1oHzySPHAv1GeWrqRnuA-djAoWo,7357
|
|
254
256
|
paasta_tools/paastaapi/model/instance_status.py,sha256=iO2RCfNd93muqRyEk8porhch97ykKZDMy3zMhIn6MEA,9761
|
|
@@ -281,68 +283,68 @@ paasta_tools/paastaapi/model/smartstack_backend.py,sha256=jC12hYMur2Iw8hyKVOWlxS
|
|
|
281
283
|
paasta_tools/paastaapi/model/smartstack_location.py,sha256=a39BeS49HyGup_15EgKiyuCxSepocPwi5IElGF2vlt8,7241
|
|
282
284
|
paasta_tools/paastaapi/model/smartstack_status.py,sha256=3CJKc3IfNYhg0mPJQ4mqIMo2KgTYuzLfvHcQ53iCT8Y,7325
|
|
283
285
|
paasta_tools/paastaapi/model/task_tail_lines.py,sha256=ogrAad-WAEhf3Eq23crg_KzB-yanpxzE9hK23tOTLY8,7025
|
|
284
|
-
paasta_tools/paastaapi/models/__init__.py,sha256=
|
|
286
|
+
paasta_tools/paastaapi/models/__init__.py,sha256=FtiAxdFp7ivblYQcumIayzGJD5gTIjktkUemNG9IBVk,4390
|
|
285
287
|
paasta_tools/secret_providers/__init__.py,sha256=N6kEw3uvY3fxQZgAtR58-lWGQOKfrsHOrc9SYzXd2uQ,1975
|
|
286
288
|
paasta_tools/secret_providers/vault.py,sha256=3vQGKMAgBPKawU6hNw4wPtYxYrNe7iN3tx66TSxAXEA,7517
|
|
287
289
|
paasta_tools/tron/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
288
290
|
paasta_tools/tron/client.py,sha256=ypWjM4bZCzQWLn-qe1driqAxvF0ux8dROuFUv63dryA,5562
|
|
289
291
|
paasta_tools/tron/tron_command_context.py,sha256=c6mph_DAt7pjcE3Uo271haJ0DfxJzfvcRhR2o-UmOeY,5379
|
|
290
292
|
paasta_tools/tron/tron_timeutils.py,sha256=vDn04K7A3Xbs3lM04EgLuViC8AavOc5qyo8J5MC5nLk,3054
|
|
291
|
-
paasta_tools-1.
|
|
292
|
-
paasta_tools-1.
|
|
293
|
-
paasta_tools-1.
|
|
294
|
-
paasta_tools-1.
|
|
295
|
-
paasta_tools-1.
|
|
296
|
-
paasta_tools-1.
|
|
297
|
-
paasta_tools-1.
|
|
298
|
-
paasta_tools-1.
|
|
299
|
-
paasta_tools-1.
|
|
300
|
-
paasta_tools-1.
|
|
301
|
-
paasta_tools-1.
|
|
302
|
-
paasta_tools-1.
|
|
303
|
-
paasta_tools-1.
|
|
304
|
-
paasta_tools-1.
|
|
305
|
-
paasta_tools-1.
|
|
306
|
-
paasta_tools-1.
|
|
307
|
-
paasta_tools-1.
|
|
308
|
-
paasta_tools-1.
|
|
309
|
-
paasta_tools-1.
|
|
310
|
-
paasta_tools-1.
|
|
311
|
-
paasta_tools-1.
|
|
312
|
-
paasta_tools-1.
|
|
313
|
-
paasta_tools-1.
|
|
314
|
-
paasta_tools-1.
|
|
315
|
-
paasta_tools-1.
|
|
316
|
-
paasta_tools-1.
|
|
317
|
-
paasta_tools-1.
|
|
318
|
-
paasta_tools-1.
|
|
319
|
-
paasta_tools-1.
|
|
320
|
-
paasta_tools-1.
|
|
321
|
-
paasta_tools-1.
|
|
322
|
-
paasta_tools-1.
|
|
323
|
-
paasta_tools-1.
|
|
324
|
-
paasta_tools-1.
|
|
325
|
-
paasta_tools-1.
|
|
326
|
-
paasta_tools-1.
|
|
327
|
-
paasta_tools-1.
|
|
328
|
-
paasta_tools-1.
|
|
329
|
-
paasta_tools-1.
|
|
330
|
-
paasta_tools-1.
|
|
331
|
-
paasta_tools-1.
|
|
332
|
-
paasta_tools-1.
|
|
333
|
-
paasta_tools-1.
|
|
334
|
-
paasta_tools-1.
|
|
335
|
-
paasta_tools-1.
|
|
336
|
-
paasta_tools-1.
|
|
337
|
-
paasta_tools-1.
|
|
338
|
-
paasta_tools-1.
|
|
339
|
-
paasta_tools-1.
|
|
340
|
-
paasta_tools-1.
|
|
341
|
-
paasta_tools-1.
|
|
342
|
-
paasta_tools-1.
|
|
343
|
-
paasta_tools-1.
|
|
344
|
-
paasta_tools-1.
|
|
345
|
-
paasta_tools-1.
|
|
346
|
-
paasta_tools-1.
|
|
347
|
-
paasta_tools-1.
|
|
348
|
-
paasta_tools-1.
|
|
293
|
+
paasta_tools-1.22.0.data/scripts/apply_external_resources.py,sha256=BOIdCQ5Md9RI3enzqbIWQge3clkXhPybAmLE3hqfDwQ,3347
|
|
294
|
+
paasta_tools-1.22.0.data/scripts/bounce_log_latency_parser.py,sha256=dC06a0a5LdtPJ8xo88QWe5DMH_vwVB1BNbkFH7kJ3j0,2225
|
|
295
|
+
paasta_tools-1.22.0.data/scripts/check_autoscaler_max_instances.py,sha256=2z6ifSU26-ULOK-FXp75b45mCdjSJnuvU8TxvapB8Wk,9423
|
|
296
|
+
paasta_tools-1.22.0.data/scripts/check_cassandracluster_services_replication.py,sha256=mKlCK9pRNzxnOt41wA6CtDQIHhcky438i044kA6pbEc,1127
|
|
297
|
+
paasta_tools-1.22.0.data/scripts/check_flink_services_health.py,sha256=ElYa1hr6KUcXuu0B8Nf-dt2Vfyo5FrwF5gVV4QBX7Lg,7162
|
|
298
|
+
paasta_tools-1.22.0.data/scripts/check_kubernetes_api.py,sha256=BhOqJkkKNJPfonfIPonW5dlIubd1ji-3ppjXHomNwzM,1522
|
|
299
|
+
paasta_tools-1.22.0.data/scripts/check_kubernetes_services_replication.py,sha256=LCLlumReRdy9Cw_sPpqanjPcBlbcrJDiECaYYru5Cwk,5751
|
|
300
|
+
paasta_tools-1.22.0.data/scripts/check_manual_oapi_changes.sh,sha256=1IdphwXP7xnMNS7huZ3FeEHy67-nY4n3ydHmbojQvJg,879
|
|
301
|
+
paasta_tools-1.22.0.data/scripts/check_oom_events.py,sha256=tUr14T2LYEgqwpAq4vkZ_Z0VTPOfQg7yrSSkwGQ86Hg,7801
|
|
302
|
+
paasta_tools-1.22.0.data/scripts/check_orphans.py,sha256=zVC5ShFY7LUnPDUytRNsMgvqXkECHvyZlc3qZMpxLko,9985
|
|
303
|
+
paasta_tools-1.22.0.data/scripts/check_spark_jobs.py,sha256=pVUdWmZSBuh4CbpW7cZ1Loq8FX0QFS0LQk2b24TGRyE,7317
|
|
304
|
+
paasta_tools-1.22.0.data/scripts/cleanup_kubernetes_cr.py,sha256=m-w_wuTuVG9FlwQQkxXYgri5DTGac9Nc2pbK4k1FNDE,4659
|
|
305
|
+
paasta_tools-1.22.0.data/scripts/cleanup_kubernetes_crd.py,sha256=p9eLk-0-pU-hcVg-GAM92h1ZdQqlvmYhBzUFCiMPYR8,4478
|
|
306
|
+
paasta_tools-1.22.0.data/scripts/cleanup_kubernetes_jobs.py,sha256=7LHB4tsz1kt-zygssIfQbBY6c3LSqXYDUILvHkSfBog,12433
|
|
307
|
+
paasta_tools-1.22.0.data/scripts/create_dynamodb_table.py,sha256=9wJftWGgNtvLnpXeUqpoMXBIIep1hNySf0YiQmzpl5c,1167
|
|
308
|
+
paasta_tools-1.22.0.data/scripts/create_paasta_playground.py,sha256=jzoE5e1pxWeVXwCEkD9O0jefOhEnIlSa3QMP9PC2f0M,3239
|
|
309
|
+
paasta_tools-1.22.0.data/scripts/delete_kubernetes_deployments.py,sha256=de4C-5yqEuCeJXp6zhbc0v-c0LOElr4qabLnOTRcX4o,3124
|
|
310
|
+
paasta_tools-1.22.0.data/scripts/emit_allocated_cpu_metrics.py,sha256=Cjd3xoOJoYSP3ciSAlZ7fh6_z678KpYt43Xh-WVCY1M,1859
|
|
311
|
+
paasta_tools-1.22.0.data/scripts/generate_all_deployments,sha256=Qr5B0zogTOr8Lcn_7dpORixpGIJcXZ_pWz_ZlWnmsik,248
|
|
312
|
+
paasta_tools-1.22.0.data/scripts/generate_authenticating_services.py,sha256=r5AQyquVm8_rbAhBETUU2ZHZvolpqZZTakW3lKFiOqw,2982
|
|
313
|
+
paasta_tools-1.22.0.data/scripts/generate_deployments_for_service.py,sha256=FAFzIAtKY7GsA13s-ssCMH7T-_p9B1pBtyyYFzsCZ6k,9822
|
|
314
|
+
paasta_tools-1.22.0.data/scripts/generate_services_file.py,sha256=w3Wyyn9ZkjfrvkT0SnTbh5mrTZJnjhTC2JIqLBpb6-g,3583
|
|
315
|
+
paasta_tools-1.22.0.data/scripts/generate_services_yaml.py,sha256=XyIUsHa1BPLqeklayaFewX69-6GT_luaSLS_TMDLkQ0,991
|
|
316
|
+
paasta_tools-1.22.0.data/scripts/get_running_task_allocation.py,sha256=rV2IFGWU2sEYAVDCwKZgeseOAewFzfDiFeCnsPXdGXY,10890
|
|
317
|
+
paasta_tools-1.22.0.data/scripts/habitat_fixer.py,sha256=hCC7fEnxrBOmiCJj4rPwhGlae9JsYg_gltk10l-FwaE,2625
|
|
318
|
+
paasta_tools-1.22.0.data/scripts/ide_helper.py,sha256=YxHHqbnrJ88XI9Pmlup2QSvp15qVN5ugLuPYkEsmBCw,12334
|
|
319
|
+
paasta_tools-1.22.0.data/scripts/is_pod_healthy_in_proxy.py,sha256=MiY85MJDXcN9oS8d840WG1iYDIzzO9lmk_NC0i_CrQg,4321
|
|
320
|
+
paasta_tools-1.22.0.data/scripts/is_pod_healthy_in_smartstack.py,sha256=z3uP9sgwLwg94BubFgBKare2t1L5qhcY48MWsJxjxPY,1697
|
|
321
|
+
paasta_tools-1.22.0.data/scripts/kill_bad_containers.py,sha256=oNY5x0Zg0eu34cXhFy60I7WRlqg4PKD_6xWi0eoRTCA,3832
|
|
322
|
+
paasta_tools-1.22.0.data/scripts/kubernetes_remove_evicted_pods.py,sha256=D9Ovdc9Xer_Qf3vM5CtPVcKvnMwLiC0H-WQmQGXrBKM,5274
|
|
323
|
+
paasta_tools-1.22.0.data/scripts/mass-deploy-tag.sh,sha256=cfPgDDvAOhy3ijTUocklogzoIY8hfoE6T5QI-0aqcfM,1578
|
|
324
|
+
paasta_tools-1.22.0.data/scripts/mock_patch_checker.py,sha256=Q6Je8QjmfLzdnv_6JR6ehh2kA5SUxmeZGeLI2WC3BSY,2559
|
|
325
|
+
paasta_tools-1.22.0.data/scripts/paasta_cleanup_remote_run_resources.py,sha256=4oN9UwnR7q6aEEyFUhVrT41VSeQJ2YS3upFpbZQXNUI,4558
|
|
326
|
+
paasta_tools-1.22.0.data/scripts/paasta_cleanup_stale_nodes.py,sha256=C-DmEVgtienoMgJnIeESvFqWcJOW2SOGoS1l8RXA8NE,6304
|
|
327
|
+
paasta_tools-1.22.0.data/scripts/paasta_deploy_tron_jobs,sha256=fFN2aP5FNSm5WfDV3yvLpihXaKkAF65MRXFcN2iD7S4,106
|
|
328
|
+
paasta_tools-1.22.0.data/scripts/paasta_execute_docker_command.py,sha256=6kh7h2bleQbNULc37MiRsfnk9MDHqVv30UQdg3rF3kQ,4086
|
|
329
|
+
paasta_tools-1.22.0.data/scripts/paasta_secrets_sync.py,sha256=sMdyWMt9BU5CmWHIRwzhpFKve7zxFHkygt_SNTJutWM,28766
|
|
330
|
+
paasta_tools-1.22.0.data/scripts/paasta_tabcomplete.sh,sha256=qbQKSriz_L4MogA12L_8i-tg0Lplpshbk_FUMjK6uG0,929
|
|
331
|
+
paasta_tools-1.22.0.data/scripts/paasta_update_soa_memcpu.py,sha256=1LOHMb4Gp3DcfkOzdCr9rcLa4mZXIv1p93sFvt7h96s,17871
|
|
332
|
+
paasta_tools-1.22.0.data/scripts/render_template.py,sha256=KcKfeSP2a9f6fMDRhnjX7OJaHmFIBtCJcHhUI_B7p9Y,3975
|
|
333
|
+
paasta_tools-1.22.0.data/scripts/rightsizer_soaconfigs_update.py,sha256=0UPVtDyX6wXXurv7l5fiKuzXH8VEszKx_V7UqDm6Ck0,10493
|
|
334
|
+
paasta_tools-1.22.0.data/scripts/service_shard_remove.py,sha256=WCvCxu3GTYEa3cYnWybTOiuHN14axj0x5_-snVd-mqE,4927
|
|
335
|
+
paasta_tools-1.22.0.data/scripts/service_shard_update.py,sha256=AajuRS4s-HXhEcIIYK2dsyBSdCjZbh4x6Po48ipl7M4,13346
|
|
336
|
+
paasta_tools-1.22.0.data/scripts/setup_istio_mesh.py,sha256=LbLxeI_DnhNXkyCgG-GxutlNu9_vcIitorYr4I9x4CY,11575
|
|
337
|
+
paasta_tools-1.22.0.data/scripts/setup_kubernetes_cr.py,sha256=8Jj362SLgoR6k0ZwzZ4bkJc3RJrxk-f2dpHD5zJXCuo,14625
|
|
338
|
+
paasta_tools-1.22.0.data/scripts/setup_kubernetes_crd.py,sha256=QCiFOcSmE0nMEheIb7IUnYMUn0heh1kHyMFBCm7XIRU,4020
|
|
339
|
+
paasta_tools-1.22.0.data/scripts/setup_kubernetes_internal_crd.py,sha256=dDyAOKFow7yeHWGa197angYwGTDWNyR7vZ6Cx5JlS6k,4629
|
|
340
|
+
paasta_tools-1.22.0.data/scripts/setup_kubernetes_job.py,sha256=iGuGjDoevjpmdV3SXnAg65AwljkqC_c5yzTVvEsJ1xc,16929
|
|
341
|
+
paasta_tools-1.22.0.data/scripts/setup_prometheus_adapter_config.py,sha256=51iFbtMu7MZzv9PVuQftJ59BUVBKdeC7G_zkt9-IXdc,40728
|
|
342
|
+
paasta_tools-1.22.0.data/scripts/shared_ip_check.py,sha256=dbMwCwDLy9hCIbVWV1rk0FKuBkZNuQtM59hGVKxV2B4,2464
|
|
343
|
+
paasta_tools-1.22.0.data/scripts/synapse_srv_namespaces_fact.py,sha256=HFX0zIXkXIjtAw8zrA7mUiy6NOKR11eBzE39R3aZv_E,1408
|
|
344
|
+
paasta_tools-1.22.0.data/scripts/timeouts_metrics_prom.py,sha256=icK1j72-e-hvbUGs3LtcaMn9KBMopD9cGv5UUVo-OSc,2607
|
|
345
|
+
paasta_tools-1.22.0.dist-info/LICENSE,sha256=Tcxn8PpeSjHDwUTemLW_thUNxcOOm612dK_no2ebEpo,10837
|
|
346
|
+
paasta_tools-1.22.0.dist-info/METADATA,sha256=z8FeMjrqz1LpSqffcruUVtW_yzz5vFs1CPQigXzR5ds,2169
|
|
347
|
+
paasta_tools-1.22.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
348
|
+
paasta_tools-1.22.0.dist-info/entry_points.txt,sha256=5osYZ62iLdhb63d3P8e9ujafe97kisiB3K-geR5IdH8,1076
|
|
349
|
+
paasta_tools-1.22.0.dist-info/top_level.txt,sha256=6vZZAZ7bbaDxuXZjNYixDwzkrezpNgDQHpS0ikvFOk4,24
|
|
350
|
+
paasta_tools-1.22.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_autoscaler_max_instances.py
RENAMED
|
File without changes
|
|
File without changes
|
{paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/check_flink_services_health.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/delete_kubernetes_deployments.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta_tools-1.21.4.data → paasta_tools-1.22.0.data}/scripts/generate_authenticating_services.py
RENAMED
|
File without changes
|