@jfvilas/plugin-kwirth-common 0.13.5 → 0.14.2

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.
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ const getPodList = (pods, selectedNamespaces) => {
4
+ return Array.from(pods.filter((m) => selectedNamespaces.includes(m.namespace)));
5
+ };
6
+ const getContainerList = (pods, selectedNamespaces, selectedPodNames, excludeContainers) => {
7
+ if (selectedNamespaces.length === 0 || selectedPodNames.length === 0) return [];
8
+ let validPods = pods.filter((pod) => selectedNamespaces.includes(pod.namespace));
9
+ validPods = validPods.filter((p) => selectedPodNames.includes(p.name));
10
+ let validContainers = [];
11
+ for (let p of validPods) {
12
+ for (let containerName of p.containers) {
13
+ if (!excludeContainers.includes(containerName)) validContainers.push(containerName);
14
+ }
15
+ }
16
+ return Array.from(new Set(validContainers));
17
+ };
18
+ const getVersion = async (discoveryApi, fetchApi) => {
19
+ try {
20
+ const baseUrl = await discoveryApi.getBaseUrl("kwirth");
21
+ const targetUrl = `${baseUrl}/version`;
22
+ const result = await fetchApi.fetch(targetUrl);
23
+ const data = await result.json();
24
+ if (!result.ok) {
25
+ throw new Error(`getVersion error: not ok`);
26
+ }
27
+ return data.version;
28
+ } catch (err) {
29
+ throw new Error(`getVersion error: ${err}`);
30
+ }
31
+ };
32
+ const getInfo = async (discoveryApi, fetchApi) => {
33
+ try {
34
+ const baseUrl = await discoveryApi.getBaseUrl("kwirth");
35
+ const targetUrl = `${baseUrl}/info`;
36
+ const result = await fetchApi.fetch(targetUrl);
37
+ const data = await result.json();
38
+ if (!result.ok) {
39
+ throw new Error(`getInfo error: not ok`);
40
+ }
41
+ return data;
42
+ } catch (err) {
43
+ throw new Error(`getInfo error: ${err}`);
44
+ }
45
+ };
46
+ const getResources = async (discoveryApi, fetchApi, entity) => {
47
+ try {
48
+ const baseUrl = await discoveryApi.getBaseUrl("kwirth");
49
+ const targetUrl = `${baseUrl}/start`;
50
+ var payload = JSON.stringify(entity);
51
+ const result = await fetchApi.fetch(targetUrl, { method: "POST", body: payload, headers: { "Content-Type": "application/json" } });
52
+ const data = await result.json();
53
+ if (!result.ok) {
54
+ throw new Error(`getResources error: not ok`);
55
+ }
56
+ return data;
57
+ } catch (err) {
58
+ throw new Error(`getResources error: ${err}`);
59
+ }
60
+ };
61
+ const requestAccess = async (discoveryApi, fetchApi, entity, channel, scopes) => {
62
+ try {
63
+ const baseUrl = await discoveryApi.getBaseUrl("kwirth");
64
+ var targetUrl = new URL(`${baseUrl}/access`);
65
+ targetUrl.searchParams.append("scopes", scopes.join(","));
66
+ targetUrl.searchParams.append("channel", channel);
67
+ var payload = JSON.stringify(entity);
68
+ const result = await fetchApi.fetch(targetUrl, { method: "POST", body: payload, headers: { "Content-Type": "application/json" } });
69
+ const data = await result.json();
70
+ for (var c of data) {
71
+ c.accessKeys = new Map(JSON.parse(c.accessKeys));
72
+ }
73
+ if (!result.ok) {
74
+ throw new Error(`requestAccess error: not ok`);
75
+ }
76
+ return data;
77
+ } catch (err) {
78
+ throw new Error(`requestAccess error: ${err}`);
79
+ }
80
+ };
81
+
82
+ exports.getContainerList = getContainerList;
83
+ exports.getInfo = getInfo;
84
+ exports.getPodList = getPodList;
85
+ exports.getResources = getResources;
86
+ exports.getVersion = getVersion;
87
+ exports.requestAccess = requestAccess;
88
+ //# sourceMappingURL=Utils.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.cjs.js","sources":["../src/Utils.ts"],"sourcesContent":["import { Entity } from '@backstage/catalog-model'\r\nimport { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'\r\nimport { ClusterValidPods } from './Resources'\r\nimport { EInstanceMessageType, ESignalMessageLevel } from \"@jfvilas/kwirth-common\"\r\nimport { PodData } from \"./Resources\"\r\n\r\nexport interface ILogLine {\r\n namespace: string\r\n pod: string\r\n container: string\r\n timestamp?: Date\r\n type: string\r\n text: string\r\n}\r\n\r\nexport interface IStatusLine {\r\n type: EInstanceMessageType\r\n level: ESignalMessageLevel\r\n text: string\r\n}\r\n\r\nexport interface IBackendInfo {\r\n \"plugin-kwirth-backend\" : string\r\n \"plugin-kwirth-log\" : string\r\n \"plugin-kwirth-metrics\" : string\r\n \"kwirth\" : string\r\n}\r\n\r\nexport const getPodList = (pods:PodData[], selectedNamespaces:string[]) => {\r\n return Array.from(pods.filter(m => selectedNamespaces.includes(m.namespace)))\r\n}\r\n\r\nexport const getContainerList = (pods:PodData[], selectedNamespaces:string[], selectedPodNames:string[], excludeContainers:string[]) => {\r\n if (selectedNamespaces.length===0 || selectedPodNames.length===0) return []\r\n let validPods = pods.filter(pod => selectedNamespaces.includes(pod.namespace))\r\n validPods = validPods.filter(p => selectedPodNames.includes(p.name))\r\n let validContainers:string[] = []\r\n for (let p of validPods) {\r\n for (let containerName of p.containers) {\r\n if (!excludeContainers.includes(containerName)) validContainers.push(containerName)\r\n }\r\n }\r\n return Array.from(new Set(validContainers))\r\n}\r\n\r\nexport const getVersion = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<string> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/version`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getVersion error: not ok`)\r\n }\r\n return data.version\r\n }\r\n catch (err) {\r\n throw new Error(`getVersion error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getInfo = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<IBackendInfo> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/info`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getInfo error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getInfo error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getResources = async (discoveryApi:DiscoveryApi, fetchApi: FetchApi, entity:Entity): Promise<ClusterValidPods> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/start`\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods\r\n\r\n if (!result.ok) {\r\n throw new Error(`getResources error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getResources error: ${err}`)\r\n }\r\n}\r\n\r\nexport const requestAccess = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi, entity:Entity, channel:string, scopes:string[]): Promise<ClusterValidPods[]> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n var targetUrl:URL = new URL (`${baseUrl}/access`)\r\n targetUrl.searchParams.append('scopes',scopes.join(','))\r\n targetUrl.searchParams.append('channel',channel)\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods[]\r\n\r\n // we reconstruct the 'Map' from string of arrays\r\n for (var c of data) {\r\n c.accessKeys = new Map(JSON.parse(((c as any).accessKeys)))\r\n }\r\n if (!result.ok) {\r\n throw new Error(`requestAccess error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`requestAccess error: ${err}`)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
package/dist/Utils.esm.js CHANGED
@@ -3,15 +3,15 @@ const getPodList = (pods, selectedNamespaces) => {
3
3
  };
4
4
  const getContainerList = (pods, selectedNamespaces, selectedPodNames, excludeContainers) => {
5
5
  if (selectedNamespaces.length === 0 || selectedPodNames.length === 0) return [];
6
- let validpods = pods.filter((pod) => selectedNamespaces.includes(pod.namespace));
7
- validpods = validpods.filter((p2) => selectedPodNames.includes(p2.name));
8
- let validcontainers = [];
9
- for (var p of validpods) {
10
- for (let cname of p.containers) {
11
- if (!excludeContainers.includes(cname)) validcontainers.push(cname);
6
+ let validPods = pods.filter((pod) => selectedNamespaces.includes(pod.namespace));
7
+ validPods = validPods.filter((p) => selectedPodNames.includes(p.name));
8
+ let validContainers = [];
9
+ for (let p of validPods) {
10
+ for (let containerName of p.containers) {
11
+ if (!excludeContainers.includes(containerName)) validContainers.push(containerName);
12
12
  }
13
13
  }
14
- return Array.from(new Set(validcontainers));
14
+ return Array.from(new Set(validContainers));
15
15
  };
16
16
  const getVersion = async (discoveryApi, fetchApi) => {
17
17
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.esm.js","sources":["../src/Utils.ts"],"sourcesContent":["import { Entity } from '@backstage/catalog-model'\r\nimport { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'\r\nimport { ClusterValidPods } from './Resources'\r\nimport { InstanceMessageTypeEnum, SignalMessageLevelEnum } from \"@jfvilas/kwirth-common\"\r\nimport { PodData } from \"./Resources\"\r\n\r\nexport interface ILogLine {\r\n namespace: string\r\n pod: string\r\n container: string\r\n timestamp?: Date\r\n type: string\r\n text: string\r\n}\r\n\r\nexport interface IStatusLine {\r\n type: InstanceMessageTypeEnum\r\n level: SignalMessageLevelEnum\r\n text: string\r\n}\r\n\r\nexport interface IBackendInfo {\r\n \"plugin-kwirth-backend\" : string\r\n \"plugin-kwirth-log\" : string\r\n \"plugin-kwirth-metrics\" : string\r\n \"kwirth\" : string\r\n}\r\n\r\nexport const getPodList = (pods:PodData[], selectedNamespaces:string[]) => {\r\n return Array.from(pods.filter(m => selectedNamespaces.includes(m.namespace)))\r\n}\r\n\r\nexport const getContainerList = (pods:PodData[], selectedNamespaces:string[], selectedPodNames:string[], excludeContainers:string[]) => {\r\n if (selectedNamespaces.length===0 || selectedPodNames.length===0) return []\r\n let validpods = pods.filter(pod => selectedNamespaces.includes(pod.namespace))\r\n validpods = validpods.filter(p => selectedPodNames.includes(p.name))\r\n let validcontainers:string[] = []\r\n for (var p of validpods) {\r\n for (let cname of p.containers) {\r\n if (!excludeContainers.includes(cname)) validcontainers.push(cname)\r\n }\r\n }\r\n return Array.from(new Set(validcontainers))\r\n}\r\n\r\nexport const getVersion = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<string> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/version`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getVersion error: not ok`)\r\n }\r\n return data.version\r\n }\r\n catch (err) {\r\n throw new Error(`getVersion error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getInfo = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<IBackendInfo> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/info`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getInfo error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getInfo error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getResources = async (discoveryApi:DiscoveryApi, fetchApi: FetchApi, entity:Entity): Promise<ClusterValidPods> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/start`\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods\r\n\r\n if (!result.ok) {\r\n throw new Error(`getResources error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getResources error: ${err}`)\r\n }\r\n}\r\n\r\nexport const requestAccess = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi, entity:Entity, channel:string, scopes:string[]): Promise<ClusterValidPods[]> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n var targetUrl:URL = new URL (`${baseUrl}/access`)\r\n targetUrl.searchParams.append('scopes',scopes.join(','))\r\n targetUrl.searchParams.append('channel',channel)\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods[]\r\n\r\n // we reconstruct the 'Map' from string of arrays\r\n for (var c of data) {\r\n c.accessKeys = new Map(JSON.parse(((c as any).accessKeys)))\r\n }\r\n if (!result.ok) {\r\n throw new Error(`requestAccess error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`requestAccess error: ${err}`)\r\n }\r\n}\r\n"],"names":["p"],"mappings":"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"}
1
+ {"version":3,"file":"Utils.esm.js","sources":["../src/Utils.ts"],"sourcesContent":["import { Entity } from '@backstage/catalog-model'\r\nimport { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'\r\nimport { ClusterValidPods } from './Resources'\r\nimport { EInstanceMessageType, ESignalMessageLevel } from \"@jfvilas/kwirth-common\"\r\nimport { PodData } from \"./Resources\"\r\n\r\nexport interface ILogLine {\r\n namespace: string\r\n pod: string\r\n container: string\r\n timestamp?: Date\r\n type: string\r\n text: string\r\n}\r\n\r\nexport interface IStatusLine {\r\n type: EInstanceMessageType\r\n level: ESignalMessageLevel\r\n text: string\r\n}\r\n\r\nexport interface IBackendInfo {\r\n \"plugin-kwirth-backend\" : string\r\n \"plugin-kwirth-log\" : string\r\n \"plugin-kwirth-metrics\" : string\r\n \"kwirth\" : string\r\n}\r\n\r\nexport const getPodList = (pods:PodData[], selectedNamespaces:string[]) => {\r\n return Array.from(pods.filter(m => selectedNamespaces.includes(m.namespace)))\r\n}\r\n\r\nexport const getContainerList = (pods:PodData[], selectedNamespaces:string[], selectedPodNames:string[], excludeContainers:string[]) => {\r\n if (selectedNamespaces.length===0 || selectedPodNames.length===0) return []\r\n let validPods = pods.filter(pod => selectedNamespaces.includes(pod.namespace))\r\n validPods = validPods.filter(p => selectedPodNames.includes(p.name))\r\n let validContainers:string[] = []\r\n for (let p of validPods) {\r\n for (let containerName of p.containers) {\r\n if (!excludeContainers.includes(containerName)) validContainers.push(containerName)\r\n }\r\n }\r\n return Array.from(new Set(validContainers))\r\n}\r\n\r\nexport const getVersion = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<string> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/version`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getVersion error: not ok`)\r\n }\r\n return data.version\r\n }\r\n catch (err) {\r\n throw new Error(`getVersion error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getInfo = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<IBackendInfo> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/info`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getInfo error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getInfo error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getResources = async (discoveryApi:DiscoveryApi, fetchApi: FetchApi, entity:Entity): Promise<ClusterValidPods> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/start`\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods\r\n\r\n if (!result.ok) {\r\n throw new Error(`getResources error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getResources error: ${err}`)\r\n }\r\n}\r\n\r\nexport const requestAccess = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi, entity:Entity, channel:string, scopes:string[]): Promise<ClusterValidPods[]> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n var targetUrl:URL = new URL (`${baseUrl}/access`)\r\n targetUrl.searchParams.append('scopes',scopes.join(','))\r\n targetUrl.searchParams.append('channel',channel)\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods[]\r\n\r\n // we reconstruct the 'Map' from string of arrays\r\n for (var c of data) {\r\n c.accessKeys = new Map(JSON.parse(((c as any).accessKeys)))\r\n }\r\n if (!result.ok) {\r\n throw new Error(`requestAccess error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`requestAccess error: ${err}`)\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
package/dist/index.cjs.js CHANGED
@@ -1,83 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const getPodList = (pods, selectedNamespaces) => {
4
- return Array.from(pods.filter((m) => selectedNamespaces.includes(m.namespace)));
5
- };
6
- const getContainerList = (pods, selectedNamespaces, selectedPodNames, excludeContainers) => {
7
- if (selectedNamespaces.length === 0 || selectedPodNames.length === 0) return [];
8
- let validpods = pods.filter((pod) => selectedNamespaces.includes(pod.namespace));
9
- validpods = validpods.filter((p2) => selectedPodNames.includes(p2.name));
10
- let validcontainers = [];
11
- for (var p of validpods) {
12
- for (let cname of p.containers) {
13
- if (!excludeContainers.includes(cname)) validcontainers.push(cname);
14
- }
15
- }
16
- return Array.from(new Set(validcontainers));
17
- };
18
- const getVersion = async (discoveryApi, fetchApi) => {
19
- try {
20
- const baseUrl = await discoveryApi.getBaseUrl("kwirth");
21
- const targetUrl = `${baseUrl}/version`;
22
- const result = await fetchApi.fetch(targetUrl);
23
- const data = await result.json();
24
- if (!result.ok) {
25
- throw new Error(`getVersion error: not ok`);
26
- }
27
- return data.version;
28
- } catch (err) {
29
- throw new Error(`getVersion error: ${err}`);
30
- }
31
- };
32
- const getInfo = async (discoveryApi, fetchApi) => {
33
- try {
34
- const baseUrl = await discoveryApi.getBaseUrl("kwirth");
35
- const targetUrl = `${baseUrl}/info`;
36
- const result = await fetchApi.fetch(targetUrl);
37
- const data = await result.json();
38
- if (!result.ok) {
39
- throw new Error(`getInfo error: not ok`);
40
- }
41
- return data;
42
- } catch (err) {
43
- throw new Error(`getInfo error: ${err}`);
44
- }
45
- };
46
- const getResources = async (discoveryApi, fetchApi, entity) => {
47
- try {
48
- const baseUrl = await discoveryApi.getBaseUrl("kwirth");
49
- const targetUrl = `${baseUrl}/start`;
50
- var payload = JSON.stringify(entity);
51
- const result = await fetchApi.fetch(targetUrl, { method: "POST", body: payload, headers: { "Content-Type": "application/json" } });
52
- const data = await result.json();
53
- if (!result.ok) {
54
- throw new Error(`getResources error: not ok`);
55
- }
56
- return data;
57
- } catch (err) {
58
- throw new Error(`getResources error: ${err}`);
59
- }
60
- };
61
- const requestAccess = async (discoveryApi, fetchApi, entity, channel, scopes) => {
62
- try {
63
- const baseUrl = await discoveryApi.getBaseUrl("kwirth");
64
- var targetUrl = new URL(`${baseUrl}/access`);
65
- targetUrl.searchParams.append("scopes", scopes.join(","));
66
- targetUrl.searchParams.append("channel", channel);
67
- var payload = JSON.stringify(entity);
68
- const result = await fetchApi.fetch(targetUrl, { method: "POST", body: payload, headers: { "Content-Type": "application/json" } });
69
- const data = await result.json();
70
- for (var c of data) {
71
- c.accessKeys = new Map(JSON.parse(c.accessKeys));
72
- }
73
- if (!result.ok) {
74
- throw new Error(`requestAccess error: not ok`);
75
- }
76
- return data;
77
- } catch (err) {
78
- throw new Error(`requestAccess error: ${err}`);
79
- }
80
- };
3
+ var Utils = require('./Utils.cjs.js');
81
4
 
82
5
  const ANNOTATION_BACKSTAGE_KUBERNETES_LABELID = "backstage.io/kubernetes-id";
83
6
  const ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR = "backstage.io/kubernetes-label-selector";
@@ -86,13 +9,13 @@ const isKwirthAvailable = (entity) => {
86
9
  return Boolean(entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELID]) || Boolean(entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR]);
87
10
  };
88
11
 
12
+ exports.getContainerList = Utils.getContainerList;
13
+ exports.getInfo = Utils.getInfo;
14
+ exports.getPodList = Utils.getPodList;
15
+ exports.getResources = Utils.getResources;
16
+ exports.getVersion = Utils.getVersion;
17
+ exports.requestAccess = Utils.requestAccess;
89
18
  exports.ANNOTATION_BACKSTAGE_KUBERNETES_LABELID = ANNOTATION_BACKSTAGE_KUBERNETES_LABELID;
90
19
  exports.ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR = ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR;
91
- exports.getContainerList = getContainerList;
92
- exports.getInfo = getInfo;
93
- exports.getPodList = getPodList;
94
- exports.getResources = getResources;
95
- exports.getVersion = getVersion;
96
20
  exports.isKwirthAvailable = isKwirthAvailable;
97
- exports.requestAccess = requestAccess;
98
21
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/Utils.ts","../src/index.ts"],"sourcesContent":["import { Entity } from '@backstage/catalog-model'\r\nimport { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'\r\nimport { ClusterValidPods } from './Resources'\r\nimport { InstanceMessageTypeEnum, SignalMessageLevelEnum } from \"@jfvilas/kwirth-common\"\r\nimport { PodData } from \"./Resources\"\r\n\r\nexport interface ILogLine {\r\n namespace: string\r\n pod: string\r\n container: string\r\n timestamp?: Date\r\n type: string\r\n text: string\r\n}\r\n\r\nexport interface IStatusLine {\r\n type: InstanceMessageTypeEnum\r\n level: SignalMessageLevelEnum\r\n text: string\r\n}\r\n\r\nexport interface IBackendInfo {\r\n \"plugin-kwirth-backend\" : string\r\n \"plugin-kwirth-log\" : string\r\n \"plugin-kwirth-metrics\" : string\r\n \"kwirth\" : string\r\n}\r\n\r\nexport const getPodList = (pods:PodData[], selectedNamespaces:string[]) => {\r\n return Array.from(pods.filter(m => selectedNamespaces.includes(m.namespace)))\r\n}\r\n\r\nexport const getContainerList = (pods:PodData[], selectedNamespaces:string[], selectedPodNames:string[], excludeContainers:string[]) => {\r\n if (selectedNamespaces.length===0 || selectedPodNames.length===0) return []\r\n let validpods = pods.filter(pod => selectedNamespaces.includes(pod.namespace))\r\n validpods = validpods.filter(p => selectedPodNames.includes(p.name))\r\n let validcontainers:string[] = []\r\n for (var p of validpods) {\r\n for (let cname of p.containers) {\r\n if (!excludeContainers.includes(cname)) validcontainers.push(cname)\r\n }\r\n }\r\n return Array.from(new Set(validcontainers))\r\n}\r\n\r\nexport const getVersion = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<string> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/version`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getVersion error: not ok`)\r\n }\r\n return data.version\r\n }\r\n catch (err) {\r\n throw new Error(`getVersion error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getInfo = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi) : Promise<IBackendInfo> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/info`\r\n\r\n const result = await fetchApi.fetch(targetUrl)\r\n const data = await result.json()\r\n\r\n if (!result.ok) {\r\n throw new Error(`getInfo error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getInfo error: ${err}`)\r\n }\r\n}\r\n\r\nexport const getResources = async (discoveryApi:DiscoveryApi, fetchApi: FetchApi, entity:Entity): Promise<ClusterValidPods> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n const targetUrl = `${baseUrl}/start`\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods\r\n\r\n if (!result.ok) {\r\n throw new Error(`getResources error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`getResources error: ${err}`)\r\n }\r\n}\r\n\r\nexport const requestAccess = async (discoveryApi:DiscoveryApi, fetchApi:FetchApi, entity:Entity, channel:string, scopes:string[]): Promise<ClusterValidPods[]> => {\r\n try {\r\n const baseUrl = await discoveryApi.getBaseUrl('kwirth')\r\n var targetUrl:URL = new URL (`${baseUrl}/access`)\r\n targetUrl.searchParams.append('scopes',scopes.join(','))\r\n targetUrl.searchParams.append('channel',channel)\r\n\r\n var payload=JSON.stringify(entity)\r\n const result = await fetchApi.fetch(targetUrl, {method:'POST', body:payload, headers:{'Content-Type':'application/json'}})\r\n const data = await result.json() as ClusterValidPods[]\r\n\r\n // we reconstruct the 'Map' from string of arrays\r\n for (var c of data) {\r\n c.accessKeys = new Map(JSON.parse(((c as any).accessKeys)))\r\n }\r\n if (!result.ok) {\r\n throw new Error(`requestAccess error: not ok`)\r\n }\r\n return data\r\n }\r\n catch (err) {\r\n throw new Error(`requestAccess error: ${err}`)\r\n }\r\n}\r\n","/*\r\nCopyright 2024 Julio Fernandez\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\nimport { Entity } from '@backstage/catalog-model'\r\nexport * from './Resources'\r\nexport * from './Utils'\r\n\r\n/**\r\n * Kwirth annotation.\r\n */\r\nexport const ANNOTATION_BACKSTAGE_KUBERNETES_LABELID = 'backstage.io/kubernetes-id'\r\nexport const ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR = 'backstage.io/kubernetes-label-selector'\r\n\r\n/**\r\n * Function to know if an entity has Kwirth.\r\n */\r\nexport const isKwirthAvailable = (entity: Entity) => {\r\n if (!entity.metadata.annotations) return false;\r\n return Boolean (entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELID]) || Boolean (entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR]);\r\n}\r\n"],"names":["p"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/index.ts"],"sourcesContent":["/*\r\nCopyright 2024 Julio Fernandez\r\n\r\nLicensed under the Apache License, Version 2.0 (the \"License\");\r\nyou may not use this file except in compliance with the License.\r\nYou may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nUnless required by applicable law or agreed to in writing, software\r\ndistributed under the License is distributed on an \"AS IS\" BASIS,\r\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\nSee the License for the specific language governing permissions and\r\nlimitations under the License.\r\n*/\r\nimport { Entity } from '@backstage/catalog-model'\r\nexport * from './Resources'\r\nexport * from './Utils'\r\n\r\n/**\r\n * Kwirth annotation.\r\n */\r\nexport const ANNOTATION_BACKSTAGE_KUBERNETES_LABELID = 'backstage.io/kubernetes-id'\r\nexport const ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR = 'backstage.io/kubernetes-label-selector'\r\n\r\n/**\r\n * Function to know if an entity has Kwirth.\r\n */\r\nexport const isKwirthAvailable = (entity: Entity) => {\r\n if (!entity.metadata.annotations) return false;\r\n return Boolean (entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELID]) || Boolean (entity.metadata.annotations[ANNOTATION_BACKSTAGE_KUBERNETES_LABELSELECTOR]);\r\n}\r\n"],"names":[],"mappings":";;;;AAsBO,MAAM,uCAAA,GAA0C;AAChD,MAAM,6CAAA,GAAgD;AAKtD,MAAM,iBAAA,GAAoB,CAAC,MAAA,KAAmB;AACnD,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,WAAA,EAAa,OAAO,KAAA;AACzC,EAAA,OAAO,OAAA,CAAS,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,uCAAuC,CAAC,CAAA,IAAK,OAAA,CAAS,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,6CAA6C,CAAC,CAAA;AAC9K;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Entity } from '@backstage/catalog-model';
2
- import { InstanceConfigScopeEnum, AccessKey, InstanceMessageTypeEnum, SignalMessageLevelEnum } from '@jfvilas/kwirth-common';
2
+ import { AccessKey, EInstanceMessageType, ESignalMessageLevel } from '@jfvilas/kwirth-common';
3
3
  import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api';
4
4
 
5
5
  /**
@@ -39,7 +39,7 @@ interface ClusterValidPods {
39
39
  url: string;
40
40
  title?: string;
41
41
  pods: PodData[];
42
- accessKeys: Map<InstanceConfigScopeEnum, AccessKey>;
42
+ accessKeys: Map<string, AccessKey>;
43
43
  }
44
44
 
45
45
  interface ILogLine {
@@ -51,8 +51,8 @@ interface ILogLine {
51
51
  text: string;
52
52
  }
53
53
  interface IStatusLine {
54
- type: InstanceMessageTypeEnum;
55
- level: SignalMessageLevelEnum;
54
+ type: EInstanceMessageType;
55
+ level: ESignalMessageLevel;
56
56
  text: string;
57
57
  }
58
58
  interface IBackendInfo {
@@ -62,11 +62,11 @@ interface IBackendInfo {
62
62
  "kwirth": string;
63
63
  }
64
64
  declare const getPodList: (pods: PodData[], selectedNamespaces: string[]) => PodData[];
65
- declare const getContainerList: (pods: PodData[], selectedNamespaces: string[], selectedPodNames: string[]) => string[];
65
+ declare const getContainerList: (pods: PodData[], selectedNamespaces: string[], selectedPodNames: string[], excludeContainers: string[]) => string[];
66
66
  declare const getVersion: (discoveryApi: DiscoveryApi, fetchApi: FetchApi) => Promise<string>;
67
67
  declare const getInfo: (discoveryApi: DiscoveryApi, fetchApi: FetchApi) => Promise<IBackendInfo>;
68
68
  declare const getResources: (discoveryApi: DiscoveryApi, fetchApi: FetchApi, entity: Entity) => Promise<ClusterValidPods>;
69
- declare const requestAccess: (discoveryApi: DiscoveryApi, fetchApi: FetchApi, entity: Entity, channel: string, scopes: InstanceConfigScopeEnum[]) => Promise<ClusterValidPods[]>;
69
+ declare const requestAccess: (discoveryApi: DiscoveryApi, fetchApi: FetchApi, entity: Entity, channel: string, scopes: string[]) => Promise<ClusterValidPods[]>;
70
70
 
71
71
  /**
72
72
  * Kwirth annotation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jfvilas/plugin-kwirth-common",
3
- "version": "0.13.5",
3
+ "version": "0.14.2",
4
4
  "description": "Common functionalities for the Backstage Kwirth plugins",
5
5
  "keywords": [
6
6
  "Backstage",
@@ -48,11 +48,18 @@
48
48
  "test": "backstage-cli package test"
49
49
  },
50
50
  "dependencies": {
51
- "@backstage/catalog-model": "^1.5.0",
52
- "@backstage/integration": "^1.13.0"
51
+ "@backstage/catalog-model": "^1.7.7",
52
+ "@backstage/integration": "^2.0.0"
53
53
  },
54
54
  "devDependencies": {
55
- "@backstage/cli": "^0.26.11"
55
+ "@backstage/cli": "^0.36.0"
56
+ },
57
+ "typesVersions": {
58
+ "*": {
59
+ "package.json": [
60
+ "package.json"
61
+ ]
62
+ }
56
63
  },
57
64
  "module": "dist/index.esm.js"
58
65
  }