paasta-tools 1.14.0__tar.gz → 1.14.2__tar.gz
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-1.14.0/paasta_tools.egg-info → paasta-tools-1.14.2}/PKG-INFO +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/__init__.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/api_docs/swagger.json +13 -1
- paasta-tools-1.14.2/paasta_tools/cli/cmds/remote_run.py +212 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/utils.py +15 -0
- paasta-tools-1.14.2/paasta_tools/kubernetes/bin/paasta_cleanup_remote_run_resources.py +83 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/remote_run.py +51 -7
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes_tools.py +21 -7
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/__init__.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/autoscaler_api.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/default_api.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/remote_run_api.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/resources_api.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/service_api.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api_client.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/configuration.py +2 -2
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/exceptions.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/adhoc_launch_history.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/deploy_queue.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/envoy_backend.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/envoy_location.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/envoy_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/flink_cluster_overview.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/flink_config.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/flink_job.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/flink_job_details.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/flink_jobs.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/float_and_error.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/hpa_metric.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/inline_object.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/inline_response200.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/inline_response2001.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_bounce_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_mesh_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_adhoc.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_flink.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_status_tron.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/instance_tasks.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/integer_and_error.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_container.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_pod.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/kubernetes_version.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/remote_run_outcome.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/remote_run_start.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/remote_run_stop.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/remote_run_token.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/resource.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/resource_item.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/resource_value.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/smartstack_backend.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/smartstack_location.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/smartstack_status.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/task_tail_lines.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model_utils.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/rest.py +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2/paasta_tools.egg-info}/PKG-INFO +1 -1
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools.egg-info/SOURCES.txt +1 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/setup.py +1 -0
- paasta-tools-1.14.0/paasta_tools/cli/cmds/remote_run.py +0 -33
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/MANIFEST.in +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/README.md +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/k8s_itests/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/k8s_itests/test_autoscaling.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/k8s_itests/utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/adhoc_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/api.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/client.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/settings.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/tweens/auth.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/exception.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/flink.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/instance.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/remote_run.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/resources.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/service.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/api/views/version.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/apply_external_resources.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/async_utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/bounce_lib.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_oom_events.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cli.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/list_namespaces.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/logs.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/validate.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/eks_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/clusterman.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/config_utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/check_orphans.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/render_template.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/deployment_utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/docker_wrapper.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/drain_lib.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/eks_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/envoy_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/firewall.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/firewall_logging.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/firewall_update.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/flink_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/generate_all_deployments +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/generate_authenticating_services.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/generate_services_file.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/hacheck.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/instance/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/iptables.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/long_running_service_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mac_address.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/cfg.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/cluster.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/framework.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/log.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/master.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/parallel.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/slave.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/task.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/util.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/mesos_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/metrics/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/monitoring_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/oom_logger.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/py.typed +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/remote_git.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/secret_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/slack.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/smartstack_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/spark_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/tron/__init__.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/tron/client.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/tron_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/utils.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools/yaml_tools.py +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools.egg-info/requires.txt +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/pyproject.toml +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/requirements-minimal.txt +0 -0
- {paasta-tools-1.14.0 → paasta-tools-1.14.2}/setup.cfg +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"swagger": "2.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Paasta API",
|
|
5
|
-
"version": "1.1.
|
|
5
|
+
"version": "1.1.1"
|
|
6
6
|
},
|
|
7
7
|
"basePath": "/v1",
|
|
8
8
|
"schemes": [
|
|
@@ -856,6 +856,9 @@
|
|
|
856
856
|
"$ref": "#/definitions/RemoteRunOutcome"
|
|
857
857
|
}
|
|
858
858
|
},
|
|
859
|
+
"403": {
|
|
860
|
+
"description": "Unauthorized to remote-run this service"
|
|
861
|
+
},
|
|
859
862
|
"404": {
|
|
860
863
|
"description": "Deployment key not found"
|
|
861
864
|
},
|
|
@@ -904,6 +907,9 @@
|
|
|
904
907
|
"$ref": "#/definitions/RemoteRunOutcome"
|
|
905
908
|
}
|
|
906
909
|
},
|
|
910
|
+
"403": {
|
|
911
|
+
"description": "Unauthorized to remote-run this service"
|
|
912
|
+
},
|
|
907
913
|
"404": {
|
|
908
914
|
"description": "Service instance not found"
|
|
909
915
|
},
|
|
@@ -952,6 +958,9 @@
|
|
|
952
958
|
"$ref": "#/definitions/RemoteRunOutcome"
|
|
953
959
|
}
|
|
954
960
|
},
|
|
961
|
+
"403": {
|
|
962
|
+
"description": "Unauthorized to remote-run this service"
|
|
963
|
+
},
|
|
955
964
|
"404": {
|
|
956
965
|
"description": "Service instance not found"
|
|
957
966
|
},
|
|
@@ -998,6 +1007,9 @@
|
|
|
998
1007
|
"$ref": "#/definitions/RemoteRunToken"
|
|
999
1008
|
}
|
|
1000
1009
|
},
|
|
1010
|
+
"403": {
|
|
1011
|
+
"description": "Unauthorized to remote-run this service"
|
|
1012
|
+
},
|
|
1001
1013
|
"404": {
|
|
1002
1014
|
"description": "Service instance not found"
|
|
1003
1015
|
},
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright 2015-2017 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
|
+
import argparse
|
|
16
|
+
import pty
|
|
17
|
+
import shlex
|
|
18
|
+
import time
|
|
19
|
+
|
|
20
|
+
from paasta_tools.cli.utils import get_paasta_oapi_api_clustername
|
|
21
|
+
from paasta_tools.cli.utils import get_paasta_oapi_client_with_auth
|
|
22
|
+
from paasta_tools.cli.utils import lazy_choices_completer
|
|
23
|
+
from paasta_tools.paastaapi.model.remote_run_start import RemoteRunStart
|
|
24
|
+
from paasta_tools.paastaapi.model.remote_run_stop import RemoteRunStop
|
|
25
|
+
from paasta_tools.utils import get_username
|
|
26
|
+
from paasta_tools.utils import list_clusters
|
|
27
|
+
from paasta_tools.utils import list_services
|
|
28
|
+
from paasta_tools.utils import load_system_paasta_config
|
|
29
|
+
from paasta_tools.utils import SystemPaastaConfig
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
KUBECTL_CMD_TEMPLATE = (
|
|
33
|
+
"kubectl-eks-{cluster} --token {token} exec -it -n {namespace} {pod} -- /bin/bash"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def paasta_remote_run_start(
|
|
38
|
+
args: argparse.Namespace,
|
|
39
|
+
system_paasta_config: SystemPaastaConfig,
|
|
40
|
+
) -> int:
|
|
41
|
+
client = get_paasta_oapi_client_with_auth(
|
|
42
|
+
cluster=get_paasta_oapi_api_clustername(cluster=args.cluster, is_eks=True),
|
|
43
|
+
system_paasta_config=system_paasta_config,
|
|
44
|
+
)
|
|
45
|
+
if not client:
|
|
46
|
+
print("Cannot get a paasta-api client")
|
|
47
|
+
return 1
|
|
48
|
+
|
|
49
|
+
user = get_username()
|
|
50
|
+
start_response = client.remote_run.remote_run_start(
|
|
51
|
+
args.service,
|
|
52
|
+
args.instance,
|
|
53
|
+
RemoteRunStart(
|
|
54
|
+
user=user,
|
|
55
|
+
interactive=args.interactive,
|
|
56
|
+
recreate=args.recreate,
|
|
57
|
+
max_duration=args.max_duration,
|
|
58
|
+
),
|
|
59
|
+
)
|
|
60
|
+
if start_response.status >= 300:
|
|
61
|
+
print(f"Error from PaaSTA APIs while starting job: {start_response.message}")
|
|
62
|
+
return 1
|
|
63
|
+
|
|
64
|
+
print(
|
|
65
|
+
f"Triggered remote-run job for {args.service}. Waiting for pod to come online..."
|
|
66
|
+
)
|
|
67
|
+
start_time = time.time()
|
|
68
|
+
while time.time() - start_time < args.timeout:
|
|
69
|
+
poll_response = client.remote_run.remote_run_poll(
|
|
70
|
+
args.service,
|
|
71
|
+
args.instance,
|
|
72
|
+
start_response.job_name,
|
|
73
|
+
)
|
|
74
|
+
if poll_response.status == 200:
|
|
75
|
+
print("")
|
|
76
|
+
break
|
|
77
|
+
print(f"\rStatus: {poll_response.message}", end="")
|
|
78
|
+
time.sleep(10)
|
|
79
|
+
else:
|
|
80
|
+
print("Timed out while waiting for job to start")
|
|
81
|
+
return 1
|
|
82
|
+
|
|
83
|
+
if not args.interactive:
|
|
84
|
+
print("Successfully started remote-run job")
|
|
85
|
+
return 0
|
|
86
|
+
|
|
87
|
+
print("Pod ready, establishing interactive session...")
|
|
88
|
+
|
|
89
|
+
token_response = client.remote_run.remote_run_token(
|
|
90
|
+
args.service, args.instance, user
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
exec_command = KUBECTL_CMD_TEMPLATE.format(
|
|
94
|
+
cluster=args.cluster,
|
|
95
|
+
namespace=poll_response.namespace,
|
|
96
|
+
pod=poll_response.pod_name,
|
|
97
|
+
token=token_response.token,
|
|
98
|
+
)
|
|
99
|
+
pty.spawn(shlex.split(exec_command))
|
|
100
|
+
return 0
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def paasta_remote_run_stop(
|
|
104
|
+
args: argparse.Namespace,
|
|
105
|
+
system_paasta_config: SystemPaastaConfig,
|
|
106
|
+
) -> int:
|
|
107
|
+
client = get_paasta_oapi_client_with_auth(
|
|
108
|
+
cluster=get_paasta_oapi_api_clustername(cluster=args.cluster, is_eks=True),
|
|
109
|
+
system_paasta_config=system_paasta_config,
|
|
110
|
+
)
|
|
111
|
+
if not client:
|
|
112
|
+
print("Cannot get a paasta-api client")
|
|
113
|
+
return 1
|
|
114
|
+
response = client.remote_run.remote_run_stop(
|
|
115
|
+
args.service, args.instance, RemoteRunStop(user=get_username())
|
|
116
|
+
)
|
|
117
|
+
print(response.message)
|
|
118
|
+
return 0 if response.status < 300 else 1
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def add_common_args_to_parser(parser: argparse.ArgumentParser):
|
|
122
|
+
service_arg = parser.add_argument(
|
|
123
|
+
"-s",
|
|
124
|
+
"--service",
|
|
125
|
+
help="The name of the service you wish to inspect. Required.",
|
|
126
|
+
required=True,
|
|
127
|
+
)
|
|
128
|
+
service_arg.completer = lazy_choices_completer(list_services) # type: ignore
|
|
129
|
+
parser.add_argument(
|
|
130
|
+
"-i",
|
|
131
|
+
"--instance",
|
|
132
|
+
help=(
|
|
133
|
+
"Simulate a docker run for a particular instance of the "
|
|
134
|
+
"service, like 'main' or 'canary'. Required."
|
|
135
|
+
),
|
|
136
|
+
required=True,
|
|
137
|
+
)
|
|
138
|
+
cluster_arg = parser.add_argument(
|
|
139
|
+
"-c",
|
|
140
|
+
"--cluster",
|
|
141
|
+
help="The name of the cluster you wish to run your task on. Required.",
|
|
142
|
+
required=True,
|
|
143
|
+
)
|
|
144
|
+
cluster_arg.completer = lazy_choices_completer(list_clusters) # type: ignore
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def add_subparser(subparsers: argparse._SubParsersAction) -> None:
|
|
148
|
+
remote_run_parser = subparsers.add_parser(
|
|
149
|
+
"remote-run",
|
|
150
|
+
help="Run services / jobs remotely",
|
|
151
|
+
description="'paasta remote-run' runs services / jobs remotely",
|
|
152
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
153
|
+
)
|
|
154
|
+
subparsers = remote_run_parser.add_subparsers(dest="remote_run_command")
|
|
155
|
+
start_parser = subparsers.add_parser(
|
|
156
|
+
"start",
|
|
157
|
+
help="Start or connect to a remote-run job",
|
|
158
|
+
description="Starts or connects to a remote-run-job",
|
|
159
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
160
|
+
)
|
|
161
|
+
start_parser.add_argument(
|
|
162
|
+
"-I",
|
|
163
|
+
"--interactive",
|
|
164
|
+
help=(
|
|
165
|
+
"Run container in interactive mode. If interactive is set the "
|
|
166
|
+
'default command will be "bash" unless otherwise set by the "--cmd" flag'
|
|
167
|
+
),
|
|
168
|
+
action="store_true",
|
|
169
|
+
default=False,
|
|
170
|
+
)
|
|
171
|
+
start_parser.add_argument(
|
|
172
|
+
"-m",
|
|
173
|
+
"--max-duration",
|
|
174
|
+
help=(
|
|
175
|
+
"Amount of time in seconds after which the job is "
|
|
176
|
+
"automatically stopped (capped by the API backend)"
|
|
177
|
+
),
|
|
178
|
+
type=int,
|
|
179
|
+
default=1800,
|
|
180
|
+
)
|
|
181
|
+
start_parser.add_argument(
|
|
182
|
+
"-r",
|
|
183
|
+
"--recreate",
|
|
184
|
+
help="Recreate remote-run job if already existing",
|
|
185
|
+
action="store_true",
|
|
186
|
+
default=False,
|
|
187
|
+
)
|
|
188
|
+
start_parser.add_argument(
|
|
189
|
+
"-t",
|
|
190
|
+
"--timeout",
|
|
191
|
+
help="Maximum time to wait for a job to start, in seconds",
|
|
192
|
+
type=int,
|
|
193
|
+
default=600,
|
|
194
|
+
)
|
|
195
|
+
stop_parser = subparsers.add_parser(
|
|
196
|
+
"stop",
|
|
197
|
+
help="Stop your remote-run job if it exists",
|
|
198
|
+
description="Stop your remote-run job if it exists",
|
|
199
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
200
|
+
)
|
|
201
|
+
add_common_args_to_parser(start_parser)
|
|
202
|
+
add_common_args_to_parser(stop_parser)
|
|
203
|
+
remote_run_parser.set_defaults(command=paasta_remote_run)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def paasta_remote_run(args: argparse.Namespace) -> int:
|
|
207
|
+
system_paasta_config = load_system_paasta_config()
|
|
208
|
+
if args.remote_run_command == "start":
|
|
209
|
+
return paasta_remote_run_start(args, system_paasta_config)
|
|
210
|
+
elif args.remote_run_command == "stop":
|
|
211
|
+
return paasta_remote_run_stop(args, system_paasta_config)
|
|
212
|
+
raise ValueError(f"Unsupported subcommand: {args.remote_run_command}")
|
|
@@ -43,6 +43,8 @@ from mypy_extensions import NamedArg
|
|
|
43
43
|
|
|
44
44
|
from paasta_tools import remote_git
|
|
45
45
|
from paasta_tools.adhoc_tools import load_adhoc_job_config
|
|
46
|
+
from paasta_tools.api.client import get_paasta_oapi_client
|
|
47
|
+
from paasta_tools.api.client import PaastaOApiClient
|
|
46
48
|
from paasta_tools.cassandracluster_tools import load_cassandracluster_instance_config
|
|
47
49
|
from paasta_tools.eks_tools import EksDeploymentConfig
|
|
48
50
|
from paasta_tools.eks_tools import load_eks_service_config
|
|
@@ -1135,3 +1137,16 @@ def get_sso_service_auth_token() -> str:
|
|
|
1135
1137
|
"""Generate an authentication token for the calling user from the Single Sign On provider"""
|
|
1136
1138
|
client_id = load_system_paasta_config().get_service_auth_sso_oidc_client_id()
|
|
1137
1139
|
return get_and_cache_jwt_default(client_id)
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
def get_paasta_oapi_client_with_auth(
|
|
1143
|
+
cluster: str = None,
|
|
1144
|
+
system_paasta_config: SystemPaastaConfig = None,
|
|
1145
|
+
http_res: bool = False,
|
|
1146
|
+
) -> Optional[PaastaOApiClient]:
|
|
1147
|
+
return get_paasta_oapi_client(
|
|
1148
|
+
cluster=cluster,
|
|
1149
|
+
system_paasta_config=system_paasta_config,
|
|
1150
|
+
http_res=http_res,
|
|
1151
|
+
auth_token=get_sso_service_auth_token(),
|
|
1152
|
+
)
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright 2015-2019 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
|
+
import argparse
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
from datetime import timedelta
|
|
18
|
+
from datetime import timezone
|
|
19
|
+
from typing import Any
|
|
20
|
+
from typing import Callable
|
|
21
|
+
from typing import Sequence
|
|
22
|
+
from typing import Tuple
|
|
23
|
+
|
|
24
|
+
from paasta_tools.kubernetes.remote_run import get_remote_run_role_bindings
|
|
25
|
+
from paasta_tools.kubernetes.remote_run import get_remote_run_roles
|
|
26
|
+
from paasta_tools.kubernetes.remote_run import get_remote_run_service_accounts
|
|
27
|
+
from paasta_tools.kubernetes_tools import get_all_managed_namespaces
|
|
28
|
+
from paasta_tools.kubernetes_tools import KubeClient
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
ListingFuncType = Callable[[KubeClient, str], Sequence[Any]]
|
|
32
|
+
DeletionFuncType = Callable[[str, str], Any]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def clean_namespace(kube_client: KubeClient, namespace: str, age_limit: datetime):
|
|
36
|
+
"""Clean ephemeral remote-run resource in a namespace
|
|
37
|
+
|
|
38
|
+
:param KubeClient kube_client: kubernetes client
|
|
39
|
+
:param str namepsace: kubernetes namespace
|
|
40
|
+
:param datetime age_limit: expiration time for resources
|
|
41
|
+
"""
|
|
42
|
+
cleanup_actions: Sequence[Tuple[DeletionFuncType, ListingFuncType]] = (
|
|
43
|
+
(
|
|
44
|
+
kube_client.core.delete_namespaced_service_account,
|
|
45
|
+
get_remote_run_service_accounts,
|
|
46
|
+
),
|
|
47
|
+
(kube_client.rbac.delete_namespaced_role, get_remote_run_roles),
|
|
48
|
+
(kube_client.rbac.delete_namespaced_role_binding, get_remote_run_role_bindings),
|
|
49
|
+
)
|
|
50
|
+
for delete_func, list_func in cleanup_actions:
|
|
51
|
+
for entity in list_func(kube_client, namespace):
|
|
52
|
+
if (
|
|
53
|
+
not entity.metadata.name.startswith("remote-run-")
|
|
54
|
+
or entity.metadata.creation_timestamp > age_limit
|
|
55
|
+
):
|
|
56
|
+
continue
|
|
57
|
+
delete_func(entity.metadata.name, namespace)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def parse_args() -> argparse.Namespace:
|
|
61
|
+
parser = argparse.ArgumentParser(
|
|
62
|
+
description="Clean ephemeral Kubernetes resources created by remote-run invocations",
|
|
63
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
64
|
+
)
|
|
65
|
+
parser.add_argument(
|
|
66
|
+
"--max-age",
|
|
67
|
+
type=int,
|
|
68
|
+
default=600,
|
|
69
|
+
help="Maximum age, in seconds, resources are allowed to have",
|
|
70
|
+
)
|
|
71
|
+
return parser.parse_args()
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def main():
|
|
75
|
+
args = parse_args()
|
|
76
|
+
kube_client = KubeClient()
|
|
77
|
+
age_limit = datetime.now(tz=timezone.utc) - timedelta(seconds=args.max_age)
|
|
78
|
+
for namespace in get_all_managed_namespaces(kube_client):
|
|
79
|
+
clean_namespace(kube_client, namespace, age_limit)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
if __name__ == "__main__":
|
|
83
|
+
main()
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
import hashlib
|
|
15
15
|
import logging
|
|
16
16
|
from time import sleep
|
|
17
|
+
from typing import List
|
|
17
18
|
from typing import Optional
|
|
19
|
+
from typing import Sequence
|
|
18
20
|
from typing import TypedDict
|
|
19
21
|
|
|
20
22
|
from kubernetes.client import AuthenticationV1TokenRequest
|
|
@@ -236,7 +238,7 @@ def remote_run_token(
|
|
|
236
238
|
kube_client, namespace, pod_name, user
|
|
237
239
|
)
|
|
238
240
|
role = create_pod_scoped_role(kube_client, namespace, pod_name, user)
|
|
239
|
-
bind_role_to_service_account(kube_client, namespace, service_account, role)
|
|
241
|
+
bind_role_to_service_account(kube_client, namespace, service_account, role, user)
|
|
240
242
|
return create_temp_exec_token(kube_client, namespace, service_account)
|
|
241
243
|
|
|
242
244
|
|
|
@@ -293,6 +295,23 @@ def create_temp_exec_token(
|
|
|
293
295
|
return response.status.token
|
|
294
296
|
|
|
295
297
|
|
|
298
|
+
def get_remote_run_service_accounts(
|
|
299
|
+
kube_client: KubeClient, namespace: str, user: str = ""
|
|
300
|
+
) -> Sequence[V1ServiceAccount]:
|
|
301
|
+
"""List all temporary service account related to remote-run
|
|
302
|
+
|
|
303
|
+
:param KubeClient kube_client: Kubernetes client
|
|
304
|
+
:param str namespace: pod namespace
|
|
305
|
+
:param str user: optionally filter by owning user
|
|
306
|
+
:return: list of service accounts
|
|
307
|
+
"""
|
|
308
|
+
return get_all_service_accounts(
|
|
309
|
+
kube_client,
|
|
310
|
+
namespace=namespace,
|
|
311
|
+
label_selector=(f"{POD_OWNER_LABEL}={user}" if user else POD_OWNER_LABEL),
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
|
|
296
315
|
def create_remote_run_service_account(
|
|
297
316
|
kube_client: KubeClient,
|
|
298
317
|
namespace: str,
|
|
@@ -308,11 +327,7 @@ def create_remote_run_service_account(
|
|
|
308
327
|
"""
|
|
309
328
|
pod_name_hash = hashlib.sha1(pod_name.encode("utf-8")).hexdigest()[:12]
|
|
310
329
|
service_account_name = limit_size_with_hash(f"remote-run-{user}-{pod_name_hash}")
|
|
311
|
-
service_accounts =
|
|
312
|
-
kube_client,
|
|
313
|
-
namespace=namespace,
|
|
314
|
-
label_selector=f"{POD_OWNER_LABEL}={user}",
|
|
315
|
-
)
|
|
330
|
+
service_accounts = get_remote_run_service_accounts(kube_client, namespace, user)
|
|
316
331
|
if any(item.metadata.name == service_account_name for item in service_accounts):
|
|
317
332
|
return service_account_name
|
|
318
333
|
service_account = V1ServiceAccount(
|
|
@@ -366,6 +381,7 @@ def bind_role_to_service_account(
|
|
|
366
381
|
namespace: str,
|
|
367
382
|
service_account: str,
|
|
368
383
|
role: str,
|
|
384
|
+
user: str,
|
|
369
385
|
) -> None:
|
|
370
386
|
"""Bind service account to role
|
|
371
387
|
|
|
@@ -373,11 +389,13 @@ def bind_role_to_service_account(
|
|
|
373
389
|
:param str namespace: service account namespace
|
|
374
390
|
:param str service_account: service account name
|
|
375
391
|
:param str role: role name
|
|
392
|
+
:param str user: user requiring the role
|
|
376
393
|
"""
|
|
377
394
|
role_binding = V1RoleBinding(
|
|
378
395
|
metadata=V1ObjectMeta(
|
|
379
|
-
name=limit_size_with_hash(f"binding-{role}"),
|
|
396
|
+
name=limit_size_with_hash(f"remote-run-binding-{role}"),
|
|
380
397
|
namespace=namespace,
|
|
398
|
+
labels={POD_OWNER_LABEL: user},
|
|
381
399
|
),
|
|
382
400
|
role_ref=V1RoleRef(
|
|
383
401
|
api_group="rbac.authorization.k8s.io",
|
|
@@ -395,3 +413,29 @@ def bind_role_to_service_account(
|
|
|
395
413
|
namespace=namespace,
|
|
396
414
|
body=role_binding,
|
|
397
415
|
)
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def get_remote_run_roles(kube_client: KubeClient, namespace: str) -> List[V1Role]:
|
|
419
|
+
"""List all temporary roles related to remote-run
|
|
420
|
+
|
|
421
|
+
:param KubeClient kube_client: Kubernetes client
|
|
422
|
+
:param str namespace: pod namespace
|
|
423
|
+
:return: list of roles
|
|
424
|
+
"""
|
|
425
|
+
return kube_client.rbac.list_namespaced_role(
|
|
426
|
+
namespace, label_selector=POD_OWNER_LABEL
|
|
427
|
+
).items
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
def get_remote_run_role_bindings(
|
|
431
|
+
kube_client: KubeClient, namespace: str
|
|
432
|
+
) -> List[V1RoleBinding]:
|
|
433
|
+
"""List all temporary role bindings related to remote-run
|
|
434
|
+
|
|
435
|
+
:param KubeClient kube_client: Kubernetes client
|
|
436
|
+
:param str namespace: pod namespace
|
|
437
|
+
:return: list of roles
|
|
438
|
+
"""
|
|
439
|
+
return kube_client.rbac.list_namespaced_role_binding(
|
|
440
|
+
namespace, label_selector=POD_OWNER_LABEL
|
|
441
|
+
).items
|
|
@@ -1436,6 +1436,7 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1436
1436
|
aws_ebs_volumes: Sequence[AwsEbsVolume],
|
|
1437
1437
|
secret_volumes: Sequence[SecretVolume],
|
|
1438
1438
|
service_namespace_config: ServiceNamespaceConfig,
|
|
1439
|
+
include_sidecars: bool = True,
|
|
1439
1440
|
) -> Sequence[V1Container]:
|
|
1440
1441
|
ports = [self.get_container_port()]
|
|
1441
1442
|
# MONK-1130
|
|
@@ -1471,11 +1472,13 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
1471
1472
|
projected_sa_volumes=self.get_projected_sa_volumes(),
|
|
1472
1473
|
),
|
|
1473
1474
|
)
|
|
1474
|
-
containers = [service_container]
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1475
|
+
containers = [service_container]
|
|
1476
|
+
if include_sidecars:
|
|
1477
|
+
containers += self.get_sidecar_containers( # type: ignore
|
|
1478
|
+
system_paasta_config=system_paasta_config,
|
|
1479
|
+
service_namespace_config=service_namespace_config,
|
|
1480
|
+
hacheck_sidecar_volumes=hacheck_sidecar_volumes,
|
|
1481
|
+
)
|
|
1479
1482
|
return containers
|
|
1480
1483
|
|
|
1481
1484
|
def get_readiness_probe(
|
|
@@ -2052,11 +2055,15 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2052
2055
|
self,
|
|
2053
2056
|
job_label: str,
|
|
2054
2057
|
deadline_seconds: int = 3600,
|
|
2058
|
+
keep_routable_ip: bool = False,
|
|
2059
|
+
include_sidecars: bool = False,
|
|
2055
2060
|
) -> V1Job:
|
|
2056
2061
|
"""Create the config for launching the deployment as a Job
|
|
2057
2062
|
|
|
2058
2063
|
:param str job_label: value to set for the "job type" label
|
|
2059
2064
|
:param int deadline_seconds: maximum allowed duration for the job
|
|
2065
|
+
:param bool keep_routable_ip: maintain routable IP annotation in pod template
|
|
2066
|
+
:param bool include_sidecars: do not discard sidecar containers when building pod spec
|
|
2060
2067
|
:return: job object
|
|
2061
2068
|
"""
|
|
2062
2069
|
try:
|
|
@@ -2073,6 +2080,8 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2073
2080
|
git_sha=git_sha,
|
|
2074
2081
|
system_paasta_config=system_paasta_config,
|
|
2075
2082
|
restart_on_failure=False,
|
|
2083
|
+
include_sidecars=include_sidecars,
|
|
2084
|
+
force_no_routable_ip=not keep_routable_ip,
|
|
2076
2085
|
),
|
|
2077
2086
|
),
|
|
2078
2087
|
)
|
|
@@ -2205,6 +2214,8 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2205
2214
|
git_sha: str,
|
|
2206
2215
|
system_paasta_config: SystemPaastaConfig,
|
|
2207
2216
|
restart_on_failure: bool = True,
|
|
2217
|
+
include_sidecars: bool = True,
|
|
2218
|
+
force_no_routable_ip: bool = False,
|
|
2208
2219
|
) -> V1PodTemplateSpec:
|
|
2209
2220
|
service_namespace_config = load_service_namespace_config(
|
|
2210
2221
|
service=self.service, namespace=self.get_nerve_namespace()
|
|
@@ -2214,8 +2225,10 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2214
2225
|
)
|
|
2215
2226
|
|
|
2216
2227
|
hacheck_sidecar_volumes = system_paasta_config.get_hacheck_sidecar_volumes()
|
|
2217
|
-
has_routable_ip =
|
|
2218
|
-
|
|
2228
|
+
has_routable_ip = (
|
|
2229
|
+
"false"
|
|
2230
|
+
if force_no_routable_ip
|
|
2231
|
+
else self.has_routable_ip(service_namespace_config, system_paasta_config)
|
|
2219
2232
|
)
|
|
2220
2233
|
annotations: KubePodAnnotations = {
|
|
2221
2234
|
"smartstack_registrations": json.dumps(self.get_registrations()),
|
|
@@ -2239,6 +2252,7 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2239
2252
|
secret_volumes=self.get_secret_volumes(),
|
|
2240
2253
|
system_paasta_config=system_paasta_config,
|
|
2241
2254
|
service_namespace_config=service_namespace_config,
|
|
2255
|
+
include_sidecars=include_sidecars,
|
|
2242
2256
|
),
|
|
2243
2257
|
share_process_namespace=True,
|
|
2244
2258
|
node_selector=self.get_node_selector(),
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
9
9
|
|
|
10
|
-
The version of the OpenAPI document: 1.1.
|
|
10
|
+
The version of the OpenAPI document: 1.1.1
|
|
11
11
|
Generated by: https://openapi-generator.tech
|
|
12
12
|
"""
|
|
13
13
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
6
6
|
|
|
7
|
-
The version of the OpenAPI document: 1.1.
|
|
7
|
+
The version of the OpenAPI document: 1.1.1
|
|
8
8
|
Generated by: https://openapi-generator.tech
|
|
9
9
|
"""
|
|
10
10
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|
|
@@ -370,7 +370,7 @@ class Configuration(object):
|
|
|
370
370
|
return "Python SDK Debug Report:\n"\
|
|
371
371
|
"OS: {env}\n"\
|
|
372
372
|
"Python Version: {pyversion}\n"\
|
|
373
|
-
"Version of the API: 1.1.
|
|
373
|
+
"Version of the API: 1.1.1\n"\
|
|
374
374
|
"SDK Package Version: 1.0.0".\
|
|
375
375
|
format(env=sys.platform, pyversion=sys.version)
|
|
376
376
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
7
|
|
|
8
|
-
The version of the OpenAPI document: 1.1.
|
|
8
|
+
The version of the OpenAPI document: 1.1.1
|
|
9
9
|
Generated by: https://openapi-generator.tech
|
|
10
10
|
"""
|
|
11
11
|
|