From 16f113fdbf9f9d85e08fe91a64c1bb21acb1ece5 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 18 Apr 2024 20:45:59 +0200 Subject: [PATCH] Deprecate packages Signed-off-by: blam --- .changeset/migrate-1713465957264.md | 6 + plugins/cost-insights-common/README.md | 9 +- plugins/cost-insights-common/package.json | 6 +- plugins/cost-insights/README.md | 245 +--------------------- plugins/cost-insights/package.json | 6 +- 5 files changed, 18 insertions(+), 254 deletions(-) create mode 100644 .changeset/migrate-1713465957264.md diff --git a/.changeset/migrate-1713465957264.md b/.changeset/migrate-1713465957264.md new file mode 100644 index 0000000000..a7ddeffccf --- /dev/null +++ b/.changeset/migrate-1713465957264.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-cost-insights-common': patch +--- + +These packages have been migrated to the [backstage/community-plugins](https://github.com/backstage/community-plugins) repository. diff --git a/plugins/cost-insights-common/README.md b/plugins/cost-insights-common/README.md index 5140701987..3153835519 100644 --- a/plugins/cost-insights-common/README.md +++ b/plugins/cost-insights-common/README.md @@ -1,8 +1,3 @@ -# Cost Insights Common +# Deprecated -Shared isomorphic code for the cost-insights plugin. - -## Links - -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/cost-insights) -- [The Backstage homepage](https://backstage.io) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cost-insights-common` instead. diff --git a/plugins/cost-insights-common/package.json b/plugins/cost-insights-common/package.json index 6735674d00..1c3c947abb 100644 --- a/plugins/cost-insights-common/package.json +++ b/plugins/cost-insights-common/package.json @@ -3,7 +3,8 @@ "version": "0.1.2", "description": "Common functionalities for the cost-insights plugin", "backstage": { - "role": "common-library" + "role": "common-library", + "moved": "@backstage-community/plugin-cost-insights-common" }, "publishConfig": { "access": "public", @@ -37,5 +38,6 @@ }, "devDependencies": { "@backstage/cli": "workspace:^" - } + }, + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cost-insights-common instead." } diff --git a/plugins/cost-insights/README.md b/plugins/cost-insights/README.md index b7bfa053cf..f048b7f522 100644 --- a/plugins/cost-insights/README.md +++ b/plugins/cost-insights/README.md @@ -1,244 +1,3 @@ -# Cost Insights +# Deprecated -Cost Insights is a plugin to help engineers visualize, understand and optimize their cloud costs. The Cost Insights page shows daily cost data for a team, trends over time, and comparisons with the business metrics you care about. - -At Spotify, we find that cloud costs are optimized organically when: - -- Engineers see cost data in their daily work (that is, in Backstage). -- It's clear when cloud costs need attention. -- The data is shown in software terms familiar to them. -- Alerts and recommendations are targeted and actionable. - -Cost Insights shows trends over time, at the granularity of Backstage catalog entities - rather than the cloud provider's concepts. It can be used to troubleshoot cost anomalies, and promote cost-saving infrastructure migrations. - -Learn more with the Backstage blog post [New Cost Insights plugin: The engineer's solution to taming cloud costs](https://backstage.io/blog/2020/10/22/cost-insights-plugin). - -## Install - -```bash -# From your Backstage root directory -yarn --cwd packages/app add @backstage/plugin-cost-insights -``` - -## Setup - -1. Configure `app-config.yaml`. See [Configuration](#configuration). - -2. Create a CostInsights client. Clients must implement the [CostInsightsApi](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/api/CostInsightsApi.ts) interface. Create your own or [use a template](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/example/templates/CostInsightsClient.ts) to get started. - -Tip: You can also use the `ExampleCostInsightsClient` from `@backstage/plugin-cost-insights` to see how the plugin looks with some mock data. - -```ts -// path/to/CostInsightsClient.ts -import { CostInsightsApi } from '@backstage/plugin-cost-insights'; - -export class CostInsightsClient implements CostInsightsApi { ... } -``` - -**Note:** We've briefly explored using the AWS Cost Explorer API to implement a Cost Insights client. Learn more about our findings [here](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/contrib/aws-cost-explorer-api.md). - -3. Import the client and the Cost Insights plugin API to your Backstage instance. - -```ts -// packages/app/src/api.ts -import { createApiFactory } from '@backstage/core-plugin-api'; -import { costInsightsApiRef } from '@backstage/plugin-cost-insights'; -import { CostInsightsClient } from './path/to/file'; - -export const apis = [ - createApiFactory({ - api: costInsightsApiRef, - deps: {}, - factory: () => new CostInsightsClient(), - }), -]; -``` - -4. Add the `CostInsightsPage` extension to your `App.tsx`: - -```tsx -// packages/app/src/App.tsx -import { CostInsightsPage } from '@backstage/plugin-cost-insights'; - - - ... - } /> - ... -; -``` - -5. Add Cost Insights to your app Sidebar. - -To expose the plugin to your users, you can integrate the `cost-insights` route anyway that suits your application, but most commonly it is added to the Sidebar. - -```diff -// packages/app/src/components/Root/Root.tsx -+ import MoneyIcon from '@material-ui/icons/MonetizationOn'; - - ... - - export const Root = ({ children }: PropsWithChildren<{}>) => ( - - - - } to="/search"> - - {({ toggleModal }) => } - - - - - - - - {/* End global nav */} - - -+ - - - - - - - } - to="/settings" - > - - - - {children} - -); -``` - -## Configuration - -Cost Insights has only one required configuration field: `engineerCost` - the average yearly cost of an engineer including benefits. - -### Basic - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 -``` - -### Products (Optional) - -For showing cost breakdowns you can define a map of cloud products. They must be defined as keys on the `products` field. A user-friendly name is **required**. - -You can optionally supply a product `icon` to display in Cost Insights navigation. See the [type file](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/types/Icon.ts) for supported types and Material UI icon [mappings](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/utils/navigation.tsx). - -**Note:** Product keys should be unique and on `camelCase` form. Backstage does not support underscores in configuration keys. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product ## required - icon: storage - productB: - name: Some Other Cloud Product - icon: data -``` - -### Metrics (Optional) - -In the `Cost Overview` panel, users can choose from a dropdown of business metrics to see costs as they relate to a metric, such as daily active users. Metrics must be defined as keys on the `metrics` field. A user-friendly name is **required**. Metrics will be provided to the `getDailyMetricData` API method via the `metric` parameter. - -An optional `default` field can be set to `true` to set the default comparison metric to daily cost in the Cost Overview panel. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product - icon: storage - productB: - name: Some Other Cloud Product - icon: data - metrics: - metricA: - name: Metric A ## required - default: true - metricB: - name: Metric B - metricC: - name: Metric C -``` - -### Base Currency (Optional) - -In the case you would like to show your baseline costs on the graph on other currency than US dollars. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - baseCurrency: - locale: nl-NL - options: - currency: EUR - minimumFractionDigits: 3 -``` - -### Currencies (Optional) - -In the `Cost Overview` panel, users can choose from a dropdown of currencies to see costs in, such as Engineers or USD. Currencies must be defined as keys on the `currencies` field. A user-friendly label and unit are **required**. If not set, the `defaultCurrencies` in `currency.ts` will be used. - -A currency without `kind` is reserved to calculate cost for `engineers`. There should only be one currency without `kind`. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - products: - productA: - name: Some Cloud Product - icon: storage - productB: - name: Some Other Cloud Product - icon: data - currencies: - currencyA: - label: Currency A - unit: Unit A - currencyB: - label: Currency B - kind: CURRENCY_B - unit: Unit B - prefix: B - rate: 3.5 -``` - -### Engineer Threshold (Optional; default 0.5) - -This threshold determines whether to show 'Negligible', or a percentage with a fraction of 'engineers' for cost savings or cost excess on top of the charts. -A threshold of 0.5 means that `Negligible` is shown when the difference in costs is lower than that fraction of engineers in that time frame, -and show `XX% or ~N engineers` when it's above the threshold. - -```yaml -## ./app-config.yaml -costInsights: - engineerCost: 200000 - engineerThreshold: 0.5 -``` - -## Alerts - -The CostInsightsApi `getAlerts` method may return any type of alert or recommendation (called collectively "Action Items" in Cost Insights) that implements the [Alert type](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/types/Alert.ts). This allows you to deliver any alerts or recommendations specific to your infrastructure or company migrations. - -To learn more about using Cost Insights' ready-to-use alerts, see the alerts [README](https://github.com/backstage/backstage/blob/master/plugins/cost-insights/src/alerts/README.md). - -Example implementations of custom alerts, forms and components can be found in the [examples](https://github.com/backstage/backstage/tree/master/plugins/cost-insights/src/example) directory. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-cost-insights` instead. diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 820aadbef7..9da0a2b7f6 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -3,7 +3,8 @@ "version": "0.12.23", "description": "A Backstage plugin that helps you keep track of your cloud spend", "backstage": { - "role": "frontend-plugin" + "role": "frontend-plugin", + "moved": "@backstage-community/plugin-cost-insights" }, "publishConfig": { "access": "public", @@ -80,5 +81,6 @@ "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", "react-router-dom": "6.0.0-beta.0 || ^6.3.0" }, - "configSchema": "config.d.ts" + "configSchema": "config.d.ts", + "deprecated": "This package has been moved to the backstage/community-plugins repository. You should migrate to using @backstage-community/plugin-cost-insights instead." }