@terasky/backstage-plugin-vcf-automation 1.14.1 → 1.16.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["import {\n createFrontendPlugin,\n ApiBlueprint,\n type ExtensionDefinition,\n type FrontendPlugin,\n} 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: ExtensionDefinition = 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: ExtensionDefinition =\n 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: FrontendPlugin = 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 {\n createFrontendPlugin,\n ApiBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n EntityCardBlueprint,\n EntityContentBlueprint,\n} 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 (\n (entity.metadata.tags?.includes('vcf-automation-resource') &&\n entity.kind === 'Resource') ||\n false\n );\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 =>\n defineParams({\n api: vcfAutomationApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n },\n factory: ({ discoveryApi, identityApi }) =>\n 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: () =>\n import('./components/VCFAutomationDeploymentOverview').then(m => (\n <m.VCFAutomationDeploymentOverview />\n )),\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: () =>\n import('./components/VCFAutomationDeploymentDetails').then(m => (\n <m.VCFAutomationDeploymentDetails />\n )),\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: () =>\n import('./components/VCFAutomationVSphereVMOverview').then(m => (\n <m.VCFAutomationVSphereVMOverview />\n )),\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: () =>\n import('./components/VCFAutomationVSphereVMDetails').then(m => (\n <m.VCFAutomationVSphereVMDetails />\n )),\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: () =>\n import('./components/VCFAutomationProjectOverview').then(m => (\n <m.VCFAutomationProjectOverview />\n )),\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: () =>\n import('./components/VCFAutomationProjectDetails').then(m => (\n <m.VCFAutomationProjectDetails />\n )),\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: () =>\n import('./components/VCFAutomationGenericResourceOverview').then(m => (\n <m.VCFAutomationGenericResourceOverview />\n )),\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: () =>\n import('./components/VCFAutomationGenericResourceDetails').then(m => (\n <m.VCFAutomationGenericResourceDetails />\n )),\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: () =>\n import('./components/VCFAutomationCCINamespaceOverview').then(m => (\n <m.VCFAutomationCCINamespaceOverview />\n )),\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: () =>\n import('./components/VCFAutomationCCINamespaceDetails').then(m => (\n <m.VCFAutomationCCINamespaceDetails />\n )),\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: () =>\n import('./components/VCFAutomationCCIResourceOverview').then(m => (\n <m.VCFAutomationCCIResourceOverview />\n )),\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: () =>\n import('./components/VCFAutomationCCIResourceDetails').then(m => (\n <m.VCFAutomationCCIResourceDetails />\n )),\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;\n"],"names":[],"mappings":"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"}
@@ -49,11 +49,7 @@ const VCFAutomationCCINamespaceOverview = () => {
49
49
  isStandalone: origin === "SUPERVISOR_NAMESPACE",
50
50
  origin: origin || ""
51
51
  };
52
- }, [
53
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-properties"],
54
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-supervisor-namespace-data"],
55
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-origin"]
56
- ]);
52
+ }, [entity.metadata.annotations]);
57
53
  const needsApiCall = !annotationData.namespaceData;
58
54
  const { value: apiNamespaceData, loading, error } = useAsync(async () => {
59
55
  if (!needsApiCall || !resourceId) {
@@ -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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entity.metadata.annotations]);\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 // eslint-disable-next-line no-console\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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"}
@@ -128,16 +128,7 @@ const VCFAutomationCCIResourceDetails = () => {
128
128
  createdAt: createdAt2,
129
129
  origin: origin2
130
130
  };
131
- }, [
132
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-properties"],
133
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-cci-resource-manifest"],
134
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-cci-resource-object"],
135
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-cci-resource-context"],
136
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-state"],
137
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-sync-status"],
138
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-created-at"],
139
- entity.metadata.annotations?.["terasky.backstage.io/vcf-automation-resource-origin"]
140
- ]);
131
+ }, [entity.metadata.annotations]);
141
132
  const needsApiCall = !annotationData.resourceData || !annotationData.manifest || !annotationData.objectData;
142
133
  const { value: apiResourceData, loading, error } = useAsync(async () => {
143
134
  if (!needsApiCall || !resourceId) {
@@ -226,8 +217,8 @@ const VCFAutomationCCIResourceDetails = () => {
226
217
  if (parentEntity) {
227
218
  return await findCCINamespaceParent(parentEntity, depth + 1);
228
219
  }
229
- } catch (error2) {
230
- console.warn("Failed to fetch parent entity:", parentRef, error2);
220
+ } catch (caughtError) {
221
+ console.warn("Failed to fetch parent entity:", parentRef, caughtError);
231
222
  }
232
223
  return void 0;
233
224
  }, [catalogApi, extractNamespaceUrnId]);
@@ -237,15 +228,14 @@ const VCFAutomationCCIResourceDetails = () => {
237
228
  let contextData = null;
238
229
  try {
239
230
  contextData = typeof resourceContext === "string" ? JSON.parse(resourceContext || "{}") : resourceContext;
240
- } catch (error2) {
231
+ } catch (caughtError) {
241
232
  console.log("Debug - Resource context is not JSON, treating as string:", resourceContext);
242
233
  contextData = null;
243
234
  }
244
235
  return contextData?.namespaceUrnId || namespaceName;
245
- } else {
246
- const urnId = await findCCINamespaceParent(entity);
247
- return urnId || namespaceName;
248
236
  }
237
+ const urnId = await findCCINamespaceParent(entity);
238
+ return urnId || namespaceName;
249
239
  }, [namespaceName, resourceContext, isStandalone, entity, findCCINamespaceParent]);
250
240
  const loadManifestForEditing = useCallback(async () => {
251
241
  if (!canEditResource || !namespaceName || !resourceName || !namespaceUrnId || !apiVersion || !resourceKind) {
@@ -270,10 +260,10 @@ const VCFAutomationCCIResourceDetails = () => {
270
260
  });
271
261
  setEditingYaml(yamlContent);
272
262
  setYamlValidationError("");
273
- } catch (error2) {
263
+ } catch (caughtError) {
274
264
  setSnackbar({
275
265
  open: true,
276
- message: `Failed to fetch resource manifest: ${error2 instanceof Error ? error2.message : "Unknown error"}`,
266
+ message: `Failed to fetch resource manifest: ${caughtError instanceof Error ? caughtError.message : "Unknown error"}`,
277
267
  severity: "error"
278
268
  });
279
269
  } finally {
@@ -285,8 +275,8 @@ const VCFAutomationCCIResourceDetails = () => {
285
275
  yaml.load(yamlString);
286
276
  setYamlValidationError("");
287
277
  return true;
288
- } catch (error2) {
289
- const errorMessage = error2 instanceof Error ? error2.message : "Invalid YAML syntax";
278
+ } catch (caughtError) {
279
+ const errorMessage = caughtError instanceof Error ? caughtError.message : "Invalid YAML syntax";
290
280
  setYamlValidationError(errorMessage);
291
281
  return false;
292
282
  }
@@ -322,10 +312,10 @@ const VCFAutomationCCIResourceDetails = () => {
322
312
  severity: "success"
323
313
  });
324
314
  setTimeout(() => window.location.reload(), 1e3);
325
- } catch (error2) {
315
+ } catch (caughtError) {
326
316
  setSnackbar({
327
317
  open: true,
328
- message: `Failed to update resource manifest: ${error2 instanceof Error ? error2.message : "Unknown error"}`,
318
+ message: `Failed to update resource manifest: ${caughtError instanceof Error ? caughtError.message : "Unknown error"}`,
329
319
  severity: "error"
330
320
  });
331
321
  } finally {
@@ -395,7 +385,7 @@ const VCFAutomationCCIResourceDetails = () => {
395
385
  noRefs: true,
396
386
  sortKeys: false
397
387
  });
398
- } catch (error2) {
388
+ } catch (caughtError) {
399
389
  return JSON.stringify(data, null, 2);
400
390
  }
401
391
  };
@@ -415,17 +405,17 @@ const VCFAutomationCCIResourceDetails = () => {
415
405
  const getManifestInfo = () => {
416
406
  if (!manifest) return {};
417
407
  const info = {};
418
- if (manifest.kind) info["Kind"] = manifest.kind;
408
+ if (manifest.kind) info.Kind = manifest.kind;
419
409
  if (manifest.apiVersion) info["API Version"] = manifest.apiVersion;
420
410
  if (manifest.metadata?.name) info["Manifest Name"] = manifest.metadata.name;
421
- if (manifest.metadata?.namespace) info["Namespace"] = manifest.metadata.namespace;
411
+ if (manifest.metadata?.namespace) info.Namespace = manifest.metadata.namespace;
422
412
  if (manifest.metadata?.labels) {
423
413
  const labelCount = Object.keys(manifest.metadata.labels).length;
424
- info["Labels"] = `${labelCount} label(s)`;
414
+ info.Labels = `${labelCount} label(s)`;
425
415
  }
426
416
  if (manifest.metadata?.annotations) {
427
417
  const annotationCount = Object.keys(manifest.metadata.annotations).length;
428
- info["Annotations"] = `${annotationCount} annotation(s)`;
418
+ info.Annotations = `${annotationCount} annotation(s)`;
429
419
  }
430
420
  return info;
431
421
  };
@@ -434,10 +424,10 @@ const VCFAutomationCCIResourceDetails = () => {
434
424
  const status = objectData.status;
435
425
  const statusInfo = {};
436
426
  if (status.powerState) statusInfo["Power State"] = status.powerState;
437
- if (status.phase) statusInfo["Phase"] = status.phase;
427
+ if (status.phase) statusInfo.Phase = status.phase;
438
428
  if (status.primaryIP4) statusInfo["Primary IP"] = status.primaryIP4;
439
- if (status.host) statusInfo["Host"] = status.host;
440
- if (status.zone) statusInfo["Zone"] = status.zone;
429
+ if (status.host) statusInfo.Host = status.host;
430
+ if (status.zone) statusInfo.Zone = status.zone;
441
431
  if (status.uniqueID) statusInfo["Unique ID"] = status.uniqueID;
442
432
  if (status.instanceUUID) statusInfo["Instance UUID"] = status.instanceUUID;
443
433
  if (status.biosUUID) statusInfo["BIOS UUID"] = status.biosUUID;
@@ -669,10 +659,14 @@ const VCFAutomationCCIResourceDetails = () => {
669
659
  }
670
660
  }
671
661
  ) }),
672
- /* @__PURE__ */ jsx(Box, { className: classes.validationStatus, children: yamlValidationError ? /* @__PURE__ */ jsxs(Typography, { className: classes.yamlValidationError, children: [
673
- "\u26A0\uFE0F YAML Validation Error: ",
674
- yamlValidationError
675
- ] }) : editingYaml.trim() ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "textSecondary", children: "\u2705 YAML syntax is valid" }) : /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "textSecondary", children: "Enter YAML content above" }) }),
662
+ /* @__PURE__ */ jsxs(Box, { className: classes.validationStatus, children: [
663
+ yamlValidationError && /* @__PURE__ */ jsxs(Typography, { className: classes.yamlValidationError, children: [
664
+ "\u26A0\uFE0F YAML Validation Error: ",
665
+ yamlValidationError
666
+ ] }),
667
+ !yamlValidationError && editingYaml.trim() && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "textSecondary", children: "\u2705 YAML syntax is valid" }),
668
+ !yamlValidationError && !editingYaml.trim() && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "textSecondary", children: "Enter YAML content above" })
669
+ ] }),
676
670
  /* @__PURE__ */ jsxs(Box, { className: classes.editorActions, children: [
677
671
  /* @__PURE__ */ jsx(
678
672
  Button,