paasta-tools 1.1.2__tar.gz → 1.4.0__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.1.2/paasta_tools.egg-info → paasta-tools-1.4.0}/PKG-INFO +1 -1
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/__init__.py +1 -1
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/logs.py +133 -17
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_authenticating_services.py +3 -1
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes_tools.py +40 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron_tools.py +13 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/utils.py +34 -4
- {paasta-tools-1.1.2 → paasta-tools-1.4.0/paasta_tools.egg-info}/PKG-INFO +1 -1
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/requires.txt +1 -1
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/requirements-minimal.txt +1 -3
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/MANIFEST.in +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/README.md +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/test_autoscaling.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/k8s_itests/utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/adhoc_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/api_docs/swagger.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/client.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/settings.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/profiling.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/tweens/request_logger.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/autoscaler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/exception.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/flink.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/instance.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/pause_autoscaler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/resources.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/service.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/api/views/version.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/apply_external_resources.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/async_utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/autoscaling_service_lib.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/forecasting.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/max_all_k8s_services.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/bounce_lib.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/broadcast_log_to_services.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cassandracluster_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_autoscaler_max_instances.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_cassandracluster_services_replication.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_flink_services_health.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_kubernetes_api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_kubernetes_services_replication.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_oom_events.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_services_replication_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_spark_jobs.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_cr.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_crd.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_kubernetes_jobs.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cleanup_tron_namespaces.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cli.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/autoscale.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/check.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/cook_image.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_docker_image.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_image_version.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/get_latest_deployment.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/info.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/itest.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list_clusters.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/list_deploy_queue.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/local_run.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/mark_for_deployment.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/mesh_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/pause_service_autoscaler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/push_to_registry.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/remote_run.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/rollback.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/secret.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/security_check.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/spark_run.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/start_stop_restart.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/validate.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/cmds/wait_for_deployment.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/autosuggest.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/README.md +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/cookiecutter.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/kubernetes-PROD.yaml +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/monitoring.yaml +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/service.yaml +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm/template/{{cookiecutter.service}}/smartstack.yaml +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/fsm_cmd.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/paasta_tabcomplete.sh +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/adhoc_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autoscaling_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autotuned_defaults/cassandracluster_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/autotuned_defaults/kubernetes_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/deploy_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/eks_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/kubernetes_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/rollback_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/service_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/smartstack_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/schemas/tron_schema.json +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/cli/utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/clusterman.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/config_utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/bounce_log_latency_parser.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/check_manual_oapi_changes.sh +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/check_orphans.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/create_dynamodb_table.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/create_paasta_playground.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/emit_allocated_cpu_metrics.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/get_running_task_allocation.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/habitat_fixer.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/ide_helper.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/is_pod_healthy_in_proxy.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/is_pod_healthy_in_smartstack.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/kill_bad_containers.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/mass-deploy-tag.sh +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/mock_patch_checker.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/paasta_update_soa_memcpu.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/render_template.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/rightsizer_soaconfigs_update.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/service_shard_remove.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/service_shard_update.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/shared_ip_check.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/contrib/timeouts_metrics_prom.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/delete_kubernetes_deployments.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/deployment_utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/docker_wrapper.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/docker_wrapper_imports.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/drain_lib.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/dump_locally_running_services.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/eks_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/envoy_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall_logging.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/firewall_update.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/flink_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/flinkeks_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/adhoc_scheduler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/constraints.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/native_scheduler.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/native_service_config.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/frameworks/task_store.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_all_deployments +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_deployments_for_service.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_services_file.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/generate_services_yaml.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/hacheck.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/hpa_metrics_parser.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/instance/kubernetes.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/iptables.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kafkacluster_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/controller_wrappers.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/application/tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/kubernetes_remove_evicted_pods.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/paasta_cleanup_stale_nodes.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/kubernetes/bin/paasta_secrets_sync.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/list_kubernetes_service_instances.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/list_tron_namespaces.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/log_task_lifecycle_events.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/long_running_service_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mac_address.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/marathon_dashboard.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/cfg.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/cluster.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/exceptions.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/framework.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/log.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/master.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/mesos_file.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/parallel.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/slave.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/task.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/util.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos/zookeeper.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos_maintenance.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/mesos_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/metastatus_lib.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/metrics/metrics_lib.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/check_k8s_api_performance.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring/kill_orphaned_docker_containers.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monitoring_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/monkrelaycluster_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/nrtsearchservice_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/nrtsearchserviceeks_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/oom_logger.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_deploy_tron_jobs +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_execute_docker_command.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_native_serviceinit.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_remote_run.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paasta_service_config_loader.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/autoscaler_api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/default_api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/resources_api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api/service_api.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/api_client.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/apis/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/configuration.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/exceptions.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/adhoc_launch_history.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/autoscaler_count_msg.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/deploy_queue.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/deploy_queue_service_instance.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_backend.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_location.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/envoy_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_cluster_overview.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_config.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_job.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_job_details.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/flink_jobs.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/float_and_error.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/hpa_metric.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_object.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_response200.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/inline_response2001.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_bounce_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_mesh_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_adhoc.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_cassandracluster.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_flink.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kafkacluster.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_autoscaling_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_kubernetes_v2.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_status_tron.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/instance_tasks.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/integer_and_error.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_container.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_container_v2.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_healthcheck.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod_event.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_pod_v2.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_replica_set.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/kubernetes_version.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource_item.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/resource_value.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_backend.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_location.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/smartstack_status.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model/task_tail_lines.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/model_utils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/models/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/paastaapi/rest.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/prune_completed_pods.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/puppet_service_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/py.typed +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/remote_git.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/run-paasta-api-in-dev-mode.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/run-paasta-api-playground.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_providers/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_providers/vault.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/secret_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_istio_mesh.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_cr.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_crd.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_internal_crd.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_kubernetes_job.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_prometheus_adapter_config.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/setup_tron_namespace.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/slack.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/smartstack_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/spark_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/synapse_srv_namespaces_fact.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/__init__.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/client.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/tron_command_context.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/tron/tron_timeutils.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/vitesscluster_tools.py +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/SOURCES.txt +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/dependency_links.txt +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/entry_points.txt +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools.egg-info/top_level.txt +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/pyproject.toml +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/setup.cfg +0 -0
- {paasta-tools-1.1.2 → paasta-tools-1.4.0}/setup.py +0 -0
|
@@ -33,10 +33,12 @@ from typing import Iterable
|
|
|
33
33
|
from typing import List
|
|
34
34
|
from typing import Mapping
|
|
35
35
|
from typing import MutableSequence
|
|
36
|
+
from typing import Optional
|
|
36
37
|
from typing import Sequence
|
|
37
38
|
from typing import Set
|
|
38
39
|
from typing import Tuple
|
|
39
40
|
from typing import Type
|
|
41
|
+
from typing import Union
|
|
40
42
|
|
|
41
43
|
import isodate
|
|
42
44
|
import pytz
|
|
@@ -48,6 +50,11 @@ try:
|
|
|
48
50
|
except ImportError:
|
|
49
51
|
scribereader = None
|
|
50
52
|
|
|
53
|
+
try:
|
|
54
|
+
from clog.readers import S3LogsReader
|
|
55
|
+
except ImportError:
|
|
56
|
+
S3LogsReader = None
|
|
57
|
+
|
|
51
58
|
from pytimeparse.timeparse import timeparse
|
|
52
59
|
|
|
53
60
|
from paasta_tools.cli.utils import figure_out_service_name
|
|
@@ -289,7 +296,7 @@ def paasta_log_line_passes_filter(
|
|
|
289
296
|
if not check_timestamp_in_range(timestamp, start_time, end_time):
|
|
290
297
|
return False
|
|
291
298
|
return (
|
|
292
|
-
parsed_line.get("level") in levels
|
|
299
|
+
(parsed_line.get("level") is None or parsed_line.get("level") in levels)
|
|
293
300
|
and parsed_line.get("component") in components
|
|
294
301
|
and (
|
|
295
302
|
parsed_line.get("cluster") in clusters
|
|
@@ -459,7 +466,9 @@ def register_log_reader(name):
|
|
|
459
466
|
return outer
|
|
460
467
|
|
|
461
468
|
|
|
462
|
-
def get_log_reader_class(
|
|
469
|
+
def get_log_reader_class(
|
|
470
|
+
name: str,
|
|
471
|
+
) -> Union[Type["ScribeLogReader"], Type["VectorLogsReader"]]:
|
|
463
472
|
return _log_reader_classes[name]
|
|
464
473
|
|
|
465
474
|
|
|
@@ -467,12 +476,44 @@ def list_log_readers() -> Iterable[str]:
|
|
|
467
476
|
return _log_reader_classes.keys()
|
|
468
477
|
|
|
469
478
|
|
|
470
|
-
def
|
|
479
|
+
def get_default_log_reader() -> "LogReader":
|
|
471
480
|
log_reader_config = load_system_paasta_config().get_log_reader()
|
|
472
481
|
log_reader_class = get_log_reader_class(log_reader_config["driver"])
|
|
473
482
|
return log_reader_class(**log_reader_config.get("options", {}))
|
|
474
483
|
|
|
475
484
|
|
|
485
|
+
def get_log_reader(components: Set[str]) -> "LogReader":
|
|
486
|
+
log_readers_config = load_system_paasta_config().get_log_readers()
|
|
487
|
+
# ideally we should use a single "driver" for all components, but in cases where more than one is used for different components,
|
|
488
|
+
# we should use the first one that supports all requested components
|
|
489
|
+
# otherwise signal an error and suggest to provide a different list of components
|
|
490
|
+
components_lists = []
|
|
491
|
+
for log_reader_config in log_readers_config:
|
|
492
|
+
supported_components = log_reader_config.get("components", [])
|
|
493
|
+
components_lists.append(supported_components)
|
|
494
|
+
if components.issubset(supported_components):
|
|
495
|
+
log_reader_class = get_log_reader_class(log_reader_config["driver"])
|
|
496
|
+
print(
|
|
497
|
+
PaastaColors.cyan(
|
|
498
|
+
"Using '{}' driver to fetch logs...".format(
|
|
499
|
+
log_reader_config["driver"]
|
|
500
|
+
)
|
|
501
|
+
),
|
|
502
|
+
file=sys.stderr,
|
|
503
|
+
)
|
|
504
|
+
return log_reader_class(**log_reader_config.get("options", {}))
|
|
505
|
+
print(
|
|
506
|
+
PaastaColors.cyan(
|
|
507
|
+
"Supplied list of components '{}' is not supported by any log reader. Supported components are:\n\t{}".format(
|
|
508
|
+
", ".join(components),
|
|
509
|
+
"\n\tor ".join([",".join(comp_list) for comp_list in components_lists]),
|
|
510
|
+
)
|
|
511
|
+
),
|
|
512
|
+
file=sys.stderr,
|
|
513
|
+
)
|
|
514
|
+
sys.exit(1)
|
|
515
|
+
|
|
516
|
+
|
|
476
517
|
class LogReader:
|
|
477
518
|
# Tailing, i.e actively viewing logs as they come in
|
|
478
519
|
SUPPORTS_TAILING = False
|
|
@@ -1123,7 +1164,76 @@ class ScribeLogReader(LogReader):
|
|
|
1123
1164
|
return env
|
|
1124
1165
|
|
|
1125
1166
|
|
|
1126
|
-
|
|
1167
|
+
@register_log_reader("vector-logs")
|
|
1168
|
+
class VectorLogsReader(LogReader):
|
|
1169
|
+
SUPPORTS_TIME = True
|
|
1170
|
+
|
|
1171
|
+
def __init__(self, cluster_map: Mapping[str, Any]) -> None:
|
|
1172
|
+
super().__init__()
|
|
1173
|
+
|
|
1174
|
+
if S3LogsReader is None:
|
|
1175
|
+
raise Exception("yelp_clog package must be available to use S3LogsReader")
|
|
1176
|
+
|
|
1177
|
+
self.cluster_map = cluster_map
|
|
1178
|
+
|
|
1179
|
+
def get_superregion_for_cluster(self, cluster: str) -> Optional[str]:
|
|
1180
|
+
return self.cluster_map.get(cluster, None)
|
|
1181
|
+
|
|
1182
|
+
def print_logs_by_time(
|
|
1183
|
+
self,
|
|
1184
|
+
service,
|
|
1185
|
+
start_time: datetime.datetime,
|
|
1186
|
+
end_time: datetime.datetime,
|
|
1187
|
+
levels,
|
|
1188
|
+
components: Iterable[str],
|
|
1189
|
+
clusters,
|
|
1190
|
+
instances,
|
|
1191
|
+
pods,
|
|
1192
|
+
raw_mode,
|
|
1193
|
+
strip_headers,
|
|
1194
|
+
) -> None:
|
|
1195
|
+
stream_name = get_log_name_for_service(service, prefix="app_output")
|
|
1196
|
+
superregion = self.get_superregion_for_cluster(clusters[0])
|
|
1197
|
+
reader = S3LogsReader(superregion)
|
|
1198
|
+
start_date = start_time.date()
|
|
1199
|
+
end_date = end_time.date()
|
|
1200
|
+
aggregated_logs: List[Dict[str, Any]] = []
|
|
1201
|
+
|
|
1202
|
+
for line in reader.get_log_reader(
|
|
1203
|
+
log_name=stream_name, min_date=start_date, max_date=end_date
|
|
1204
|
+
):
|
|
1205
|
+
if paasta_log_line_passes_filter(
|
|
1206
|
+
line,
|
|
1207
|
+
levels,
|
|
1208
|
+
service,
|
|
1209
|
+
components,
|
|
1210
|
+
clusters,
|
|
1211
|
+
instances,
|
|
1212
|
+
pods,
|
|
1213
|
+
start_time=start_time,
|
|
1214
|
+
end_time=end_time,
|
|
1215
|
+
):
|
|
1216
|
+
try:
|
|
1217
|
+
parsed_line = json.loads(line)
|
|
1218
|
+
timestamp = isodate.parse_datetime(parsed_line.get("timestamp"))
|
|
1219
|
+
if not timestamp.tzinfo:
|
|
1220
|
+
timestamp = pytz.utc.localize(timestamp)
|
|
1221
|
+
except ValueError:
|
|
1222
|
+
timestamp = pytz.utc.localize(datetime.datetime.min)
|
|
1223
|
+
|
|
1224
|
+
line = {"raw_line": line, "sort_key": timestamp}
|
|
1225
|
+
aggregated_logs.append(line)
|
|
1226
|
+
|
|
1227
|
+
aggregated_logs = list(
|
|
1228
|
+
{line["raw_line"]: line for line in aggregated_logs}.values()
|
|
1229
|
+
)
|
|
1230
|
+
aggregated_logs.sort(key=lambda log_line: log_line["sort_key"])
|
|
1231
|
+
|
|
1232
|
+
for line in aggregated_logs:
|
|
1233
|
+
print_log(line["raw_line"], levels, raw_mode, strip_headers)
|
|
1234
|
+
|
|
1235
|
+
|
|
1236
|
+
def scribe_env_to_locations(scribe_env) -> Mapping[str, Any]:
|
|
1127
1237
|
"""Converts a scribe environment to a dictionary of locations. The
|
|
1128
1238
|
return value is meant to be used as kwargs for `scribereader.get_tail_host_and_port`.
|
|
1129
1239
|
"""
|
|
@@ -1188,9 +1298,7 @@ def generate_start_end_time(
|
|
|
1188
1298
|
return start_time, end_time
|
|
1189
1299
|
|
|
1190
1300
|
|
|
1191
|
-
def validate_filtering_args(
|
|
1192
|
-
args: argparse.Namespace, log_reader: ScribeLogReader
|
|
1193
|
-
) -> bool:
|
|
1301
|
+
def validate_filtering_args(args: argparse.Namespace, log_reader: LogReader) -> bool:
|
|
1194
1302
|
if not log_reader.SUPPORTS_LINE_OFFSET and args.line_offset is not None:
|
|
1195
1303
|
print(
|
|
1196
1304
|
PaastaColors.red(
|
|
@@ -1254,7 +1362,7 @@ def validate_filtering_args(
|
|
|
1254
1362
|
|
|
1255
1363
|
def pick_default_log_mode(
|
|
1256
1364
|
args: argparse.Namespace,
|
|
1257
|
-
log_reader:
|
|
1365
|
+
log_reader: LogReader,
|
|
1258
1366
|
service: str,
|
|
1259
1367
|
levels: Sequence[str],
|
|
1260
1368
|
components: Iterable[str],
|
|
@@ -1320,6 +1428,14 @@ def pick_default_log_mode(
|
|
|
1320
1428
|
return 1
|
|
1321
1429
|
|
|
1322
1430
|
|
|
1431
|
+
def pick_log_reader(cluster: str, components: Set[str]) -> LogReader:
|
|
1432
|
+
uses_log_readers = load_system_paasta_config().use_multiple_log_readers()
|
|
1433
|
+
if uses_log_readers and cluster in uses_log_readers:
|
|
1434
|
+
return get_log_reader(components)
|
|
1435
|
+
else:
|
|
1436
|
+
return get_default_log_reader()
|
|
1437
|
+
|
|
1438
|
+
|
|
1323
1439
|
def paasta_logs(args: argparse.Namespace) -> int:
|
|
1324
1440
|
"""Print the logs for as Paasta service.
|
|
1325
1441
|
:param args: argparse.Namespace obj created from sys.args by cli"""
|
|
@@ -1327,7 +1443,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1327
1443
|
|
|
1328
1444
|
service = figure_out_service_name(args, soa_dir)
|
|
1329
1445
|
|
|
1330
|
-
|
|
1446
|
+
clusters = args.cluster
|
|
1331
1447
|
if (
|
|
1332
1448
|
args.cluster is None
|
|
1333
1449
|
or args.instance is None
|
|
@@ -1339,7 +1455,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1339
1455
|
)
|
|
1340
1456
|
return 1
|
|
1341
1457
|
|
|
1342
|
-
if verify_instances(args.instance, service,
|
|
1458
|
+
if verify_instances(args.instance, service, clusters, soa_dir):
|
|
1343
1459
|
return 1
|
|
1344
1460
|
|
|
1345
1461
|
instance = args.instance
|
|
@@ -1362,16 +1478,16 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1362
1478
|
|
|
1363
1479
|
levels = [DEFAULT_LOGLEVEL, "debug"]
|
|
1364
1480
|
|
|
1365
|
-
log.debug(f"Going to get logs for {service} on cluster {
|
|
1481
|
+
log.debug(f"Going to get logs for {service} on cluster {clusters}")
|
|
1366
1482
|
|
|
1367
|
-
log_reader =
|
|
1483
|
+
log_reader = pick_log_reader(clusters[0], components)
|
|
1368
1484
|
|
|
1369
1485
|
if not validate_filtering_args(args, log_reader):
|
|
1370
1486
|
return 1
|
|
1371
1487
|
# They haven't specified what kind of filtering they want, decide for them
|
|
1372
1488
|
if args.line_count is None and args.time_from is None and not args.tail:
|
|
1373
1489
|
return pick_default_log_mode(
|
|
1374
|
-
args, log_reader, service, levels, components,
|
|
1490
|
+
args, log_reader, service, levels, components, clusters, instance, pods
|
|
1375
1491
|
)
|
|
1376
1492
|
if args.tail:
|
|
1377
1493
|
print(
|
|
@@ -1381,7 +1497,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1381
1497
|
service=service,
|
|
1382
1498
|
levels=levels,
|
|
1383
1499
|
components=components,
|
|
1384
|
-
clusters=
|
|
1500
|
+
clusters=clusters,
|
|
1385
1501
|
instances=[instance],
|
|
1386
1502
|
pods=pods,
|
|
1387
1503
|
raw_mode=args.raw_mode,
|
|
@@ -1402,7 +1518,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1402
1518
|
line_count=args.line_count,
|
|
1403
1519
|
levels=levels,
|
|
1404
1520
|
components=components,
|
|
1405
|
-
clusters=
|
|
1521
|
+
clusters=clusters,
|
|
1406
1522
|
instances=[instance],
|
|
1407
1523
|
pods=pods,
|
|
1408
1524
|
raw_mode=args.raw_mode,
|
|
@@ -1416,7 +1532,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1416
1532
|
line_offset=args.line_offset,
|
|
1417
1533
|
levels=levels,
|
|
1418
1534
|
components=components,
|
|
1419
|
-
clusters=
|
|
1535
|
+
clusters=clusters,
|
|
1420
1536
|
instances=[instance],
|
|
1421
1537
|
pods=pods,
|
|
1422
1538
|
raw_mode=args.raw_mode,
|
|
@@ -1437,7 +1553,7 @@ def paasta_logs(args: argparse.Namespace) -> int:
|
|
|
1437
1553
|
end_time=end_time,
|
|
1438
1554
|
levels=levels,
|
|
1439
1555
|
components=components,
|
|
1440
|
-
clusters=
|
|
1556
|
+
clusters=clusters,
|
|
1441
1557
|
instances=[instance],
|
|
1442
1558
|
pods=pods,
|
|
1443
1559
|
raw_mode=args.raw_mode,
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
"""
|
|
16
|
-
A simple script to enumerate all services
|
|
16
|
+
A simple script to enumerate all services participating in authenticated
|
|
17
17
|
communications, and list them in a YAML/JSON file.
|
|
18
18
|
"""
|
|
19
19
|
import argparse
|
|
@@ -27,6 +27,7 @@ from typing import Set
|
|
|
27
27
|
import yaml
|
|
28
28
|
|
|
29
29
|
from paasta_tools.utils import DEFAULT_SOA_DIR
|
|
30
|
+
from paasta_tools.utils import load_system_paasta_config
|
|
30
31
|
from paasta_tools.utils import write_json_configuration_file
|
|
31
32
|
from paasta_tools.utils import write_yaml_configuration_file
|
|
32
33
|
|
|
@@ -53,6 +54,7 @@ def enumerate_authenticating_services() -> Dict[str, List[str]]:
|
|
|
53
54
|
config_path_pattern = os.path.join(DEFAULT_SOA_DIR, "*", AUTHORIZATION_CONFIG_FILE)
|
|
54
55
|
for authz_config in glob.glob(config_path_pattern):
|
|
55
56
|
result.update(list_services_in_authz_config(authz_config))
|
|
57
|
+
result.update(load_system_paasta_config().get_always_authenticating_services())
|
|
56
58
|
return {"services": sorted(result)}
|
|
57
59
|
|
|
58
60
|
|
|
@@ -21,6 +21,7 @@ import os
|
|
|
21
21
|
import re
|
|
22
22
|
from datetime import datetime
|
|
23
23
|
from enum import Enum
|
|
24
|
+
from functools import lru_cache
|
|
24
25
|
from inspect import currentframe
|
|
25
26
|
from pathlib import Path
|
|
26
27
|
from typing import Any
|
|
@@ -2552,6 +2553,13 @@ class KubernetesDeploymentConfig(LongRunningServiceConfig):
|
|
|
2552
2553
|
"topology_spread_constraints", default_pod_topology_spread_constraints
|
|
2553
2554
|
)
|
|
2554
2555
|
|
|
2556
|
+
def get_projected_sa_volumes(self) -> List[ProjectedSAVolume]:
|
|
2557
|
+
return add_volumes_for_authenticating_services(
|
|
2558
|
+
service_name=self.service,
|
|
2559
|
+
config_volumes=super().get_projected_sa_volumes(),
|
|
2560
|
+
soa_dir=self.soa_dir,
|
|
2561
|
+
)
|
|
2562
|
+
|
|
2555
2563
|
|
|
2556
2564
|
def get_kubernetes_secret_hashes(
|
|
2557
2565
|
environment_variables: Mapping[str, str], service: str, namespace: str
|
|
@@ -4406,3 +4414,35 @@ def get_kubernetes_secret_volumes(
|
|
|
4406
4414
|
] = secret_contents
|
|
4407
4415
|
|
|
4408
4416
|
return secret_volumes
|
|
4417
|
+
|
|
4418
|
+
|
|
4419
|
+
@lru_cache()
|
|
4420
|
+
def get_authenticating_services(soa_dir: str = DEFAULT_SOA_DIR) -> Set[str]:
|
|
4421
|
+
"""Load list of services participating in authenticated traffic"""
|
|
4422
|
+
authenticating_services_conf_path = os.path.join(soa_dir, "authenticating.yaml")
|
|
4423
|
+
config = service_configuration_lib.read_yaml_file(authenticating_services_conf_path)
|
|
4424
|
+
return set(config.get("services", []))
|
|
4425
|
+
|
|
4426
|
+
|
|
4427
|
+
def add_volumes_for_authenticating_services(
|
|
4428
|
+
service_name: str,
|
|
4429
|
+
config_volumes: List[ProjectedSAVolume],
|
|
4430
|
+
soa_dir: str = DEFAULT_SOA_DIR,
|
|
4431
|
+
) -> List[ProjectedSAVolume]:
|
|
4432
|
+
"""Add projected service account volume to the list of volumes if service
|
|
4433
|
+
participates in authenticated traffic. In case of changes, a new list is returned,
|
|
4434
|
+
no updates in-place.
|
|
4435
|
+
|
|
4436
|
+
:param str service_name: name of the service
|
|
4437
|
+
:param List[ProjectedSAVolume] config_volumes: existing projected volumes from service config
|
|
4438
|
+
:param str soa_dir: path to SOA configurations directory
|
|
4439
|
+
:return: updated list of projected service account volumes
|
|
4440
|
+
"""
|
|
4441
|
+
token_config = load_system_paasta_config().get_service_auth_token_volume_config()
|
|
4442
|
+
if (
|
|
4443
|
+
token_config
|
|
4444
|
+
and service_name in get_authenticating_services(soa_dir)
|
|
4445
|
+
and not any(volume == token_config for volume in config_volumes)
|
|
4446
|
+
):
|
|
4447
|
+
config_volumes = [token_config, *config_volumes]
|
|
4448
|
+
return config_volumes
|
|
@@ -56,6 +56,7 @@ from paasta_tools.utils import get_k8s_url_for_cluster
|
|
|
56
56
|
from paasta_tools.utils import validate_pool
|
|
57
57
|
from paasta_tools.utils import PoolsNotConfiguredError
|
|
58
58
|
from paasta_tools.utils import DockerVolume
|
|
59
|
+
from paasta_tools.utils import ProjectedSAVolume
|
|
59
60
|
|
|
60
61
|
from paasta_tools import spark_tools
|
|
61
62
|
|
|
@@ -71,6 +72,7 @@ from paasta_tools.secret_tools import is_shared_secret
|
|
|
71
72
|
from paasta_tools.secret_tools import is_shared_secret_from_secret_name
|
|
72
73
|
from paasta_tools.secret_tools import get_secret_name_from_ref
|
|
73
74
|
from paasta_tools.kubernetes_tools import get_paasta_secret_name
|
|
75
|
+
from paasta_tools.kubernetes_tools import add_volumes_for_authenticating_services
|
|
74
76
|
from paasta_tools.secret_tools import SHARED_SECRET_SERVICE
|
|
75
77
|
|
|
76
78
|
from paasta_tools import monitoring_tools
|
|
@@ -627,6 +629,14 @@ class TronActionConfig(InstanceConfig):
|
|
|
627
629
|
def get_service_account_name(self) -> Optional[str]:
|
|
628
630
|
return self.config_dict.get("service_account_name")
|
|
629
631
|
|
|
632
|
+
def get_projected_sa_volumes(self) -> Optional[List[ProjectedSAVolume]]:
|
|
633
|
+
projected_volumes = add_volumes_for_authenticating_services(
|
|
634
|
+
service_name=self.service,
|
|
635
|
+
config_volumes=super().get_projected_sa_volumes(),
|
|
636
|
+
soa_dir=self.soa_dir,
|
|
637
|
+
)
|
|
638
|
+
return projected_volumes if projected_volumes else None
|
|
639
|
+
|
|
630
640
|
|
|
631
641
|
class TronJobConfig:
|
|
632
642
|
"""Represents a job in Tron, consisting of action(s) and job-level configuration values."""
|
|
@@ -958,6 +968,9 @@ def format_tron_action_dict(action_config: TronActionConfig):
|
|
|
958
968
|
dry_run=action_config.for_validation,
|
|
959
969
|
)
|
|
960
970
|
|
|
971
|
+
# service account token volumes for service authentication
|
|
972
|
+
result["projected_sa_volumes"] = action_config.get_projected_sa_volumes()
|
|
973
|
+
|
|
961
974
|
extra_volumes = action_config.get_extra_volumes()
|
|
962
975
|
if executor == "spark":
|
|
963
976
|
is_mrjob = action_config.config_dict.get("mrjob", False)
|
|
@@ -75,7 +75,7 @@ import ldap3
|
|
|
75
75
|
import requests_cache
|
|
76
76
|
import service_configuration_lib
|
|
77
77
|
import yaml
|
|
78
|
-
from docker import
|
|
78
|
+
from docker import APIClient
|
|
79
79
|
from docker.utils import kwargs_from_env
|
|
80
80
|
from kazoo.client import KazooClient
|
|
81
81
|
from mypy_extensions import TypedDict
|
|
@@ -1359,6 +1359,7 @@ class LogWriterConfig(TypedDict):
|
|
|
1359
1359
|
class LogReaderConfig(TypedDict):
|
|
1360
1360
|
driver: str
|
|
1361
1361
|
options: Dict
|
|
1362
|
+
components: Optional[List]
|
|
1362
1363
|
|
|
1363
1364
|
|
|
1364
1365
|
# The active log writer.
|
|
@@ -1960,6 +1961,7 @@ class SystemPaastaConfigDict(TypedDict, total=False):
|
|
|
1960
1961
|
ldap_search_ou: str
|
|
1961
1962
|
local_run_config: LocalRunConfig
|
|
1962
1963
|
log_reader: LogReaderConfig
|
|
1964
|
+
log_readers: List[LogReaderConfig]
|
|
1963
1965
|
log_writer: LogWriterConfig
|
|
1964
1966
|
mark_for_deployment_max_polling_threads: int
|
|
1965
1967
|
mark_for_deployment_default_polling_interval: float
|
|
@@ -2017,6 +2019,9 @@ class SystemPaastaConfigDict(TypedDict, total=False):
|
|
|
2017
2019
|
sidecar_requirements_config: Dict[str, KubeContainerResourceRequest]
|
|
2018
2020
|
eks_cluster_aliases: Dict[str, str]
|
|
2019
2021
|
secret_sync_delay_seconds: float
|
|
2022
|
+
use_multiple_log_readers: Optional[List[str]]
|
|
2023
|
+
service_auth_token_settings: ProjectedSAVolume
|
|
2024
|
+
always_authenticating_services: List[str]
|
|
2020
2025
|
|
|
2021
2026
|
|
|
2022
2027
|
def load_system_paasta_config(
|
|
@@ -2321,6 +2326,25 @@ class SystemPaastaConfig:
|
|
|
2321
2326
|
% self.directory
|
|
2322
2327
|
)
|
|
2323
2328
|
|
|
2329
|
+
def get_log_readers(self) -> List[LogReaderConfig]:
|
|
2330
|
+
"""Get the log_readers configuration out of global paasta config
|
|
2331
|
+
|
|
2332
|
+
:returns: the log_readers list of dicts.
|
|
2333
|
+
"""
|
|
2334
|
+
try:
|
|
2335
|
+
return self.config_dict["log_readers"]
|
|
2336
|
+
except KeyError:
|
|
2337
|
+
raise PaastaNotConfiguredError(
|
|
2338
|
+
"Could not find log_readers in configuration directory: %s"
|
|
2339
|
+
% self.directory
|
|
2340
|
+
)
|
|
2341
|
+
|
|
2342
|
+
def use_multiple_log_readers(self) -> Optional[List[str]]:
|
|
2343
|
+
"""
|
|
2344
|
+
Get the list of clusters that are using multiple log readers
|
|
2345
|
+
"""
|
|
2346
|
+
return self.config_dict.get("use_multiple_log_readers")
|
|
2347
|
+
|
|
2324
2348
|
def get_metrics_provider(self) -> Optional[str]:
|
|
2325
2349
|
"""Get the metrics_provider configuration out of global paasta config
|
|
2326
2350
|
|
|
@@ -2703,6 +2727,12 @@ class SystemPaastaConfig:
|
|
|
2703
2727
|
def get_kube_clusters(self) -> Dict:
|
|
2704
2728
|
return self.config_dict.get("kube_clusters", {})
|
|
2705
2729
|
|
|
2730
|
+
def get_service_auth_token_volume_config(self) -> ProjectedSAVolume:
|
|
2731
|
+
return self.config_dict.get("service_auth_token_settings", {})
|
|
2732
|
+
|
|
2733
|
+
def get_always_authenticating_services(self) -> List[str]:
|
|
2734
|
+
return self.config_dict.get("always_authenticating_services", [])
|
|
2735
|
+
|
|
2706
2736
|
|
|
2707
2737
|
def _run(
|
|
2708
2738
|
command: Union[str, List[str]],
|
|
@@ -3315,12 +3345,12 @@ def get_docker_host() -> str:
|
|
|
3315
3345
|
return os.environ.get("DOCKER_HOST", "unix://var/run/docker.sock")
|
|
3316
3346
|
|
|
3317
3347
|
|
|
3318
|
-
def get_docker_client() ->
|
|
3348
|
+
def get_docker_client() -> APIClient:
|
|
3319
3349
|
client_opts = kwargs_from_env(assert_hostname=False)
|
|
3320
3350
|
if "base_url" in client_opts:
|
|
3321
|
-
return
|
|
3351
|
+
return APIClient(**client_opts)
|
|
3322
3352
|
else:
|
|
3323
|
-
return
|
|
3353
|
+
return APIClient(base_url=get_docker_host(), **client_opts)
|
|
3324
3354
|
|
|
3325
3355
|
|
|
3326
3356
|
def get_running_mesos_docker_containers() -> List[Dict]:
|
|
@@ -10,9 +10,7 @@ certifi
|
|
|
10
10
|
choice >= 0.1
|
|
11
11
|
cookiecutter >= 1.4.0
|
|
12
12
|
croniter
|
|
13
|
-
|
|
14
|
-
# the Docker version deployed on PaaSTA servers
|
|
15
|
-
docker-py >= 1.2.3
|
|
13
|
+
docker
|
|
16
14
|
dulwich >= 0.17.3
|
|
17
15
|
ephemeral-port-reserve >= 1.0.1
|
|
18
16
|
graphviz
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/autoscaling_service_lib.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/autoscaling/pause_service_autoscaler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{paasta-tools-1.1.2 → paasta-tools-1.4.0}/paasta_tools/check_kubernetes_services_replication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|