This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| networks: | |
| app_network: | |
| driver: bridge | |
| services: | |
| db: | |
| image: docker.io/postgres:latest | |
| ports: | |
| - 5433:5432 | |
| command: ['postgres', '-c', 'log_statement=all'] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Plan for Implementing Circuit Breaker Functionality in Backstage Backend Using Opossum | |
| Overview | |
| The goal is to add circuit breaker protection to each backend plugin in Backstage using the Opossum library (assuming “opaussum” is a typo for “opossum”). This will ensure that if a plugin’s API endpoints experience repeated failures (e.g., internal errors leading to 500+ status codes), the circuit opens, and subsequent requests to that plugin are rejected with a 503 (Service Unavailable) response to prevent cascading failures. When the circuit half-opens and succeeds, it closes again. | |
| Key requirements: | |
| • Per-plugin circuits: Each backend plugin operates on its own independent circuit breaker instance. | |
| • Automatic configuration: The implementation uses Backstage’s service override mechanism, so no changes are needed in individual plugins. New plugins added via backend.add(...) will automatically inherit the circuit breaker without any additional code. | |
| This approach treats the circuit breaker as a server-side mech |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ### Limitations of Ingress Annotations for Custom 503 Responses | |
| - **No Direct Customization for Default 503 Errors**: The AWS Load Balancer Controller (LBC) Ingress annotations do not support modifying the response body or content of the default HTTP 503 "Service Unavailable" error that the Application Load Balancer (ALB) generates when a target group has no healthy or registered targets (e.g., no healthy pods). This is a core limitation of the ALB service itself, where such errors are handled at the infrastructure level before traffic reaches Kubernetes resources, and no annotations expose controls to override the hardcoded response. | |
| - **Health Check Annotations Are Insufficient**: Annotations like `alb.ingress.kubernetes.io/healthcheck-*` (e.g., path, protocol, success-codes) only configure how the ALB determines target health but do not influence the error response when all targets fail health checks. They cannot inject custom content into the ALB's failure response. | |
| - **Action Annotations Not Applica |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| To implement a circuit breaker that tracks errors per backend plugin in Backstage—triggering a cooldown (circuit open) when a plugin returns too many errors (e.g., 5xx status codes)—without requiring plugin developers to modify their code, customize the httpRouterService using a service factory override. This leverages Backstage’s backend architecture, where each plugin has its own isolated httpRouter instance (an Express Router), mounted at /api/. By overriding the core httpRouterService factory, you can inject a per-plugin circuit breaker middleware that monitors response statuses globally, applying to all plugins, including third-party ones. 20 0 11 | |
| This approach uses Opossum to manage the circuit state per plugin, manually recording successes/failures based on response status codes (e.g., counting 5xx as failures). When the error threshold is exceeded, the circuit opens, returning a 503 response for that plugin’s routes during cooldown. It aligns with the circuit breaker pattern for server-side resilience |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| general_settings: | |
| master_key: sk-ADMIN-KEY # your admin key | |
| user_header_name: X-OpenWebUI-User-Email | |
| litellm_settings: | |
| disable_end_user_cost_tracking: false | |
| disable_end_user_cost_tracking_prometheus_only: false | |
| extra_spend_tag_headers: | |
| - "X-OpenWebUI-User-Email" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| curl -H "Authorization: Bearer $OPENWEBUI_API_KEY" http://localhost:3000/api/models | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| // 3-a. Register WebUI as a provider | |
| "provider": { | |
| "openwebui": { | |
| "npm": "@ai-sdk/openai-compatible", // tells OpenCode the wire protocol | |
| "name": "Open WebUI (local)", // label shown in the /models list | |
| "options": { | |
| "baseURL": "http://localhost:3000/api" /* <-- your URL here */ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ARG PY_BASE=fcr.fmr.com/python:3.11-slim | |
| FROM ${PY_BASE} as runtime | |
| ENV HOME=/home/litellm | |
| RUN useradd -m -s /bin/bash litellm && python -m venv ${HOME}/venv | |
| ENV PATH="${HOME}/venv/bin:${PATH}" PYTHONHTTPSVERIFY=0 | |
| USER litellm | |
| WORKDIR /app | |
| ARG LITELLM_VERSION=1.74.3 | |
| ARG EXTRAS="proxy,prometheus,prisma,langfuse" | |
| RUN --mount=type=cache,target=${HOME}/.cache/pip pip install --no-cache-dir --trusted-host pypi.org --trusted-host files.pythonhosted.org "litellm[${EXTRAS}]==${LITELLM_VERSION}" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useQueries } from '@tanstack/react-query'; | |
| function useAggregatedIncidents() { | |
| const queryClient = useQueryClient(); | |
| const groupIds = ['group1', 'group2', 'group3']; | |
| // Dynamically create queries for each group | |
| const groupQueries = useQueries({ | |
| queries: groupIds.map((groupId) => ({ | |
| queryKey: ['incidents', groupId], |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React from ‘react’; | |
| import { Box, Typography, Chip, Link, Paper, useTheme } from ‘@mui/material’; | |
| import { AssetCodeCoverageInfo } from ‘../../types/api’; | |
| import DonutChart from ‘./DonutChart’; | |
| import moment from ‘moment’; | |
| interface ExtendedAssetCodeCoverageInfo extends AssetCodeCoverageInfo { | |
| codeSmells?: number; | |
| codeQuality?: string; | |
| codeCoverageReportUrl?: string; |