robusta-cli 0.12.0__tar.gz → 0.13.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.
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/PKG-INFO +5 -3
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/pyproject.toml +8 -8
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/_version.py +1 -1
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/api/__init__.py +1 -1
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/self_host.py +18 -6
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/env_vars.py +2 -1
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/dal/supabase_dal.py +81 -91
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/robusta_sink.py +48 -51
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/sink_base.py +1 -1
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webhook/webhook_sink.py +14 -1
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webhook/webhook_sink_params.py +1 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/custom_triggers.py +2 -0
- robusta_cli-0.13.0/src/robusta/core/triggers/pod_evicted_trigger.py +55 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/custom_models.py +2 -2
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/zulip/sender.py +2 -2
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/LICENSE +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/auth.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/backend_profile.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/eula.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/integrations_cmd.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/main.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/playbooks_cmd.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/slack_feedback_message.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/slack_verification.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/cli/utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/discovery/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/discovery/discovery.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/discovery/resource_names.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/discovery/top_service_resolver.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/discovery/utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/exceptions.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/base_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/cluster_status.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/events.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/helm_release.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/jobs.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/k8s_operation_type.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/namespaces.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/nodes.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/pods.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/runner_config.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/model/services.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/persistency/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/persistency/in_memory.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/persistency/scheduled_jobs_states_dal.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/actions_registry.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/base_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/common.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/container_playbook_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/crash_reporter.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/generation.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/internal/discovery_events.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/job_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/node_playbook_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/oom_killer_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/playbook_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/playbooks_event_handler.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/playbooks_event_handler_impl.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/pod_utils/crashloop_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/pod_utils/imagepull_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/pod_utils/pending_pod_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/prometheus_enrichment_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/playbooks/trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/pubsub/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/pubsub/event_emitter.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/pubsub/event_subscriber.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/pubsub/events_pubsub.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/action_requests.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/base.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/blocks.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/callbacks.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/consts.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/custom_rendering.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/finding_subjects.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/reporting/utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/schedule/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/schedule/model.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/schedule/scheduler.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/common/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/common/channel_transformer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/common/html_tools.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/datadog/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/datadog/datadog_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/datadog/datadog_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/discord/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/discord/discord_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/discord/discord_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/file/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/file/file_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/file/file_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/file/object_traverser.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/google_chat/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/google_chat/google_chat.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/google_chat/google_chat_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/jira/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/jira/jira_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/jira/jira_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/kafka/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/kafka/kafka_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/kafka/kafka_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mail/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mail/mail_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mail/mail_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mattermost/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mattermost/mattermost_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/mattermost/mattermost_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/msteams/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/msteams/msteams_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/msteams/msteams_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/opsgenie/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/opsgenie/opsgenie_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/opsgenie/opsgenie_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pagerduty/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pagerduty/pagerduty_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pagerduty/pagerduty_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pushover/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pushover/pushover_client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pushover/pushover_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/pushover/pushover_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/dal/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/dal/model_conversion.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/discovery_metrics.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/prometheus_health_checker.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/robusta_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/account_resource_fetcher.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/base_resource_manager.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/prometheus_alert_resource_manager.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/rrm.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/rrm/types.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/rocketchat/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/rocketchat/rocketchat_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/rocketchat/rocketchat_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/servicenow/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/servicenow/servicenow_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/servicenow/servicenow_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/sink_base_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/sink_config.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/sink_factory.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/slack/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/slack/slack_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/slack/slack_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/telegram/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/telegram/telegram_client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/telegram/telegram_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/telegram/telegram_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/timing.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/transformer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/victorops/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/victorops/victorops_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/victorops/victorops_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webex/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webex/webex_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webex/webex_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/webhook/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/yamessenger/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/yamessenger/yamessenger_client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/yamessenger/yamessenger_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/yamessenger/yamessenger_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/zulip/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/zulip/zulip_sink.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/zulip/zulip_sink_params.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/container_oom_killed_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/error_event_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/helm_releases_triggers.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/job_failed_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/multi_resources_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/oom_killed_trigger_base.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/pod_crash_loop_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/pod_image_pull_backoff.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/triggers/pod_oom_killed_trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/argocd/argocd_client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/common/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/common/requests.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/discord/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/discord/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/git/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/git/git_repo.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/git/well_known_hosts.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/google_chat/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/google_chat/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/grafana.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/helper.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/jira/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/jira/client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/jira/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/api_client_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/events.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/models.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/triggers.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/v1/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/autogenerated/v1/models.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/base_event.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/base_triggers.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/model_not_found_exception.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/process_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/kubernetes/templates.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/mail/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/mail/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/mattermost/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/mattermost/client.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/mattermost/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_adaptive_card_files.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_adaptive_card_files_image.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_adaptive_card_files_text.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_action.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_base.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_card.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_column.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_container.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_images.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_table.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_elements/msteams_text_block.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_mark_down_fix_url.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/msteams_msg.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/msteams/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/openshift/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/openshift/token.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/prometheus/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/prometheus/models.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/prometheus/trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/prometheus/utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/receiver.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/resource_analysis/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/resource_analysis/cpu_analyzer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/resource_analysis/memory_analyzer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/resource_analysis/node_cpu_analyzer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/resource_analysis/prometheus_analyzer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/rocketchat/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/rocketchat/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/event.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/models.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/playbook_scheduler.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/playbook_scheduler_manager.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/playbook_scheduler_manager_impl.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/scheduled/trigger.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/servicenow/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/servicenow/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/slack/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/slack/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/webex/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/webex/sender.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/integrations/zulip/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/model/alert_relabel_config.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/model/config.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/model/playbook_action.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/model/playbook_definition.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/patch/patch.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/config_loader.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/log_init.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/main.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/not_found_exception.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/object_updater.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/process_setup.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/ssl_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/telemetry.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/telemetry_service.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/web.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/runner/web_api.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/__init__.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/auth_provider.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/base64_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/cluster_provider_discovery.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/common.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/decorators.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/docs.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/documented_pydantic.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/error_codes.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/file_system_watcher.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/function_hashes.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/json_schema.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/parsing.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/rate_limiter.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/scope.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/server_start.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/service_discovery.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/silence_utils.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/stack_tracer.py +0 -0
- {robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/utils/task_queue.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robusta-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.13.0
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Natan Yellin
|
|
6
6
|
Author-email: aantn@users.noreply.github.com
|
|
@@ -31,7 +31,8 @@ Requires-Dist: fpdf2 (>=2.7.1,<3.0.0)
|
|
|
31
31
|
Requires-Dist: grafana-api (>=1.0.3,<2.0.0) ; extra == "all"
|
|
32
32
|
Requires-Dist: hikaru-model-26 (>=1.1.1,<2.0.0)
|
|
33
33
|
Requires-Dist: humanize (>=3.13.1,<4.0.0)
|
|
34
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: idna (>=3.7)
|
|
35
|
+
Requires-Dist: jinja2 (>=3.1.4)
|
|
35
36
|
Requires-Dist: kafka-python (>=2.0.2,<3.0.0) ; extra == "all"
|
|
36
37
|
Requires-Dist: kubernetes (>=26.1.0,<27.0.0)
|
|
37
38
|
Requires-Dist: markdown2 (>=2.4.2,<3.0.0)
|
|
@@ -48,7 +49,7 @@ Requires-Dist: rocketchat-api (>=1.30.0,<2.0.0)
|
|
|
48
49
|
Requires-Dist: sentry-sdk (>=1.5.2,<2.0.0) ; extra == "all"
|
|
49
50
|
Requires-Dist: setuptools (>=68.2.2,<69.0.0)
|
|
50
51
|
Requires-Dist: slack-sdk (>=3.23.0,<4.0.0)
|
|
51
|
-
Requires-Dist: supabase (>=
|
|
52
|
+
Requires-Dist: supabase (>=2.4,<3.0) ; extra == "all"
|
|
52
53
|
Requires-Dist: tabulate (>=0.8.10,<0.9.0) ; extra == "all"
|
|
53
54
|
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
|
54
55
|
Requires-Dist: typer (>=0.4.1,<0.5.0)
|
|
@@ -56,3 +57,4 @@ Requires-Dist: watchdog (>=2.1.0,<3.0.0) ; extra == "all"
|
|
|
56
57
|
Requires-Dist: watchgod (>=0.7,<0.8)
|
|
57
58
|
Requires-Dist: webexteamssdk (>=1.6.1,<2.0.0)
|
|
58
59
|
Requires-Dist: websocket-client (==1.3.3)
|
|
60
|
+
Requires-Dist: werkzeug (>=3.0.3)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "robusta-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.13.0"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Natan Yellin <aantn@users.noreply.github.com>"]
|
|
6
6
|
packages = [
|
|
@@ -32,11 +32,13 @@ pydantic = "^1.8.1"
|
|
|
32
32
|
kubernetes = "^26.1.0"
|
|
33
33
|
click-spinner = "^0.1.10"
|
|
34
34
|
pymsteams = "^0.1.16"
|
|
35
|
-
|
|
35
|
+
idna= { version = ">=3.7", optional = true }
|
|
36
|
+
supabase = "^2.4"
|
|
36
37
|
tabulate = { version = "^0.8.10" }
|
|
37
38
|
slack-sdk = { version = "^3.23.0" }
|
|
38
39
|
Flask = { version = "^3.0.0", optional = true }
|
|
39
|
-
|
|
40
|
+
werkzeug = { version = ">=3.0.3", optional = true }
|
|
41
|
+
jinja2 = { version = ">=3.1.4", optional = true }
|
|
40
42
|
grafana-api = { version = "^1.0.3", optional = true }
|
|
41
43
|
watchdog = { version = "^2.1.0", optional = true }
|
|
42
44
|
better-exceptions = { version = "^0.3.3", optional = true }
|
|
@@ -59,11 +61,6 @@ webexteamssdk = "^1.6.1"
|
|
|
59
61
|
bitmath = "^1.3.3.1"
|
|
60
62
|
croniter = "^1.3.15"
|
|
61
63
|
humanize = "^3.13.1"
|
|
62
|
-
|
|
63
|
-
# The following are added to speed up poetry dependency resolution
|
|
64
|
-
botocore = "1.31.72"
|
|
65
|
-
boto3 = "1.28.72"
|
|
66
|
-
|
|
67
64
|
# we're freezing a specific version here because the latest version doesn't have prebuilt wheels on pypi
|
|
68
65
|
# and therefore requires gcc to install which we'd like to avoid
|
|
69
66
|
# this is similar to the issue at https://github.com/dulwich/dulwich/issues/839
|
|
@@ -77,6 +74,9 @@ hikaru-model-26 = "^1.1.1"
|
|
|
77
74
|
apprise = "^1.5.0"
|
|
78
75
|
rocketchat-api = "^1.30.0"
|
|
79
76
|
pydash = "8.0.0"
|
|
77
|
+
# The following are added to speed up poetry dependency resolution
|
|
78
|
+
botocore = "1.31.72"
|
|
79
|
+
boto3 = "1.28.72"
|
|
80
80
|
|
|
81
81
|
[tool.poetry.dev-dependencies]
|
|
82
82
|
pre-commit = "^2.13.0"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# this is updated by .github/workflows/release.yaml
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.13.0"
|
|
@@ -70,12 +70,12 @@ from robusta.core.model.env_vars import (
|
|
|
70
70
|
ROBUSTA_LOGO_URL,
|
|
71
71
|
ROBUSTA_TELEMETRY_ENDPOINT,
|
|
72
72
|
ROBUSTA_UI_DOMAIN,
|
|
73
|
+
RUNNER_SERVICE_ACCOUNT,
|
|
73
74
|
RUNNER_VERSION,
|
|
74
75
|
SEND_ADDITIONAL_TELEMETRY,
|
|
75
76
|
SERVICE_CACHE_MAX_SIZE,
|
|
76
77
|
SERVICE_CACHE_TTL_SEC,
|
|
77
78
|
SLACK_TABLE_COLUMNS_LIMIT,
|
|
78
|
-
SUPABASE_LOGIN_RATE_LIMIT_SEC,
|
|
79
79
|
TEAMS_IMAGE_WIDTH,
|
|
80
80
|
TELEMETRY_PERIODIC_SEC,
|
|
81
81
|
TRACE_INCOMING_REQUESTS,
|
|
@@ -74,6 +74,10 @@ class RobustaRelay(BaseModel):
|
|
|
74
74
|
apiEndpointPrefix: str
|
|
75
75
|
apiNodePort: int = 30313 # api.domain
|
|
76
76
|
wsNodePort: int = 30314 # relay.domain
|
|
77
|
+
relayPrefix: str = "relay"
|
|
78
|
+
platformPrefix: str = "platform"
|
|
79
|
+
apiPrefix: str = "api"
|
|
80
|
+
isOnPrem: bool = True
|
|
77
81
|
|
|
78
82
|
def __init__(
|
|
79
83
|
self,
|
|
@@ -184,6 +188,13 @@ def gen_config(
|
|
|
184
188
|
)
|
|
185
189
|
values.KONG_HTTP_NODE_PORT = db_nport
|
|
186
190
|
|
|
191
|
+
backendProfile = BackendProfile.fromDomainProvider(
|
|
192
|
+
domain=domain,
|
|
193
|
+
api_endpoint_prefix=api_endpoint_prefix,
|
|
194
|
+
platform_endpoint_prefix=platform_endpoint_prefix,
|
|
195
|
+
relay_endpoint_prefix=relay_ws_endpoint_prefix,
|
|
196
|
+
)
|
|
197
|
+
|
|
187
198
|
relayValues = RobustaRelay(
|
|
188
199
|
domain=domain,
|
|
189
200
|
anon_key=values.ANON_KEY,
|
|
@@ -193,8 +204,13 @@ def gen_config(
|
|
|
193
204
|
platform_endpoint_prefix=platform_endpoint_prefix,
|
|
194
205
|
api_endpoint_prefix=api_endpoint_prefix,
|
|
195
206
|
)
|
|
207
|
+
|
|
196
208
|
relayValues.apiNodePort = api_nport
|
|
197
209
|
relayValues.wsNodePort = ws_nport
|
|
210
|
+
relayValues.relayPrefix = relay_ws_endpoint_prefix
|
|
211
|
+
relayValues.platformPrefix = platform_endpoint_prefix
|
|
212
|
+
relayValues.apiPrefix = api_endpoint_prefix
|
|
213
|
+
|
|
198
214
|
|
|
199
215
|
uiValues = RobustaUI(
|
|
200
216
|
domain=domain,
|
|
@@ -215,12 +231,8 @@ def gen_config(
|
|
|
215
231
|
"RELAY": relay_ws_endpoint_prefix,
|
|
216
232
|
}
|
|
217
233
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
api_endpoint_prefix=api_endpoint_prefix,
|
|
221
|
-
platform_endpoint_prefix=platform_endpoint_prefix,
|
|
222
|
-
relay_endpoint_prefix=relay_ws_endpoint_prefix,
|
|
223
|
-
)
|
|
234
|
+
|
|
235
|
+
|
|
224
236
|
self_host_approval_url = "https://api.robusta.dev/terms-of-service.html"
|
|
225
237
|
typer.echo(f"By using this software you agree to the terms of service ({self_host_approval_url})\n")
|
|
226
238
|
write_values_files("self_host_values.yaml", "robusta_cli_config.json", values_dict, backendProfile)
|
|
@@ -27,7 +27,6 @@ CLUSTER_STATUS_PERIOD_SEC = int(os.environ.get("CLUSTER_STATUS_PERIOD_SEC", 60 *
|
|
|
27
27
|
DISCOVERY_CHECK_THRESHOLD_SEC = int(os.environ.get("DISCOVERY_CHECK_THRESHOLD_SEC", 60 * 50)) # 50 min
|
|
28
28
|
DISCOVERY_PROCESS_TIMEOUT_SEC = int(os.environ.get("DISCOVERY_PROCESS_TIMEOUT_SEC", 60 * 120)) # 120 min
|
|
29
29
|
DISCOVERY_WATCHDOG_CHECK_SEC = int(os.environ.get("DISCOVERY_WATCHDOG_CHECK_SEC", 15 * 120)) # 15 min
|
|
30
|
-
SUPABASE_LOGIN_RATE_LIMIT_SEC = int(os.environ.get("SUPABASE_LOGIN_RATE_LIMIT_SEC", 900))
|
|
31
30
|
SUPABASE_TIMEOUT_SECONDS = int(os.environ.get("SUPABASE_TIMEOUT_SECONDS", 60))
|
|
32
31
|
GRAFANA_RENDERER_URL = os.environ.get("GRAFANA_RENDERER_URL", "http://127.0.0.1:8281/render")
|
|
33
32
|
RESOURCE_UPDATES_CACHE_TTL_SEC = os.environ.get("RESOURCE_UPDATES_CACHE_TTL_SEC", 120)
|
|
@@ -66,6 +65,8 @@ ENABLE_TELEMETRY = os.environ.get("ENABLE_TELEMETRY", "true").lower() == "true"
|
|
|
66
65
|
SEND_ADDITIONAL_TELEMETRY = os.environ.get("SEND_ADDITIONAL_TELEMETRY", "false").lower() == "true"
|
|
67
66
|
RELEASE_NAME = os.environ.get("RELEASE_NAME", "robusta")
|
|
68
67
|
|
|
68
|
+
RUNNER_SERVICE_ACCOUNT = os.environ.get("RUNNER_SERVICE_ACCOUNT", f"{RELEASE_NAME}-runner-service-account")
|
|
69
|
+
|
|
69
70
|
TELEMETRY_PERIODIC_SEC = int(os.environ.get("TELEMETRY_PERIODIC_SEC", 60 * 60 * 24)) # 24H
|
|
70
71
|
|
|
71
72
|
SLACK_TABLE_COLUMNS_LIMIT = int(os.environ.get("SLACK_TABLE_COLUMNS_LIMIT", 3))
|
{robusta_cli-0.12.0 → robusta_cli-0.13.0}/src/robusta/core/sinks/robusta/dal/supabase_dal.py
RENAMED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
import time
|
|
4
3
|
from collections import defaultdict
|
|
5
4
|
from datetime import datetime
|
|
6
5
|
from typing import Any, Dict, List, Optional
|
|
@@ -13,7 +12,7 @@ from supabase import create_client
|
|
|
13
12
|
from supabase.lib.client_options import ClientOptions
|
|
14
13
|
|
|
15
14
|
from robusta.core.model.cluster_status import ClusterStatus
|
|
16
|
-
from robusta.core.model.env_vars import
|
|
15
|
+
from robusta.core.model.env_vars import SUPABASE_TIMEOUT_SECONDS
|
|
17
16
|
from robusta.core.model.helm_release import HelmRelease
|
|
18
17
|
from robusta.core.model.jobs import JobInfo
|
|
19
18
|
from robusta.core.model.namespaces import NamespaceInfo
|
|
@@ -69,11 +68,10 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
69
68
|
self.key = key
|
|
70
69
|
self.account_id = account_id
|
|
71
70
|
self.cluster = cluster_name
|
|
72
|
-
options = ClientOptions(postgrest_client_timeout=SUPABASE_TIMEOUT_SECONDS)
|
|
71
|
+
options = ClientOptions(postgrest_client_timeout=SUPABASE_TIMEOUT_SECONDS, auto_refresh_token=True)
|
|
73
72
|
self.client = create_client(url, key, options)
|
|
74
73
|
self.email = email
|
|
75
74
|
self.password = password
|
|
76
|
-
self.sign_in_time = 0
|
|
77
75
|
self.sign_in()
|
|
78
76
|
self.client.auth.on_auth_state_change(self.__update_token_patch)
|
|
79
77
|
self.sink_name = sink_name
|
|
@@ -96,12 +94,11 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
96
94
|
).eq("scan_id", scan_id).execute()
|
|
97
95
|
except Exception as e:
|
|
98
96
|
logging.error(f"Failed to set scan state {scan_id} error: {e}")
|
|
99
|
-
self.handle_supabase_error()
|
|
100
97
|
raise
|
|
101
98
|
|
|
102
99
|
def insert_scan_meta(self, scan_id: str, start_time: datetime, scan_type: ScanType) -> None:
|
|
103
100
|
try:
|
|
104
|
-
self.
|
|
101
|
+
self.client.rpc(
|
|
105
102
|
"insert_scan_meta_v2",
|
|
106
103
|
{
|
|
107
104
|
"_account_id": self.account_id,
|
|
@@ -110,13 +107,12 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
110
107
|
"_scan_start": str(start_time),
|
|
111
108
|
"_type": scan_type,
|
|
112
109
|
},
|
|
113
|
-
)
|
|
110
|
+
).execute()
|
|
114
111
|
except requests.exceptions.HTTPError as e:
|
|
115
112
|
logging.exception(f"Failed to insert scan meta {scan_id}, error: {e}, response: {e.response.text}")
|
|
116
113
|
raise
|
|
117
114
|
except Exception as e:
|
|
118
115
|
logging.exception(f"Failed to persist scan meta {scan_id} error: {e}")
|
|
119
|
-
self.handle_supabase_error()
|
|
120
116
|
raise
|
|
121
117
|
|
|
122
118
|
def persist_scan(self, block: ScanReportBlock):
|
|
@@ -125,7 +121,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
125
121
|
self.client.table(SCANS_RESULT_TABLE).insert(db_scanResults, returning=ReturnMethod.minimal).execute()
|
|
126
122
|
except Exception as e:
|
|
127
123
|
logging.exception(f"Failed to persist scan {block.scan_id} error: {e}")
|
|
128
|
-
self.handle_supabase_error()
|
|
129
124
|
raise
|
|
130
125
|
|
|
131
126
|
try:
|
|
@@ -139,7 +134,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
139
134
|
).eq("scan_id", block.scan_id).execute()
|
|
140
135
|
except Exception as e:
|
|
141
136
|
logging.exception(f"Failed to set scan state {block.scan_id} error: {e}")
|
|
142
|
-
self.handle_supabase_error()
|
|
143
137
|
raise
|
|
144
138
|
|
|
145
139
|
def persist_finding(self, finding: Finding):
|
|
@@ -148,13 +142,12 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
148
142
|
|
|
149
143
|
scans, enrichments = [], []
|
|
150
144
|
for enrich in finding.enrichments:
|
|
151
|
-
(
|
|
145
|
+
if enrich.annotations.get(EnrichmentAnnotation.SCAN, False):
|
|
152
146
|
scans.append(enrich)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
)
|
|
147
|
+
else:
|
|
148
|
+
enrichments.append(enrich)
|
|
156
149
|
|
|
157
|
-
if
|
|
150
|
+
if scans and not enrichments:
|
|
158
151
|
return
|
|
159
152
|
|
|
160
153
|
for enrichment in enrichments:
|
|
@@ -172,20 +165,16 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
172
165
|
|
|
173
166
|
try:
|
|
174
167
|
self.client.table(EVIDENCE_TABLE).insert(evidence, returning=ReturnMethod.minimal).execute()
|
|
175
|
-
except Exception
|
|
176
|
-
logging.
|
|
168
|
+
except Exception:
|
|
169
|
+
logging.exception(f"Failed to persist finding {finding.id} enrichment {enrichment}")
|
|
170
|
+
|
|
177
171
|
try:
|
|
178
|
-
(
|
|
179
|
-
self.
|
|
180
|
-
.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
.execute()
|
|
185
|
-
)
|
|
186
|
-
except Exception as e:
|
|
187
|
-
logging.error(f"Failed to persist finding {finding.id} error: {e}")
|
|
188
|
-
self.handle_supabase_error()
|
|
172
|
+
self.client.table(ISSUES_TABLE).insert(
|
|
173
|
+
ModelConversion.to_finding_json(self.account_id, self.cluster, finding),
|
|
174
|
+
returning=ReturnMethod.minimal,
|
|
175
|
+
).execute()
|
|
176
|
+
except Exception:
|
|
177
|
+
logging.exception(f"Failed to persist finding {finding.id}")
|
|
189
178
|
|
|
190
179
|
def to_service(self, service: ServiceInfo) -> Dict[Any, Any]:
|
|
191
180
|
return {
|
|
@@ -213,8 +202,7 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
213
202
|
try:
|
|
214
203
|
self.client.table(SERVICES_TABLE).upsert(db_services, returning=ReturnMethod.minimal).execute()
|
|
215
204
|
except Exception as e:
|
|
216
|
-
logging.
|
|
217
|
-
self.handle_supabase_error()
|
|
205
|
+
logging.exception(f"Failed to persist services {services} error: {e}")
|
|
218
206
|
raise
|
|
219
207
|
|
|
220
208
|
def get_active_services(self) -> List[ServiceInfo]:
|
|
@@ -238,7 +226,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
238
226
|
)
|
|
239
227
|
except Exception as e:
|
|
240
228
|
logging.error(f"Failed to get existing services (supabase) error: {e}")
|
|
241
|
-
self.handle_supabase_error()
|
|
242
229
|
raise
|
|
243
230
|
|
|
244
231
|
return [
|
|
@@ -267,7 +254,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
267
254
|
)
|
|
268
255
|
except Exception as e:
|
|
269
256
|
logging.error(f"Failed to check cluster issues: {e}")
|
|
270
|
-
self.handle_supabase_error()
|
|
271
257
|
raise
|
|
272
258
|
|
|
273
259
|
return len(res.data) > 0
|
|
@@ -284,7 +270,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
284
270
|
)
|
|
285
271
|
except Exception as e:
|
|
286
272
|
logging.error(f"Failed to get existing nodes (supabase) error: {e}")
|
|
287
|
-
self.handle_supabase_error()
|
|
288
273
|
raise
|
|
289
274
|
|
|
290
275
|
return [
|
|
@@ -327,7 +312,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
327
312
|
self.client.table(NODES_TABLE).upsert(db_nodes, returning=ReturnMethod.minimal).execute()
|
|
328
313
|
except Exception as e:
|
|
329
314
|
logging.error(f"Failed to persist node {nodes} error: {e}")
|
|
330
|
-
self.handle_supabase_error()
|
|
331
315
|
raise
|
|
332
316
|
|
|
333
317
|
@staticmethod
|
|
@@ -351,7 +335,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
351
335
|
)
|
|
352
336
|
except Exception as e:
|
|
353
337
|
logging.error(f"Failed to get existing jobs (supabase) error: {e}")
|
|
354
|
-
self.handle_supabase_error()
|
|
355
338
|
raise
|
|
356
339
|
|
|
357
340
|
return [JobInfo.from_db_row(job) for job in res.data]
|
|
@@ -368,7 +351,9 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
368
351
|
def is_job_healthy(self, job: JobInfo) -> bool:
|
|
369
352
|
is_running = job.status.active > 0
|
|
370
353
|
is_completed = [condition for condition in job.status.conditions if condition.type == "Complete"]
|
|
371
|
-
|
|
354
|
+
is_starting = not any([job.status.active, job.status.failed, job.status.succeeded, job.status.conditions])
|
|
355
|
+
|
|
356
|
+
return is_running or len(is_completed) > 0 or is_starting
|
|
372
357
|
|
|
373
358
|
def publish_jobs(self, jobs: List[JobInfo]):
|
|
374
359
|
if not jobs:
|
|
@@ -379,7 +364,40 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
379
364
|
self.client.table(JOBS_TABLE).upsert(db_jobs, returning=ReturnMethod.minimal).execute()
|
|
380
365
|
except Exception as e:
|
|
381
366
|
logging.error(f"Failed to persist jobs {jobs} error: {e}")
|
|
382
|
-
|
|
367
|
+
raise
|
|
368
|
+
|
|
369
|
+
def remove_deleted_node(self, node_name: str):
|
|
370
|
+
if not node_name:
|
|
371
|
+
return
|
|
372
|
+
|
|
373
|
+
try:
|
|
374
|
+
(
|
|
375
|
+
self.client.table(NODES_TABLE)
|
|
376
|
+
.delete(returning=ReturnMethod.minimal)
|
|
377
|
+
.eq("account_id", self.account_id)
|
|
378
|
+
.eq("cluster_id", self.cluster)
|
|
379
|
+
.eq("name", node_name)
|
|
380
|
+
.execute()
|
|
381
|
+
)
|
|
382
|
+
except Exception as e:
|
|
383
|
+
logging.exception(f"Failed to delete node {node_name} error: {e}")
|
|
384
|
+
raise
|
|
385
|
+
|
|
386
|
+
def remove_deleted_service(self, service_key: str):
|
|
387
|
+
if not service_key:
|
|
388
|
+
return
|
|
389
|
+
|
|
390
|
+
try:
|
|
391
|
+
(
|
|
392
|
+
self.client.table(SERVICES_TABLE)
|
|
393
|
+
.delete(returning=ReturnMethod.minimal)
|
|
394
|
+
.eq("account_id", self.account_id)
|
|
395
|
+
.eq("cluster", self.cluster)
|
|
396
|
+
.eq("service_key", service_key)
|
|
397
|
+
.execute()
|
|
398
|
+
)
|
|
399
|
+
except Exception as e:
|
|
400
|
+
logging.exception(f"Failed to delete service {service_key} error: {e}")
|
|
383
401
|
raise
|
|
384
402
|
|
|
385
403
|
def remove_deleted_job(self, job: JobInfo):
|
|
@@ -396,8 +414,24 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
396
414
|
.execute()
|
|
397
415
|
)
|
|
398
416
|
except Exception as e:
|
|
399
|
-
logging.
|
|
400
|
-
|
|
417
|
+
logging.exception(f"Failed to delete job {job} error: {e}")
|
|
418
|
+
raise
|
|
419
|
+
|
|
420
|
+
def remove_deleted_namespace(self, namespace_name: str):
|
|
421
|
+
if not namespace_name:
|
|
422
|
+
return
|
|
423
|
+
|
|
424
|
+
try:
|
|
425
|
+
(
|
|
426
|
+
self.client.table(NAMESPACES_TABLE)
|
|
427
|
+
.delete(returning=ReturnMethod.minimal)
|
|
428
|
+
.filter("account_id", "eq", self.account_id)
|
|
429
|
+
.filter("cluster_id", "eq", self.cluster)
|
|
430
|
+
.eq("name", namespace_name)
|
|
431
|
+
.execute()
|
|
432
|
+
)
|
|
433
|
+
except Exception as e:
|
|
434
|
+
logging.exception(f"Failed to delete namespace {namespace_name} error: {e}")
|
|
401
435
|
raise
|
|
402
436
|
|
|
403
437
|
# helm release
|
|
@@ -413,7 +447,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
413
447
|
)
|
|
414
448
|
except Exception as e:
|
|
415
449
|
logging.error(f"Failed to get existing helm releases (supabase) error: {e}")
|
|
416
|
-
self.handle_supabase_error()
|
|
417
450
|
raise
|
|
418
451
|
|
|
419
452
|
return [HelmRelease.from_db_row(helm_release) for helm_release in res.data]
|
|
@@ -437,27 +470,13 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
437
470
|
self.client.table(HELM_RELEASES_TABLE).upsert(db_helm_releases, returning=ReturnMethod.minimal).execute()
|
|
438
471
|
except Exception as e:
|
|
439
472
|
logging.error(f"Failed to persist helm_releases {helm_releases} error: {e}")
|
|
440
|
-
self.handle_supabase_error()
|
|
441
473
|
raise
|
|
442
474
|
|
|
443
475
|
def sign_in(self):
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
self.client.auth.set_session(res.session.access_token, res.session.refresh_token)
|
|
449
|
-
self.client.postgrest.auth(res.session.access_token)
|
|
450
|
-
|
|
451
|
-
def handle_supabase_error(self):
|
|
452
|
-
"""Workaround for Gotrue bug in refresh token."""
|
|
453
|
-
# If there's an error during refresh token, no new refresh timer task is created, and the client remains not authenticated for good
|
|
454
|
-
# When there's an error connecting to supabase server, we will re-login, to re-authenticate the session.
|
|
455
|
-
# Adding rate-limiting mechanism, not to login too much because of other errors
|
|
456
|
-
# https://github.com/supabase/gotrue-py/issues/9
|
|
457
|
-
try:
|
|
458
|
-
self.sign_in()
|
|
459
|
-
except Exception:
|
|
460
|
-
logging.error("Failed to sign in on error", exc_info=True)
|
|
476
|
+
logging.info("Supabase dal login")
|
|
477
|
+
res = self.client.auth.sign_in_with_password({"email": self.email, "password": self.password})
|
|
478
|
+
self.client.auth.set_session(res.session.access_token, res.session.refresh_token)
|
|
479
|
+
self.client.postgrest.auth(res.session.access_token)
|
|
461
480
|
|
|
462
481
|
def to_db_cluster_status(self, data: ClusterStatus) -> Dict[str, Any]:
|
|
463
482
|
db_cluster_status = data.dict()
|
|
@@ -481,7 +500,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
481
500
|
)
|
|
482
501
|
except Exception as e:
|
|
483
502
|
logging.error(f"Failed to upsert {self.to_db_cluster_status(cluster_status)} error: {e}")
|
|
484
|
-
self.handle_supabase_error()
|
|
485
503
|
|
|
486
504
|
def get_active_namespaces(self) -> List[NamespaceInfo]:
|
|
487
505
|
try:
|
|
@@ -495,7 +513,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
495
513
|
)
|
|
496
514
|
except Exception as e:
|
|
497
515
|
logging.error(f"Failed to get existing namespaces (supabase) error: {e}")
|
|
498
|
-
self.handle_supabase_error()
|
|
499
516
|
raise
|
|
500
517
|
|
|
501
518
|
return [NamespaceInfo.from_db_row(namespace) for namespace in res.data]
|
|
@@ -516,7 +533,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
516
533
|
self.client.table(NAMESPACES_TABLE).upsert(db_namespaces, returning=ReturnMethod.minimal).execute()
|
|
517
534
|
except Exception as e:
|
|
518
535
|
logging.error(f"Failed to persist namespaces {namespaces} error: {e}")
|
|
519
|
-
self.handle_supabase_error()
|
|
520
536
|
raise
|
|
521
537
|
|
|
522
538
|
def publish_cluster_nodes(self, node_count: int, pod_count: int):
|
|
@@ -527,10 +543,9 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
527
543
|
"_pod_count": pod_count,
|
|
528
544
|
}
|
|
529
545
|
try:
|
|
530
|
-
self.
|
|
546
|
+
self.client.rpc(UPDATE_CLUSTER_NODE_COUNT, data).execute()
|
|
531
547
|
except Exception as e:
|
|
532
548
|
logging.error(f"Failed to publish node count {data} error: {e}")
|
|
533
|
-
self.handle_supabase_error()
|
|
534
549
|
|
|
535
550
|
logging.debug(f"cluster nodes: {UPDATE_CLUSTER_NODE_COUNT} => {data}")
|
|
536
551
|
|
|
@@ -548,7 +563,6 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
548
563
|
).execute()
|
|
549
564
|
except Exception as e:
|
|
550
565
|
logging.error(f"Failed to persist resource events error: {e}")
|
|
551
|
-
self.handle_supabase_error()
|
|
552
566
|
raise
|
|
553
567
|
|
|
554
568
|
def persist_platform_blocks(self, enrichment: Enrichment, finding_id):
|
|
@@ -601,9 +615,8 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
601
615
|
|
|
602
616
|
res = query_builder.execute()
|
|
603
617
|
except Exception as e:
|
|
604
|
-
msg =
|
|
618
|
+
msg = "Failed to get existing account resources (supabase) error"
|
|
605
619
|
logging.error(msg, exc_info=True)
|
|
606
|
-
self.handle_supabase_error()
|
|
607
620
|
raise e
|
|
608
621
|
|
|
609
622
|
account_resources_map: Dict[ResourceKind, List[AccountResource]] = defaultdict(list)
|
|
@@ -656,32 +669,10 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
656
669
|
)
|
|
657
670
|
|
|
658
671
|
self.client.table(ACCOUNT_RESOURCE_STATUS_TABLE).upsert(data).execute()
|
|
659
|
-
except Exception
|
|
660
|
-
logging.
|
|
661
|
-
self.handle_supabase_error()
|
|
672
|
+
except Exception:
|
|
673
|
+
logging.exception(f"Failed to set account resource status to {status_type}")
|
|
662
674
|
raise
|
|
663
675
|
|
|
664
|
-
def __rpc_patch(self, func_name: str, params: dict) -> Dict[str, Any]:
|
|
665
|
-
"""
|
|
666
|
-
Supabase client is async. Sync impl of rpc call
|
|
667
|
-
"""
|
|
668
|
-
headers = self.client.table("").session.headers
|
|
669
|
-
url: str = f"{self.client.rest_url}/rpc/{func_name}"
|
|
670
|
-
|
|
671
|
-
response = requests.post(url, headers=headers, json=params)
|
|
672
|
-
response.raise_for_status()
|
|
673
|
-
response_data = {}
|
|
674
|
-
try:
|
|
675
|
-
if response.content:
|
|
676
|
-
response_data = response.json()
|
|
677
|
-
except Exception: # this can be okay if no data is expected
|
|
678
|
-
logging.debug("Failed to parse rpc response data")
|
|
679
|
-
|
|
680
|
-
return {
|
|
681
|
-
"data": response_data,
|
|
682
|
-
"status_code": response.status_code,
|
|
683
|
-
}
|
|
684
|
-
|
|
685
676
|
def __update_token_patch(self, event, session):
|
|
686
677
|
logging.debug(f"Event {event}, Session {session}")
|
|
687
678
|
if session and event == "TOKEN_REFRESHED":
|
|
@@ -698,4 +689,3 @@ class SupabaseDal(AccountResourceFetcher):
|
|
|
698
689
|
)
|
|
699
690
|
except Exception as e:
|
|
700
691
|
logging.error(f"Failed to set cluster status active=False error: {e}")
|
|
701
|
-
self.handle_supabase_error()
|