@terasky/backstage-plugin-vcf-automation 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useEntity } from '@backstage/plugin-catalog-react';
3
3
  import { ResponseErrorPanel, Progress, InfoCard, StructuredMetadataTable } from '@backstage/core-components';
4
4
  import { Grid } from '@material-ui/core';
@@ -21,89 +21,95 @@ const VCFAutomationVSphereVMDetails = () => {
21
21
  return await vcfAutomationApi.getVSphereVMDetails(deploymentId, resourceId);
22
22
  }, [resourceId, deploymentId, allowed]);
23
23
  if (error) {
24
- return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });
24
+ return /* @__PURE__ */ jsx(ResponseErrorPanel, { error });
25
25
  }
26
26
  if (loading) {
27
- return /* @__PURE__ */ React.createElement(Progress, null);
27
+ return /* @__PURE__ */ jsx(Progress, {});
28
28
  }
29
29
  if (!resourceId || !deploymentId) {
30
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "No resource ID found" }, "This entity is not associated with a VCF resource or deployment.");
30
+ return /* @__PURE__ */ jsx(InfoCard, { title: "No resource ID found", children: "This entity is not associated with a VCF resource or deployment." });
31
31
  }
32
32
  if (!allowed) {
33
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "Permission Denied" }, "You don't have permission to view resource details.");
33
+ return /* @__PURE__ */ jsx(InfoCard, { title: "Permission Denied", children: "You don't have permission to view resource details." });
34
34
  }
35
35
  if (!value) {
36
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "No Data" }, "No resource details available.");
36
+ return /* @__PURE__ */ jsx(InfoCard, { title: "No Data", children: "No resource details available." });
37
37
  }
38
- return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(InfoCard, { title: "Resource Status" }, /* @__PURE__ */ React.createElement(
39
- StructuredMetadataTable,
40
- {
41
- metadata: {
42
- Name: value.name,
43
- Type: value.type,
44
- State: value.state,
45
- "Sync Status": value.syncStatus,
46
- "Created At": new Date(value.createdAt).toLocaleString(),
47
- Origin: value.origin,
48
- "Depends On": value.dependsOn
38
+ return /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, children: [
39
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(InfoCard, { title: "Resource Status", children: /* @__PURE__ */ jsx(
40
+ StructuredMetadataTable,
41
+ {
42
+ metadata: {
43
+ Name: value.name,
44
+ Type: value.type,
45
+ State: value.state,
46
+ "Sync Status": value.syncStatus,
47
+ "Created At": new Date(value.createdAt).toLocaleString(),
48
+ Origin: value.origin,
49
+ "Depends On": value.dependsOn
50
+ }
49
51
  }
50
- }
51
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(InfoCard, { title: "VM Properties" }, /* @__PURE__ */ React.createElement(
52
- StructuredMetadataTable,
53
- {
54
- metadata: {
55
- "Power State": value.properties.powerState,
56
- Zone: value.properties.zone,
57
- Environment: value.properties.environmentName,
58
- "Host Type": value.properties.computeHostType,
59
- "Memory (GB)": value.properties.memoryGB,
60
- "CPU Count": value.properties.cpuCount,
61
- "Total Memory (MB)": value.properties.totalMemoryMB,
62
- "OS Type": value.properties.osType,
63
- Region: value.properties.region,
64
- "Host Name": value.properties.hostName,
65
- "Data Center": value.properties.datacenter,
66
- "Datastore": value.properties.datastoreName
52
+ ) }) }),
53
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, children: /* @__PURE__ */ jsx(InfoCard, { title: "VM Properties", children: /* @__PURE__ */ jsx(
54
+ StructuredMetadataTable,
55
+ {
56
+ metadata: {
57
+ "Power State": value.properties.powerState,
58
+ Zone: value.properties.zone,
59
+ Environment: value.properties.environmentName,
60
+ "Host Type": value.properties.computeHostType,
61
+ "Memory (GB)": value.properties.memoryGB,
62
+ "CPU Count": value.properties.cpuCount,
63
+ "Total Memory (MB)": value.properties.totalMemoryMB,
64
+ "OS Type": value.properties.osType,
65
+ Region: value.properties.region,
66
+ "Host Name": value.properties.hostName,
67
+ "Data Center": value.properties.datacenter,
68
+ "Datastore": value.properties.datastoreName
69
+ }
67
70
  }
68
- }
69
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(InfoCard, { title: "Storage Configuration" }, /* @__PURE__ */ React.createElement(
70
- StructuredMetadataTable,
71
- {
72
- metadata: {
73
- "Primary Disk": {
74
- Name: value.properties.storage?.disks[0]?.name || "N/A",
75
- "Capacity (GB)": value.properties.storage?.disks[0]?.capacityGb || "N/A",
76
- Type: value.properties.storage?.disks[0]?.type || "N/A",
77
- "Provisioning": value.properties.storage?.disks[0]?.provisioningType || "N/A"
71
+ ) }) }),
72
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, children: /* @__PURE__ */ jsx(InfoCard, { title: "Storage Configuration", children: /* @__PURE__ */ jsx(
73
+ StructuredMetadataTable,
74
+ {
75
+ metadata: {
76
+ "Primary Disk": {
77
+ Name: value.properties.storage?.disks[0]?.name || "N/A",
78
+ "Capacity (GB)": value.properties.storage?.disks[0]?.capacityGb || "N/A",
79
+ Type: value.properties.storage?.disks[0]?.type || "N/A",
80
+ "Provisioning": value.properties.storage?.disks[0]?.provisioningType || "N/A"
81
+ }
78
82
  }
79
83
  }
80
- }
81
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(InfoCard, { title: "Network Configuration" }, /* @__PURE__ */ React.createElement(
82
- StructuredMetadataTable,
83
- {
84
- metadata: {
85
- "Primary Network": value.properties.networks?.[0] ? {
86
- Name: value.properties.networks[0].name,
87
- Address: value.properties.networks[0].address,
88
- "MAC Address": value.properties.networks[0].mac_address,
89
- Assignment: value.properties.networks[0].assignment,
90
- "IPv6 Addresses": value.properties.networks[0].ipv6Addresses || []
91
- } : "No network configuration available"
84
+ ) }) }),
85
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, children: /* @__PURE__ */ jsx(InfoCard, { title: "Network Configuration", children: /* @__PURE__ */ jsx(
86
+ StructuredMetadataTable,
87
+ {
88
+ metadata: {
89
+ "Primary Network": value.properties.networks?.[0] ? {
90
+ Name: value.properties.networks[0].name,
91
+ Address: value.properties.networks[0].address,
92
+ "MAC Address": value.properties.networks[0].mac_address,
93
+ Assignment: value.properties.networks[0].assignment,
94
+ "IPv6 Addresses": value.properties.networks[0].ipv6Addresses || []
95
+ } : "No network configuration available"
96
+ }
92
97
  }
93
- }
94
- ))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React.createElement(InfoCard, { title: "Expense Information" }, /* @__PURE__ */ React.createElement(
95
- StructuredMetadataTable,
96
- {
97
- metadata: {
98
- "Total Expense": `$${value.expense.totalExpense.toFixed(2)}`,
99
- "Compute Expense": `$${value.expense.computeExpense.toFixed(2)}`,
100
- "Storage Expense": `$${value.expense.storageExpense.toFixed(2)}`,
101
- "Additional Expense": `$${value.expense.additionalExpense.toFixed(2)}`,
102
- "Currency": value.expense.unit,
103
- "Last Updated": new Date(value.expense.lastUpdatedTime).toLocaleString()
98
+ ) }) }),
99
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, children: /* @__PURE__ */ jsx(InfoCard, { title: "Expense Information", children: /* @__PURE__ */ jsx(
100
+ StructuredMetadataTable,
101
+ {
102
+ metadata: {
103
+ "Total Expense": `$${value.expense.totalExpense.toFixed(2)}`,
104
+ "Compute Expense": `$${value.expense.computeExpense.toFixed(2)}`,
105
+ "Storage Expense": `$${value.expense.storageExpense.toFixed(2)}`,
106
+ "Additional Expense": `$${value.expense.additionalExpense.toFixed(2)}`,
107
+ "Currency": value.expense.unit,
108
+ "Last Updated": new Date(value.expense.lastUpdatedTime).toLocaleString()
109
+ }
104
110
  }
105
- }
106
- ))));
111
+ ) }) })
112
+ ] });
107
113
  };
108
114
 
109
115
  export { VCFAutomationVSphereVMDetails };
@@ -1 +1 @@
1
- {"version":3,"file":"VCFAutomationVSphereVMDetails.esm.js","sources":["../../src/components/VCFAutomationVSphereVMDetails.tsx"],"sourcesContent":["import React from 'react';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n InfoCard,\n Progress,\n ResponseErrorPanel,\n StructuredMetadataTable,\n} from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport useAsync from 'react-use/lib/useAsync';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { vcfAutomationApiRef } from '../api/VcfAutomationClient';\nimport { showDeploymentResourcesDataPermission } from '@terasky/backstage-plugin-vcf-automation-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nexport const VCFAutomationVSphereVMDetails = () => {\n const { entity } = useEntity();\n const vcfAutomationApi = useApi(vcfAutomationApiRef);\n const deploymentId = entity.spec?.system || '';\n const resourceId = entity.metadata.name;\n\n const { allowed } = usePermission({\n permission: showDeploymentResourcesDataPermission,\n });\n\n const { value, loading, error } = useAsync(async () => {\n if (!resourceId || !deploymentId || !allowed) return undefined;\n return await vcfAutomationApi.getVSphereVMDetails(deploymentId as string, resourceId);\n }, [resourceId, deploymentId, allowed]);\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (loading) {\n return <Progress />;\n }\n\n if (!resourceId || !deploymentId) {\n return <InfoCard title=\"No resource ID found\">This entity is not associated with a VCF resource or deployment.</InfoCard>;\n }\n\n if (!allowed) {\n return <InfoCard title=\"Permission Denied\">You don't have permission to view resource details.</InfoCard>;\n }\n\n if (!value) {\n return <InfoCard title=\"No Data\">No resource details available.</InfoCard>;\n }\n\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <InfoCard title=\"Resource Status\">\n <StructuredMetadataTable\n metadata={{\n Name: value.name,\n Type: value.type,\n State: value.state,\n 'Sync Status': value.syncStatus,\n 'Created At': new Date(value.createdAt).toLocaleString(),\n Origin: value.origin,\n 'Depends On': value.dependsOn,\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"VM Properties\">\n <StructuredMetadataTable\n metadata={{\n 'Power State': value.properties.powerState,\n Zone: value.properties.zone,\n Environment: value.properties.environmentName,\n 'Host Type': value.properties.computeHostType,\n 'Memory (GB)': value.properties.memoryGB,\n 'CPU Count': value.properties.cpuCount,\n 'Total Memory (MB)': value.properties.totalMemoryMB,\n 'OS Type': value.properties.osType,\n Region: value.properties.region,\n 'Host Name': value.properties.hostName,\n 'Data Center': value.properties.datacenter,\n 'Datastore': value.properties.datastoreName,\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Storage Configuration\">\n <StructuredMetadataTable\n metadata={{\n 'Primary Disk': {\n Name: value.properties.storage?.disks[0]?.name || 'N/A',\n 'Capacity (GB)': value.properties.storage?.disks[0]?.capacityGb || 'N/A',\n Type: value.properties.storage?.disks[0]?.type || 'N/A',\n 'Provisioning': value.properties.storage?.disks[0]?.provisioningType || 'N/A',\n },\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Network Configuration\">\n <StructuredMetadataTable\n metadata={{\n 'Primary Network': value.properties.networks?.[0] ? {\n Name: value.properties.networks[0].name,\n Address: value.properties.networks[0].address,\n 'MAC Address': value.properties.networks[0].mac_address,\n Assignment: value.properties.networks[0].assignment,\n 'IPv6 Addresses': value.properties.networks[0].ipv6Addresses || [],\n } : 'No network configuration available',\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Expense Information\">\n <StructuredMetadataTable\n metadata={{\n 'Total Expense': `$${value.expense.totalExpense.toFixed(2)}`,\n 'Compute Expense': `$${value.expense.computeExpense.toFixed(2)}`,\n 'Storage Expense': `$${value.expense.storageExpense.toFixed(2)}`,\n 'Additional Expense': `$${value.expense.additionalExpense.toFixed(2)}`,\n 'Currency': value.expense.unit,\n 'Last Updated': new Date(value.expense.lastUpdatedTime).toLocaleString(),\n }}\n />\n </InfoCard>\n </Grid>\n </Grid>\n );\n}; "],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VCFAutomationVSphereVMDetails.esm.js","sources":["../../src/components/VCFAutomationVSphereVMDetails.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n InfoCard,\n Progress,\n ResponseErrorPanel,\n StructuredMetadataTable,\n} from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport useAsync from 'react-use/lib/useAsync';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { vcfAutomationApiRef } from '../api/VcfAutomationClient';\nimport { showDeploymentResourcesDataPermission } from '@terasky/backstage-plugin-vcf-automation-common';\nimport { usePermission } from '@backstage/plugin-permission-react';\n\nexport const VCFAutomationVSphereVMDetails = () => {\n const { entity } = useEntity();\n const vcfAutomationApi = useApi(vcfAutomationApiRef);\n const deploymentId = entity.spec?.system || '';\n const resourceId = entity.metadata.name;\n\n const { allowed } = usePermission({\n permission: showDeploymentResourcesDataPermission,\n });\n\n const { value, loading, error } = useAsync(async () => {\n if (!resourceId || !deploymentId || !allowed) return undefined;\n return await vcfAutomationApi.getVSphereVMDetails(deploymentId as string, resourceId);\n }, [resourceId, deploymentId, allowed]);\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (loading) {\n return <Progress />;\n }\n\n if (!resourceId || !deploymentId) {\n return <InfoCard title=\"No resource ID found\">This entity is not associated with a VCF resource or deployment.</InfoCard>;\n }\n\n if (!allowed) {\n return <InfoCard title=\"Permission Denied\">You don't have permission to view resource details.</InfoCard>;\n }\n\n if (!value) {\n return <InfoCard title=\"No Data\">No resource details available.</InfoCard>;\n }\n\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <InfoCard title=\"Resource Status\">\n <StructuredMetadataTable\n metadata={{\n Name: value.name,\n Type: value.type,\n State: value.state,\n 'Sync Status': value.syncStatus,\n 'Created At': new Date(value.createdAt).toLocaleString(),\n Origin: value.origin,\n 'Depends On': value.dependsOn,\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"VM Properties\">\n <StructuredMetadataTable\n metadata={{\n 'Power State': value.properties.powerState,\n Zone: value.properties.zone,\n Environment: value.properties.environmentName,\n 'Host Type': value.properties.computeHostType,\n 'Memory (GB)': value.properties.memoryGB,\n 'CPU Count': value.properties.cpuCount,\n 'Total Memory (MB)': value.properties.totalMemoryMB,\n 'OS Type': value.properties.osType,\n Region: value.properties.region,\n 'Host Name': value.properties.hostName,\n 'Data Center': value.properties.datacenter,\n 'Datastore': value.properties.datastoreName,\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Storage Configuration\">\n <StructuredMetadataTable\n metadata={{\n 'Primary Disk': {\n Name: value.properties.storage?.disks[0]?.name || 'N/A',\n 'Capacity (GB)': value.properties.storage?.disks[0]?.capacityGb || 'N/A',\n Type: value.properties.storage?.disks[0]?.type || 'N/A',\n 'Provisioning': value.properties.storage?.disks[0]?.provisioningType || 'N/A',\n },\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Network Configuration\">\n <StructuredMetadataTable\n metadata={{\n 'Primary Network': value.properties.networks?.[0] ? {\n Name: value.properties.networks[0].name,\n Address: value.properties.networks[0].address,\n 'MAC Address': value.properties.networks[0].mac_address,\n Assignment: value.properties.networks[0].assignment,\n 'IPv6 Addresses': value.properties.networks[0].ipv6Addresses || [],\n } : 'No network configuration available',\n }}\n />\n </InfoCard>\n </Grid>\n\n <Grid item xs={12} md={6}>\n <InfoCard title=\"Expense Information\">\n <StructuredMetadataTable\n metadata={{\n 'Total Expense': `$${value.expense.totalExpense.toFixed(2)}`,\n 'Compute Expense': `$${value.expense.computeExpense.toFixed(2)}`,\n 'Storage Expense': `$${value.expense.storageExpense.toFixed(2)}`,\n 'Additional Expense': `$${value.expense.additionalExpense.toFixed(2)}`,\n 'Currency': value.expense.unit,\n 'Last Updated': new Date(value.expense.lastUpdatedTime).toLocaleString(),\n }}\n />\n </InfoCard>\n </Grid>\n </Grid>\n );\n}; "],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useEntity } from '@backstage/plugin-catalog-react';
3
3
  import { useApi } from '@backstage/core-plugin-api';
4
4
  import { vcfAutomationApiRef } from '../api/VcfAutomationClient.esm.js';
@@ -36,33 +36,80 @@ const VCFAutomationVSphereVMOverview = () => {
36
36
  return await api.getVSphereVMDetails(deploymentId, resourceId);
37
37
  }, [resourceId, deploymentId, hasViewPermission]);
38
38
  if (!resourceId || !deploymentId) {
39
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "VCF Automation Resource" }, /* @__PURE__ */ React.createElement(Typography, null, "No resource ID or deployment ID found for this entity."));
39
+ return /* @__PURE__ */ jsx(InfoCard, { title: "VCF Automation Resource", children: /* @__PURE__ */ jsx(Typography, { children: "No resource ID or deployment ID found for this entity." }) });
40
40
  }
41
41
  if (loading || permissionLoading) {
42
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "VCF Automation Resource" }, /* @__PURE__ */ React.createElement(Progress, null));
42
+ return /* @__PURE__ */ jsx(InfoCard, { title: "VCF Automation Resource", children: /* @__PURE__ */ jsx(Progress, {}) });
43
43
  }
44
44
  if (!hasViewPermission) {
45
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "VCF Automation Resource" }, /* @__PURE__ */ React.createElement(Typography, null, "You don't have permission to view resource details."));
45
+ return /* @__PURE__ */ jsx(InfoCard, { title: "VCF Automation Resource", children: /* @__PURE__ */ jsx(Typography, { children: "You don't have permission to view resource details." }) });
46
46
  }
47
47
  if (error) {
48
- return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });
48
+ return /* @__PURE__ */ jsx(ResponseErrorPanel, { error });
49
49
  }
50
50
  if (!resource) {
51
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "VCF Automation Resource" }, /* @__PURE__ */ React.createElement(Typography, null, "No resource details available."));
51
+ return /* @__PURE__ */ jsx(InfoCard, { title: "VCF Automation Resource", children: /* @__PURE__ */ jsx(Typography, { children: "No resource details available." }) });
52
52
  }
53
53
  const getStatusComponent = (state) => {
54
54
  switch (state.toUpperCase()) {
55
55
  case "SUCCESS":
56
56
  case "OK":
57
- return /* @__PURE__ */ React.createElement(StatusOK, null);
57
+ return /* @__PURE__ */ jsx(StatusOK, {});
58
58
  case "ERROR":
59
59
  case "FAILED":
60
- return /* @__PURE__ */ React.createElement(StatusError, null);
60
+ return /* @__PURE__ */ jsx(StatusError, {});
61
61
  default:
62
- return /* @__PURE__ */ React.createElement(StatusPending, null);
62
+ return /* @__PURE__ */ jsx(StatusPending, {});
63
63
  }
64
64
  };
65
- return /* @__PURE__ */ React.createElement(InfoCard, { title: "VCF Automation Resource" }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Name"), /* @__PURE__ */ React.createElement(Typography, null, resource.name)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Type"), /* @__PURE__ */ React.createElement(Typography, null, resource.type)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "State"), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, alignItems: "center" }, getStatusComponent(resource.state), /* @__PURE__ */ React.createElement(Typography, { className: `${classes.statusText} ${resource.state.toLowerCase()}` }, resource.state))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Sync Status"), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, alignItems: "center" }, getStatusComponent(resource.syncStatus), /* @__PURE__ */ React.createElement(Typography, { className: `${classes.statusText} ${resource.syncStatus.toLowerCase()}` }, resource.syncStatus))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Created At"), /* @__PURE__ */ React.createElement(Typography, null, new Date(resource.createdAt).toLocaleString())), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Region"), /* @__PURE__ */ React.createElement(Typography, null, resource.properties?.region || "N/A")), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Resource Metrics"), /* @__PURE__ */ React.createElement(Typography, null, `CPU: ${resource.properties?.cpuCount || "N/A"} cores, `, `Memory: ${resource.properties?.memoryGB || "N/A"} GB, `, `Storage: ${resource.properties?.storage?.disks?.[0]?.capacityGb || "N/A"} GB`)), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle2" }, "Expense Information"), /* @__PURE__ */ React.createElement(Typography, null, `Total: $${resource.expense?.totalExpense?.toFixed(2) || "N/A"}, `, `Compute: $${resource.expense?.computeExpense?.toFixed(2) || "N/A"}, `, `Storage: $${resource.expense?.storageExpense?.toFixed(2) || "N/A"}`))));
65
+ return /* @__PURE__ */ jsx(InfoCard, { title: "VCF Automation Resource", children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, children: [
66
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
67
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Name" }),
68
+ /* @__PURE__ */ jsx(Typography, { children: resource.name })
69
+ ] }),
70
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
71
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Type" }),
72
+ /* @__PURE__ */ jsx(Typography, { children: resource.type })
73
+ ] }),
74
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
75
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "State" }),
76
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 1, alignItems: "center", children: [
77
+ getStatusComponent(resource.state),
78
+ /* @__PURE__ */ jsx(Typography, { className: `${classes.statusText} ${resource.state.toLowerCase()}`, children: resource.state })
79
+ ] })
80
+ ] }),
81
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
82
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Sync Status" }),
83
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 1, alignItems: "center", children: [
84
+ getStatusComponent(resource.syncStatus),
85
+ /* @__PURE__ */ jsx(Typography, { className: `${classes.statusText} ${resource.syncStatus.toLowerCase()}`, children: resource.syncStatus })
86
+ ] })
87
+ ] }),
88
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
89
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Created At" }),
90
+ /* @__PURE__ */ jsx(Typography, { children: new Date(resource.createdAt).toLocaleString() })
91
+ ] }),
92
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 6, children: [
93
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Region" }),
94
+ /* @__PURE__ */ jsx(Typography, { children: resource.properties?.region || "N/A" })
95
+ ] }),
96
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 12, children: [
97
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Resource Metrics" }),
98
+ /* @__PURE__ */ jsxs(Typography, { children: [
99
+ `CPU: ${resource.properties?.cpuCount || "N/A"} cores, `,
100
+ `Memory: ${resource.properties?.memoryGB || "N/A"} GB, `,
101
+ `Storage: ${resource.properties?.storage?.disks?.[0]?.capacityGb || "N/A"} GB`
102
+ ] })
103
+ ] }),
104
+ /* @__PURE__ */ jsxs(Grid, { item: true, xs: 12, children: [
105
+ /* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: "Expense Information" }),
106
+ /* @__PURE__ */ jsxs(Typography, { children: [
107
+ `Total: $${resource.expense?.totalExpense?.toFixed(2) || "N/A"}, `,
108
+ `Compute: $${resource.expense?.computeExpense?.toFixed(2) || "N/A"}, `,
109
+ `Storage: $${resource.expense?.storageExpense?.toFixed(2) || "N/A"}`
110
+ ] })
111
+ ] })
112
+ ] }) });
66
113
  };
67
114
 
68
115
  export { VCFAutomationVSphereVMOverview };
@@ -1 +1 @@
1
- {"version":3,"file":"VCFAutomationVSphereVMOverview.esm.js","sources":["../../src/components/VCFAutomationVSphereVMOverview.tsx"],"sourcesContent":["import React 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 Progress,\n ResponseErrorPanel,\n StatusOK,\n StatusError,\n StatusPending,\n} from '@backstage/core-components';\nimport { Grid, Typography, makeStyles } from '@material-ui/core';\nimport useAsync from 'react-use/lib/useAsync';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { showDeploymentResourcesDataPermission } from '@terasky/backstage-plugin-vcf-automation-common';\n\nconst useStyles = makeStyles(theme => ({\n statusText: {\n fontWeight: 'bold',\n '&.success': {\n color: theme.palette.success.main,\n },\n '&.error': {\n color: theme.palette.error.main,\n },\n '&.pending': {\n color: theme.palette.warning.main,\n },\n },\n}));\n\nexport const VCFAutomationVSphereVMOverview = () => {\n const { entity } = useEntity();\n const api = useApi(vcfAutomationApiRef);\n const classes = useStyles();\n const deploymentId = entity.spec?.system || '';\n const resourceId = entity.metadata.name;\n\n const { allowed: hasViewPermission, loading: permissionLoading } = usePermission({\n permission: showDeploymentResourcesDataPermission,\n });\n\n const { value: resource, loading, error } = useAsync(async () => {\n if (!resourceId || !deploymentId || !hasViewPermission) return undefined;\n return await api.getVSphereVMDetails(deploymentId as string, resourceId);\n }, [resourceId, deploymentId, hasViewPermission]);\n\n if (!resourceId || !deploymentId) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>No resource ID or deployment ID found for this entity.</Typography>\n </InfoCard>\n );\n }\n\n if (loading || permissionLoading) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (!hasViewPermission) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>You don't have permission to view resource details.</Typography>\n </InfoCard>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (!resource) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>No resource details available.</Typography>\n </InfoCard>\n );\n }\n\n const getStatusComponent = (state: string) => {\n switch (state.toUpperCase()) {\n case 'SUCCESS':\n case 'OK':\n return <StatusOK />;\n case 'ERROR':\n case 'FAILED':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Name</Typography>\n <Typography>{resource.name}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Type</Typography>\n <Typography>{resource.type}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">State</Typography>\n <Grid container spacing={1} alignItems=\"center\">\n {getStatusComponent(resource.state)}\n <Typography className={`${classes.statusText} ${resource.state.toLowerCase()}`}>\n {resource.state}\n </Typography>\n </Grid>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Sync Status</Typography>\n <Grid container spacing={1} alignItems=\"center\">\n {getStatusComponent(resource.syncStatus)}\n <Typography className={`${classes.statusText} ${resource.syncStatus.toLowerCase()}`}>\n {resource.syncStatus}\n </Typography>\n </Grid>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Created At</Typography>\n <Typography>{new Date(resource.createdAt).toLocaleString()}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Region</Typography>\n <Typography>{resource.properties?.region || 'N/A'}</Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\">Resource Metrics</Typography>\n <Typography>\n {`CPU: ${resource.properties?.cpuCount || 'N/A'} cores, `}\n {`Memory: ${resource.properties?.memoryGB || 'N/A'} GB, `}\n {`Storage: ${resource.properties?.storage?.disks?.[0]?.capacityGb || 'N/A'} GB`}\n </Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\">Expense Information</Typography>\n <Typography>\n {`Total: $${resource.expense?.totalExpense?.toFixed(2) || 'N/A'}, `}\n {`Compute: $${resource.expense?.computeExpense?.toFixed(2) || 'N/A'}, `}\n {`Storage: $${resource.expense?.storageExpense?.toFixed(2) || 'N/A'}`}\n </Typography>\n </Grid>\n </Grid>\n </InfoCard>\n );\n}; "],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VCFAutomationVSphereVMOverview.esm.js","sources":["../../src/components/VCFAutomationVSphereVMOverview.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { vcfAutomationApiRef } from '../api/VcfAutomationClient';\nimport {\n InfoCard,\n Progress,\n ResponseErrorPanel,\n StatusOK,\n StatusError,\n StatusPending,\n} from '@backstage/core-components';\nimport { Grid, Typography, makeStyles } from '@material-ui/core';\nimport useAsync from 'react-use/lib/useAsync';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { showDeploymentResourcesDataPermission } from '@terasky/backstage-plugin-vcf-automation-common';\n\nconst useStyles = makeStyles(theme => ({\n statusText: {\n fontWeight: 'bold',\n '&.success': {\n color: theme.palette.success.main,\n },\n '&.error': {\n color: theme.palette.error.main,\n },\n '&.pending': {\n color: theme.palette.warning.main,\n },\n },\n}));\n\nexport const VCFAutomationVSphereVMOverview = () => {\n const { entity } = useEntity();\n const api = useApi(vcfAutomationApiRef);\n const classes = useStyles();\n const deploymentId = entity.spec?.system || '';\n const resourceId = entity.metadata.name;\n\n const { allowed: hasViewPermission, loading: permissionLoading } = usePermission({\n permission: showDeploymentResourcesDataPermission,\n });\n\n const { value: resource, loading, error } = useAsync(async () => {\n if (!resourceId || !deploymentId || !hasViewPermission) return undefined;\n return await api.getVSphereVMDetails(deploymentId as string, resourceId);\n }, [resourceId, deploymentId, hasViewPermission]);\n\n if (!resourceId || !deploymentId) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>No resource ID or deployment ID found for this entity.</Typography>\n </InfoCard>\n );\n }\n\n if (loading || permissionLoading) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Progress />\n </InfoCard>\n );\n }\n\n if (!hasViewPermission) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>You don't have permission to view resource details.</Typography>\n </InfoCard>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (!resource) {\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Typography>No resource details available.</Typography>\n </InfoCard>\n );\n }\n\n const getStatusComponent = (state: string) => {\n switch (state.toUpperCase()) {\n case 'SUCCESS':\n case 'OK':\n return <StatusOK />;\n case 'ERROR':\n case 'FAILED':\n return <StatusError />;\n default:\n return <StatusPending />;\n }\n };\n\n return (\n <InfoCard title=\"VCF Automation Resource\">\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Name</Typography>\n <Typography>{resource.name}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Type</Typography>\n <Typography>{resource.type}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">State</Typography>\n <Grid container spacing={1} alignItems=\"center\">\n {getStatusComponent(resource.state)}\n <Typography className={`${classes.statusText} ${resource.state.toLowerCase()}`}>\n {resource.state}\n </Typography>\n </Grid>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Sync Status</Typography>\n <Grid container spacing={1} alignItems=\"center\">\n {getStatusComponent(resource.syncStatus)}\n <Typography className={`${classes.statusText} ${resource.syncStatus.toLowerCase()}`}>\n {resource.syncStatus}\n </Typography>\n </Grid>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Created At</Typography>\n <Typography>{new Date(resource.createdAt).toLocaleString()}</Typography>\n </Grid>\n <Grid item xs={6}>\n <Typography variant=\"subtitle2\">Region</Typography>\n <Typography>{resource.properties?.region || 'N/A'}</Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\">Resource Metrics</Typography>\n <Typography>\n {`CPU: ${resource.properties?.cpuCount || 'N/A'} cores, `}\n {`Memory: ${resource.properties?.memoryGB || 'N/A'} GB, `}\n {`Storage: ${resource.properties?.storage?.disks?.[0]?.capacityGb || 'N/A'} GB`}\n </Typography>\n </Grid>\n <Grid item xs={12}>\n <Typography variant=\"subtitle2\">Expense Information</Typography>\n <Typography>\n {`Total: $${resource.expense?.totalExpense?.toFixed(2) || 'N/A'}, `}\n {`Compute: $${resource.expense?.computeExpense?.toFixed(2) || 'N/A'}, `}\n {`Storage: $${resource.expense?.storageExpense?.toFixed(2) || 'N/A'}`}\n </Typography>\n </Grid>\n </Grid>\n </InfoCard>\n );\n}; "],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- /// <reference types="react" />
2
1
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
2
  import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';
4
- import react from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
5
4
 
6
5
  declare const vcfAutomationPlugin: _backstage_core_plugin_api.BackstagePlugin<{
7
6
  root: _backstage_core_plugin_api.RouteRef<undefined>;
@@ -9,21 +8,21 @@ declare const vcfAutomationPlugin: _backstage_core_plugin_api.BackstagePlugin<{
9
8
  catalogIndex: _backstage_core_plugin_api.ExternalRouteRef<undefined, false>;
10
9
  }, {}>;
11
10
 
12
- declare const VCFAutomationVSphereVMOverview: () => react.JSX.Element;
11
+ declare const VCFAutomationVSphereVMOverview: () => react_jsx_runtime.JSX.Element;
13
12
 
14
- declare const VCFAutomationProjectOverview: () => react.JSX.Element;
13
+ declare const VCFAutomationProjectOverview: () => react_jsx_runtime.JSX.Element;
15
14
 
16
- declare const VCFAutomationProjectDetails: () => react.JSX.Element;
15
+ declare const VCFAutomationProjectDetails: () => react_jsx_runtime.JSX.Element;
17
16
 
18
- declare const VCFAutomationDeploymentDetails: () => react.JSX.Element;
17
+ declare const VCFAutomationDeploymentDetails: () => react_jsx_runtime.JSX.Element;
19
18
 
20
- declare const VCFAutomationVSphereVMDetails: () => react.JSX.Element;
19
+ declare const VCFAutomationVSphereVMDetails: () => react_jsx_runtime.JSX.Element;
21
20
 
22
- declare const VCFAutomationGenericResourceDetails: () => react.JSX.Element;
21
+ declare const VCFAutomationGenericResourceDetails: () => react_jsx_runtime.JSX.Element;
23
22
 
24
- declare const VCFAutomationGenericResourceOverview: () => react.JSX.Element;
23
+ declare const VCFAutomationGenericResourceOverview: () => react_jsx_runtime.JSX.Element;
25
24
 
26
- declare const VCFAutomationDeploymentOverview: () => react.JSX.Element;
25
+ declare const VCFAutomationDeploymentOverview: () => react_jsx_runtime.JSX.Element;
27
26
 
28
27
  interface VcfPageable {
29
28
  pageNumber: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terasky/backstage-plugin-vcf-automation",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,16 +34,16 @@
34
34
  "postpack": "backstage-cli package postpack"
35
35
  },
36
36
  "dependencies": {
37
- "@backstage/core-components": "^0.17.1",
38
- "@backstage/core-plugin-api": "^1.10.6",
39
- "@backstage/plugin-catalog-react": "^1.17.0",
40
- "@backstage/plugin-permission-react": "^0.4.33",
41
- "@backstage/theme": "^0.6.5",
42
- "@material-ui/core": "^4.12.2",
43
- "@material-ui/icons": "^4.9.1",
37
+ "@backstage/core-components": "^0.17.2",
38
+ "@backstage/core-plugin-api": "^1.10.7",
39
+ "@backstage/plugin-catalog-react": "^1.18.0",
40
+ "@backstage/plugin-permission-react": "^0.4.34",
41
+ "@backstage/theme": "^0.6.6",
42
+ "@material-ui/core": "^4.12.4",
43
+ "@material-ui/icons": "^4.11.3",
44
44
  "@material-ui/lab": "4.0.0-alpha.61",
45
- "@terasky/backstage-plugin-vcf-automation-common": "^0.0.1",
46
- "react-use": "^17.2.4"
45
+ "@terasky/backstage-plugin-vcf-automation-common": "^0.1.0",
46
+ "react-use": "^17.6.0"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "react": "^16.13.1 || ^17.0.0",
@@ -51,10 +51,10 @@
51
51
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
52
52
  },
53
53
  "devDependencies": {
54
- "@backstage/cli": "^0.32.0",
55
- "@backstage/core-app-api": "^1.16.1",
56
- "@backstage/dev-utils": "^1.1.9",
57
- "@backstage/test-utils": "^1.7.7",
54
+ "@backstage/cli": "^0.32.1",
55
+ "@backstage/core-app-api": "^1.17.0",
56
+ "@backstage/dev-utils": "^1.1.10",
57
+ "@backstage/test-utils": "^1.7.8",
58
58
  "@testing-library/jest-dom": "^5.10.1",
59
59
  "@testing-library/react": "^12.1.3",
60
60
  "@testing-library/user-event": "^14.0.0",