From 2ca3f5b0a4cfa1d40c8008d210aae9a05eab0e63 Mon Sep 17 00:00:00 2001 From: Alexander Malyshev Date: Wed, 9 Aug 2023 10:43:45 +0000 Subject: [PATCH] feat(score-card): New config jsonNameOfAllEntities --- .changeset/smooth-dryers-confess.md | 5 +++++ app-config.yaml | 1 + plugins/score-card/README.md | 1 + plugins/score-card/config.d.ts | 5 +++++ plugins/score-card/src/api/ScoringDataJsonClient.ts | 12 ++++++++++-- 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 .changeset/smooth-dryers-confess.md diff --git a/.changeset/smooth-dryers-confess.md b/.changeset/smooth-dryers-confess.md new file mode 100644 index 0000000000..a2d18b84af --- /dev/null +++ b/.changeset/smooth-dryers-confess.md @@ -0,0 +1,5 @@ +--- +'@oriflame/backstage-plugin-score-card': minor +--- + +New config [jsonNameOfAllEntities] diff --git a/app-config.yaml b/app-config.yaml index 961c28824e..0ff592c560 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -47,6 +47,7 @@ scaffolder: scorecards: jsonDataUrl: http://localhost:8090/plugins/score-card/sample-data/ #this is being served via http-server + jsonNameOfAllEntities: all.json wikiLinkTemplate: https://link-to-wiki/{id} catalog: diff --git a/plugins/score-card/README.md b/plugins/score-card/README.md index d74a9dc867..91ce381866 100644 --- a/plugins/score-card/README.md +++ b/plugins/score-card/README.md @@ -59,6 +59,7 @@ Also the server providing the data needs to have correctly configured CORS polic All configuration options: - `jsonDataUrl`[optional]: url for the JSON data client, see [ScoringDataJsonClient](#scoringdatajsonclient). +- `jsonNameOfAllEntities`[optional]: Json file name of all entities. Default is `all.json` - `wikiLinkTemplate`[optional]: the template for the link to the wiki. You may use any existing properties from the `EntityScoreEntry`, e.g. `"https://TBD/XXX/_wiki/wikis/XXX.wiki/{id}"` or `"{scoreUrl}"`. ### How to use the plugin diff --git a/plugins/score-card/config.d.ts b/plugins/score-card/config.d.ts index 8704db2e17..0faf669520 100644 --- a/plugins/score-card/config.d.ts +++ b/plugins/score-card/config.d.ts @@ -24,6 +24,11 @@ export interface Config { * @visibility frontend */ jsonDataUrl?: string; + /** + * Json file name of all entities + * @visibility frontend + */ + jsonNameOfAllEntities?: string; /** * The template for the link to the wiki, e.g. "https://TBD/XXX/_wiki/wikis/XXX.wiki/{id}" * @visibility frontend diff --git a/plugins/score-card/src/api/ScoringDataJsonClient.ts b/plugins/score-card/src/api/ScoringDataJsonClient.ts index 89f11affb1..f09b483f24 100644 --- a/plugins/score-card/src/api/ScoringDataJsonClient.ts +++ b/plugins/score-card/src/api/ScoringDataJsonClient.ts @@ -74,7 +74,8 @@ export class ScoringDataJsonClient implements ScoringDataApi { public async getAllScores(entityKindFilter?: string[]): Promise { const jsonDataUrl = this.getJsonDataUrl(); - const urlWithData = `${jsonDataUrl}all.json`; + const jsonName = this.getsJsonNameOfAllEntities(); + const urlWithData = `${jsonDataUrl}${jsonName}`; let result: EntityScore[] | undefined = await fetch(urlWithData).then( res => { switch (res.status) { @@ -105,7 +106,7 @@ export class ScoringDataJsonClient implements ScoringDataApi { filter: { 'metadata.name': entity_names - }, + }, fields: ['kind', 'metadata.name', 'spec.owner', 'relations'], }); const entities: Entity[] = response.items; @@ -124,6 +125,13 @@ export class ScoringDataJsonClient implements ScoringDataApi { ); } + private getsJsonNameOfAllEntities() { + return ( + this.configApi.getOptionalString('scorecards.jsonNameOfAllEntities') ?? + 'all.json' + ); + } + private extendEntityScore( score: EntityScore, entities: Entity[] | undefined,