paasta-tools 1.21.3__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.
- k8s_itests/__init__.py +0 -0
- k8s_itests/test_autoscaling.py +23 -0
- k8s_itests/utils.py +38 -0
- paasta_tools/__init__.py +20 -0
- paasta_tools/adhoc_tools.py +142 -0
- paasta_tools/api/__init__.py +13 -0
- paasta_tools/api/api.py +330 -0
- paasta_tools/api/api_docs/swagger.json +2323 -0
- paasta_tools/api/client.py +106 -0
- paasta_tools/api/settings.py +33 -0
- paasta_tools/api/tweens/__init__.py +6 -0
- paasta_tools/api/tweens/auth.py +125 -0
- paasta_tools/api/tweens/profiling.py +108 -0
- paasta_tools/api/tweens/request_logger.py +124 -0
- paasta_tools/api/views/__init__.py +13 -0
- paasta_tools/api/views/autoscaler.py +100 -0
- paasta_tools/api/views/exception.py +45 -0
- paasta_tools/api/views/flink.py +73 -0
- paasta_tools/api/views/instance.py +395 -0
- paasta_tools/api/views/pause_autoscaler.py +71 -0
- paasta_tools/api/views/remote_run.py +113 -0
- paasta_tools/api/views/resources.py +76 -0
- paasta_tools/api/views/service.py +35 -0
- paasta_tools/api/views/version.py +25 -0
- paasta_tools/apply_external_resources.py +79 -0
- paasta_tools/async_utils.py +109 -0
- paasta_tools/autoscaling/__init__.py +0 -0
- paasta_tools/autoscaling/autoscaling_service_lib.py +57 -0
- paasta_tools/autoscaling/forecasting.py +106 -0
- paasta_tools/autoscaling/max_all_k8s_services.py +41 -0
- paasta_tools/autoscaling/pause_service_autoscaler.py +77 -0
- paasta_tools/autoscaling/utils.py +52 -0
- paasta_tools/bounce_lib.py +184 -0
- paasta_tools/broadcast_log_to_services.py +62 -0
- paasta_tools/cassandracluster_tools.py +210 -0
- paasta_tools/check_autoscaler_max_instances.py +212 -0
- paasta_tools/check_cassandracluster_services_replication.py +35 -0
- paasta_tools/check_flink_services_health.py +203 -0
- paasta_tools/check_kubernetes_api.py +57 -0
- paasta_tools/check_kubernetes_services_replication.py +141 -0
- paasta_tools/check_oom_events.py +244 -0
- paasta_tools/check_services_replication_tools.py +324 -0
- paasta_tools/check_spark_jobs.py +234 -0
- paasta_tools/cleanup_kubernetes_cr.py +138 -0
- paasta_tools/cleanup_kubernetes_crd.py +145 -0
- paasta_tools/cleanup_kubernetes_jobs.py +344 -0
- paasta_tools/cleanup_tron_namespaces.py +96 -0
- paasta_tools/cli/__init__.py +13 -0
- paasta_tools/cli/authentication.py +85 -0
- paasta_tools/cli/cli.py +260 -0
- paasta_tools/cli/cmds/__init__.py +13 -0
- paasta_tools/cli/cmds/autoscale.py +143 -0
- paasta_tools/cli/cmds/check.py +334 -0
- paasta_tools/cli/cmds/cook_image.py +147 -0
- paasta_tools/cli/cmds/get_docker_image.py +76 -0
- paasta_tools/cli/cmds/get_image_version.py +172 -0
- paasta_tools/cli/cmds/get_latest_deployment.py +93 -0
- paasta_tools/cli/cmds/info.py +155 -0
- paasta_tools/cli/cmds/itest.py +117 -0
- paasta_tools/cli/cmds/list.py +66 -0
- paasta_tools/cli/cmds/list_clusters.py +42 -0
- paasta_tools/cli/cmds/list_deploy_queue.py +171 -0
- paasta_tools/cli/cmds/list_namespaces.py +84 -0
- paasta_tools/cli/cmds/local_run.py +1396 -0
- paasta_tools/cli/cmds/logs.py +1601 -0
- paasta_tools/cli/cmds/mark_for_deployment.py +1988 -0
- paasta_tools/cli/cmds/mesh_status.py +174 -0
- paasta_tools/cli/cmds/pause_service_autoscaler.py +107 -0
- paasta_tools/cli/cmds/push_to_registry.py +275 -0
- paasta_tools/cli/cmds/remote_run.py +252 -0
- paasta_tools/cli/cmds/rollback.py +347 -0
- paasta_tools/cli/cmds/secret.py +549 -0
- paasta_tools/cli/cmds/security_check.py +59 -0
- paasta_tools/cli/cmds/spark_run.py +1400 -0
- paasta_tools/cli/cmds/start_stop_restart.py +401 -0
- paasta_tools/cli/cmds/status.py +2302 -0
- paasta_tools/cli/cmds/validate.py +1012 -0
- paasta_tools/cli/cmds/wait_for_deployment.py +275 -0
- paasta_tools/cli/fsm/__init__.py +13 -0
- paasta_tools/cli/fsm/autosuggest.py +82 -0
- paasta_tools/cli/fsm/template/README.md +8 -0
- paasta_tools/cli/fsm/template/cookiecutter.json +7 -0
- paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +91 -0
- paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +20 -0
- paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +8 -0
- paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +6 -0
- paasta_tools/cli/fsm_cmd.py +121 -0
- paasta_tools/cli/paasta_tabcomplete.sh +23 -0
- paasta_tools/cli/schemas/adhoc_schema.json +199 -0
- paasta_tools/cli/schemas/autoscaling_schema.json +91 -0
- paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +37 -0
- paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +89 -0
- paasta_tools/cli/schemas/deploy_schema.json +173 -0
- paasta_tools/cli/schemas/eks_schema.json +970 -0
- paasta_tools/cli/schemas/kubernetes_schema.json +970 -0
- paasta_tools/cli/schemas/rollback_schema.json +160 -0
- paasta_tools/cli/schemas/service_schema.json +25 -0
- paasta_tools/cli/schemas/smartstack_schema.json +322 -0
- paasta_tools/cli/schemas/tron_schema.json +699 -0
- paasta_tools/cli/utils.py +1118 -0
- paasta_tools/clusterman.py +21 -0
- paasta_tools/config_utils.py +385 -0
- paasta_tools/contrib/__init__.py +0 -0
- paasta_tools/contrib/bounce_log_latency_parser.py +68 -0
- paasta_tools/contrib/check_manual_oapi_changes.sh +24 -0
- paasta_tools/contrib/check_orphans.py +306 -0
- paasta_tools/contrib/create_dynamodb_table.py +35 -0
- paasta_tools/contrib/create_paasta_playground.py +105 -0
- paasta_tools/contrib/emit_allocated_cpu_metrics.py +50 -0
- paasta_tools/contrib/get_running_task_allocation.py +346 -0
- paasta_tools/contrib/habitat_fixer.py +86 -0
- paasta_tools/contrib/ide_helper.py +316 -0
- paasta_tools/contrib/is_pod_healthy_in_proxy.py +139 -0
- paasta_tools/contrib/is_pod_healthy_in_smartstack.py +50 -0
- paasta_tools/contrib/kill_bad_containers.py +109 -0
- paasta_tools/contrib/mass-deploy-tag.sh +44 -0
- paasta_tools/contrib/mock_patch_checker.py +86 -0
- paasta_tools/contrib/paasta_update_soa_memcpu.py +520 -0
- paasta_tools/contrib/render_template.py +129 -0
- paasta_tools/contrib/rightsizer_soaconfigs_update.py +348 -0
- paasta_tools/contrib/service_shard_remove.py +157 -0
- paasta_tools/contrib/service_shard_update.py +373 -0
- paasta_tools/contrib/shared_ip_check.py +77 -0
- paasta_tools/contrib/timeouts_metrics_prom.py +64 -0
- paasta_tools/delete_kubernetes_deployments.py +89 -0
- paasta_tools/deployment_utils.py +44 -0
- paasta_tools/docker_wrapper.py +234 -0
- paasta_tools/docker_wrapper_imports.py +13 -0
- paasta_tools/drain_lib.py +351 -0
- paasta_tools/dump_locally_running_services.py +71 -0
- paasta_tools/eks_tools.py +119 -0
- paasta_tools/envoy_tools.py +373 -0
- paasta_tools/firewall.py +504 -0
- paasta_tools/firewall_logging.py +154 -0
- paasta_tools/firewall_update.py +172 -0
- paasta_tools/flink_tools.py +345 -0
- paasta_tools/flinkeks_tools.py +90 -0
- paasta_tools/frameworks/__init__.py +0 -0
- paasta_tools/frameworks/adhoc_scheduler.py +71 -0
- paasta_tools/frameworks/constraints.py +87 -0
- paasta_tools/frameworks/native_scheduler.py +652 -0
- paasta_tools/frameworks/native_service_config.py +301 -0
- paasta_tools/frameworks/task_store.py +245 -0
- paasta_tools/generate_all_deployments +9 -0
- paasta_tools/generate_authenticating_services.py +94 -0
- paasta_tools/generate_deployments_for_service.py +255 -0
- paasta_tools/generate_services_file.py +114 -0
- paasta_tools/generate_services_yaml.py +30 -0
- paasta_tools/hacheck.py +76 -0
- paasta_tools/instance/__init__.py +0 -0
- paasta_tools/instance/hpa_metrics_parser.py +122 -0
- paasta_tools/instance/kubernetes.py +1362 -0
- paasta_tools/iptables.py +240 -0
- paasta_tools/kafkacluster_tools.py +143 -0
- paasta_tools/kubernetes/__init__.py +0 -0
- paasta_tools/kubernetes/application/__init__.py +0 -0
- paasta_tools/kubernetes/application/controller_wrappers.py +476 -0
- paasta_tools/kubernetes/application/tools.py +90 -0
- paasta_tools/kubernetes/bin/__init__.py +0 -0
- paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +164 -0
- paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +135 -0
- paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +181 -0
- paasta_tools/kubernetes/bin/paasta_secrets_sync.py +758 -0
- paasta_tools/kubernetes/remote_run.py +558 -0
- paasta_tools/kubernetes_tools.py +4679 -0
- paasta_tools/list_kubernetes_service_instances.py +128 -0
- paasta_tools/list_tron_namespaces.py +60 -0
- paasta_tools/long_running_service_tools.py +678 -0
- paasta_tools/mac_address.py +44 -0
- paasta_tools/marathon_dashboard.py +0 -0
- paasta_tools/mesos/__init__.py +0 -0
- paasta_tools/mesos/cfg.py +46 -0
- paasta_tools/mesos/cluster.py +60 -0
- paasta_tools/mesos/exceptions.py +59 -0
- paasta_tools/mesos/framework.py +77 -0
- paasta_tools/mesos/log.py +48 -0
- paasta_tools/mesos/master.py +306 -0
- paasta_tools/mesos/mesos_file.py +169 -0
- paasta_tools/mesos/parallel.py +52 -0
- paasta_tools/mesos/slave.py +115 -0
- paasta_tools/mesos/task.py +94 -0
- paasta_tools/mesos/util.py +69 -0
- paasta_tools/mesos/zookeeper.py +37 -0
- paasta_tools/mesos_maintenance.py +848 -0
- paasta_tools/mesos_tools.py +1051 -0
- paasta_tools/metrics/__init__.py +0 -0
- paasta_tools/metrics/metastatus_lib.py +1110 -0
- paasta_tools/metrics/metrics_lib.py +217 -0
- paasta_tools/monitoring/__init__.py +13 -0
- paasta_tools/monitoring/check_k8s_api_performance.py +110 -0
- paasta_tools/monitoring_tools.py +652 -0
- paasta_tools/monkrelaycluster_tools.py +146 -0
- paasta_tools/nrtsearchservice_tools.py +143 -0
- paasta_tools/nrtsearchserviceeks_tools.py +68 -0
- paasta_tools/oom_logger.py +321 -0
- paasta_tools/paasta_deploy_tron_jobs +3 -0
- paasta_tools/paasta_execute_docker_command.py +123 -0
- paasta_tools/paasta_native_serviceinit.py +21 -0
- paasta_tools/paasta_service_config_loader.py +201 -0
- paasta_tools/paastaapi/__init__.py +29 -0
- paasta_tools/paastaapi/api/__init__.py +3 -0
- paasta_tools/paastaapi/api/autoscaler_api.py +302 -0
- paasta_tools/paastaapi/api/default_api.py +569 -0
- paasta_tools/paastaapi/api/remote_run_api.py +604 -0
- paasta_tools/paastaapi/api/resources_api.py +157 -0
- paasta_tools/paastaapi/api/service_api.py +1736 -0
- paasta_tools/paastaapi/api_client.py +818 -0
- paasta_tools/paastaapi/apis/__init__.py +22 -0
- paasta_tools/paastaapi/configuration.py +455 -0
- paasta_tools/paastaapi/exceptions.py +137 -0
- paasta_tools/paastaapi/model/__init__.py +5 -0
- paasta_tools/paastaapi/model/adhoc_launch_history.py +176 -0
- paasta_tools/paastaapi/model/autoscaler_count_msg.py +176 -0
- paasta_tools/paastaapi/model/deploy_queue.py +178 -0
- paasta_tools/paastaapi/model/deploy_queue_service_instance.py +194 -0
- paasta_tools/paastaapi/model/envoy_backend.py +185 -0
- paasta_tools/paastaapi/model/envoy_location.py +184 -0
- paasta_tools/paastaapi/model/envoy_status.py +181 -0
- paasta_tools/paastaapi/model/flink_cluster_overview.py +188 -0
- paasta_tools/paastaapi/model/flink_config.py +173 -0
- paasta_tools/paastaapi/model/flink_job.py +186 -0
- paasta_tools/paastaapi/model/flink_job_details.py +192 -0
- paasta_tools/paastaapi/model/flink_jobs.py +175 -0
- paasta_tools/paastaapi/model/float_and_error.py +173 -0
- paasta_tools/paastaapi/model/hpa_metric.py +176 -0
- paasta_tools/paastaapi/model/inline_object.py +170 -0
- paasta_tools/paastaapi/model/inline_response200.py +170 -0
- paasta_tools/paastaapi/model/inline_response2001.py +170 -0
- paasta_tools/paastaapi/model/instance_bounce_status.py +200 -0
- paasta_tools/paastaapi/model/instance_mesh_status.py +186 -0
- paasta_tools/paastaapi/model/instance_status.py +220 -0
- paasta_tools/paastaapi/model/instance_status_adhoc.py +187 -0
- paasta_tools/paastaapi/model/instance_status_cassandracluster.py +173 -0
- paasta_tools/paastaapi/model/instance_status_flink.py +173 -0
- paasta_tools/paastaapi/model/instance_status_kafkacluster.py +173 -0
- paasta_tools/paastaapi/model/instance_status_kubernetes.py +263 -0
- paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +187 -0
- paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +197 -0
- paasta_tools/paastaapi/model/instance_status_tron.py +204 -0
- paasta_tools/paastaapi/model/instance_tasks.py +182 -0
- paasta_tools/paastaapi/model/integer_and_error.py +173 -0
- paasta_tools/paastaapi/model/kubernetes_container.py +178 -0
- paasta_tools/paastaapi/model/kubernetes_container_v2.py +219 -0
- paasta_tools/paastaapi/model/kubernetes_healthcheck.py +176 -0
- paasta_tools/paastaapi/model/kubernetes_pod.py +201 -0
- paasta_tools/paastaapi/model/kubernetes_pod_event.py +176 -0
- paasta_tools/paastaapi/model/kubernetes_pod_v2.py +213 -0
- paasta_tools/paastaapi/model/kubernetes_replica_set.py +185 -0
- paasta_tools/paastaapi/model/kubernetes_version.py +202 -0
- paasta_tools/paastaapi/model/remote_run_outcome.py +189 -0
- paasta_tools/paastaapi/model/remote_run_start.py +185 -0
- paasta_tools/paastaapi/model/remote_run_stop.py +176 -0
- paasta_tools/paastaapi/model/remote_run_token.py +173 -0
- paasta_tools/paastaapi/model/resource.py +187 -0
- paasta_tools/paastaapi/model/resource_item.py +187 -0
- paasta_tools/paastaapi/model/resource_value.py +176 -0
- paasta_tools/paastaapi/model/smartstack_backend.py +191 -0
- paasta_tools/paastaapi/model/smartstack_location.py +181 -0
- paasta_tools/paastaapi/model/smartstack_status.py +181 -0
- paasta_tools/paastaapi/model/task_tail_lines.py +176 -0
- paasta_tools/paastaapi/model_utils.py +1879 -0
- paasta_tools/paastaapi/models/__init__.py +62 -0
- paasta_tools/paastaapi/rest.py +287 -0
- paasta_tools/prune_completed_pods.py +220 -0
- paasta_tools/puppet_service_tools.py +59 -0
- paasta_tools/py.typed +1 -0
- paasta_tools/remote_git.py +127 -0
- paasta_tools/run-paasta-api-in-dev-mode.py +57 -0
- paasta_tools/run-paasta-api-playground.py +51 -0
- paasta_tools/secret_providers/__init__.py +66 -0
- paasta_tools/secret_providers/vault.py +214 -0
- paasta_tools/secret_tools.py +277 -0
- paasta_tools/setup_istio_mesh.py +353 -0
- paasta_tools/setup_kubernetes_cr.py +412 -0
- paasta_tools/setup_kubernetes_crd.py +138 -0
- paasta_tools/setup_kubernetes_internal_crd.py +154 -0
- paasta_tools/setup_kubernetes_job.py +353 -0
- paasta_tools/setup_prometheus_adapter_config.py +1028 -0
- paasta_tools/setup_tron_namespace.py +248 -0
- paasta_tools/slack.py +75 -0
- paasta_tools/smartstack_tools.py +676 -0
- paasta_tools/spark_tools.py +283 -0
- paasta_tools/synapse_srv_namespaces_fact.py +42 -0
- paasta_tools/tron/__init__.py +0 -0
- paasta_tools/tron/client.py +158 -0
- paasta_tools/tron/tron_command_context.py +194 -0
- paasta_tools/tron/tron_timeutils.py +101 -0
- paasta_tools/tron_tools.py +1448 -0
- paasta_tools/utils.py +4307 -0
- paasta_tools/yaml_tools.py +44 -0
- paasta_tools-1.21.3.data/scripts/apply_external_resources.py +79 -0
- paasta_tools-1.21.3.data/scripts/bounce_log_latency_parser.py +68 -0
- paasta_tools-1.21.3.data/scripts/check_autoscaler_max_instances.py +212 -0
- paasta_tools-1.21.3.data/scripts/check_cassandracluster_services_replication.py +35 -0
- paasta_tools-1.21.3.data/scripts/check_flink_services_health.py +203 -0
- paasta_tools-1.21.3.data/scripts/check_kubernetes_api.py +57 -0
- paasta_tools-1.21.3.data/scripts/check_kubernetes_services_replication.py +141 -0
- paasta_tools-1.21.3.data/scripts/check_manual_oapi_changes.sh +24 -0
- paasta_tools-1.21.3.data/scripts/check_oom_events.py +244 -0
- paasta_tools-1.21.3.data/scripts/check_orphans.py +306 -0
- paasta_tools-1.21.3.data/scripts/check_spark_jobs.py +234 -0
- paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_cr.py +138 -0
- paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_crd.py +145 -0
- paasta_tools-1.21.3.data/scripts/cleanup_kubernetes_jobs.py +344 -0
- paasta_tools-1.21.3.data/scripts/create_dynamodb_table.py +35 -0
- paasta_tools-1.21.3.data/scripts/create_paasta_playground.py +105 -0
- paasta_tools-1.21.3.data/scripts/delete_kubernetes_deployments.py +89 -0
- paasta_tools-1.21.3.data/scripts/emit_allocated_cpu_metrics.py +50 -0
- paasta_tools-1.21.3.data/scripts/generate_all_deployments +9 -0
- paasta_tools-1.21.3.data/scripts/generate_authenticating_services.py +94 -0
- paasta_tools-1.21.3.data/scripts/generate_deployments_for_service.py +255 -0
- paasta_tools-1.21.3.data/scripts/generate_services_file.py +114 -0
- paasta_tools-1.21.3.data/scripts/generate_services_yaml.py +30 -0
- paasta_tools-1.21.3.data/scripts/get_running_task_allocation.py +346 -0
- paasta_tools-1.21.3.data/scripts/habitat_fixer.py +86 -0
- paasta_tools-1.21.3.data/scripts/ide_helper.py +316 -0
- paasta_tools-1.21.3.data/scripts/is_pod_healthy_in_proxy.py +139 -0
- paasta_tools-1.21.3.data/scripts/is_pod_healthy_in_smartstack.py +50 -0
- paasta_tools-1.21.3.data/scripts/kill_bad_containers.py +109 -0
- paasta_tools-1.21.3.data/scripts/kubernetes_remove_evicted_pods.py +164 -0
- paasta_tools-1.21.3.data/scripts/mass-deploy-tag.sh +44 -0
- paasta_tools-1.21.3.data/scripts/mock_patch_checker.py +86 -0
- paasta_tools-1.21.3.data/scripts/paasta_cleanup_remote_run_resources.py +135 -0
- paasta_tools-1.21.3.data/scripts/paasta_cleanup_stale_nodes.py +181 -0
- paasta_tools-1.21.3.data/scripts/paasta_deploy_tron_jobs +3 -0
- paasta_tools-1.21.3.data/scripts/paasta_execute_docker_command.py +123 -0
- paasta_tools-1.21.3.data/scripts/paasta_secrets_sync.py +758 -0
- paasta_tools-1.21.3.data/scripts/paasta_tabcomplete.sh +23 -0
- paasta_tools-1.21.3.data/scripts/paasta_update_soa_memcpu.py +520 -0
- paasta_tools-1.21.3.data/scripts/render_template.py +129 -0
- paasta_tools-1.21.3.data/scripts/rightsizer_soaconfigs_update.py +348 -0
- paasta_tools-1.21.3.data/scripts/service_shard_remove.py +157 -0
- paasta_tools-1.21.3.data/scripts/service_shard_update.py +373 -0
- paasta_tools-1.21.3.data/scripts/setup_istio_mesh.py +353 -0
- paasta_tools-1.21.3.data/scripts/setup_kubernetes_cr.py +412 -0
- paasta_tools-1.21.3.data/scripts/setup_kubernetes_crd.py +138 -0
- paasta_tools-1.21.3.data/scripts/setup_kubernetes_internal_crd.py +154 -0
- paasta_tools-1.21.3.data/scripts/setup_kubernetes_job.py +353 -0
- paasta_tools-1.21.3.data/scripts/setup_prometheus_adapter_config.py +1028 -0
- paasta_tools-1.21.3.data/scripts/shared_ip_check.py +77 -0
- paasta_tools-1.21.3.data/scripts/synapse_srv_namespaces_fact.py +42 -0
- paasta_tools-1.21.3.data/scripts/timeouts_metrics_prom.py +64 -0
- paasta_tools-1.21.3.dist-info/LICENSE +201 -0
- paasta_tools-1.21.3.dist-info/METADATA +74 -0
- paasta_tools-1.21.3.dist-info/RECORD +348 -0
- paasta_tools-1.21.3.dist-info/WHEEL +5 -0
- paasta_tools-1.21.3.dist-info/entry_points.txt +20 -0
- paasta_tools-1.21.3.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright 2015-2016 Yelp Inc.
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
"""
|
|
16
|
+
Usage: ./paasta_execute_docker_command.py [options]
|
|
17
|
+
|
|
18
|
+
This script will attempt to find a running container that contains an environment variable matching
|
|
19
|
+
the specified Mesos task ID and then execute the given command with the specified timeout. The script will
|
|
20
|
+
print the output of the command and exit with the same return code as the command.
|
|
21
|
+
|
|
22
|
+
Command line options:
|
|
23
|
+
|
|
24
|
+
- -i <MESOS_TASK_ID>, --mesos-id <MESOS_TASK_ID>: Specify a Mesos task ID to search for
|
|
25
|
+
- -c <command>, --cmd <command>: Shell command to execute in container
|
|
26
|
+
- -t <timeout>, --timeout <timeout>: Timeout for command
|
|
27
|
+
"""
|
|
28
|
+
import argparse
|
|
29
|
+
import signal
|
|
30
|
+
import sys
|
|
31
|
+
from contextlib import contextmanager
|
|
32
|
+
|
|
33
|
+
from paasta_tools.mesos_tools import get_container_id_for_mesos_id
|
|
34
|
+
from paasta_tools.utils import get_docker_client
|
|
35
|
+
from paasta_tools.utils import is_using_unprivileged_containers
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def parse_args():
|
|
39
|
+
parser = argparse.ArgumentParser(
|
|
40
|
+
description="Executes given command in Docker container for given Mesos task ID"
|
|
41
|
+
)
|
|
42
|
+
parser.add_argument("-i", "--mesos-id", required=True, help="Mesos task ID")
|
|
43
|
+
parser.add_argument(
|
|
44
|
+
"-c", "--cmd", required=True, help="command to execute in container"
|
|
45
|
+
)
|
|
46
|
+
parser.add_argument(
|
|
47
|
+
"-t", "--timeout", default=45, type=int, help="timeout for command"
|
|
48
|
+
)
|
|
49
|
+
args = parser.parse_args()
|
|
50
|
+
return args
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class TimeoutException(Exception):
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@contextmanager
|
|
58
|
+
def time_limit(seconds): # From http://stackoverflow.com/a/601168/1576438
|
|
59
|
+
def signal_handler(signum, frame):
|
|
60
|
+
raise TimeoutException("Timed out!")
|
|
61
|
+
|
|
62
|
+
signal.signal(signal.SIGALRM, signal_handler)
|
|
63
|
+
signal.alarm(seconds)
|
|
64
|
+
try:
|
|
65
|
+
yield
|
|
66
|
+
finally:
|
|
67
|
+
signal.alarm(0)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def execute_in_container(docker_client, container_id, cmd, timeout):
|
|
71
|
+
container_info = docker_client.inspect_container(container_id)
|
|
72
|
+
if (
|
|
73
|
+
container_info["ExecIDs"]
|
|
74
|
+
and len(container_info["ExecIDs"]) > 0
|
|
75
|
+
and not is_using_unprivileged_containers()
|
|
76
|
+
):
|
|
77
|
+
for possible_exec_id in container_info["ExecIDs"]:
|
|
78
|
+
exec_info = docker_client.exec_inspect(possible_exec_id)["ProcessConfig"]
|
|
79
|
+
if exec_info["entrypoint"] == "/bin/sh" and exec_info["arguments"] == [
|
|
80
|
+
"-c",
|
|
81
|
+
cmd,
|
|
82
|
+
]:
|
|
83
|
+
exec_id = possible_exec_id
|
|
84
|
+
break
|
|
85
|
+
else:
|
|
86
|
+
exec_id = docker_client.exec_create(container_id, ["/bin/sh", "-c", cmd])["Id"]
|
|
87
|
+
output = docker_client.exec_start(exec_id, stream=False)
|
|
88
|
+
return_code = docker_client.exec_inspect(exec_id)["ExitCode"]
|
|
89
|
+
return (output, return_code)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def main():
|
|
93
|
+
args = parse_args()
|
|
94
|
+
|
|
95
|
+
if not args.mesos_id:
|
|
96
|
+
print(
|
|
97
|
+
"The Mesos task id you supplied seems to be an empty string! Please provide a valid task id."
|
|
98
|
+
)
|
|
99
|
+
sys.exit(2)
|
|
100
|
+
|
|
101
|
+
docker_client = get_docker_client()
|
|
102
|
+
|
|
103
|
+
container_id = get_container_id_for_mesos_id(docker_client, args.mesos_id)
|
|
104
|
+
|
|
105
|
+
if container_id:
|
|
106
|
+
try:
|
|
107
|
+
with time_limit(args.timeout):
|
|
108
|
+
output, return_code = execute_in_container(
|
|
109
|
+
docker_client, container_id, args.cmd, args.timeout
|
|
110
|
+
)
|
|
111
|
+
print(output)
|
|
112
|
+
except TimeoutException:
|
|
113
|
+
print("Command timed out!")
|
|
114
|
+
return_code = 1
|
|
115
|
+
finally:
|
|
116
|
+
sys.exit(return_code)
|
|
117
|
+
else:
|
|
118
|
+
print("Could not find container with MESOS_TASK_ID '%s'." % args.mesos_id)
|
|
119
|
+
sys.exit(1)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if __name__ == "__main__":
|
|
123
|
+
main()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from paasta_tools.frameworks.native_scheduler import MESOS_TASK_SPACER
|
|
2
|
+
from paasta_tools.mesos_tools import status_mesos_tasks_verbose
|
|
3
|
+
from paasta_tools.utils import calculate_tail_lines
|
|
4
|
+
from paasta_tools.utils import compose_job_id
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def perform_command(command, service, instance, cluster, verbose, soa_dir):
|
|
8
|
+
tail_lines = calculate_tail_lines(verbose_level=verbose)
|
|
9
|
+
|
|
10
|
+
# We have to add a spacer at the end to make sure we only return
|
|
11
|
+
# things for service.main and not service.main_foo
|
|
12
|
+
task_id_prefix = "{}{}".format(compose_job_id(service, instance), MESOS_TASK_SPACER)
|
|
13
|
+
|
|
14
|
+
if command == "status":
|
|
15
|
+
print(
|
|
16
|
+
status_mesos_tasks_verbose(
|
|
17
|
+
job_id=task_id_prefix,
|
|
18
|
+
get_short_task_id=lambda x: x,
|
|
19
|
+
tail_lines=tail_lines,
|
|
20
|
+
)
|
|
21
|
+
)
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Copyright 2015-2017 Yelp Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
import logging
|
|
15
|
+
from typing import Dict
|
|
16
|
+
from typing import Iterable
|
|
17
|
+
from typing import List
|
|
18
|
+
from typing import Tuple
|
|
19
|
+
from typing import Type
|
|
20
|
+
|
|
21
|
+
from service_configuration_lib import read_service_configuration
|
|
22
|
+
|
|
23
|
+
from paasta_tools import utils
|
|
24
|
+
from paasta_tools.utils import deep_merge_dictionaries
|
|
25
|
+
from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
26
|
+
from paasta_tools.utils import InstanceConfig_T
|
|
27
|
+
from paasta_tools.utils import list_clusters
|
|
28
|
+
from paasta_tools.utils import load_service_instance_configs
|
|
29
|
+
from paasta_tools.utils import load_v2_deployments_json
|
|
30
|
+
from paasta_tools.utils import NoDeploymentsAvailable
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
log = logging.getLogger(__name__)
|
|
34
|
+
log.addHandler(logging.NullHandler())
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class PaastaServiceConfigLoader:
|
|
38
|
+
"""PaastaServiceConfigLoader provides useful methods for reading soa-configs and
|
|
39
|
+
iterating instance names or InstanceConfigs objects.
|
|
40
|
+
|
|
41
|
+
:Example:
|
|
42
|
+
|
|
43
|
+
>>> from paasta_tools.paasta_service_config_loader import PaastaServiceConfigLoader
|
|
44
|
+
>>> from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
45
|
+
>>>
|
|
46
|
+
>>> sc = PaastaServiceConfigLoader(service='fake_service', soa_dir=DEFAULT_SOA_DIR)
|
|
47
|
+
>>>
|
|
48
|
+
>>> for instance in sc.instances(cluster='fake_cluster', instance_type_class=KubernetesDeploymentConfig):
|
|
49
|
+
... print(instance)
|
|
50
|
+
...
|
|
51
|
+
main
|
|
52
|
+
canary
|
|
53
|
+
>>>
|
|
54
|
+
>>> for instance_config in sc.instance_configs(cluster='fake_cluster', instance_type_class=KubernetesDeploymentConfig):
|
|
55
|
+
... print(instance_config.get_instance())
|
|
56
|
+
...
|
|
57
|
+
main
|
|
58
|
+
canary
|
|
59
|
+
>>>
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
_framework_configs: Dict[Tuple[str, type], Dict[str, utils.InstanceConfigDict]]
|
|
63
|
+
_clusters: List[str]
|
|
64
|
+
_deployments_json: utils.DeploymentsJsonV2
|
|
65
|
+
|
|
66
|
+
def __init__(
|
|
67
|
+
self,
|
|
68
|
+
service: str,
|
|
69
|
+
soa_dir: str = DEFAULT_SOA_DIR,
|
|
70
|
+
load_deployments: bool = True,
|
|
71
|
+
) -> None:
|
|
72
|
+
self._service = service
|
|
73
|
+
self._soa_dir = soa_dir
|
|
74
|
+
self._load_deployments = load_deployments
|
|
75
|
+
self._clusters = None
|
|
76
|
+
self._general_config = None
|
|
77
|
+
self._deployments_json = None
|
|
78
|
+
self._framework_configs = {}
|
|
79
|
+
|
|
80
|
+
@property
|
|
81
|
+
def clusters(self) -> Iterable[str]:
|
|
82
|
+
"""Returns an iterator that yields cluster names for the service.
|
|
83
|
+
|
|
84
|
+
:returns: iterator that yields cluster names.
|
|
85
|
+
"""
|
|
86
|
+
if self._clusters is None:
|
|
87
|
+
self._clusters = list_clusters(service=self._service, soa_dir=self._soa_dir)
|
|
88
|
+
for cluster in self._clusters:
|
|
89
|
+
yield cluster
|
|
90
|
+
|
|
91
|
+
def instances(
|
|
92
|
+
self, cluster: str, instance_type_class: Type[InstanceConfig_T]
|
|
93
|
+
) -> Iterable[str]:
|
|
94
|
+
"""Returns an iterator that yields instance names as strings.
|
|
95
|
+
|
|
96
|
+
:param cluster: The cluster name
|
|
97
|
+
:param instance_type_class: a subclass of InstanceConfig
|
|
98
|
+
:returns: an iterator that yields instance names
|
|
99
|
+
"""
|
|
100
|
+
if (cluster, instance_type_class) not in self._framework_configs:
|
|
101
|
+
self._refresh_framework_config(cluster, instance_type_class)
|
|
102
|
+
for instance in self._framework_configs.get((cluster, instance_type_class), []):
|
|
103
|
+
yield instance
|
|
104
|
+
|
|
105
|
+
def instance_configs(
|
|
106
|
+
self, cluster: str, instance_type_class: Type[InstanceConfig_T]
|
|
107
|
+
) -> Iterable[InstanceConfig_T]:
|
|
108
|
+
"""Returns an iterator that yields InstanceConfig objects.
|
|
109
|
+
|
|
110
|
+
:param cluster: The cluster name
|
|
111
|
+
:param instance_type_class: a subclass of InstanceConfig
|
|
112
|
+
:returns: an iterator that yields instances of KubernetesDeploymentConfig, etc.
|
|
113
|
+
:raises NotImplementedError: when it doesn't know how to create a config for instance_type_class
|
|
114
|
+
"""
|
|
115
|
+
if (cluster, instance_type_class) not in self._framework_configs:
|
|
116
|
+
self._refresh_framework_config(cluster, instance_type_class)
|
|
117
|
+
for instance, config in self._framework_configs.get(
|
|
118
|
+
(cluster, instance_type_class), {}
|
|
119
|
+
).items():
|
|
120
|
+
try:
|
|
121
|
+
yield self._create_service_config(
|
|
122
|
+
cluster, instance, config, instance_type_class
|
|
123
|
+
)
|
|
124
|
+
except NoDeploymentsAvailable:
|
|
125
|
+
pass
|
|
126
|
+
|
|
127
|
+
def _framework_config_filename(
|
|
128
|
+
self, cluster: str, instance_type_class: Type[InstanceConfig_T]
|
|
129
|
+
):
|
|
130
|
+
return f"{instance_type_class.config_filename_prefix}-{cluster}"
|
|
131
|
+
|
|
132
|
+
def _refresh_framework_config(
|
|
133
|
+
self, cluster: str, instance_type_class: Type[InstanceConfig_T]
|
|
134
|
+
):
|
|
135
|
+
instances = load_service_instance_configs(
|
|
136
|
+
service=self._service,
|
|
137
|
+
instance_type=instance_type_class.config_filename_prefix,
|
|
138
|
+
cluster=cluster,
|
|
139
|
+
soa_dir=self._soa_dir,
|
|
140
|
+
)
|
|
141
|
+
self._framework_configs[(cluster, instance_type_class)] = instances
|
|
142
|
+
|
|
143
|
+
def _get_branch_dict(
|
|
144
|
+
self, cluster: str, instance: str, config: utils.InstanceConfig
|
|
145
|
+
) -> utils.BranchDictV2:
|
|
146
|
+
if self._deployments_json is None:
|
|
147
|
+
self._deployments_json = load_v2_deployments_json(
|
|
148
|
+
self._service, soa_dir=self._soa_dir
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
branch = config.get_branch()
|
|
152
|
+
deploy_group = config.get_deploy_group()
|
|
153
|
+
return self._deployments_json.get_branch_dict(
|
|
154
|
+
self._service, branch, deploy_group
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
def _get_merged_config(
|
|
158
|
+
self, config: utils.InstanceConfigDict
|
|
159
|
+
) -> utils.InstanceConfigDict:
|
|
160
|
+
if self._general_config is None:
|
|
161
|
+
self._general_config = read_service_configuration(
|
|
162
|
+
service_name=self._service, soa_dir=self._soa_dir
|
|
163
|
+
)
|
|
164
|
+
return deep_merge_dictionaries(overrides=config, defaults=self._general_config)
|
|
165
|
+
|
|
166
|
+
def _create_service_config(
|
|
167
|
+
self,
|
|
168
|
+
cluster: str,
|
|
169
|
+
instance: str,
|
|
170
|
+
config: utils.InstanceConfigDict,
|
|
171
|
+
config_class: Type[InstanceConfig_T],
|
|
172
|
+
) -> InstanceConfig_T:
|
|
173
|
+
"""Create a service instance's configuration for kubernetes.
|
|
174
|
+
|
|
175
|
+
:param cluster: The cluster to read the configuration for
|
|
176
|
+
:param instance: The instance of the service to retrieve
|
|
177
|
+
:param config: the framework instance config.
|
|
178
|
+
:returns: An instance of config_class
|
|
179
|
+
"""
|
|
180
|
+
|
|
181
|
+
merged_config = self._get_merged_config(config)
|
|
182
|
+
|
|
183
|
+
temp_instance_config = config_class(
|
|
184
|
+
service=self._service,
|
|
185
|
+
cluster=cluster,
|
|
186
|
+
instance=instance,
|
|
187
|
+
config_dict=merged_config,
|
|
188
|
+
branch_dict=None,
|
|
189
|
+
soa_dir=self._soa_dir,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
branch_dict = self._get_branch_dict(cluster, instance, temp_instance_config)
|
|
193
|
+
|
|
194
|
+
return config_class(
|
|
195
|
+
service=self._service,
|
|
196
|
+
cluster=cluster,
|
|
197
|
+
instance=instance,
|
|
198
|
+
config_dict=merged_config,
|
|
199
|
+
branch_dict=branch_dict,
|
|
200
|
+
soa_dir=self._soa_dir,
|
|
201
|
+
)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
# flake8: noqa
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
Paasta API
|
|
7
|
+
|
|
8
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
9
|
+
|
|
10
|
+
The version of the OpenAPI document: 1.2.0
|
|
11
|
+
Generated by: https://openapi-generator.tech
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__version__ = "1.0.0"
|
|
16
|
+
|
|
17
|
+
# import ApiClient
|
|
18
|
+
from paasta_tools.paastaapi.api_client import ApiClient
|
|
19
|
+
|
|
20
|
+
# import Configuration
|
|
21
|
+
from paasta_tools.paastaapi.configuration import Configuration
|
|
22
|
+
|
|
23
|
+
# import exceptions
|
|
24
|
+
from paasta_tools.paastaapi.exceptions import OpenApiException
|
|
25
|
+
from paasta_tools.paastaapi.exceptions import ApiAttributeError
|
|
26
|
+
from paasta_tools.paastaapi.exceptions import ApiTypeError
|
|
27
|
+
from paasta_tools.paastaapi.exceptions import ApiValueError
|
|
28
|
+
from paasta_tools.paastaapi.exceptions import ApiKeyError
|
|
29
|
+
from paasta_tools.paastaapi.exceptions import ApiException
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Paasta API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 1.2.0
|
|
9
|
+
Generated by: https://openapi-generator.tech
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
import re # noqa: F401
|
|
14
|
+
import sys # noqa: F401
|
|
15
|
+
|
|
16
|
+
from paasta_tools.paastaapi.api_client import ApiClient, Endpoint
|
|
17
|
+
from paasta_tools.paastaapi.model_utils import ( # noqa: F401
|
|
18
|
+
check_allowed_values,
|
|
19
|
+
check_validations,
|
|
20
|
+
date,
|
|
21
|
+
datetime,
|
|
22
|
+
file_type,
|
|
23
|
+
none_type,
|
|
24
|
+
validate_and_convert_types
|
|
25
|
+
)
|
|
26
|
+
from paasta_tools.paastaapi.model.autoscaler_count_msg import AutoscalerCountMsg
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AutoscalerApi(object):
|
|
30
|
+
"""NOTE: This class is auto generated by OpenAPI Generator
|
|
31
|
+
Ref: https://openapi-generator.tech
|
|
32
|
+
|
|
33
|
+
Do not edit the class manually.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
def __init__(self, api_client=None):
|
|
37
|
+
if api_client is None:
|
|
38
|
+
api_client = ApiClient()
|
|
39
|
+
self.api_client = api_client
|
|
40
|
+
|
|
41
|
+
def __get_autoscaler_count(
|
|
42
|
+
self,
|
|
43
|
+
service,
|
|
44
|
+
instance,
|
|
45
|
+
**kwargs
|
|
46
|
+
):
|
|
47
|
+
"""Get status of service_name.instance_name # noqa: E501
|
|
48
|
+
|
|
49
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
50
|
+
asynchronous HTTP request, please pass async_req=True
|
|
51
|
+
|
|
52
|
+
>>> thread = api.get_autoscaler_count(service, instance, async_req=True)
|
|
53
|
+
>>> result = thread.get()
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
service (str): Service name
|
|
57
|
+
instance (str): Instance name
|
|
58
|
+
|
|
59
|
+
Keyword Args:
|
|
60
|
+
_return_http_data_only (bool): response data without head status
|
|
61
|
+
code and headers. Default is True.
|
|
62
|
+
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
63
|
+
will be returned without reading/decoding response data.
|
|
64
|
+
Default is True.
|
|
65
|
+
_request_timeout (float/tuple): timeout setting for this request. If one
|
|
66
|
+
number provided, it will be total request timeout. It can also
|
|
67
|
+
be a pair (tuple) of (connection, read) timeouts.
|
|
68
|
+
Default is None.
|
|
69
|
+
_check_input_type (bool): specifies if type checking
|
|
70
|
+
should be done one the data sent to the server.
|
|
71
|
+
Default is True.
|
|
72
|
+
_check_return_type (bool): specifies if type checking
|
|
73
|
+
should be done one the data received from the server.
|
|
74
|
+
Default is True.
|
|
75
|
+
_host_index (int/None): specifies the index of the server
|
|
76
|
+
that we want to use.
|
|
77
|
+
Default is read from the configuration.
|
|
78
|
+
async_req (bool): execute request asynchronously
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
AutoscalerCountMsg
|
|
82
|
+
If the method is called asynchronously, returns the request
|
|
83
|
+
thread.
|
|
84
|
+
"""
|
|
85
|
+
kwargs['async_req'] = kwargs.get(
|
|
86
|
+
'async_req', False
|
|
87
|
+
)
|
|
88
|
+
kwargs['_return_http_data_only'] = kwargs.get(
|
|
89
|
+
'_return_http_data_only', True
|
|
90
|
+
)
|
|
91
|
+
kwargs['_preload_content'] = kwargs.get(
|
|
92
|
+
'_preload_content', True
|
|
93
|
+
)
|
|
94
|
+
kwargs['_request_timeout'] = kwargs.get(
|
|
95
|
+
'_request_timeout', None
|
|
96
|
+
)
|
|
97
|
+
kwargs['_check_input_type'] = kwargs.get(
|
|
98
|
+
'_check_input_type', True
|
|
99
|
+
)
|
|
100
|
+
kwargs['_check_return_type'] = kwargs.get(
|
|
101
|
+
'_check_return_type', True
|
|
102
|
+
)
|
|
103
|
+
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
104
|
+
kwargs['service'] = \
|
|
105
|
+
service
|
|
106
|
+
kwargs['instance'] = \
|
|
107
|
+
instance
|
|
108
|
+
return self.call_with_http_info(**kwargs)
|
|
109
|
+
|
|
110
|
+
self.get_autoscaler_count = Endpoint(
|
|
111
|
+
settings={
|
|
112
|
+
'response_type': (AutoscalerCountMsg,),
|
|
113
|
+
'auth': [],
|
|
114
|
+
'endpoint_path': '/services/{service}/{instance}/autoscaler',
|
|
115
|
+
'operation_id': 'get_autoscaler_count',
|
|
116
|
+
'http_method': 'GET',
|
|
117
|
+
'servers': None,
|
|
118
|
+
},
|
|
119
|
+
params_map={
|
|
120
|
+
'all': [
|
|
121
|
+
'service',
|
|
122
|
+
'instance',
|
|
123
|
+
],
|
|
124
|
+
'required': [
|
|
125
|
+
'service',
|
|
126
|
+
'instance',
|
|
127
|
+
],
|
|
128
|
+
'nullable': [
|
|
129
|
+
],
|
|
130
|
+
'enum': [
|
|
131
|
+
],
|
|
132
|
+
'validation': [
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
root_map={
|
|
136
|
+
'validations': {
|
|
137
|
+
},
|
|
138
|
+
'allowed_values': {
|
|
139
|
+
},
|
|
140
|
+
'openapi_types': {
|
|
141
|
+
'service':
|
|
142
|
+
(str,),
|
|
143
|
+
'instance':
|
|
144
|
+
(str,),
|
|
145
|
+
},
|
|
146
|
+
'attribute_map': {
|
|
147
|
+
'service': 'service',
|
|
148
|
+
'instance': 'instance',
|
|
149
|
+
},
|
|
150
|
+
'location_map': {
|
|
151
|
+
'service': 'path',
|
|
152
|
+
'instance': 'path',
|
|
153
|
+
},
|
|
154
|
+
'collection_format_map': {
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
headers_map={
|
|
158
|
+
'accept': [
|
|
159
|
+
'application/json'
|
|
160
|
+
],
|
|
161
|
+
'content_type': [],
|
|
162
|
+
},
|
|
163
|
+
api_client=api_client,
|
|
164
|
+
callable=__get_autoscaler_count
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
def __update_autoscaler_count(
|
|
168
|
+
self,
|
|
169
|
+
service,
|
|
170
|
+
instance,
|
|
171
|
+
autoscaler_count_msg,
|
|
172
|
+
**kwargs
|
|
173
|
+
):
|
|
174
|
+
"""Get status of service_name.instance_name # noqa: E501
|
|
175
|
+
|
|
176
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
177
|
+
asynchronous HTTP request, please pass async_req=True
|
|
178
|
+
|
|
179
|
+
>>> thread = api.update_autoscaler_count(service, instance, autoscaler_count_msg, async_req=True)
|
|
180
|
+
>>> result = thread.get()
|
|
181
|
+
|
|
182
|
+
Args:
|
|
183
|
+
service (str): Service name
|
|
184
|
+
instance (str): Instance name
|
|
185
|
+
autoscaler_count_msg (AutoscalerCountMsg):
|
|
186
|
+
|
|
187
|
+
Keyword Args:
|
|
188
|
+
_return_http_data_only (bool): response data without head status
|
|
189
|
+
code and headers. Default is True.
|
|
190
|
+
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
191
|
+
will be returned without reading/decoding response data.
|
|
192
|
+
Default is True.
|
|
193
|
+
_request_timeout (float/tuple): timeout setting for this request. If one
|
|
194
|
+
number provided, it will be total request timeout. It can also
|
|
195
|
+
be a pair (tuple) of (connection, read) timeouts.
|
|
196
|
+
Default is None.
|
|
197
|
+
_check_input_type (bool): specifies if type checking
|
|
198
|
+
should be done one the data sent to the server.
|
|
199
|
+
Default is True.
|
|
200
|
+
_check_return_type (bool): specifies if type checking
|
|
201
|
+
should be done one the data received from the server.
|
|
202
|
+
Default is True.
|
|
203
|
+
_host_index (int/None): specifies the index of the server
|
|
204
|
+
that we want to use.
|
|
205
|
+
Default is read from the configuration.
|
|
206
|
+
async_req (bool): execute request asynchronously
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
AutoscalerCountMsg
|
|
210
|
+
If the method is called asynchronously, returns the request
|
|
211
|
+
thread.
|
|
212
|
+
"""
|
|
213
|
+
kwargs['async_req'] = kwargs.get(
|
|
214
|
+
'async_req', False
|
|
215
|
+
)
|
|
216
|
+
kwargs['_return_http_data_only'] = kwargs.get(
|
|
217
|
+
'_return_http_data_only', True
|
|
218
|
+
)
|
|
219
|
+
kwargs['_preload_content'] = kwargs.get(
|
|
220
|
+
'_preload_content', True
|
|
221
|
+
)
|
|
222
|
+
kwargs['_request_timeout'] = kwargs.get(
|
|
223
|
+
'_request_timeout', None
|
|
224
|
+
)
|
|
225
|
+
kwargs['_check_input_type'] = kwargs.get(
|
|
226
|
+
'_check_input_type', True
|
|
227
|
+
)
|
|
228
|
+
kwargs['_check_return_type'] = kwargs.get(
|
|
229
|
+
'_check_return_type', True
|
|
230
|
+
)
|
|
231
|
+
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
232
|
+
kwargs['service'] = \
|
|
233
|
+
service
|
|
234
|
+
kwargs['instance'] = \
|
|
235
|
+
instance
|
|
236
|
+
kwargs['autoscaler_count_msg'] = \
|
|
237
|
+
autoscaler_count_msg
|
|
238
|
+
return self.call_with_http_info(**kwargs)
|
|
239
|
+
|
|
240
|
+
self.update_autoscaler_count = Endpoint(
|
|
241
|
+
settings={
|
|
242
|
+
'response_type': (AutoscalerCountMsg,),
|
|
243
|
+
'auth': [],
|
|
244
|
+
'endpoint_path': '/services/{service}/{instance}/autoscaler',
|
|
245
|
+
'operation_id': 'update_autoscaler_count',
|
|
246
|
+
'http_method': 'POST',
|
|
247
|
+
'servers': None,
|
|
248
|
+
},
|
|
249
|
+
params_map={
|
|
250
|
+
'all': [
|
|
251
|
+
'service',
|
|
252
|
+
'instance',
|
|
253
|
+
'autoscaler_count_msg',
|
|
254
|
+
],
|
|
255
|
+
'required': [
|
|
256
|
+
'service',
|
|
257
|
+
'instance',
|
|
258
|
+
'autoscaler_count_msg',
|
|
259
|
+
],
|
|
260
|
+
'nullable': [
|
|
261
|
+
],
|
|
262
|
+
'enum': [
|
|
263
|
+
],
|
|
264
|
+
'validation': [
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
root_map={
|
|
268
|
+
'validations': {
|
|
269
|
+
},
|
|
270
|
+
'allowed_values': {
|
|
271
|
+
},
|
|
272
|
+
'openapi_types': {
|
|
273
|
+
'service':
|
|
274
|
+
(str,),
|
|
275
|
+
'instance':
|
|
276
|
+
(str,),
|
|
277
|
+
'autoscaler_count_msg':
|
|
278
|
+
(AutoscalerCountMsg,),
|
|
279
|
+
},
|
|
280
|
+
'attribute_map': {
|
|
281
|
+
'service': 'service',
|
|
282
|
+
'instance': 'instance',
|
|
283
|
+
},
|
|
284
|
+
'location_map': {
|
|
285
|
+
'service': 'path',
|
|
286
|
+
'instance': 'path',
|
|
287
|
+
'autoscaler_count_msg': 'body',
|
|
288
|
+
},
|
|
289
|
+
'collection_format_map': {
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
headers_map={
|
|
293
|
+
'accept': [
|
|
294
|
+
'application/json'
|
|
295
|
+
],
|
|
296
|
+
'content_type': [
|
|
297
|
+
'application/json'
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
api_client=api_client,
|
|
301
|
+
callable=__update_autoscaler_count
|
|
302
|
+
)
|