@terasky/backstage-plugin-vcf-automation 1.6.0 → 1.8.1
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.
- package/dist/alpha.d.ts +16 -17
- package/dist/alpha.esm.js +2 -2
- package/dist/alpha.esm.js.map +1 -1
- package/dist/api/VcfAutomationClient.esm.js.map +1 -1
- package/dist/components/VCFAutomationCCINamespaceDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationCCINamespaceOverview.esm.js.map +1 -1
- package/dist/components/VCFAutomationCCIResourceDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationCCIResourceOverview.esm.js.map +1 -1
- package/dist/components/VCFAutomationDeploymentDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationDeploymentOverview.esm.js.map +1 -1
- package/dist/components/VCFAutomationGenericResourceDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationGenericResourceOverview.esm.js.map +1 -1
- package/dist/components/VCFAutomationProjectDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationProjectOverview.esm.js.map +1 -1
- package/dist/components/VCFAutomationVMPowerManagement.esm.js.map +1 -1
- package/dist/components/VCFAutomationVSphereVMDetails.esm.js.map +1 -1
- package/dist/components/VCFAutomationVSphereVMOverview.esm.js +3 -3
- package/dist/components/VCFAutomationVSphereVMOverview.esm.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/plugin.esm.js +2 -2
- package/dist/plugin.esm.js.map +1 -1
- package/dist/routes.esm.js.map +1 -1
- package/package.json +12 -12
package/dist/alpha.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
|
|
3
3
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
4
|
-
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
5
4
|
import { Entity } from '@backstage/catalog-model';
|
|
6
5
|
|
|
7
6
|
/** @alpha */
|
|
@@ -10,9 +9,9 @@ declare const vcfAutomationApi: _backstage_frontend_plugin_api.OverridableExtens
|
|
|
10
9
|
name: "vcfAutomationApi";
|
|
11
10
|
config: {};
|
|
12
11
|
configInput: {};
|
|
13
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<
|
|
12
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
14
13
|
inputs: {};
|
|
15
|
-
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params:
|
|
14
|
+
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
16
15
|
}>;
|
|
17
16
|
/** @alpha */
|
|
18
17
|
declare const vcfDeploymentOverviewCard: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
@@ -72,7 +71,7 @@ declare const vcfDeploymentContent: _backstage_frontend_plugin_api.OverridableEx
|
|
|
72
71
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
73
72
|
title: string;
|
|
74
73
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
75
|
-
group?: ("
|
|
74
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
76
75
|
loader: () => Promise<JSX.Element>;
|
|
77
76
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
78
77
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -136,7 +135,7 @@ declare const vcfVSphereVMContent: _backstage_frontend_plugin_api.OverridableExt
|
|
|
136
135
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
137
136
|
title: string;
|
|
138
137
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
139
|
-
group?: ("
|
|
138
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
140
139
|
loader: () => Promise<JSX.Element>;
|
|
141
140
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
142
141
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -200,7 +199,7 @@ declare const vcfProjectContent: _backstage_frontend_plugin_api.OverridableExten
|
|
|
200
199
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
201
200
|
title: string;
|
|
202
201
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
203
|
-
group?: ("
|
|
202
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
204
203
|
loader: () => Promise<JSX.Element>;
|
|
205
204
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
206
205
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -264,7 +263,7 @@ declare const vcfGenericResourceContent: _backstage_frontend_plugin_api.Overrida
|
|
|
264
263
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
265
264
|
title: string;
|
|
266
265
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
267
|
-
group?: ("
|
|
266
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
268
267
|
loader: () => Promise<JSX.Element>;
|
|
269
268
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
270
269
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -328,7 +327,7 @@ declare const vcfCCINamespaceContent: _backstage_frontend_plugin_api.Overridable
|
|
|
328
327
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
329
328
|
title: string;
|
|
330
329
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
331
|
-
group?: ("
|
|
330
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
332
331
|
loader: () => Promise<JSX.Element>;
|
|
333
332
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
334
333
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -392,7 +391,7 @@ declare const vcfCCIResourceContent: _backstage_frontend_plugin_api.OverridableE
|
|
|
392
391
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
393
392
|
title: string;
|
|
394
393
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
395
|
-
group?: ("
|
|
394
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
396
395
|
loader: () => Promise<JSX.Element>;
|
|
397
396
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
398
397
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -405,9 +404,9 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
405
404
|
name: "vcfAutomationApi";
|
|
406
405
|
config: {};
|
|
407
406
|
configInput: {};
|
|
408
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<
|
|
407
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.AnyApiFactory, "core.api.factory", {}>;
|
|
409
408
|
inputs: {};
|
|
410
|
-
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params:
|
|
409
|
+
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
411
410
|
}>;
|
|
412
411
|
"entity-card:vcf-automation/vcf-automation.cci-namespace-overview": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
413
412
|
kind: "entity-card";
|
|
@@ -590,7 +589,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
590
589
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
591
590
|
title: string;
|
|
592
591
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
593
|
-
group?: ("
|
|
592
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
594
593
|
loader: () => Promise<JSX.Element>;
|
|
595
594
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
596
595
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -627,7 +626,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
627
626
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
628
627
|
title: string;
|
|
629
628
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
630
|
-
group?: ("
|
|
629
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
631
630
|
loader: () => Promise<JSX.Element>;
|
|
632
631
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
633
632
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -664,7 +663,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
664
663
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
665
664
|
title: string;
|
|
666
665
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
667
|
-
group?: ("
|
|
666
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
668
667
|
loader: () => Promise<JSX.Element>;
|
|
669
668
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
670
669
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -701,7 +700,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
701
700
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
702
701
|
title: string;
|
|
703
702
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
704
|
-
group?: ("
|
|
703
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
705
704
|
loader: () => Promise<JSX.Element>;
|
|
706
705
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
707
706
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -738,7 +737,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
738
737
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
739
738
|
title: string;
|
|
740
739
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
741
|
-
group?: ("
|
|
740
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
742
741
|
loader: () => Promise<JSX.Element>;
|
|
743
742
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
744
743
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
|
@@ -775,7 +774,7 @@ declare const vcfAutomationPlugin: _backstage_frontend_plugin_api.OverridableFro
|
|
|
775
774
|
defaultTitle?: [Error: `Use the 'title' param instead`];
|
|
776
775
|
title: string;
|
|
777
776
|
defaultGroup?: [Error: `Use the 'group' param instead`];
|
|
778
|
-
group?: ("
|
|
777
|
+
group?: ("documentation" | "deployment" | "operation" | "overview" | "development" | "observability") | (string & {});
|
|
779
778
|
loader: () => Promise<JSX.Element>;
|
|
780
779
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
781
780
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: Entity) => boolean);
|
package/dist/alpha.esm.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { ApiBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
3
3
|
import { EntityCardBlueprint, EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { VcfAutomationClient, vcfAutomationApiRef } from './api/VcfAutomationClient.esm.js';
|
|
5
|
+
import { identityApiRef, discoveryApiRef } from '@backstage/core-plugin-api';
|
|
6
6
|
|
|
7
7
|
const isVCFDeployment = (entity) => {
|
|
8
8
|
return entity.spec?.type === "vcf-automation-deployment";
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import { createFrontendPlugin, ApiBlueprint } from '@backstage/frontend-plugin-api';\nimport { EntityCardBlueprint, EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { Entity } from '@backstage/catalog-model';\nimport { vcfAutomationApiRef, VcfAutomationClient } from './api';\nimport { discoveryApiRef, identityApiRef } from '@backstage/core-plugin-api';\n\nconst isVCFDeployment = (entity: Entity) => {\n return entity.spec?.type === 'vcf-automation-deployment';\n};\n\nconst isVCFVSphereVM = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cloud.vsphere.machine';\n }\n return false;\n};\n\nconst isVCFProject = (entity: Entity) => {\n return entity.spec?.type === 'vcf-automation-project';\n};\n\nconst isVCFGenericResource = (entity: Entity) => {\n return (entity.metadata.tags?.includes('vcf-automation-resource') && entity.kind === 'Resource') || false;\n};\n\nconst isVCFCCINamespace = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cci.supervisor.namespace';\n }\n return false;\n};\n\nconst isVCFCCIResource = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cci.supervisor.resource';\n }\n return false;\n};\n\n/** @alpha */\nexport const vcfAutomationApi = ApiBlueprint.make({\n name: 'vcfAutomationApi',\n params: defineParams => defineParams({\n api: vcfAutomationApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, identityApi }) => new VcfAutomationClient({ discoveryApi, identityApi }),\n }),\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfDeploymentOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.deployment-overview',\n params: {\n filter: isVCFDeployment,\n loader: () => import('./components/VCFAutomationDeploymentOverview').then(m => <m.VCFAutomationDeploymentOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfDeploymentContent = EntityContentBlueprint.make({\n name: 'vcf-automation.deployment-details',\n params: {\n path: '/vcf-automation-deployment',\n title: 'VCF Deployment Details',\n filter: isVCFDeployment,\n loader: () => import('./components/VCFAutomationDeploymentDetails').then(m => <m.VCFAutomationDeploymentDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfVSphereVMOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.vsphere-vm-overview',\n params: {\n filter: isVCFVSphereVM,\n loader: () => import('./components/VCFAutomationVSphereVMOverview').then(m => <m.VCFAutomationVSphereVMOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfVSphereVMContent = EntityContentBlueprint.make({\n name: 'vcf-automation.vsphere-vm-details',\n params: {\n path: '/vcf-automation-vsphere-vm',\n title: 'VCF vSphere VM Details',\n filter: isVCFVSphereVM,\n loader: () => import('./components/VCFAutomationVSphereVMDetails').then(m => <m.VCFAutomationVSphereVMDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfProjectOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.project-overview',\n params: {\n filter: isVCFProject,\n loader: () => import('./components/VCFAutomationProjectOverview').then(m => <m.VCFAutomationProjectOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfProjectContent = EntityContentBlueprint.make({\n name: 'vcf-automation.project-details',\n params: {\n path: '/vcf-automation-project',\n title: 'VCF Project Details',\n filter: isVCFProject,\n loader: () => import('./components/VCFAutomationProjectDetails').then(m => <m.VCFAutomationProjectDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfGenericResourceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.generic-resource-overview',\n params: {\n filter: isVCFGenericResource,\n loader: () => import('./components/VCFAutomationGenericResourceOverview').then(m => <m.VCFAutomationGenericResourceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfGenericResourceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.generic-resource-details',\n params: {\n path: '/vcf-automation-generic-resource',\n title: 'VCF Generic Resource Details',\n filter: isVCFGenericResource,\n loader: () => import('./components/VCFAutomationGenericResourceDetails').then(m => <m.VCFAutomationGenericResourceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCINamespaceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.cci-namespace-overview',\n params: {\n filter: isVCFCCINamespace,\n loader: () => import('./components/VCFAutomationCCINamespaceOverview').then(m => <m.VCFAutomationCCINamespaceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCINamespaceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.cci-namespace-details',\n params: {\n path: '/vcf-automation-cci-namespace',\n title: 'VCF CCI Namespace Details',\n filter: isVCFCCINamespace,\n loader: () => import('./components/VCFAutomationCCINamespaceDetails').then(m => <m.VCFAutomationCCINamespaceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCIResourceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.cci-resource-overview',\n params: {\n filter: isVCFCCIResource,\n loader: () => import('./components/VCFAutomationCCIResourceOverview').then(m => <m.VCFAutomationCCIResourceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCIResourceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.cci-resource-details',\n params: {\n path: '/vcf-automation-cci-resource',\n title: 'VCF CCI Resource Details',\n filter: isVCFCCIResource,\n loader: () => import('./components/VCFAutomationCCIResourceDetails').then(m => <m.VCFAutomationCCIResourceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfAutomationPlugin = createFrontendPlugin({\n pluginId: 'vcf-automation',\n extensions: [\n vcfAutomationApi,\n vcfDeploymentOverviewCard,\n vcfDeploymentContent,\n vcfVSphereVMOverviewCard,\n vcfVSphereVMContent,\n vcfProjectOverviewCard,\n vcfProjectContent,\n vcfGenericResourceOverviewCard,\n vcfGenericResourceContent,\n vcfCCINamespaceOverviewCard,\n vcfCCINamespaceContent,\n vcfCCIResourceOverviewCard,\n vcfCCIResourceContent,\n ],\n});\n\nexport default vcfAutomationPlugin;"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import { createFrontendPlugin, ApiBlueprint } from '@backstage/frontend-plugin-api';\nimport { EntityCardBlueprint, EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';\nimport { Entity } from '@backstage/catalog-model';\nimport { vcfAutomationApiRef, VcfAutomationClient } from './api';\nimport { discoveryApiRef, identityApiRef } from '@backstage/core-plugin-api';\n\nconst isVCFDeployment = (entity: Entity) => {\n return entity.spec?.type === 'vcf-automation-deployment';\n};\n\nconst isVCFVSphereVM = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cloud.vsphere.machine';\n }\n return false;\n};\n\nconst isVCFProject = (entity: Entity) => {\n return entity.spec?.type === 'vcf-automation-project';\n};\n\nconst isVCFGenericResource = (entity: Entity) => {\n return (entity.metadata.tags?.includes('vcf-automation-resource') && entity.kind === 'Resource') || false;\n};\n\nconst isVCFCCINamespace = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cci.supervisor.namespace';\n }\n return false;\n};\n\nconst isVCFCCIResource = (entity: Entity) => {\n const typeValue = entity.spec?.type;\n\n if (typeof typeValue === 'string') {\n return typeValue.toLowerCase() === 'cci.supervisor.resource';\n }\n return false;\n};\n\n/** @alpha */\nexport const vcfAutomationApi = ApiBlueprint.make({\n name: 'vcfAutomationApi',\n params: defineParams => defineParams({\n api: vcfAutomationApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, identityApi }) => new VcfAutomationClient({ discoveryApi, identityApi }),\n }),\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfDeploymentOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.deployment-overview',\n params: {\n filter: isVCFDeployment,\n loader: () => import('./components/VCFAutomationDeploymentOverview').then(m => <m.VCFAutomationDeploymentOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfDeploymentContent = EntityContentBlueprint.make({\n name: 'vcf-automation.deployment-details',\n params: {\n path: '/vcf-automation-deployment',\n title: 'VCF Deployment Details',\n filter: isVCFDeployment,\n loader: () => import('./components/VCFAutomationDeploymentDetails').then(m => <m.VCFAutomationDeploymentDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfVSphereVMOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.vsphere-vm-overview',\n params: {\n filter: isVCFVSphereVM,\n loader: () => import('./components/VCFAutomationVSphereVMOverview').then(m => <m.VCFAutomationVSphereVMOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfVSphereVMContent = EntityContentBlueprint.make({\n name: 'vcf-automation.vsphere-vm-details',\n params: {\n path: '/vcf-automation-vsphere-vm',\n title: 'VCF vSphere VM Details',\n filter: isVCFVSphereVM,\n loader: () => import('./components/VCFAutomationVSphereVMDetails').then(m => <m.VCFAutomationVSphereVMDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfProjectOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.project-overview',\n params: {\n filter: isVCFProject,\n loader: () => import('./components/VCFAutomationProjectOverview').then(m => <m.VCFAutomationProjectOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfProjectContent = EntityContentBlueprint.make({\n name: 'vcf-automation.project-details',\n params: {\n path: '/vcf-automation-project',\n title: 'VCF Project Details',\n filter: isVCFProject,\n loader: () => import('./components/VCFAutomationProjectDetails').then(m => <m.VCFAutomationProjectDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfGenericResourceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.generic-resource-overview',\n params: {\n filter: isVCFGenericResource,\n loader: () => import('./components/VCFAutomationGenericResourceOverview').then(m => <m.VCFAutomationGenericResourceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfGenericResourceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.generic-resource-details',\n params: {\n path: '/vcf-automation-generic-resource',\n title: 'VCF Generic Resource Details',\n filter: isVCFGenericResource,\n loader: () => import('./components/VCFAutomationGenericResourceDetails').then(m => <m.VCFAutomationGenericResourceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCINamespaceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.cci-namespace-overview',\n params: {\n filter: isVCFCCINamespace,\n loader: () => import('./components/VCFAutomationCCINamespaceOverview').then(m => <m.VCFAutomationCCINamespaceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCINamespaceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.cci-namespace-details',\n params: {\n path: '/vcf-automation-cci-namespace',\n title: 'VCF CCI Namespace Details',\n filter: isVCFCCINamespace,\n loader: () => import('./components/VCFAutomationCCINamespaceDetails').then(m => <m.VCFAutomationCCINamespaceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCIResourceOverviewCard = EntityCardBlueprint.make({\n name: 'vcf-automation.cci-resource-overview',\n params: {\n filter: isVCFCCIResource,\n loader: () => import('./components/VCFAutomationCCIResourceOverview').then(m => <m.VCFAutomationCCIResourceOverview />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfCCIResourceContent = EntityContentBlueprint.make({\n name: 'vcf-automation.cci-resource-details',\n params: {\n path: '/vcf-automation-cci-resource',\n title: 'VCF CCI Resource Details',\n filter: isVCFCCIResource,\n loader: () => import('./components/VCFAutomationCCIResourceDetails').then(m => <m.VCFAutomationCCIResourceDetails />),\n },\n disabled: false,\n});\n\n/** @alpha */\nexport const vcfAutomationPlugin = createFrontendPlugin({\n pluginId: 'vcf-automation',\n extensions: [\n vcfAutomationApi,\n vcfDeploymentOverviewCard,\n vcfDeploymentContent,\n vcfVSphereVMOverviewCard,\n vcfVSphereVMContent,\n vcfProjectOverviewCard,\n vcfProjectContent,\n vcfGenericResourceOverviewCard,\n vcfGenericResourceContent,\n vcfCCINamespaceOverviewCard,\n vcfCCINamespaceContent,\n vcfCCIResourceOverviewCard,\n vcfCCIResourceContent,\n ],\n});\n\nexport default vcfAutomationPlugin;"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VcfAutomationClient.esm.js","sources":["../../src/api/VcfAutomationClient.ts"],"sourcesContent":["import { createApiRef, DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { VcfProject as VcfProjectType } from '../types';\n\nexport interface VcfDeploymentEvent {\n timestamp: string;\n status: string;\n operation: string;\n user: string;\n details: string;\n}\n\nexport interface VcfDeploymentConfig {\n key: string;\n value: string;\n}\n\nexport interface VcfDeploymentResponse {\n content: any;\n pageable: any;\n config: VcfDeploymentConfig[];\n history: VcfDeploymentEvent[];\n}\n\nexport interface VcfVSphereVM {\n id: string;\n name: string;\n type: string;\n properties: {\n resourceId: string;\n moref: string;\n resourceDescLink: string;\n powerState: string;\n zone: string;\n environmentName: string;\n hasSnapshots: string;\n computeHostType: string;\n id: string;\n memoryGB: string;\n cpuCount: number;\n image: string;\n totalMemoryMB: number;\n endpointType: string;\n resourceName: string;\n tags: string[];\n softwareName: string;\n name: string;\n resourceLink: string;\n region: string;\n hostName: string;\n storage: {\n disks: Array<{\n vm: string;\n name: string;\n type: string;\n shares?: string;\n vcUuid: string;\n diskFile?: string;\n bootOrder?: number;\n encrypted: boolean;\n limitIops?: string;\n capacityGb: number;\n persistent: boolean;\n independent?: string;\n sharesLevel?: string;\n endpointType: string;\n resourceLink: string;\n vmFolderPath?: string;\n controllerKey: string;\n diskPlacementRef?: string;\n existingResource: string;\n provisioningType?: string;\n controllerUnitNumber: string;\n }>;\n };\n networks: Array<{\n id: string;\n name: string;\n address: string;\n network: string;\n assignment: string;\n deviceIndex: number;\n external_id: string;\n mac_address: string;\n resourceName: string;\n ipv6Addresses?: string[];\n }>;\n areVMActionsDisabled: string;\n providerId: string;\n osType: string;\n instanceUUID: string;\n componentType: string;\n address: string;\n endpointId: string;\n externalId: string;\n datacenter: string;\n datastoreName: string;\n coreCount: string;\n primaryMAC: string;\n computeHostRef: string;\n snapshotCount: string;\n accounts: string[];\n vmFolderPath: string;\n account: string;\n vcUuid: string;\n };\n createdAt: string;\n syncStatus: string;\n expense: {\n totalExpense: number;\n computeExpense: number;\n storageExpense: number;\n additionalExpense: number;\n unit: string;\n lastUpdatedTime: string;\n };\n origin: string;\n dependsOn: string[];\n state: string;\n}\n\nexport type VcfProject = VcfProjectType;\n\nexport interface VcfAutomationApi {\n getDeploymentEvents(deploymentId: string, instanceName?: string): Promise<VcfDeploymentResponse>;\n getVSphereVMDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<VcfVSphereVM>;\n getProjectDetails(projectId: string, instanceName?: string): Promise<VcfProject>;\n getGenericResourceDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<any>;\n getDeploymentDetails(deploymentId: string, instanceName?: string): Promise<any>;\n getProjects(instanceName?: string): Promise<any>;\n getDeployments(instanceName?: string): Promise<any>;\n getDeploymentResources(deploymentId: string, instanceName?: string): Promise<any>;\n getSupervisorResources(instanceName?: string): Promise<any>;\n getSupervisorResource(resourceId: string, instanceName?: string): Promise<any>;\n getSupervisorNamespaces(instanceName?: string): Promise<any>;\n getSupervisorNamespace(namespaceId: string, instanceName?: string): Promise<any>;\n // VM Power Management\n checkVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any>;\n executeVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any>;\n getStandaloneVmStatus(namespaceUrnId: string, namespaceName: string, vmName: string, instanceName?: string): Promise<any>;\n executeStandaloneVmPowerAction(namespaceUrnId: string, namespaceName: string, vmName: string, powerState: 'PoweredOn' | 'PoweredOff', vmData: any, instanceName?: string): Promise<any>;\n // Supervisor Resource Manifest Management\n getSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, instanceName?: string): Promise<any>;\n updateSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, manifest: any, instanceName?: string): Promise<any>;\n}\n\nexport const vcfAutomationApiRef = createApiRef<VcfAutomationApi>({\n id: 'plugin.vcf-automation.service',\n});\n\nexport class VcfAutomationClient implements VcfAutomationApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: { discoveryApi: DiscoveryApi; identityApi: IdentityApi }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n private async getAuthHeaders(): Promise<HeadersInit> {\n const token = await this.identityApi.getCredentials();\n return {\n 'Content-Type': 'application/json',\n ...(token?.token ? { Authorization: `Bearer ${token.token}` } : {}),\n };\n }\n\n async getDeploymentEvents(deploymentId: string, instanceName?: string): Promise<VcfDeploymentResponse> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/events?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/events`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment events: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getVSphereVMDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<VcfVSphereVM> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch resource details: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getGenericResourceDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}`;\n \n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch resource details: ${response.statusText}`);\n }\n\n return await response.json();\n }\n\n async getDeploymentDetails(deploymentId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}`;\n \n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment details: ${response.statusText}`);\n }\n\n return await response.json();\n }\n\n async getProjectDetails(projectId: string, instanceName?: string): Promise<VcfProject> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/projects/${projectId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/projects/${projectId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch project details: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getProjects(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/projects?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/projects`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch projects: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getDeployments(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployments: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getDeploymentResources(deploymentId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName\n ? `${baseUrl}/deployments/${deploymentId}/resources?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment resources: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorResources(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-resources?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-resources`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor resources: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorResource(resourceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-resources/${resourceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor resource: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorNamespaces(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-namespaces?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-namespaces`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor namespaces: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorNamespace(namespaceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-namespaces/${namespaceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-namespaces/${namespaceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor namespace: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // VM Power Management for deployment-managed VMs\n async checkVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/resources/${resourceId}/power-actions/${action}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/resources/${resourceId}/power-actions/${action}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to check VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async executeVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/resources/${resourceId}/power-actions/${action}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/resources/${resourceId}/power-actions/${action}`;\n const response = await fetch(url, {\n method: 'POST',\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to execute VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // VM Power Management for standalone VMs\n async getStandaloneVmStatus(namespaceUrnId: string, namespaceName: string, vmName: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/status?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/status`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to get standalone VM status: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async executeStandaloneVmPowerAction(namespaceUrnId: string, namespaceName: string, vmName: string, powerState: 'PoweredOn' | 'PoweredOff', vmData: any, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/power-state?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/power-state`;\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ powerState, vmData }),\n });\n if (!response.ok) {\n throw new Error(`Failed to execute standalone VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // Supervisor Resource Manifest Management\n async getSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const params = new URLSearchParams({\n apiVersion,\n kind,\n });\n if (instanceName) {\n params.append('instance', instanceName);\n }\n \n const url = `${baseUrl}/supervisor-resource-manifest/${namespaceUrnId}/${namespaceName}/${resourceName}?${params.toString()}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to get supervisor resource manifest: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async updateSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, manifest: any, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const params = new URLSearchParams({\n apiVersion,\n kind,\n });\n if (instanceName) {\n params.append('instance', instanceName);\n }\n \n const url = `${baseUrl}/supervisor-resource-manifest/${namespaceUrnId}/${namespaceName}/${resourceName}?${params.toString()}`;\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ manifest }),\n });\n if (!response.ok) {\n throw new Error(`Failed to update supervisor resource manifest: ${response.statusText}`);\n }\n return await response.json();\n }\n} "],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VcfAutomationClient.esm.js","sources":["../../src/api/VcfAutomationClient.ts"],"sourcesContent":["import { createApiRef, DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { VcfProject as VcfProjectType } from '../types';\n\nexport interface VcfDeploymentEvent {\n timestamp: string;\n status: string;\n operation: string;\n user: string;\n details: string;\n}\n\nexport interface VcfDeploymentConfig {\n key: string;\n value: string;\n}\n\nexport interface VcfDeploymentResponse {\n content: any;\n pageable: any;\n config: VcfDeploymentConfig[];\n history: VcfDeploymentEvent[];\n}\n\nexport interface VcfVSphereVM {\n id: string;\n name: string;\n type: string;\n properties: {\n resourceId: string;\n moref: string;\n resourceDescLink: string;\n powerState: string;\n zone: string;\n environmentName: string;\n hasSnapshots: string;\n computeHostType: string;\n id: string;\n memoryGB: string;\n cpuCount: number;\n image: string;\n totalMemoryMB: number;\n endpointType: string;\n resourceName: string;\n tags: string[];\n softwareName: string;\n name: string;\n resourceLink: string;\n region: string;\n hostName: string;\n storage: {\n disks: Array<{\n vm: string;\n name: string;\n type: string;\n shares?: string;\n vcUuid: string;\n diskFile?: string;\n bootOrder?: number;\n encrypted: boolean;\n limitIops?: string;\n capacityGb: number;\n persistent: boolean;\n independent?: string;\n sharesLevel?: string;\n endpointType: string;\n resourceLink: string;\n vmFolderPath?: string;\n controllerKey: string;\n diskPlacementRef?: string;\n existingResource: string;\n provisioningType?: string;\n controllerUnitNumber: string;\n }>;\n };\n networks: Array<{\n id: string;\n name: string;\n address: string;\n network: string;\n assignment: string;\n deviceIndex: number;\n external_id: string;\n mac_address: string;\n resourceName: string;\n ipv6Addresses?: string[];\n }>;\n areVMActionsDisabled: string;\n providerId: string;\n osType: string;\n instanceUUID: string;\n componentType: string;\n address: string;\n endpointId: string;\n externalId: string;\n datacenter: string;\n datastoreName: string;\n coreCount: string;\n primaryMAC: string;\n computeHostRef: string;\n snapshotCount: string;\n accounts: string[];\n vmFolderPath: string;\n account: string;\n vcUuid: string;\n };\n createdAt: string;\n syncStatus: string;\n expense: {\n totalExpense: number;\n computeExpense: number;\n storageExpense: number;\n additionalExpense: number;\n unit: string;\n lastUpdatedTime: string;\n };\n origin: string;\n dependsOn: string[];\n state: string;\n}\n\nexport type VcfProject = VcfProjectType;\n\nexport interface VcfAutomationApi {\n getDeploymentEvents(deploymentId: string, instanceName?: string): Promise<VcfDeploymentResponse>;\n getVSphereVMDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<VcfVSphereVM>;\n getProjectDetails(projectId: string, instanceName?: string): Promise<VcfProject>;\n getGenericResourceDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<any>;\n getDeploymentDetails(deploymentId: string, instanceName?: string): Promise<any>;\n getProjects(instanceName?: string): Promise<any>;\n getDeployments(instanceName?: string): Promise<any>;\n getDeploymentResources(deploymentId: string, instanceName?: string): Promise<any>;\n getSupervisorResources(instanceName?: string): Promise<any>;\n getSupervisorResource(resourceId: string, instanceName?: string): Promise<any>;\n getSupervisorNamespaces(instanceName?: string): Promise<any>;\n getSupervisorNamespace(namespaceId: string, instanceName?: string): Promise<any>;\n // VM Power Management\n checkVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any>;\n executeVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any>;\n getStandaloneVmStatus(namespaceUrnId: string, namespaceName: string, vmName: string, instanceName?: string): Promise<any>;\n executeStandaloneVmPowerAction(namespaceUrnId: string, namespaceName: string, vmName: string, powerState: 'PoweredOn' | 'PoweredOff', vmData: any, instanceName?: string): Promise<any>;\n // Supervisor Resource Manifest Management\n getSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, instanceName?: string): Promise<any>;\n updateSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, manifest: any, instanceName?: string): Promise<any>;\n}\n\nexport const vcfAutomationApiRef = createApiRef<VcfAutomationApi>({\n id: 'plugin.vcf-automation.service',\n});\n\nexport class VcfAutomationClient implements VcfAutomationApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: { discoveryApi: DiscoveryApi; identityApi: IdentityApi }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n private async getAuthHeaders(): Promise<HeadersInit> {\n const token = await this.identityApi.getCredentials();\n return {\n 'Content-Type': 'application/json',\n ...(token?.token ? { Authorization: `Bearer ${token.token}` } : {}),\n };\n }\n\n async getDeploymentEvents(deploymentId: string, instanceName?: string): Promise<VcfDeploymentResponse> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/events?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/events`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment events: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getVSphereVMDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<VcfVSphereVM> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch resource details: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getGenericResourceDetails(deploymentId: string, resourceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources/${resourceId}`;\n \n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch resource details: ${response.statusText}`);\n }\n\n return await response.json();\n }\n\n async getDeploymentDetails(deploymentId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName \n ? `${baseUrl}/deployments/${deploymentId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}`;\n \n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment details: ${response.statusText}`);\n }\n\n return await response.json();\n }\n\n async getProjectDetails(projectId: string, instanceName?: string): Promise<VcfProject> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/projects/${projectId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/projects/${projectId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch project details: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getProjects(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/projects?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/projects`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch projects: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getDeployments(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName \n ? `${baseUrl}/deployments?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployments: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getDeploymentResources(deploymentId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n const url = instanceName\n ? `${baseUrl}/deployments/${deploymentId}/resources?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/deployments/${deploymentId}/resources`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch deployment resources: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorResources(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-resources?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-resources`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor resources: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorResource(resourceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-resources/${resourceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-resources/${resourceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor resource: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorNamespaces(instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-namespaces?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-namespaces`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor namespaces: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async getSupervisorNamespace(namespaceId: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/supervisor-namespaces/${namespaceId}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/supervisor-namespaces/${namespaceId}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch supervisor namespace: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // VM Power Management for deployment-managed VMs\n async checkVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/resources/${resourceId}/power-actions/${action}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/resources/${resourceId}/power-actions/${action}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to check VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async executeVmPowerAction(resourceId: string, action: 'PowerOn' | 'PowerOff', instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/resources/${resourceId}/power-actions/${action}?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/resources/${resourceId}/power-actions/${action}`;\n const response = await fetch(url, {\n method: 'POST',\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to execute VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // VM Power Management for standalone VMs\n async getStandaloneVmStatus(namespaceUrnId: string, namespaceName: string, vmName: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/status?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/status`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to get standalone VM status: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async executeStandaloneVmPowerAction(namespaceUrnId: string, namespaceName: string, vmName: string, powerState: 'PoweredOn' | 'PoweredOff', vmData: any, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const url = instanceName\n ? `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/power-state?instance=${encodeURIComponent(instanceName)}`\n : `${baseUrl}/standalone-vms/${namespaceUrnId}/${namespaceName}/${vmName}/power-state`;\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ powerState, vmData }),\n });\n if (!response.ok) {\n throw new Error(`Failed to execute standalone VM power action: ${response.statusText}`);\n }\n return await response.json();\n }\n\n // Supervisor Resource Manifest Management\n async getSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const params = new URLSearchParams({\n apiVersion,\n kind,\n });\n if (instanceName) {\n params.append('instance', instanceName);\n }\n \n const url = `${baseUrl}/supervisor-resource-manifest/${namespaceUrnId}/${namespaceName}/${resourceName}?${params.toString()}`;\n const response = await fetch(url, {\n headers,\n });\n if (!response.ok) {\n throw new Error(`Failed to get supervisor resource manifest: ${response.statusText}`);\n }\n return await response.json();\n }\n\n async updateSupervisorResourceManifest(namespaceUrnId: string, namespaceName: string, resourceName: string, apiVersion: string, kind: string, manifest: any, instanceName?: string): Promise<any> {\n const baseUrl = await this.discoveryApi.getBaseUrl('vcf-automation');\n const headers = await this.getAuthHeaders();\n \n const params = new URLSearchParams({\n apiVersion,\n kind,\n });\n if (instanceName) {\n params.append('instance', instanceName);\n }\n \n const url = `${baseUrl}/supervisor-resource-manifest/${namespaceUrnId}/${namespaceName}/${resourceName}?${params.toString()}`;\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ manifest }),\n });\n if (!response.ok) {\n throw new Error(`Failed to update supervisor resource manifest: ${response.statusText}`);\n }\n return await response.json();\n }\n} "],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCFAutomationCCINamespaceDetails.esm.js","sources":["../../src/components/VCFAutomationCCINamespaceDetails.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n InfoCard,\n StructuredMetadataTable,\n StatusOK,\n StatusError,\n StatusPending,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport { Grid, Typography, Box, Card, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(theme => ({\n statusChip: {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n },\n conditionChip: {\n margin: theme.spacing(0.25),\n },\n card: {\n marginBottom: theme.spacing(2),\n },\n statusCard: {\n border: `1px solid ${theme.palette.divider}`,\n },\n}));\n\ninterface VMClass {\n name: string;\n}\n\ninterface StorageClass {\n name: string;\n limit: string;\n}\n\ninterface Zone {\n name: string;\n cpuLimit: string;\n cpuReservation: string;\n memoryLimit: string;\n memoryReservation: string;\n}\n\ninterface Condition {\n type: string;\n status: string;\n lastTransitionTime: string;\n reason?: string;\n message?: string;\n}\n\nexport const VCFAutomationCCINamespaceDetails = () => {\n const classes = useStyles();\n const { entity } = useEntity();\n\n const resourceProperties = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'];\n const supervisorNamespaceData = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'];\n const namespaceEndpoint = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-cci-namespace-endpoint'];\n const namespacePhase = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-cci-namespace-phase'];\n const resourceState = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-state'];\n const syncStatus = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-sync-status'];\n const createdAt = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-created-at'];\n const origin = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'];\n\n const isStandalone = origin === 'SUPERVISOR_NAMESPACE';\n \n // For standalone namespaces, use supervisor namespace data; for deployment-managed, use resource properties\n let namespaceData = null;\n if (isStandalone && supervisorNamespaceData) {\n try {\n namespaceData = JSON.parse(supervisorNamespaceData);\n } catch (e) {\n // Keep null if parsing fails\n }\n } else if (resourceProperties) {\n try {\n namespaceData = JSON.parse(resourceProperties);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n\n if (!namespaceData) {\n return (\n <InfoCard title={`CCI Supervisor Namespace Details${isStandalone ? ' (Standalone)' : ''}`}>\n <Typography>No namespace data available.</Typography>\n </InfoCard>\n );\n }\n\n const { status, metadata } = namespaceData;\n\n const renderStatusIcon = (conditionStatus: string) => {\n switch (conditionStatus.toLowerCase()) {\n case 'true':\n return <StatusOK />;\n case 'false':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n const basicInfo = {\n 'Namespace Name': namespaceData.name || 'Unknown',\n 'Resource ID': namespaceData.id || 'Unknown',\n 'Resource Link': namespaceData.resourceLink || 'Not available',\n 'Phase': namespacePhase || status?.phase || 'Unknown',\n 'State': resourceState || 'Unknown',\n 'Sync Status': syncStatus || 'Unknown',\n 'Created At': createdAt ? new Date(createdAt).toLocaleString() : 'Unknown',\n 'Existing Resource': namespaceData.existing ? 'Yes' : 'No',\n };\n\n const infrastructureInfo = {\n 'Infrastructure ID': metadata?.['infrastructure.cci.vmware.com/id'] || 'Not available',\n 'Project ID': metadata?.['infrastructure.cci.vmware.com/project-id'] || 'Not available',\n 'Endpoint URL': namespaceEndpoint || status?.namespaceEndpointURL || 'Not available',\n };\n\n const vmClassColumns: TableColumn<VMClass>[] = [\n { title: 'VM Class Name', field: 'name' },\n ];\n\n const storageClassColumns: TableColumn<StorageClass>[] = [\n { title: 'Storage Class Name', field: 'name' },\n { title: 'Limit', field: 'limit' },\n ];\n\n const zoneColumns: TableColumn<Zone>[] = [\n { title: 'Zone Name', field: 'name' },\n { title: 'CPU Limit', field: 'cpuLimit' },\n { title: 'CPU Reservation', field: 'cpuReservation' },\n { title: 'Memory Limit', field: 'memoryLimit' },\n { title: 'Memory Reservation', field: 'memoryReservation' },\n ];\n\n const conditionColumns: TableColumn<Condition>[] = [\n { \n title: 'Status', \n field: 'status',\n render: (rowData) => (\n <Box display=\"flex\" alignItems=\"center\">\n {renderStatusIcon(rowData.status)}\n <span style={{ marginLeft: 8 }}>{rowData.status}</span>\n </Box>\n ),\n },\n { title: 'Type', field: 'type' },\n { title: 'Last Transition', field: 'lastTransitionTime' },\n { title: 'Reason', field: 'reason' },\n { title: 'Message', field: 'message' },\n ];\n\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <InfoCard title=\"Basic Information\">\n <StructuredMetadataTable metadata={basicInfo} />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12}>\n <InfoCard title=\"Infrastructure Details\">\n <StructuredMetadataTable metadata={infrastructureInfo} />\n </InfoCard>\n </Grid>\n\n {status?.conditions && status.conditions.length > 0 && (\n <Grid item xs={12}>\n <InfoCard title=\"Namespace Conditions\">\n <Table\n columns={conditionColumns}\n data={status.conditions}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.vmClasses && status.vmClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Available VM Classes\">\n <Table\n columns={vmClassColumns}\n data={status.vmClasses}\n options={{\n search: true,\n paging: status.vmClasses.length > 10,\n pageSize: 10,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.storageClasses && status.storageClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Storage Classes\">\n <Table\n columns={storageClassColumns}\n data={status.storageClasses}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.zones && status.zones.length > 0 && (\n <Grid item xs={12}>\n <InfoCard title=\"Resource Zones\">\n <Table\n columns={zoneColumns}\n data={status.zones}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status && (\n <Grid item xs={12}>\n <InfoCard title=\"Namespace Status Summary\">\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Phase\n </Typography>\n <Typography variant=\"h4\">\n {status.phase || 'Unknown'}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n VM Classes\n </Typography>\n <Typography variant=\"h4\">\n {status.vmClasses?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Storage Classes\n </Typography>\n <Typography variant=\"h4\">\n {status.storageClasses?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Zones\n </Typography>\n <Typography variant=\"h4\">\n {status.zones?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n </InfoCard>\n </Grid>\n )}\n </Grid>\n );\n};"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VCFAutomationCCINamespaceDetails.esm.js","sources":["../../src/components/VCFAutomationCCINamespaceDetails.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n InfoCard,\n StructuredMetadataTable,\n StatusOK,\n StatusError,\n StatusPending,\n Table,\n TableColumn,\n} from '@backstage/core-components';\nimport { Grid, Typography, Box, Card, CardContent } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(theme => ({\n statusChip: {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n },\n conditionChip: {\n margin: theme.spacing(0.25),\n },\n card: {\n marginBottom: theme.spacing(2),\n },\n statusCard: {\n border: `1px solid ${theme.palette.divider}`,\n },\n}));\n\ninterface VMClass {\n name: string;\n}\n\ninterface StorageClass {\n name: string;\n limit: string;\n}\n\ninterface Zone {\n name: string;\n cpuLimit: string;\n cpuReservation: string;\n memoryLimit: string;\n memoryReservation: string;\n}\n\ninterface Condition {\n type: string;\n status: string;\n lastTransitionTime: string;\n reason?: string;\n message?: string;\n}\n\nexport const VCFAutomationCCINamespaceDetails = () => {\n const classes = useStyles();\n const { entity } = useEntity();\n\n const resourceProperties = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'];\n const supervisorNamespaceData = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'];\n const namespaceEndpoint = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-cci-namespace-endpoint'];\n const namespacePhase = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-cci-namespace-phase'];\n const resourceState = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-state'];\n const syncStatus = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-sync-status'];\n const createdAt = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-created-at'];\n const origin = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'];\n\n const isStandalone = origin === 'SUPERVISOR_NAMESPACE';\n \n // For standalone namespaces, use supervisor namespace data; for deployment-managed, use resource properties\n let namespaceData = null;\n if (isStandalone && supervisorNamespaceData) {\n try {\n namespaceData = JSON.parse(supervisorNamespaceData);\n } catch (e) {\n // Keep null if parsing fails\n }\n } else if (resourceProperties) {\n try {\n namespaceData = JSON.parse(resourceProperties);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n\n if (!namespaceData) {\n return (\n <InfoCard title={`CCI Supervisor Namespace Details${isStandalone ? ' (Standalone)' : ''}`}>\n <Typography>No namespace data available.</Typography>\n </InfoCard>\n );\n }\n\n const { status, metadata } = namespaceData;\n\n const renderStatusIcon = (conditionStatus: string) => {\n switch (conditionStatus.toLowerCase()) {\n case 'true':\n return <StatusOK />;\n case 'false':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n const basicInfo = {\n 'Namespace Name': namespaceData.name || 'Unknown',\n 'Resource ID': namespaceData.id || 'Unknown',\n 'Resource Link': namespaceData.resourceLink || 'Not available',\n 'Phase': namespacePhase || status?.phase || 'Unknown',\n 'State': resourceState || 'Unknown',\n 'Sync Status': syncStatus || 'Unknown',\n 'Created At': createdAt ? new Date(createdAt).toLocaleString() : 'Unknown',\n 'Existing Resource': namespaceData.existing ? 'Yes' : 'No',\n };\n\n const infrastructureInfo = {\n 'Infrastructure ID': metadata?.['infrastructure.cci.vmware.com/id'] || 'Not available',\n 'Project ID': metadata?.['infrastructure.cci.vmware.com/project-id'] || 'Not available',\n 'Endpoint URL': namespaceEndpoint || status?.namespaceEndpointURL || 'Not available',\n };\n\n const vmClassColumns: TableColumn<VMClass>[] = [\n { title: 'VM Class Name', field: 'name' },\n ];\n\n const storageClassColumns: TableColumn<StorageClass>[] = [\n { title: 'Storage Class Name', field: 'name' },\n { title: 'Limit', field: 'limit' },\n ];\n\n const zoneColumns: TableColumn<Zone>[] = [\n { title: 'Zone Name', field: 'name' },\n { title: 'CPU Limit', field: 'cpuLimit' },\n { title: 'CPU Reservation', field: 'cpuReservation' },\n { title: 'Memory Limit', field: 'memoryLimit' },\n { title: 'Memory Reservation', field: 'memoryReservation' },\n ];\n\n const conditionColumns: TableColumn<Condition>[] = [\n { \n title: 'Status', \n field: 'status',\n render: (rowData) => (\n <Box display=\"flex\" alignItems=\"center\">\n {renderStatusIcon(rowData.status)}\n <span style={{ marginLeft: 8 }}>{rowData.status}</span>\n </Box>\n ),\n },\n { title: 'Type', field: 'type' },\n { title: 'Last Transition', field: 'lastTransitionTime' },\n { title: 'Reason', field: 'reason' },\n { title: 'Message', field: 'message' },\n ];\n\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <InfoCard title=\"Basic Information\">\n <StructuredMetadataTable metadata={basicInfo} />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12}>\n <InfoCard title=\"Infrastructure Details\">\n <StructuredMetadataTable metadata={infrastructureInfo} />\n </InfoCard>\n </Grid>\n\n {status?.conditions && status.conditions.length > 0 && (\n <Grid item xs={12}>\n <InfoCard title=\"Namespace Conditions\">\n <Table\n columns={conditionColumns}\n data={status.conditions}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.vmClasses && status.vmClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Available VM Classes\">\n <Table\n columns={vmClassColumns}\n data={status.vmClasses}\n options={{\n search: true,\n paging: status.vmClasses.length > 10,\n pageSize: 10,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.storageClasses && status.storageClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Storage Classes\">\n <Table\n columns={storageClassColumns}\n data={status.storageClasses}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status?.zones && status.zones.length > 0 && (\n <Grid item xs={12}>\n <InfoCard title=\"Resource Zones\">\n <Table\n columns={zoneColumns}\n data={status.zones}\n options={{\n search: true,\n paging: false,\n padding: 'dense',\n }}\n />\n </InfoCard>\n </Grid>\n )}\n\n {status && (\n <Grid item xs={12}>\n <InfoCard title=\"Namespace Status Summary\">\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Phase\n </Typography>\n <Typography variant=\"h4\">\n {status.phase || 'Unknown'}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n VM Classes\n </Typography>\n <Typography variant=\"h4\">\n {status.vmClasses?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Storage Classes\n </Typography>\n <Typography variant=\"h4\">\n {status.storageClasses?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n <Grid item xs={12} sm={6} md={3}>\n <Card className={classes.statusCard}>\n <CardContent>\n <Typography variant=\"h6\" color=\"textSecondary\">\n Zones\n </Typography>\n <Typography variant=\"h4\">\n {status.zones?.length || 0}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n </InfoCard>\n </Grid>\n )}\n </Grid>\n );\n};"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VCFAutomationCCINamespaceOverview.esm.js","sources":["../../src/components/VCFAutomationCCINamespaceOverview.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { vcfAutomationApiRef } from '../api/VcfAutomationClient';\nimport {\n InfoCard,\n StructuredMetadataTable,\n StatusOK,\n StatusError,\n StatusPending,\n Progress,\n ResponseErrorPanel,\n} from '@backstage/core-components';\nimport { Grid, Typography, Chip, Box } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useAsync from 'react-use/lib/useAsync';\n\nconst useStyles = makeStyles(theme => ({\n statusChip: {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n },\n conditionChip: {\n margin: theme.spacing(0.25),\n },\n}));\n\nexport const VCFAutomationCCINamespaceOverview = () => {\n const classes = useStyles();\n const { entity } = useEntity();\n const api = useApi(vcfAutomationApiRef);\n\n // Extract stable values from entity\n const deploymentId = entity.spec?.system as string;\n const resourceId = entity.metadata.name;\n const instanceName = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-instance'];\n\n // Parse annotation data once using useMemo\n const annotationData = useMemo(() => {\n const resourceProperties = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'];\n const supervisorNamespaceData = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'];\n const origin = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'];\n \n let namespaceData = null;\n \n // For standalone namespaces, use supervisor namespace data\n if (supervisorNamespaceData && supervisorNamespaceData !== '{}') {\n try {\n namespaceData = JSON.parse(supervisorNamespaceData);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n \n // For deployment-managed namespaces, use resource properties\n if (!namespaceData && resourceProperties && resourceProperties !== '{}') {\n try {\n namespaceData = JSON.parse(resourceProperties);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n \n return {\n namespaceData,\n isStandalone: origin === 'SUPERVISOR_NAMESPACE',\n origin: origin || '',\n };\n }, [\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'],\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'],\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'],\n ]);\n\n // Check if we need to make API call\n const needsApiCall = !annotationData.namespaceData;\n\n // Fallback API call if annotation data is missing or empty\n const { value: apiNamespaceData, loading, error } = useAsync(async () => {\n if (!needsApiCall || !resourceId) {\n return null;\n }\n\n try {\n // For standalone namespaces, fetch supervisor namespace directly\n if (annotationData.isStandalone) {\n const response = await api.getSupervisorNamespace(resourceId, instanceName);\n return response;\n }\n \n // For deployment-managed namespaces, fetch from deployment resources\n if (!deploymentId) {\n return null;\n }\n \n const response = await api.getDeploymentResources(deploymentId, instanceName);\n let resources = null;\n if (response) {\n // Handle both direct array and paginated response with content wrapper\n if (Array.isArray(response)) {\n resources = response;\n } else if (response.content && Array.isArray(response.content)) {\n resources = response.content;\n }\n }\n if (resources) {\n return resources.find((r: any) => r.id === resourceId);\n }\n return null;\n } catch (apiError) {\n console.error('Failed to fetch namespace data:', apiError);\n return null;\n }\n }, [needsApiCall, deploymentId, resourceId, instanceName, annotationData.isStandalone]);\n\n // Determine final data to use\n const namespaceData = annotationData.namespaceData || apiNamespaceData;\n\n if (loading) {\n return (\n <InfoCard title={`CCI Supervisor Namespace${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Progress />\n </InfoCard>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (!namespaceData) {\n return (\n <InfoCard title={`CCI Supervisor Namespace${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Typography>No namespace data available.</Typography>\n </InfoCard>\n );\n }\n\n const { status, metadata } = namespaceData;\n\n const renderStatusIcon = (conditionStatus: string) => {\n switch (conditionStatus.toLowerCase()) {\n case 'true':\n return <StatusOK />;\n case 'false':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n const basicInfo = {\n 'Namespace Name': namespaceData.name,\n 'Resource Link': namespaceData.resourceLink,\n 'Phase': status?.phase || 'Unknown',\n 'Endpoint URL': status?.namespaceEndpointURL || 'Not available',\n 'Infrastructure ID': metadata?.['infrastructure.cci.vmware.com/id'] || 'Not available',\n 'Project ID': metadata?.['infrastructure.cci.vmware.com/project-id'] || 'Not available',\n };\n\n return (\n <InfoCard title={`CCI Supervisor Namespace Overview${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Basic Information\n </Typography>\n <StructuredMetadataTable metadata={basicInfo} />\n </Grid>\n\n {status?.conditions && status.conditions.length > 0 && (\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Conditions\n </Typography>\n <Box>\n {status.conditions.map((condition: any, index: number) => (\n <Box key={index} display=\"flex\" alignItems=\"center\" mb={1}>\n {renderStatusIcon(condition.status)}\n <Chip\n label={`${condition.type}: ${condition.status}`}\n size=\"small\"\n className={classes.conditionChip}\n color={condition.status === 'True' ? 'primary' : 'default'}\n />\n <Typography variant=\"caption\" style={{ marginLeft: 8 }}>\n {condition.lastTransitionTime}\n </Typography>\n </Box>\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.vmClasses && status.vmClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Available VM Classes\n </Typography>\n <Box>\n {status.vmClasses.map((vmClass: any, index: number) => (\n <Chip\n key={index}\n label={vmClass.name}\n size=\"small\"\n className={classes.statusChip}\n variant=\"outlined\"\n />\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.storageClasses && status.storageClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Storage Classes\n </Typography>\n <Box>\n {status.storageClasses.map((storageClass: any, index: number) => (\n <Box key={index} mb={1}>\n <Chip\n label={storageClass.name}\n size=\"small\"\n className={classes.statusChip}\n color=\"secondary\"\n />\n <Typography variant=\"caption\" display=\"block\">\n Limit: {storageClass.limit}\n </Typography>\n </Box>\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.zones && status.zones.length > 0 && (\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Resource Zones\n </Typography>\n <Grid container spacing={2}>\n {status.zones.map((zone: any, index: number) => (\n <Grid item xs={12} md={6} key={index}>\n <InfoCard title={zone.name}>\n <StructuredMetadataTable\n metadata={{\n 'CPU Limit': zone.cpuLimit,\n 'CPU Reservation': zone.cpuReservation,\n 'Memory Limit': zone.memoryLimit,\n 'Memory Reservation': zone.memoryReservation,\n }}\n />\n </InfoCard>\n </Grid>\n ))}\n </Grid>\n </Grid>\n )}\n </Grid>\n </InfoCard>\n );\n};"],"names":["namespaceData","response"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VCFAutomationCCINamespaceOverview.esm.js","sources":["../../src/components/VCFAutomationCCINamespaceOverview.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { vcfAutomationApiRef } from '../api/VcfAutomationClient';\nimport {\n InfoCard,\n StructuredMetadataTable,\n StatusOK,\n StatusError,\n StatusPending,\n Progress,\n ResponseErrorPanel,\n} from '@backstage/core-components';\nimport { Grid, Typography, Chip, Box } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useAsync from 'react-use/lib/useAsync';\n\nconst useStyles = makeStyles(theme => ({\n statusChip: {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n },\n conditionChip: {\n margin: theme.spacing(0.25),\n },\n}));\n\nexport const VCFAutomationCCINamespaceOverview = () => {\n const classes = useStyles();\n const { entity } = useEntity();\n const api = useApi(vcfAutomationApiRef);\n\n // Extract stable values from entity\n const deploymentId = entity.spec?.system as string;\n const resourceId = entity.metadata.name;\n const instanceName = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-instance'];\n\n // Parse annotation data once using useMemo\n const annotationData = useMemo(() => {\n const resourceProperties = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'];\n const supervisorNamespaceData = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'];\n const origin = entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'];\n \n let namespaceData = null;\n \n // For standalone namespaces, use supervisor namespace data\n if (supervisorNamespaceData && supervisorNamespaceData !== '{}') {\n try {\n namespaceData = JSON.parse(supervisorNamespaceData);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n \n // For deployment-managed namespaces, use resource properties\n if (!namespaceData && resourceProperties && resourceProperties !== '{}') {\n try {\n namespaceData = JSON.parse(resourceProperties);\n } catch (e) {\n // Keep null if parsing fails\n }\n }\n \n return {\n namespaceData,\n isStandalone: origin === 'SUPERVISOR_NAMESPACE',\n origin: origin || '',\n };\n }, [\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-properties'],\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-supervisor-namespace-data'],\n entity.metadata.annotations?.['terasky.backstage.io/vcf-automation-resource-origin'],\n ]);\n\n // Check if we need to make API call\n const needsApiCall = !annotationData.namespaceData;\n\n // Fallback API call if annotation data is missing or empty\n const { value: apiNamespaceData, loading, error } = useAsync(async () => {\n if (!needsApiCall || !resourceId) {\n return null;\n }\n\n try {\n // For standalone namespaces, fetch supervisor namespace directly\n if (annotationData.isStandalone) {\n const response = await api.getSupervisorNamespace(resourceId, instanceName);\n return response;\n }\n \n // For deployment-managed namespaces, fetch from deployment resources\n if (!deploymentId) {\n return null;\n }\n \n const response = await api.getDeploymentResources(deploymentId, instanceName);\n let resources = null;\n if (response) {\n // Handle both direct array and paginated response with content wrapper\n if (Array.isArray(response)) {\n resources = response;\n } else if (response.content && Array.isArray(response.content)) {\n resources = response.content;\n }\n }\n if (resources) {\n return resources.find((r: any) => r.id === resourceId);\n }\n return null;\n } catch (apiError) {\n console.error('Failed to fetch namespace data:', apiError);\n return null;\n }\n }, [needsApiCall, deploymentId, resourceId, instanceName, annotationData.isStandalone]);\n\n // Determine final data to use\n const namespaceData = annotationData.namespaceData || apiNamespaceData;\n\n if (loading) {\n return (\n <InfoCard title={`CCI Supervisor Namespace${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Progress />\n </InfoCard>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (!namespaceData) {\n return (\n <InfoCard title={`CCI Supervisor Namespace${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Typography>No namespace data available.</Typography>\n </InfoCard>\n );\n }\n\n const { status, metadata } = namespaceData;\n\n const renderStatusIcon = (conditionStatus: string) => {\n switch (conditionStatus.toLowerCase()) {\n case 'true':\n return <StatusOK />;\n case 'false':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n const basicInfo = {\n 'Namespace Name': namespaceData.name,\n 'Resource Link': namespaceData.resourceLink,\n 'Phase': status?.phase || 'Unknown',\n 'Endpoint URL': status?.namespaceEndpointURL || 'Not available',\n 'Infrastructure ID': metadata?.['infrastructure.cci.vmware.com/id'] || 'Not available',\n 'Project ID': metadata?.['infrastructure.cci.vmware.com/project-id'] || 'Not available',\n };\n\n return (\n <InfoCard title={`CCI Supervisor Namespace Overview${annotationData.isStandalone ? ' (Standalone)' : ''}`}>\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Basic Information\n </Typography>\n <StructuredMetadataTable metadata={basicInfo} />\n </Grid>\n\n {status?.conditions && status.conditions.length > 0 && (\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Conditions\n </Typography>\n <Box>\n {status.conditions.map((condition: any, index: number) => (\n <Box key={index} display=\"flex\" alignItems=\"center\" mb={1}>\n {renderStatusIcon(condition.status)}\n <Chip\n label={`${condition.type}: ${condition.status}`}\n size=\"small\"\n className={classes.conditionChip}\n color={condition.status === 'True' ? 'primary' : 'default'}\n />\n <Typography variant=\"caption\" style={{ marginLeft: 8 }}>\n {condition.lastTransitionTime}\n </Typography>\n </Box>\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.vmClasses && status.vmClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Available VM Classes\n </Typography>\n <Box>\n {status.vmClasses.map((vmClass: any, index: number) => (\n <Chip\n key={index}\n label={vmClass.name}\n size=\"small\"\n className={classes.statusChip}\n variant=\"outlined\"\n />\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.storageClasses && status.storageClasses.length > 0 && (\n <Grid item xs={12} md={6}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Storage Classes\n </Typography>\n <Box>\n {status.storageClasses.map((storageClass: any, index: number) => (\n <Box key={index} mb={1}>\n <Chip\n label={storageClass.name}\n size=\"small\"\n className={classes.statusChip}\n color=\"secondary\"\n />\n <Typography variant=\"caption\" display=\"block\">\n Limit: {storageClass.limit}\n </Typography>\n </Box>\n ))}\n </Box>\n </Grid>\n )}\n\n {status?.zones && status.zones.length > 0 && (\n <Grid item xs={12}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n Resource Zones\n </Typography>\n <Grid container spacing={2}>\n {status.zones.map((zone: any, index: number) => (\n <Grid item xs={12} md={6} key={index}>\n <InfoCard title={zone.name}>\n <StructuredMetadataTable\n metadata={{\n 'CPU Limit': zone.cpuLimit,\n 'CPU Reservation': zone.cpuReservation,\n 'Memory Limit': zone.memoryLimit,\n 'Memory Reservation': zone.memoryReservation,\n }}\n />\n </InfoCard>\n </Grid>\n ))}\n </Grid>\n </Grid>\n )}\n </Grid>\n </InfoCard>\n );\n};"],"names":["namespaceData","response"],"mappings":"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"}
|