robusta-cli 0.10.27a2__tar.gz → 0.10.28a0__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.
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/PKG-INFO +1 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/pyproject.toml +1 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/_version.py +1 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/api/__init__.py +7 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/backend_profile.py +11 -7
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/self_host.py +52 -14
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/utils.py +10 -3
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/base_params.py +33 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/env_vars.py +6 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/events.py +5 -2
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/runner_config.py +4 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/container_playbook_utils.py +4 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/internal/discovery_events.py +2 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/node_playbook_utils.py +5 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/oom_killer_utils.py +3 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/pod_utils/imagepull_utils.py +1 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/prometheus_enrichment_utils.py +111 -45
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/base.py +20 -2
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/blocks.py +49 -2
- robusta_cli-0.10.28a0/src/robusta/core/sinks/google_chat/google_chat.py +19 -0
- robusta_cli-0.10.28a0/src/robusta/core/sinks/google_chat/google_chat_params.py +15 -0
- robusta_cli-0.10.28a0/src/robusta/core/sinks/pushover/__init__.py +2 -0
- robusta_cli-0.10.28a0/src/robusta/core/sinks/pushover/pushover_client.py +60 -0
- robusta_cli-0.10.28a0/src/robusta/core/sinks/pushover/pushover_sink.py +123 -0
- robusta_cli-0.10.28a0/src/robusta/core/sinks/pushover/pushover_sink_params.py +17 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/dal/model_conversion.py +13 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/robusta_sink.py +6 -3
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/rrm/rrm.py +4 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/sink_factory.py +5 -1
- robusta_cli-0.10.28a0/src/robusta/core/sinks/slack/slack_sink_params.py +116 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/multi_resources_trigger.py +1 -2
- robusta_cli-0.10.28a0/src/robusta/integrations/google_chat/sender.py +143 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/jira/client.py +1 -1
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/custom_models.py +1 -0
- robusta_cli-0.10.28a0/src/robusta/integrations/openshift/__init__.py +1 -0
- robusta_cli-0.10.28a0/src/robusta/integrations/openshift/token.py +17 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/prometheus/models.py +4 -3
- robusta_cli-0.10.28a0/src/robusta/runner/__init__.py +0 -0
- robusta_cli-0.10.28a0/src/robusta/runner/ssl_utils.py +40 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/web.py +11 -3
- robusta_cli-0.10.28a0/src/robusta/utils/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/silence_utils.py +14 -0
- robusta_cli-0.10.27a2/src/robusta/core/sinks/slack/slack_sink_params.py +0 -82
- robusta_cli-0.10.27a2/src/robusta/runner/ssl_utils.py +0 -15
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/LICENSE +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/auth.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/eula.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/integrations_cmd.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/main.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/playbooks_cmd.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/slack_feedback_message.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/cli/slack_verification.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/discovery/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/discovery/discovery.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/discovery/resource_names.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/discovery/top_service_resolver.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/discovery/utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/exceptions.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/cluster_status.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/helm_release.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/jobs.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/k8s_operation_type.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/namespaces.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/nodes.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/pods.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/model/services.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/persistency/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/persistency/in_memory.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/persistency/scheduled_jobs_states_dal.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/actions_registry.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/base_trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/common.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/generation.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/job_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/playbook_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/playbooks_event_handler.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/playbooks_event_handler_impl.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/pod_utils/crashloop_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/pod_utils/pending_pod_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/action_requests.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/callbacks.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/consts.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/custom_rendering.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/finding_subjects.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/reporting/utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/schedule/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/schedule/model.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/schedule/scheduler.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/datadog/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/datadog/datadog_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/datadog/datadog_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/discord/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/discord/discord_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/discord/discord_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/file/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/file/file_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/file/file_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/file/object_traverser.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/core/sinks/mail → robusta_cli-0.10.28a0/src/robusta/core/sinks/google_chat}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/jira/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/jira/jira_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/jira/jira_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/kafka/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/kafka/kafka_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/kafka/kafka_sink_params.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/core/sinks/robusta/dal → robusta_cli-0.10.28a0/src/robusta/core/sinks/mail}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/mail/mail_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/mail/mail_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/mattermost/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/mattermost/mattermost_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/mattermost/mattermost_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/msteams/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/msteams/msteams_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/msteams/msteams_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/opsgenie/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/opsgenie/opsgenie_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/opsgenie/opsgenie_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/pagerduty/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/pagerduty/pagerduty_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/pagerduty/pagerduty_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/__init__.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/core/sinks/robusta/rrm → robusta_cli-0.10.28a0/src/robusta/core/sinks/robusta/dal}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/dal/supabase_dal.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/discovery_metrics.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/prometheus_health_checker.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/robusta_sink_params.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/core/sinks/rocketchat → robusta_cli-0.10.28a0/src/robusta/core/sinks/robusta/rrm}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/rrm/account_resource_fetcher.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/rrm/base_resource_manager.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/rrm/prometheus_alert_resource_manager.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/robusta/rrm/types.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations → robusta_cli-0.10.28a0/src/robusta/core/sinks/rocketchat}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/rocketchat/rocketchat_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/rocketchat/rocketchat_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/sink_base.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/sink_base_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/sink_config.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/slack/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/slack/slack_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/telegram/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/telegram/telegram_client.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/telegram/telegram_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/telegram/telegram_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/timing.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/transformer.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/victorops/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/victorops/victorops_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/victorops/victorops_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webex/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webex/webex_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webex/webex_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webhook/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webhook/webhook_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/webhook/webhook_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/yamessenger/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/yamessenger/yamessenger_client.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/yamessenger/yamessenger_sink.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/sinks/yamessenger/yamessenger_sink_params.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/container_oom_killed_trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/custom_triggers.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/error_event_trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/helm_releases_triggers.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/job_failed_trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/oom_killed_trigger_base.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/pod_crash_loop_trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/pod_image_pull_backoff.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/triggers/pod_oom_killed_trigger.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/common → robusta_cli-0.10.28a0/src/robusta/integrations}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/argocd/argocd_client.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/discord → robusta_cli-0.10.28a0/src/robusta/integrations/common}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/common/requests.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/git → robusta_cli-0.10.28a0/src/robusta/integrations/discord}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/discord/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/jira → robusta_cli-0.10.28a0/src/robusta/integrations/git}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/git/git_repo.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/kubernetes → robusta_cli-0.10.28a0/src/robusta/integrations/google_chat}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/grafana.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/helper.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/kubernetes/autogenerated → robusta_cli-0.10.28a0/src/robusta/integrations/jira}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/jira/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/kubernetes/autogenerated/v1 → robusta_cli-0.10.28a0/src/robusta/integrations/kubernetes}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/api_client_utils.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/mail → robusta_cli-0.10.28a0/src/robusta/integrations/kubernetes/autogenerated}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/autogenerated/events.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/autogenerated/models.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/autogenerated/triggers.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/mattermost → robusta_cli-0.10.28a0/src/robusta/integrations/kubernetes/autogenerated/v1}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/autogenerated/v1/models.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/base_event.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/base_triggers.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/model_not_found_exception.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/process_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/kubernetes/templates.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/msteams/msteams_elements → robusta_cli-0.10.28a0/src/robusta/integrations/mail}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/mail/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/prometheus → robusta_cli-0.10.28a0/src/robusta/integrations/mattermost}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/mattermost/client.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/mattermost/sender.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_adaptive_card_files.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_adaptive_card_files_image.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_adaptive_card_files_text.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/resource_analysis → robusta_cli-0.10.28a0/src/robusta/integrations/msteams/msteams_elements}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_action.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_base.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_card.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_column.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_container.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_images.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_table.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_elements/msteams_text_block.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_mark_down_fix_url.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/msteams_msg.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/msteams/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/rocketchat → robusta_cli-0.10.28a0/src/robusta/integrations/prometheus}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/prometheus/trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/prometheus/utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/receiver.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/scheduled → robusta_cli-0.10.28a0/src/robusta/integrations/resource_analysis}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/resource_analysis/cpu_analyzer.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/resource_analysis/memory_analyzer.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/resource_analysis/node_cpu_analyzer.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/resource_analysis/prometheus_analyzer.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/integrations/webex → robusta_cli-0.10.28a0/src/robusta/integrations/rocketchat}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/rocketchat/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/runner → robusta_cli-0.10.28a0/src/robusta/integrations/scheduled}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/event.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/models.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/playbook_scheduler.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/playbook_scheduler_manager.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/playbook_scheduler_manager_impl.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/scheduled/trigger.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/slack/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/slack/sender.py +0 -0
- {robusta_cli-0.10.27a2/src/robusta/utils → robusta_cli-0.10.28a0/src/robusta/integrations/webex}/__init__.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/integrations/webex/sender.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/model/alert_relabel_config.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/model/config.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/model/playbook_action.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/model/playbook_definition.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/patch/patch.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/config_loader.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/log_init.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/main.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/not_found_exception.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/object_updater.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/process_setup.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/telemetry.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/telemetry_service.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/runner/web_api.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/auth_provider.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/base64_utils.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/cluster_provider_discovery.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/common.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/decorators.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/docs.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/documented_pydantic.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/error_codes.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/file_system_watcher.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/function_hashes.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/json_schema.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/parsing.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/rate_limiter.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/server_start.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/service_discovery.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/stack_tracer.py +0 -0
- {robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/utils/task_queue.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# this is updated by .github/workflows/release.yaml
|
|
2
|
-
__version__ = "0.10.
|
|
2
|
+
__version__ = "0.10.28-alpha"
|
|
@@ -33,6 +33,8 @@ from robusta.core.model.base_params import (
|
|
|
33
33
|
ResourceChartItemType,
|
|
34
34
|
ResourceChartResourceType,
|
|
35
35
|
ResourceGraphEnricherParams,
|
|
36
|
+
OOMGraphEnricherParams,
|
|
37
|
+
OomKillParams,
|
|
36
38
|
TimedPrometheusParams,
|
|
37
39
|
VideoEnricherParams,
|
|
38
40
|
)
|
|
@@ -153,8 +155,11 @@ from robusta.core.reporting import (
|
|
|
153
155
|
ScanReportBlock,
|
|
154
156
|
ScanReportRow,
|
|
155
157
|
TableBlock,
|
|
156
|
-
VideoLink
|
|
158
|
+
VideoLink
|
|
157
159
|
)
|
|
160
|
+
|
|
161
|
+
from robusta.core.reporting.base import EnrichmentType
|
|
162
|
+
from robusta.core.reporting.blocks import GraphBlock
|
|
158
163
|
from robusta.core.reporting.action_requests import (
|
|
159
164
|
ActionRequestBody,
|
|
160
165
|
ExternalActionRequest,
|
|
@@ -182,6 +187,7 @@ from robusta.core.schedule.model import (
|
|
|
182
187
|
ScheduledJob,
|
|
183
188
|
SchedulingInfo,
|
|
184
189
|
)
|
|
190
|
+
from robusta.core.playbooks.node_playbook_utils import create_node_graph_enrichment
|
|
185
191
|
from robusta.core.sinks import SinkBase, SinkBaseParams, SinkConfigBase
|
|
186
192
|
from robusta.core.sinks.kafka import KafkaSink, KafkaSinkConfigWrapper, KafkaSinkParams
|
|
187
193
|
from robusta.core.triggers.helm_releases_triggers import HelmReleasesEvent, HelmReleasesTriggerEvent
|
|
@@ -4,6 +4,8 @@ import sys
|
|
|
4
4
|
import typer
|
|
5
5
|
from pydantic.main import BaseModel
|
|
6
6
|
|
|
7
|
+
from robusta.cli.utils import host_for_params
|
|
8
|
+
|
|
7
9
|
ROBUSTA_BACKEND_PROFILE = os.environ.get("ROBUSTA_BACKEND_PROFILE", "")
|
|
8
10
|
|
|
9
11
|
|
|
@@ -17,14 +19,16 @@ class BackendProfile(BaseModel):
|
|
|
17
19
|
custom_profile: bool = False
|
|
18
20
|
|
|
19
21
|
@classmethod
|
|
20
|
-
def
|
|
22
|
+
def fromDomainProvider(
|
|
23
|
+
cls, domain: str, api_endpoint_prefix: str, platform_endpoint_prefix: str, relay_endpoint_prefix: str
|
|
24
|
+
):
|
|
21
25
|
return cls(
|
|
22
|
-
robusta_cloud_api_host=
|
|
23
|
-
robusta_ui_domain=
|
|
24
|
-
robusta_relay_ws_address=
|
|
25
|
-
robusta_relay_external_actions_url=f"
|
|
26
|
-
robusta_telemetry_endpoint=f"
|
|
27
|
-
robusta_store_token_url=f"
|
|
26
|
+
robusta_cloud_api_host=host_for_params(api_endpoint_prefix, domain),
|
|
27
|
+
robusta_ui_domain=host_for_params(platform_endpoint_prefix, domain),
|
|
28
|
+
robusta_relay_ws_address=host_for_params(relay_endpoint_prefix, domain, "wss"),
|
|
29
|
+
robusta_relay_external_actions_url=f"{host_for_params(api_endpoint_prefix, domain)}/integrations/generic/actions",
|
|
30
|
+
robusta_telemetry_endpoint=f"{host_for_params(api_endpoint_prefix, domain)}/telemetry",
|
|
31
|
+
robusta_store_token_url=f"{host_for_params(api_endpoint_prefix, domain)}/auth/server/tokens",
|
|
28
32
|
)
|
|
29
33
|
|
|
30
34
|
|
|
@@ -10,6 +10,7 @@ import yaml
|
|
|
10
10
|
from pydantic import BaseModel
|
|
11
11
|
|
|
12
12
|
from robusta.cli.backend_profile import BackendProfile
|
|
13
|
+
from robusta.cli.utils import host_for_params
|
|
13
14
|
|
|
14
15
|
ISSUER: str = "supabase"
|
|
15
16
|
|
|
@@ -47,13 +48,15 @@ class RobustaUI(BaseModel):
|
|
|
47
48
|
RELAY_HOST: str
|
|
48
49
|
SUPABASE_URL: str
|
|
49
50
|
SUPABASE_KEY: str
|
|
51
|
+
provider: str
|
|
50
52
|
service = {"nodePort": 30311} # platform.domain
|
|
51
53
|
|
|
52
|
-
def __init__(self, domain: str, anon_key: str):
|
|
54
|
+
def __init__(self, domain: str, anon_key: str, provider: str, api_endpoint_prefix: str, db_endpoint_prefix: str):
|
|
53
55
|
super().__init__(
|
|
54
|
-
RELAY_HOST=
|
|
55
|
-
SUPABASE_URL=
|
|
56
|
+
RELAY_HOST=host_for_params(api_endpoint_prefix, domain),
|
|
57
|
+
SUPABASE_URL=host_for_params(db_endpoint_prefix, domain),
|
|
56
58
|
SUPABASE_KEY=anon_key,
|
|
59
|
+
provider=provider,
|
|
57
60
|
)
|
|
58
61
|
|
|
59
62
|
|
|
@@ -68,17 +71,28 @@ class RobustaRelay(BaseModel):
|
|
|
68
71
|
slackSigningSecret: str = "your-signing-secret"
|
|
69
72
|
syncActionAllowedOrigins: str
|
|
70
73
|
provider: str
|
|
74
|
+
apiEndpointPrefix: str
|
|
71
75
|
apiNodePort: int = 30313 # api.domain
|
|
72
76
|
wsNodePort: int = 30314 # relay.domain
|
|
73
77
|
|
|
74
|
-
def __init__(
|
|
78
|
+
def __init__(
|
|
79
|
+
self,
|
|
80
|
+
domain: str,
|
|
81
|
+
anon_key: str,
|
|
82
|
+
provider: str,
|
|
83
|
+
storePW: str,
|
|
84
|
+
db_endpoint_prefix: str,
|
|
85
|
+
platform_endpoint_prefix: str,
|
|
86
|
+
api_endpoint_prefix: str,
|
|
87
|
+
):
|
|
75
88
|
super().__init__(
|
|
76
89
|
domain=domain,
|
|
77
|
-
storeUrl=
|
|
78
|
-
syncActionAllowedOrigins=
|
|
90
|
+
storeUrl=host_for_params(db_endpoint_prefix, domain),
|
|
91
|
+
syncActionAllowedOrigins=host_for_params(platform_endpoint_prefix, domain),
|
|
79
92
|
storeApiKey=anon_key,
|
|
80
93
|
provider=provider,
|
|
81
94
|
storePassword=storePW,
|
|
95
|
+
apiEndpointPrefix=api_endpoint_prefix,
|
|
82
96
|
)
|
|
83
97
|
|
|
84
98
|
|
|
@@ -131,7 +145,7 @@ app = typer.Typer(add_completion=False)
|
|
|
131
145
|
def gen_config(
|
|
132
146
|
provider: str = typer.Option(
|
|
133
147
|
...,
|
|
134
|
-
help='Cloud host provider. options are "on-prem", "gke", "eks"',
|
|
148
|
+
help='Cloud host provider. options are "on-prem", "gke", "eks", "openshift"',
|
|
135
149
|
),
|
|
136
150
|
domain: str = typer.Option(..., help="domain used to route the on-prem services."),
|
|
137
151
|
storage_class_name: str = typer.Option(None, help="database PVC storageClassName."),
|
|
@@ -140,11 +154,15 @@ def gen_config(
|
|
|
140
154
|
db_nport: int = typer.Option(30312, help="node port Robusta database."),
|
|
141
155
|
api_nport: int = typer.Option(30313, help="node port for Robusta API."),
|
|
142
156
|
ws_nport: int = typer.Option(30314, help="node port for Robusta websocket."),
|
|
157
|
+
db_endpoint_prefix: str = typer.Option("db", help="Endpoint prefix for the db"),
|
|
158
|
+
api_endpoint_prefix: str = typer.Option("api", help="Endpoint prefix for the api"),
|
|
159
|
+
platform_endpoint_prefix: str = typer.Option("platform", help="Endpoint prefix for the platform"),
|
|
160
|
+
relay_ws_endpoint_prefix: str = typer.Option("relay", help="Endpoint prefix for the relay websocket"),
|
|
143
161
|
):
|
|
144
162
|
"""Create self host configuration files"""
|
|
145
|
-
if provider not in {"on-prem", "gke", "eks"}:
|
|
163
|
+
if provider not in {"on-prem", "gke", "eks", "openshift"}:
|
|
146
164
|
typer.secho(
|
|
147
|
-
f'Invalid provider {provider}. options are "on-prem", "gke", "eks"',
|
|
165
|
+
f'Invalid provider {provider}. options are "on-prem", "gke", "eks", "openshift"',
|
|
148
166
|
fg=typer.colors.RED,
|
|
149
167
|
)
|
|
150
168
|
return
|
|
@@ -159,8 +177,8 @@ def gen_config(
|
|
|
159
177
|
values = SelfHostValues(
|
|
160
178
|
PROVIDER=provider,
|
|
161
179
|
DOMAIN=domain,
|
|
162
|
-
SITE_URL=
|
|
163
|
-
PUBLIC_REST_URL=f"
|
|
180
|
+
SITE_URL=host_for_params(platform_endpoint_prefix, domain),
|
|
181
|
+
PUBLIC_REST_URL=f"{host_for_params(db_endpoint_prefix, domain)}/rest/v1/",
|
|
164
182
|
STORAGE_CLASS_NAME=storage_class_name,
|
|
165
183
|
EKS_CERTIFICATE_ARN=eks_certificate_arn,
|
|
166
184
|
)
|
|
@@ -171,18 +189,38 @@ def gen_config(
|
|
|
171
189
|
anon_key=values.ANON_KEY,
|
|
172
190
|
provider=provider,
|
|
173
191
|
storePW=values.RELAY_PASSWORD,
|
|
192
|
+
db_endpoint_prefix=db_endpoint_prefix,
|
|
193
|
+
platform_endpoint_prefix=platform_endpoint_prefix,
|
|
194
|
+
api_endpoint_prefix=api_endpoint_prefix,
|
|
174
195
|
)
|
|
175
196
|
relayValues.apiNodePort = api_nport
|
|
176
197
|
relayValues.wsNodePort = ws_nport
|
|
177
198
|
|
|
178
|
-
uiValues = RobustaUI(
|
|
199
|
+
uiValues = RobustaUI(
|
|
200
|
+
domain=domain,
|
|
201
|
+
anon_key=values.ANON_KEY,
|
|
202
|
+
provider=provider,
|
|
203
|
+
api_endpoint_prefix=api_endpoint_prefix,
|
|
204
|
+
db_endpoint_prefix=db_endpoint_prefix,
|
|
205
|
+
)
|
|
179
206
|
uiValues.service["nodePort"] = platform_nport
|
|
180
207
|
|
|
181
208
|
values_dict = values.dict(exclude_none=True)
|
|
182
209
|
values_dict["robusta-ui"] = uiValues.dict()
|
|
183
210
|
values_dict["robusta-relay"] = relayValues.dict()
|
|
184
|
-
|
|
185
|
-
|
|
211
|
+
values_dict["ENDPOINT_PREFIXES"] = {
|
|
212
|
+
"DB": db_endpoint_prefix,
|
|
213
|
+
"API": api_endpoint_prefix,
|
|
214
|
+
"PLATFORM": platform_endpoint_prefix,
|
|
215
|
+
"RELAY": relay_ws_endpoint_prefix,
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
backendProfile = BackendProfile.fromDomainProvider(
|
|
219
|
+
domain=domain,
|
|
220
|
+
api_endpoint_prefix=api_endpoint_prefix,
|
|
221
|
+
platform_endpoint_prefix=platform_endpoint_prefix,
|
|
222
|
+
relay_endpoint_prefix=relay_ws_endpoint_prefix,
|
|
223
|
+
)
|
|
186
224
|
self_host_approval_url = "https://api.robusta.dev/terms-of-service.html"
|
|
187
225
|
typer.echo(f"By using this software you agree to the terms of service ({self_host_approval_url})\n")
|
|
188
226
|
write_values_files("self_host_values.yaml", "robusta_cli_config.json", values_dict, backendProfile)
|
|
@@ -91,6 +91,10 @@ def replace_in_file(path, original, replacement):
|
|
|
91
91
|
w.write(text)
|
|
92
92
|
|
|
93
93
|
|
|
94
|
+
def host_for_params(component, domain, scheme="https"):
|
|
95
|
+
return f"{scheme}://{component}.{domain}"
|
|
96
|
+
|
|
97
|
+
|
|
94
98
|
@contextmanager
|
|
95
99
|
def fetch_runner_logs(namespace: Optional[str], all_logs=False):
|
|
96
100
|
start = time.time()
|
|
@@ -134,6 +138,9 @@ def get_runner_pod(namespace: Optional[str]) -> str:
|
|
|
134
138
|
).stdout.strip()
|
|
135
139
|
|
|
136
140
|
if not output:
|
|
137
|
-
typer.secho(
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
typer.secho(
|
|
142
|
+
f"Could not find robusta pod in namespace {namespace}. Are you missing the --namespace flag correctly?",
|
|
143
|
+
fg="red",
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
return output
|
|
@@ -4,6 +4,7 @@ from typing import Dict, List, Optional, Union
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel, SecretStr, validator
|
|
6
6
|
|
|
7
|
+
from robusta.integrations import openshift
|
|
7
8
|
from robusta.utils.documented_pydantic import DocumentedModel
|
|
8
9
|
|
|
9
10
|
|
|
@@ -17,6 +18,8 @@ class ChartValuesFormat(Enum):
|
|
|
17
18
|
Percentage = auto()
|
|
18
19
|
CPUUsage = auto()
|
|
19
20
|
|
|
21
|
+
def __str__(self):
|
|
22
|
+
return self.name
|
|
20
23
|
|
|
21
24
|
class ResourceChartItemType(Enum):
|
|
22
25
|
"""
|
|
@@ -148,6 +151,19 @@ class PrometheusParams(ActionParams):
|
|
|
148
151
|
logging.info(f"Stripping '?' off prometheus_url_query_string: {v}")
|
|
149
152
|
return v
|
|
150
153
|
|
|
154
|
+
@validator("prometheus_auth", allow_reuse=True, always=True)
|
|
155
|
+
def auto_openshift_token(cls, v: Optional[SecretStr]):
|
|
156
|
+
# If openshift is enabled, and the user didn't configure prometheus_auth, we will try to load the token from the service account
|
|
157
|
+
if v is not None:
|
|
158
|
+
return v
|
|
159
|
+
|
|
160
|
+
openshift_token = openshift.load_token()
|
|
161
|
+
if openshift_token is not None:
|
|
162
|
+
logging.debug(f"Using openshift token from {openshift.TOKEN_LOCATION} for prometheus auth")
|
|
163
|
+
return SecretStr(f"Bearer {openshift_token}")
|
|
164
|
+
|
|
165
|
+
return None
|
|
166
|
+
|
|
151
167
|
|
|
152
168
|
class PrometheusDuration(BaseModel):
|
|
153
169
|
"""
|
|
@@ -208,6 +224,7 @@ class CustomGraphEnricherParams(PrometheusParams):
|
|
|
208
224
|
graph_title: Optional[str] = None
|
|
209
225
|
graph_duration_minutes: int = 60
|
|
210
226
|
chart_values_format: str = "Plain"
|
|
227
|
+
hide_legends: Optional[bool] = False
|
|
211
228
|
|
|
212
229
|
|
|
213
230
|
class ResourceGraphEnricherParams(PrometheusParams):
|
|
@@ -310,5 +327,20 @@ class LogEnricherParams(ActionParams):
|
|
|
310
327
|
filter_regex: Optional[str] = None
|
|
311
328
|
|
|
312
329
|
|
|
313
|
-
class
|
|
330
|
+
class OOMGraphEnricherParams(ResourceGraphEnricherParams):
|
|
331
|
+
"""
|
|
332
|
+
:var delay_graph_s: the amount of seconds to delay getting the graph inorder to record the memory spike
|
|
333
|
+
"""
|
|
334
|
+
|
|
335
|
+
delay_graph_s: int = 0
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class OomKillParams(OOMGraphEnricherParams):
|
|
314
339
|
attach_logs: Optional[bool] = False
|
|
340
|
+
container_memory_graph: Optional[bool] = False
|
|
341
|
+
node_memory_graph: Optional[bool] = False
|
|
342
|
+
|
|
343
|
+
def __init__(self, attach_logs: Optional[bool] = False, container_memory_graph: Optional[bool] = False,
|
|
344
|
+
node_memory_graph: Optional[bool] = False, **kwargs):
|
|
345
|
+
super().__init__(attach_logs=attach_logs, container_memory_graph=container_memory_graph,
|
|
346
|
+
node_memory_graph=node_memory_graph, resource_type=ResourceChartResourceType.Memory.name, **kwargs)
|
|
@@ -77,6 +77,7 @@ WEBSOCKET_PING_INTERVAL = int(os.environ.get("WEBSOCKET_PING_INTERVAL", 120))
|
|
|
77
77
|
WEBSOCKET_PING_TIMEOUT = int(os.environ.get("WEBSOCKET_PING_TIMEOUT", 30))
|
|
78
78
|
|
|
79
79
|
TRACE_INCOMING_REQUESTS = load_bool("TRACE_INCOMING_REQUESTS", False)
|
|
80
|
+
TRACE_INCOMING_ALERTS = load_bool("TRACE_INCOMING_ALERTS", False)
|
|
80
81
|
|
|
81
82
|
SERVICE_CACHE_TTL_SEC = int(os.environ.get("SERVICE_CACHE_TTL_SEC", 900))
|
|
82
83
|
SERVICE_CACHE_MAX_SIZE = int(os.environ.get("SERVICE_CACHE_MAX_SIZE", 1000))
|
|
@@ -87,7 +88,7 @@ PORT = int(os.environ.get("PORT", 5000)) # PORT
|
|
|
87
88
|
ADDITIONAL_CERTIFICATE: str = os.environ.get("CERTIFICATE", "")
|
|
88
89
|
|
|
89
90
|
DISCOVERY_MAX_BATCHES = int(os.environ.get("DISCOVERY_MAX_BATCHES", 25))
|
|
90
|
-
DISCOVERY_BATCH_SIZE = int(os.environ.get("DISCOVERY_BATCH_SIZE",
|
|
91
|
+
DISCOVERY_BATCH_SIZE = int(os.environ.get("DISCOVERY_BATCH_SIZE", 30000))
|
|
91
92
|
DISCOVERY_POD_OWNED_PODS = load_bool("DISCOVERY_POD_OWNED_PODS", False)
|
|
92
93
|
|
|
93
94
|
DISABLE_HELM_MONITORING = load_bool("DISABLE_HELM_MONITORING", False)
|
|
@@ -101,3 +102,7 @@ MAX_ALLOWED_RULES_PER_CRD_ALERT = int(os.environ.get("MAX_ALLOWED_RULES_PER_CRD_
|
|
|
101
102
|
IMAGE_REGISTRY = os.environ.get("IMAGE_REGISTRY", "us-central1-docker.pkg.dev/genuine-flight-317411/devel")
|
|
102
103
|
|
|
103
104
|
CLUSTER_DOMAIN = os.environ.get("CLUSTER_DOMAIN", "cluster.local")
|
|
105
|
+
|
|
106
|
+
IS_OPENSHIFT = load_bool("IS_OPENSHIFT", False)
|
|
107
|
+
|
|
108
|
+
ENABLE_GRAPH_BLOCK = load_bool("ENABLE_GRAPH_BLOCK", False)
|
|
@@ -15,7 +15,7 @@ from robusta.core.reporting.base import (
|
|
|
15
15
|
FindingSource,
|
|
16
16
|
FindingSubject,
|
|
17
17
|
FindingSubjectType,
|
|
18
|
-
VideoLink,
|
|
18
|
+
VideoLink, EnrichmentType,
|
|
19
19
|
)
|
|
20
20
|
from robusta.core.sinks import SinkBase
|
|
21
21
|
from robusta.integrations.scheduled.playbook_scheduler import PlaybooksScheduler
|
|
@@ -95,10 +95,13 @@ class ExecutionBaseEvent:
|
|
|
95
95
|
self,
|
|
96
96
|
enrichment_blocks: List[BaseBlock],
|
|
97
97
|
annotations=None,
|
|
98
|
+
enrichment_type: Optional[EnrichmentType] = None,
|
|
99
|
+
title: Optional[str] = None,
|
|
98
100
|
):
|
|
99
101
|
self.__prepare_sinks_findings()
|
|
100
102
|
for sink in self.named_sinks:
|
|
101
|
-
self.sink_findings[sink][0].add_enrichment(enrichment_blocks, annotations, True
|
|
103
|
+
self.sink_findings[sink][0].add_enrichment(enrichment_blocks, annotations, True,
|
|
104
|
+
enrichment_type=enrichment_type, title=title)
|
|
102
105
|
|
|
103
106
|
def add_finding(self, finding: Finding, suppress_warning: bool = False):
|
|
104
107
|
finding.dirty = True # Warn if new enrichments are added to this finding directly
|
|
@@ -7,6 +7,7 @@ from robusta.core.playbooks.playbook_utils import get_env_replacement, replace_e
|
|
|
7
7
|
from robusta.core.sinks.datadog.datadog_sink_params import DataDogSinkConfigWrapper
|
|
8
8
|
from robusta.core.sinks.discord.discord_sink_params import DiscordSinkConfigWrapper
|
|
9
9
|
from robusta.core.sinks.file.file_sink_params import FileSinkConfigWrapper
|
|
10
|
+
from robusta.core.sinks.google_chat.google_chat_params import GoogleChatSinkConfigWrapper
|
|
10
11
|
from robusta.core.sinks.jira.jira_sink_params import JiraSinkConfigWrapper
|
|
11
12
|
from robusta.core.sinks.kafka.kafka_sink_params import KafkaSinkConfigWrapper
|
|
12
13
|
from robusta.core.sinks.mattermost.mattermost_sink_params import MattermostSinkConfigWrapper
|
|
@@ -22,6 +23,7 @@ from robusta.core.sinks.victorops.victorops_sink_params import VictoropsConfigWr
|
|
|
22
23
|
from robusta.core.sinks.webex.webex_sink_params import WebexSinkConfigWrapper
|
|
23
24
|
from robusta.core.sinks.webhook.webhook_sink_params import WebhookSinkConfigWrapper
|
|
24
25
|
from robusta.core.sinks.yamessenger.yamessenger_sink_params import YaMessengerSinkConfigWrapper
|
|
26
|
+
from robusta.core.sinks.pushover.pushover_sink_params import PushoverSinkConfigWrapper
|
|
25
27
|
from robusta.model.alert_relabel_config import AlertRelabel
|
|
26
28
|
from robusta.model.playbook_definition import PlaybookDefinition
|
|
27
29
|
from robusta.utils.base64_utils import is_base64_encoded
|
|
@@ -57,6 +59,8 @@ class RunnerConfig(BaseModel):
|
|
|
57
59
|
JiraSinkConfigWrapper,
|
|
58
60
|
FileSinkConfigWrapper,
|
|
59
61
|
MailSinkConfigWrapper,
|
|
62
|
+
PushoverSinkConfigWrapper,
|
|
63
|
+
GoogleChatSinkConfigWrapper,
|
|
60
64
|
]
|
|
61
65
|
]
|
|
62
66
|
]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
from typing import Optional, List
|
|
2
3
|
|
|
3
4
|
from hikaru.model.rel_1_26 import Container, Pod
|
|
4
5
|
|
|
@@ -8,7 +9,8 @@ from robusta.core.playbooks.prometheus_enrichment_utils import XAxisLine, YAxisL
|
|
|
8
9
|
from robusta.integrations.kubernetes.api_client_utils import parse_kubernetes_datetime
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
def create_container_graph(params: ResourceGraphEnricherParams, pod: Pod, oomkilled_container: PodContainer, show_limit=False
|
|
12
|
+
def create_container_graph(params: ResourceGraphEnricherParams, pod: Pod, oomkilled_container: PodContainer, show_limit=False,
|
|
13
|
+
metrics_legends_labels: Optional[List[str]] = None,):
|
|
12
14
|
container = oomkilled_container.container
|
|
13
15
|
oom_killed_status = oomkilled_container.state
|
|
14
16
|
labels = {
|
|
@@ -62,5 +64,6 @@ def create_container_graph(params: ResourceGraphEnricherParams, pod: Pod, oomkil
|
|
|
62
64
|
graph_duration_minutes=params.graph_duration_minutes,
|
|
63
65
|
lines=limit_lines,
|
|
64
66
|
title_override=f"{params.resource_type} Usage for container {container.name}",
|
|
67
|
+
metrics_legends_labels=metrics_legends_labels,
|
|
65
68
|
)
|
|
66
69
|
return graph_enrichment
|
|
@@ -15,6 +15,7 @@ from robusta.api import (
|
|
|
15
15
|
)
|
|
16
16
|
from robusta.core.discovery.top_service_resolver import TopLevelResource, TopServiceResolver
|
|
17
17
|
from robusta.core.playbooks.common import get_event_timestamp, get_events_list
|
|
18
|
+
from robusta.core.reporting.base import EnrichmentType
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
@action
|
|
@@ -53,7 +54,7 @@ def event_history(event: ExecutionBaseEvent):
|
|
|
53
54
|
warning_event.regarding.namespace,
|
|
54
55
|
)
|
|
55
56
|
if events_table:
|
|
56
|
-
finding.add_enrichment([events_table])
|
|
57
|
+
finding.add_enrichment([events_table], enrichment_type=EnrichmentType.k8s_events, title="Resource Events")
|
|
57
58
|
event.add_finding(finding, True)
|
|
58
59
|
reported_obj_history_list.append(warning_event_key)
|
|
59
60
|
|
{robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/node_playbook_utils.py
RENAMED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
from typing import Optional, List
|
|
2
3
|
|
|
3
4
|
from hikaru.model.rel_1_26 import Node
|
|
4
5
|
|
|
5
6
|
from robusta.core.model.base_params import ResourceChartItemType, ResourceChartResourceType, ResourceGraphEnricherParams
|
|
6
7
|
from robusta.core.playbooks.prometheus_enrichment_utils import create_resource_enrichment, get_node_internal_ip
|
|
8
|
+
from robusta.core.reporting.blocks import GraphBlock
|
|
7
9
|
|
|
8
10
|
|
|
9
|
-
def create_node_graph_enrichment(params: ResourceGraphEnricherParams, node: Node
|
|
11
|
+
def create_node_graph_enrichment(params: ResourceGraphEnricherParams, node: Node,
|
|
12
|
+
metrics_legends_labels: Optional[List[str]] = None,) -> GraphBlock:
|
|
10
13
|
start_at = datetime.now()
|
|
11
14
|
labels = {"node": node.metadata.name}
|
|
12
15
|
internal_ip = get_node_internal_ip(node)
|
|
@@ -20,5 +23,6 @@ def create_node_graph_enrichment(params: ResourceGraphEnricherParams, node: Node
|
|
|
20
23
|
ResourceChartItemType.Node,
|
|
21
24
|
prometheus_params=params,
|
|
22
25
|
graph_duration_minutes=params.graph_duration_minutes,
|
|
26
|
+
metrics_legends_labels=metrics_legends_labels,
|
|
23
27
|
)
|
|
24
28
|
return graph_enrichment
|
{robusta_cli-0.10.27a2 → robusta_cli-0.10.28a0}/src/robusta/core/playbooks/oom_killer_utils.py
RENAMED
|
@@ -10,6 +10,7 @@ from robusta.api import (
|
|
|
10
10
|
RegexReplacementStyle,
|
|
11
11
|
RobustaPod,
|
|
12
12
|
)
|
|
13
|
+
from robusta.core.reporting.base import EnrichmentType
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
def start_log_enrichment(
|
|
@@ -61,6 +62,8 @@ def start_log_enrichment(
|
|
|
61
62
|
log_name += f"/{container}"
|
|
62
63
|
event.add_enrichment(
|
|
63
64
|
[FileBlock(filename=f"{pod.metadata.name}.log", contents=log_data.encode())],
|
|
65
|
+
enrichment_type=EnrichmentType.text_file,
|
|
66
|
+
title="Pod Logs"
|
|
64
67
|
)
|
|
65
68
|
break
|
|
66
69
|
|