Skip to content

ROB-1441 atlas mongodb toolset #557

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Jun 26, 2025
Merged

ROB-1441 atlas mongodb toolset #557

merged 39 commits into from
Jun 26, 2025

Conversation

RoiGlinik
Copy link
Contributor

create new mongodb atlas tool for holmes.
supports

  1. alerts
  2. last 4 hours events
  3. last 4 hours events of specific type
  4. last hour logs
  5. last 24 hours slow queries

Copy link
Contributor

coderabbitai bot commented Jun 23, 2025

"""

Walkthrough

A new MongoDB Atlas toolset integration is introduced, providing tools for interacting with the Atlas API to retrieve alerts, events, slow queries, and logs. Supporting instruction and import changes are made, and the toolset is registered for use. Minor formatting adjustments are also applied to an unrelated context dictionary.

Changes

File(s) Change Summary
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py Added new MongoDB Atlas toolset implementation with multiple classes for API interaction.
holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2 Added instructions template for the MongoDB Atlas toolset.
holmes/plugins/toolsets/init.py Imported and registered the new MongoDBAtlasToolset.
holmes/core/conversations.py Reformatted the context dictionary construction (no logic change).

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Holmes
    participant MongoDBAtlasToolset
    participant MongoDB Atlas API

    User->>Holmes: Requests Atlas MongoDB info (alerts, slow queries, events, logs)
    Holmes->>MongoDBAtlasToolset: Invokes appropriate tool (e.g., ReturnProjectAlerts)
    MongoDBAtlasToolset->>MongoDB Atlas API: Authenticated API request
    MongoDB Atlas API-->>MongoDBAtlasToolset: Returns API response (data or error)
    MongoDBAtlasToolset-->>Holmes: Formats and returns tool result
    Holmes-->>User: Presents results or error message
Loading

"""

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (4)
holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2 (1)

4-4: Fix typo in instructions.

"collscan" appears to be a typo or needs clarification.

If "collscan" refers to collection scans, consider writing it as "collection scan queries" for clarity:

-* For performance issues or collscan queries use atlas_return_project_slow_queries to see a list of slow queries. YOU MUST check this for all processes of the project. ALWAYS show the query in the result for every slow query.
+* For performance issues or collection scan queries use atlas_return_project_slow_queries to see a list of slow queries. YOU MUST check this for all processes of the project. ALWAYS show the query in the result for every slow query.
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (3)

31-31: Fix typo in description.

-    description: str = "The MongoDB Atlas API allows access to Mongodb projects and processes. You can find logs, alerts, events, slow quereies and various metrics to understand the state of Mongodb projects."
+    description: str = "The MongoDB Atlas API allows access to Mongodb projects and processes. You can find logs, alerts, events, slow queries and various metrics to understand the state of Mongodb projects."

150-150: Consider consistent tool naming.

The tool name includes "processes" which doesn't match the naming pattern of other tools.

-    name: str = "atlas_return_project_processes_slow_queries"
+    name: str = "atlas_return_project_slow_queries"

74-76: Provide example configuration for better user guidance.

     def get_example_config(self) -> Dict[str, Any]:
-        return {}
+        return {
+            "public_key": "your-atlas-public-key",
+            "private_key": "your-atlas-private-key", 
+            "project_id": "your-project-id"
+        }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c447948 and 68433ca.

📒 Files selected for processing (4)
  • holmes/core/conversations.py (1 hunks)
  • holmes/plugins/toolsets/__init__.py (2 hunks)
  • holmes/plugins/toolsets/atlas_mongodb/instructions.jinja2 (1 hunks)
  • holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1 hunks)
🧰 Additional context used
🪛 Pylint (3.3.7)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py

[refactor] 22-22: Too few public methods (0/2)

(R0903)


[refactor] 85-100: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 196-214: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 251-263: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)

🪛 GitHub Actions: Build and test HolmesGPT
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py

[error] 239-239: mypy: Incompatible types in assignment (expression has type "int", variable has type "datetime") [assignment]

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build (3.12)
🔇 Additional comments (2)
holmes/plugins/toolsets/__init__.py (1)

33-33: LGTM!

The MongoDB Atlas toolset is properly imported and registered following the existing patterns.

Also applies to: 76-76

holmes/core/conversations.py (1)

267-269: Formatting change only.

This reformatting improves readability without affecting functionality.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (3)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (3)

143-144: Use consistent error handling pattern.

Also applies to: 173-174, 211-211, 219-219, 259-260, 267-268, 302-303


201-201: Fix incorrect tool name reference.

The data message references "atlas_return_events_type_from_project" but it should be the correct tool name.


225-225: Fix typo in class name.

Also applies to: 47-47

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0c79f68 and 0ed2269.

📒 Files selected for processing (1)
  • holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1)
holmes/core/tools.py (7)
  • CallablePrerequisite (307-308)
  • Tool (110-157)
  • ToolParameter (104-107)
  • Toolset (320-462)
  • StructuredToolResult (29-52)
  • ToolResultStatus (23-26)
  • _load_llm_instructions (457-462)
🪛 Pylint (3.3.7)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py

[refactor] 22-22: Too few public methods (0/2)

(R0903)


[refactor] 85-100: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 196-214: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 250-262: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.10)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.10)
  • GitHub Check: llm_evals

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (1)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1)

145-147: Use data= instead of error= for error payloads (consistency with base pattern)

Previous review already flagged this. Stick to one convention:
status=ERROR + data=<error message>.

-                error=f"Exception {self.name}: {str(e)}",
+                data=f"Exception {self.name}: {str(e)}",

Apply in all highlighted locations.

Also applies to: 175-177, 214-215, 262-263, 270-271

🧹 Nitpick comments (5)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (5)

31-33: Fix typo and inconsistent capitalization in public description

"slow quereies""slow queries"
Also, keep the product name consistently capitalised (MongoDB, not Mongodb).

-    description: str = "The MongoDB Atlas API allows access to Mongodb projects and processes. You can find logs, alerts, events, slow quereies and various metrics to understand the state of Mongodb projects."
+    description: str = (
+        "The MongoDB Atlas API allows access to MongoDB projects and processes. "
+        "You can find logs, alerts, events, slow queries and various metrics to understand "
+        "the state of MongoDB projects."
+    )

77-79: Provide a concrete example configuration

An empty dict defeats the purpose of get_example_config(). Supply the keys a
user must set.

-    def get_example_config(self) -> Dict[str, Any]:
-        return {}
+    def get_example_config(self) -> Dict[str, Any]:
+        return {
+            "public_key": "ATLAS_PUBLIC_KEY",
+            "private_key": "ATLAS_PRIVATE_KEY",
+            "project_id": "64e7f8…",
+        }

84-104: Simplify return_result; unreachable else branch

response.raise_for_status() raises for non-2xx codes, so the subsequent
if/else already guarantees response.ok is true; the else is dead code.
Also, the “error” path should probably use data= not error= per the agreed
pattern.

-        response.raise_for_status()
-        if response.ok:
-
-        else:
-            return StructuredToolResult(
-                status=ToolResultStatus.ERROR,
-                error=f"Failed {self.name}.\n{response.text}",
-                return_code=response.status_code,
-                params=params,
-            )
+        response.raise_for_status()
+        res = response.json()
+        return StructuredToolResult(
+            status=ToolResultStatus.SUCCESS if res.get(field, []) else ToolResultStatus.NO_DATA,
+            data=res,
+            params=params,
+        )

155-161: Parameter description typos and clarity

  • “procecess” → “processes”
  • Avoid telling the caller which tool to call in a parameter description
    (that belongs in overall instructions).
-            description="Combination of host and port that serves the MongoDB process. call tool atlas_return_project_processes tool to get host+port of project procecess.",
+            description="Combination of host and port that serves the MongoDB process (format: <hostname>:<port>).",

253-265: Remove redundant else after a guaranteed return

return inside the if response.ok already exits; the else section can be
unindented one level to improve readability (pylint R1705).

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0ed2269 and 7e4e320.

📒 Files selected for processing (1)
  • holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1)
holmes/core/tools.py (7)
  • CallablePrerequisite (307-308)
  • Tool (110-157)
  • ToolParameter (104-107)
  • Toolset (320-462)
  • StructuredToolResult (29-52)
  • ToolResultStatus (23-26)
  • _load_llm_instructions (457-462)
🪛 Pylint (3.3.7)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py

[refactor] 22-22: Too few public methods (0/2)

(R0903)


[refactor] 88-103: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 199-217: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 253-265: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: build (3.10)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.10)
  • GitHub Check: llm_evals
🔇 Additional comments (1)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1)

241-252: Validate startDate format for log endpoint

Atlas getHostLogs expects startDate ISO-8601 (YYYY-MM-DDTHH:MM:SSZ)
or milliseconds since epoch, not seconds. Passing a plain int of seconds
may yield 400 errors.

Request verification against the live API or docs before merging.

Copy link
Contributor

@arikalon1 arikalon1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice work

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (8)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (8)

31-31: Fix typo and inconsistent capitalization.

-    description: str = "The MongoDB Atlas API allows access to Mongodb projects and processes. You can find logs, alerts, events, slow quereies and various metrics to understand the state of Mongodb projects."
+    description: str = "The MongoDB Atlas API allows access to MongoDB projects and processes. You can find logs, alerts, events, slow queries and various metrics to understand the state of MongoDB projects."

37-37: Session object is created at import-time – make it instance-scoped.

-_session: requests.Session = PrivateAttr(default=requests.Session())
+_session: requests.Session = PrivateAttr(default_factory=requests.Session)

47-48: Fix typo in class name.

The class name ReturnLogsForProcessInPorject has a typo. It should be ReturnLogsForProcessInProject.

-                ReturnLogsForProcessInPorject(toolset=self),
+                ReturnLogsForProcessInProject(toolset=self),

71-75: Return explicit error messages from prerequisite callable.

-        except Exception:
+        except Exception as e:
             logging.exception(
                 "Invalid Atlas config. Failed to set up MongoDBAtlas toolset"
             )
-            return False, "Invalid Atlas config"
+            return False, f"Invalid Atlas config: {e}"

124-127: Use consistent error handling pattern.

-                data=f"Exception {self.name}: {str(e)}",
+                error=f"Exception {self.name}: {str(e)}",

168-168: Don't mutate caller's params dict.

-                process_id=params.pop("process_id", ""),
+                process_id=params.get("process_id", ""),

204-204: Fix incorrect tool name reference.

-                data = f"last 4 hours eventTypeName and # of occurrences list: {events_counter} \n to get more information about a given eventTypeName call atlas_return_events_type_from_project"
+                data = f"last 4 hours eventTypeName and # of occurrences list: {events_counter} \n to get more information about a given eventTypeName call atlas_return_events_type_from_project with eventType parameter"

228-228: Fix typo in class name.

-class ReturnLogsForProcessInPorject(MongoDBAtlasBaseTool):
+class ReturnLogsForProcessInProject(MongoDBAtlasBaseTool):
🧹 Nitpick comments (3)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (3)

88-103: Simplify conditional logic by removing unnecessary else block.

The else block is unnecessary after the return statement.

 def return_result(
     self, response: requests.Response, params: Any, field: str = "results"
 ) -> StructuredToolResult:
     response.raise_for_status()
     if response.ok:
         res = response.json()
         return StructuredToolResult(
             status=ToolResultStatus.SUCCESS
             if res.get(field, [])
             else ToolResultStatus.NO_DATA,
             data=res,
             params=params,
         )
-    else:
-        return StructuredToolResult(
-            status=ToolResultStatus.ERROR,
-            error=f"Failed {self.name}.\n{response.text}",
-            return_code=response.status_code,
-            params=params,
-        )
+    return StructuredToolResult(
+        status=ToolResultStatus.ERROR,
+        error=f"Failed {self.name}.\n{response.text}",
+        return_code=response.status_code,
+        params=params,
+    )

199-217: Simplify conditional logic by removing unnecessary else block.

         response.raise_for_status()
         if response.ok:
             res = response.json()
             events_counter = Counter(
                 [event.get("eventTypeName") for event in res.get("results", [])]
             )
             data = f"last 4 hours eventTypeName and # of occurrences list: {events_counter} \n to get more information about a given eventTypeName call atlas_return_events_type_from_project with eventType parameter"
             status = (
                 ToolResultStatus.SUCCESS
                 if events_counter
                 else ToolResultStatus.NO_DATA
             )
             return StructuredToolResult(status=status, data=data, params=params)
-        else:
-            return StructuredToolResult(
-                status=ToolResultStatus.ERROR,
-                error=f"Failed {self.name}. \n{response.text}",
-                return_code=response.status_code,
-                params=params,
-            )
+        return StructuredToolResult(
+            status=ToolResultStatus.ERROR,
+            error=f"Failed {self.name}. \n{response.text}",
+            return_code=response.status_code,
+            params=params,
+        )

253-265: Simplify conditional logic by removing unnecessary else block.

         response.raise_for_status()
         if response.ok:
             with gzip.GzipFile(fileobj=io.BytesIO(response.content)) as gz:
                 text_data = gz.read().decode("utf-8")
             return StructuredToolResult(
                 status=ToolResultStatus.SUCCESS, data=text_data, params=params
             )
-        else:
-            return StructuredToolResult(
-                status=ToolResultStatus.ERROR,
-                error=f"Failed {self.name}. \n{response.text}",
-                return_code=response.status_code,
-                params=params,
-            )
+        return StructuredToolResult(
+            status=ToolResultStatus.ERROR,
+            error=f"Failed {self.name}. \n{response.text}",
+            return_code=response.status_code,
+            params=params,
+        )
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7e4e320 and 22c225c.

📒 Files selected for processing (1)
  • holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py (1 hunks)
🧰 Additional context used
🪛 Pylint (3.3.7)
holmes/plugins/toolsets/atlas_mongodb/mongodb_atlas.py

[refactor] 22-22: Too few public methods (0/2)

(R0903)


[refactor] 88-103: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 199-217: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)


[refactor] 253-265: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it

(R1705)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.10)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.11)
  • GitHub Check: build (3.12)
  • GitHub Check: build (3.10)
  • GitHub Check: llm_evals

Copy link
Contributor

Results of HolmesGPT evals

Test suite Test case Status
ask_holmes 01_how_many_pods ⚠️
ask_holmes 02_what_is_wrong_with_pod
ask_holmes 03_what_is_the_command_to_port_forward
ask_holmes 04_related_k8s_events
ask_holmes 05_image_version
ask_holmes 06_explain_issue
ask_holmes 07_high_latency
ask_holmes 08_sock_shop_frontend ⚠️
ask_holmes 09_crashpod
ask_holmes 10_image_pull_backoff
ask_holmes 11_init_containers
ask_holmes 12_job_crashing
ask_holmes 13_pending_node_selector
ask_holmes 14_pending_resources
ask_holmes 15_failed_readiness_probe
ask_holmes 16_failed_no_toolset_found
ask_holmes 17_oom_kill
ask_holmes 18_crash_looping_v2
ask_holmes 19_detect_missing_app_details
ask_holmes 20_long_log_file_search
ask_holmes 21_job_fail_curl_no_svc_account ⚠️
ask_holmes 22_high_latency_dbi_down ⚠️
ask_holmes 23_app_error_in_current_logs
ask_holmes 24_misconfigured_pvc
ask_holmes 25_misconfigured_ingress_class ⚠️
ask_holmes 26_multi_container_logs
ask_holmes 27_permissions_error_no_helm_tools
ask_holmes 28_permissions_error_helm_tools_enabled
ask_holmes 29_events_from_alert_manager
ask_holmes 30_basic_promql_graph_cluster_memory
ask_holmes 31_basic_promql_graph_pod_memory
ask_holmes 32_basic_promql_graph_pod_cpu
ask_holmes 33_http_latency_graph
ask_holmes 34_memory_graph
ask_holmes 35_tempo
ask_holmes 36_argocd_find_resource
ask_holmes 37_argocd_wrong_namespace ⚠️
ask_holmes 38_rabbitmq_split_head
ask_holmes 39_failed_toolset ⚠️
ask_holmes 40_disabled_toolset
ask_holmes 41_setup_argo
ask_holmes 42_dns_issues_result_all_tools ⚠️
ask_holmes 42_dns_issues_result_new_tools ⚠️
ask_holmes 42_dns_issues_result_old_tools ⚠️
ask_holmes 42_dns_issues_steps_new_all_tools ⚠️
ask_holmes 42_dns_issues_steps_new_tools ⚠️
ask_holmes 42_dns_issues_steps_old_tools ⚠️
ask_holmes 43_current_datetime_from_prompt
ask_holmes 43_slack_deployment_logs
ask_holmes 44_slack_statefulset_logs
ask_holmes 45_fetch_deployment_logs_simple
ask_holmes 46_job_crashing_no_longer_exists ⚠️
ask_holmes 47_truncated_logs_context_window ⚠️
ask_holmes 48_logs_since_thursday ⚠️
ask_holmes 49_logs_since_last_week
ask_holmes 50_logs_since_specific_date ⚠️
ask_holmes 51_logs_summarize_errors
ask_holmes 52_logs_login_issues ⚠️
ask_holmes 53_logs_find_term
investigate 01_oom_kill
investigate 02_crashloop_backoff
investigate 03_cpu_throttling
investigate 04_image_pull_backoff
investigate 05_crashpod
investigate 06_job_failure
investigate 07_job_syntax_error
investigate 08_memory_pressure
investigate 09_high_latency
investigate 10_KubeDeploymentReplicasMismatch
investigate 11_KubePodCrashLooping
investigate 12_KubePodNotReady
investigate 13_Watchdog
investigate 14_tempo
investigate 15_dns_resolution ⚠️

Legend

  • ✅ the test was successful
  • ⚠️ the test failed but is known to be flakky or known to fail
  • ❌ the test failed and should be fixed before merging the PR

@arikalon1 arikalon1 merged commit 0d4ff0a into master Jun 26, 2025
11 checks passed
@arikalon1 arikalon1 deleted the ROB-1441-mongo-trun1 branch June 26, 2025 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants