@spinnaker/kubernetes 2025.0.6 → 2025.1.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.
Files changed (99) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1178 -641
  3. package/dist/index.js.map +1 -1
  4. package/dist/interfaces/infrastructure.types.d.ts +4 -1
  5. package/dist/manifest/AnnotationCustomSections.d.ts +5 -0
  6. package/dist/manifest/annotationCustomSections.component.d.ts +2 -0
  7. package/dist/manifest/artifact/ManifestArtifact.d.ts +6 -0
  8. package/dist/manifest/index.d.ts +1 -1
  9. package/dist/manifest/manifest.service.d.ts +1 -1
  10. package/dist/manifest/rollout/RollingRestart.d.ts +9 -1
  11. package/dist/manifest/status/ManifestStatus.d.ts +8 -0
  12. package/dist/rawResource/controller/FiltersPubSub.d.ts +1 -1
  13. package/dist/reactShims/index.d.ts +1 -0
  14. package/dist/reactShims/kubernetes.react.injector.d.ts +11 -0
  15. package/dist/reactShims/kubernetes.react.module.d.ts +1 -0
  16. package/dist/serverGroup/details/KubernetesServerGroupActions.d.ts +7 -0
  17. package/dist/serverGroup/details/kubernetesServerGroupDetailsGetter.d.ts +4 -0
  18. package/dist/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.d.ts +5 -0
  19. package/dist/serverGroup/details/sections/ServerGroupAnnotationCustomSection.d.ts +3 -0
  20. package/dist/serverGroup/details/sections/ServerGroupEventsSection.d.ts +3 -0
  21. package/dist/serverGroup/details/sections/ServerGroupHealthSection.d.ts +3 -0
  22. package/dist/serverGroup/details/sections/ServerGroupImagesSection.d.ts +3 -0
  23. package/dist/serverGroup/details/sections/ServerGroupInformationSection.d.ts +3 -0
  24. package/dist/serverGroup/details/sections/ServerGroupLabelsSection.d.ts +3 -0
  25. package/dist/serverGroup/details/sections/ServerGroupManifestStatusSection.d.ts +3 -0
  26. package/dist/serverGroup/details/sections/ServerGroupSizeSection.d.ts +3 -0
  27. package/dist/serverGroup/details/sections/index.d.ts +9 -0
  28. package/dist/serverGroup/details/useManifest.d.ts +8 -0
  29. package/dist/serverGroup/index.d.ts +3 -4
  30. package/dist/serverGroup/{serverGroupCommandBuilder.service.d.ts → serverGroupCommandBuilder.d.ts} +0 -1
  31. package/dist/serverGroup/{serverGroupTransformer.service.d.ts → serverGroupTransformer.d.ts} +0 -1
  32. package/dist/serverGroupManager/details/ServerGroupManagerActions.d.ts +9 -0
  33. package/dist/serverGroupManager/details/ServerGroupManagerDetails.d.ts +7 -0
  34. package/dist/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.d.ts +6 -0
  35. package/dist/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.d.ts +3 -0
  36. package/dist/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.d.ts +3 -0
  37. package/dist/serverGroupManager/details/sections/ServerGroupManagerEventsSection.d.ts +3 -0
  38. package/dist/serverGroupManager/details/sections/ServerGroupManagerInformationSection.d.ts +3 -0
  39. package/dist/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.d.ts +3 -0
  40. package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.d.ts +3 -0
  41. package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.d.ts +3 -0
  42. package/dist/serverGroupManager/details/sections/index.d.ts +8 -0
  43. package/dist/serverGroupManager/details/useKubernetesServerGroupManagerDetails.d.ts +4 -0
  44. package/dist/serverGroupManager/index.d.ts +1 -1
  45. package/package.json +3 -3
  46. package/src/index.ts +1 -0
  47. package/src/interfaces/infrastructure.types.ts +5 -0
  48. package/src/kubernetes.module.ts +32 -21
  49. package/src/manifest/AnnotationCustomSections.tsx +6 -0
  50. package/src/manifest/annotationCustomSections.component.ts +1 -1
  51. package/src/manifest/artifact/ManifestArtifact.tsx +16 -0
  52. package/src/manifest/index.ts +1 -1
  53. package/src/manifest/rollout/RollingRestart.tsx +2 -10
  54. package/src/manifest/status/ManifestStatus.tsx +39 -0
  55. package/src/manifest/status/status.component.ts +7 -32
  56. package/src/reactShims/index.ts +1 -0
  57. package/src/reactShims/kubernetes.react.injector.ts +30 -0
  58. package/src/reactShims/kubernetes.react.module.ts +12 -0
  59. package/src/serverGroup/details/KubernetesServerGroupActions.tsx +138 -0
  60. package/src/serverGroup/details/kubernetesServerGroupDetailsGetter.ts +63 -0
  61. package/src/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.ts +6 -0
  62. package/src/serverGroup/details/sections/ServerGroupAnnotationCustomSection.tsx +11 -0
  63. package/src/serverGroup/details/sections/ServerGroupEventsSection.tsx +14 -0
  64. package/src/serverGroup/details/sections/ServerGroupHealthSection.tsx +19 -0
  65. package/src/serverGroup/details/sections/ServerGroupImagesSection.tsx +14 -0
  66. package/src/serverGroup/details/sections/ServerGroupInformationSection.tsx +46 -0
  67. package/src/serverGroup/details/sections/ServerGroupLabelsSection.tsx +14 -0
  68. package/src/serverGroup/details/sections/ServerGroupManifestStatusSection.tsx +9 -0
  69. package/src/serverGroup/details/sections/ServerGroupSizeSection.tsx +35 -0
  70. package/src/serverGroup/details/sections/index.ts +9 -0
  71. package/src/serverGroup/details/useManifest.ts +42 -0
  72. package/src/serverGroup/index.ts +3 -4
  73. package/src/serverGroup/{serverGroupCommandBuilder.service.ts → serverGroupCommandBuilder.ts} +0 -9
  74. package/src/serverGroup/{serverGroupTransformer.service.spec.ts → serverGroupTransformer.spec.ts} +1 -1
  75. package/src/serverGroup/{serverGroupTransformer.service.ts → serverGroupTransformer.ts} +0 -7
  76. package/src/serverGroupManager/details/ServerGroupManagerActions.tsx +171 -0
  77. package/src/serverGroupManager/details/ServerGroupManagerDetails.tsx +72 -0
  78. package/src/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.ts +7 -0
  79. package/src/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.tsx +12 -0
  80. package/src/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.tsx +18 -0
  81. package/src/serverGroupManager/details/sections/ServerGroupManagerEventsSection.tsx +14 -0
  82. package/src/serverGroupManager/details/sections/ServerGroupManagerInformationSection.tsx +51 -0
  83. package/src/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.tsx +14 -0
  84. package/src/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.tsx +21 -0
  85. package/src/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.tsx +10 -0
  86. package/src/serverGroupManager/details/sections/index.ts +8 -0
  87. package/src/serverGroupManager/details/useKubernetesServerGroupManagerDetails.tsx +53 -0
  88. package/src/serverGroupManager/index.ts +1 -1
  89. package/dist/manifest/artifact/artifact.component.d.ts +0 -1
  90. package/dist/serverGroup/details/details.controller.d.ts +0 -1
  91. package/dist/serverGroup/details/resize/resize.controller.d.ts +0 -1
  92. package/dist/serverGroupManager/details/details.controller.d.ts +0 -1
  93. package/src/manifest/artifact/artifact.component.ts +0 -23
  94. package/src/serverGroup/details/details.controller.ts +0 -207
  95. package/src/serverGroup/details/details.html +0 -153
  96. package/src/serverGroup/details/resize/resize.controller.ts +0 -73
  97. package/src/serverGroup/details/resize/resize.html +0 -57
  98. package/src/serverGroupManager/details/details.controller.ts +0 -191
  99. package/src/serverGroupManager/details/details.html +0 -136
@@ -0,0 +1,171 @@
1
+ import { orderBy } from 'lodash';
2
+ import React from 'react';
3
+ import { Dropdown, MenuItem } from 'react-bootstrap';
4
+
5
+ import type { Application, IManifest } from '@spinnaker/core';
6
+ import {
7
+ AddEntityTagLinks,
8
+ ClusterTargetBuilder,
9
+ IfFeatureEnabled,
10
+ ModalInjector,
11
+ NameUtils,
12
+ robotToHuman,
13
+ SETTINGS,
14
+ } from '@spinnaker/core';
15
+
16
+ import type { IKubernetesServerGroupManager } from '../../interfaces';
17
+ import { KubernetesManifestCommandBuilder } from '../../manifest';
18
+ import { RollingRestart } from '../../manifest/rollout/RollingRestart';
19
+ import { ManifestWizard } from '../../manifest/wizard/ManifestWizard';
20
+
21
+ export interface IServerGroupManagerActionsProps {
22
+ application: Application;
23
+ serverGroupManager: IKubernetesServerGroupManager;
24
+ manifest: IManifest;
25
+ }
26
+
27
+ export function ServerGroupManagerActions({
28
+ application,
29
+ serverGroupManager,
30
+ manifest,
31
+ }: IServerGroupManagerActionsProps) {
32
+ const isEnabled = SETTINGS.kubernetesAdHocInfraWritesEnabled;
33
+ const entityTagTargets = ClusterTargetBuilder.buildManagerClusterTargets(serverGroupManager);
34
+
35
+ const pauseRolloutServerGroupManager = (): void => {
36
+ ModalInjector.modalService.open({
37
+ templateUrl: require('../../manifest/rollout/pause.html'),
38
+ controller: 'kubernetesV2ManifestPauseRolloutCtrl as ctrl',
39
+ resolve: {
40
+ coordinates: {
41
+ name: serverGroupManager.name,
42
+ namespace: serverGroupManager.namespace,
43
+ account: serverGroupManager.account,
44
+ },
45
+ application: application,
46
+ },
47
+ });
48
+ };
49
+
50
+ const resumeRolloutServerGroupManager = (): void => {
51
+ ModalInjector.modalService.open({
52
+ templateUrl: require('../../manifest/rollout/resume.html'),
53
+ controller: 'kubernetesV2ManifestResumeRolloutCtrl as ctrl',
54
+ resolve: {
55
+ coordinates: {
56
+ name: serverGroupManager.name,
57
+ namespace: serverGroupManager.namespace,
58
+ account: serverGroupManager.account,
59
+ },
60
+ application: application,
61
+ },
62
+ });
63
+ };
64
+
65
+ const canUndoRolloutServerGroupManager = (): boolean => {
66
+ return serverGroupManager && serverGroupManager.serverGroups && serverGroupManager.serverGroups.length > 0;
67
+ };
68
+
69
+ const undoRolloutServerGroupManager = (): void => {
70
+ ModalInjector.modalService.open({
71
+ templateUrl: require('../../manifest/rollout/undo.html'),
72
+ controller: 'kubernetesV2ManifestUndoRolloutCtrl as ctrl',
73
+ resolve: {
74
+ coordinates: {
75
+ name: serverGroupManager.name,
76
+ namespace: serverGroupManager.namespace,
77
+ account: serverGroupManager.account,
78
+ },
79
+ revisions: () => {
80
+ const [, ...rest] = orderBy(serverGroupManager.serverGroups, ['moniker.sequence'], ['desc']);
81
+ return rest.map((serverGroup, index) => ({
82
+ label: `${NameUtils.getSequence(serverGroup.moniker.sequence)}${index > 0 ? '' : ' - previous revision'}`,
83
+ revision: serverGroup.moniker.sequence,
84
+ }));
85
+ },
86
+ application: application,
87
+ },
88
+ });
89
+ };
90
+
91
+ const scaleServerGroupManager = () => {
92
+ ModalInjector.modalService.open({
93
+ templateUrl: require('../../manifest/scale/scale.html'),
94
+ controller: 'kubernetesV2ManifestScaleCtrl as ctrl',
95
+ resolve: {
96
+ coordinates: {
97
+ name: serverGroupManager.name,
98
+ namespace: serverGroupManager.namespace,
99
+ account: serverGroupManager.account,
100
+ },
101
+ currentReplicas: manifest.manifest.spec.replicas,
102
+ application: application,
103
+ },
104
+ });
105
+ };
106
+
107
+ const editServerGroupManager = (): void => {
108
+ KubernetesManifestCommandBuilder.buildNewManifestCommand(
109
+ application,
110
+ manifest.manifest,
111
+ serverGroupManager.moniker,
112
+ serverGroupManager.account,
113
+ ).then((builtCommand) => {
114
+ ManifestWizard.show({ title: 'Edit Manifest', application: application, command: builtCommand });
115
+ });
116
+ };
117
+
118
+ const deleteServerGroupManager = (): void => {
119
+ ModalInjector.modalService.open({
120
+ templateUrl: require('../../manifest/delete/delete.html'),
121
+ controller: 'kubernetesV2ManifestDeleteCtrl as ctrl',
122
+ resolve: {
123
+ coordinates: {
124
+ name: serverGroupManager.name,
125
+ namespace: serverGroupManager.namespace,
126
+ account: serverGroupManager.account,
127
+ },
128
+ application: application,
129
+ manifestController: (): string => null,
130
+ },
131
+ });
132
+ };
133
+
134
+ return (
135
+ <Dropdown className="dropdown" id="server-group-manager-actions-dropdown">
136
+ {isEnabled && (
137
+ <Dropdown.Toggle className="btn btn-sm btn-primary dropdown-toggle">
138
+ {robotToHuman(serverGroupManager.kind)} Actions
139
+ </Dropdown.Toggle>
140
+ )}
141
+ <Dropdown.Menu>
142
+ <MenuItem onClick={scaleServerGroupManager}>Scale</MenuItem>
143
+ {canUndoRolloutServerGroupManager() && (
144
+ <MenuItem onClick={undoRolloutServerGroupManager}>Undo Rollout</MenuItem>
145
+ )}
146
+ {manifest.status.paused.state && <MenuItem onClick={resumeRolloutServerGroupManager}>Resume Rollout</MenuItem>}
147
+ {!manifest.status.paused.state && !manifest.status.stable.state && (
148
+ <MenuItem onClick={pauseRolloutServerGroupManager}>Pause Rollout</MenuItem>
149
+ )}
150
+ {!manifest.status.paused.state && (
151
+ <RollingRestart application={application} serverGroupManager={serverGroupManager} />
152
+ )}
153
+ <MenuItem className="divider" />
154
+ <MenuItem onClick={editServerGroupManager}>Edit</MenuItem>
155
+ <MenuItem onClick={deleteServerGroupManager}>Delete</MenuItem>
156
+ <IfFeatureEnabled
157
+ feature="entityTags"
158
+ render={
159
+ <AddEntityTagLinks
160
+ component={serverGroupManager}
161
+ application={application}
162
+ entityType="serverGroupManager"
163
+ ownerOptions={entityTagTargets}
164
+ onUpdate={() => application.serverGroupManagers.refresh()}
165
+ />
166
+ }
167
+ />
168
+ </Dropdown.Menu>
169
+ </Dropdown>
170
+ );
171
+ }
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+
3
+ import type { Application, IServerGroupManagerDetailsProps, IServerGroupManagerStateParams } from '@spinnaker/core';
4
+ import { CloudProviderLogo, Details, EntityNotifications, IfFeatureEnabled, ReactInjector } from '@spinnaker/core';
5
+
6
+ import { ServerGroupManagerActions } from './ServerGroupManagerActions';
7
+ import {
8
+ ServerGroupManagerAnnotationCustomSection,
9
+ ServerGroupManagerArtifactsSection,
10
+ ServerGroupManagerEventsSection,
11
+ ServerGroupManagerInformationSection,
12
+ ServerGroupManagerLabelsSection,
13
+ ServerGroupManagerManifestConditionSection,
14
+ ServerGroupManagerManifestStatusSection,
15
+ } from './sections';
16
+ import { useKubernetesServerGroupManagerDetails } from './useKubernetesServerGroupManagerDetails';
17
+
18
+ export interface IKubernetesServerGroupManagerDetailsProps extends IServerGroupManagerDetailsProps {
19
+ app: Application;
20
+ serverGroupManager: IServerGroupManagerStateParams;
21
+ }
22
+
23
+ export function ServerGroupManagerDetails(props: IKubernetesServerGroupManagerDetailsProps) {
24
+ const autoClose = () => {
25
+ ReactInjector.$state.params.allowModalToStayOpen = true;
26
+ ReactInjector.$state.go('^', null, { location: 'replace' });
27
+ };
28
+ const [serverGroupManager, manifest, loading] = useKubernetesServerGroupManagerDetails(props, autoClose);
29
+
30
+ if (loading) return <Details loading={loading} />;
31
+
32
+ return (
33
+ <Details loading={loading}>
34
+ <Details.Header
35
+ icon={<CloudProviderLogo provider={props.serverGroupManager.provider} height="36px" width="36px" />}
36
+ name={serverGroupManager.displayName}
37
+ notifications={
38
+ <IfFeatureEnabled
39
+ feature="entityTags"
40
+ render={
41
+ <EntityNotifications
42
+ entity={serverGroupManager}
43
+ application={props.app}
44
+ placement="bottom"
45
+ hOffsetPercent="90%"
46
+ entityType="serverGroupManager"
47
+ pageLocation="details"
48
+ onUpdate={() => props.app.serverGroupManagers.refresh()}
49
+ />
50
+ }
51
+ />
52
+ }
53
+ actions={
54
+ <ServerGroupManagerActions
55
+ application={props.app}
56
+ serverGroupManager={serverGroupManager}
57
+ manifest={manifest}
58
+ />
59
+ }
60
+ />
61
+ <Details.Content loading={loading}>
62
+ <ServerGroupManagerManifestStatusSection serverGroupManager={serverGroupManager} manifest={manifest} />
63
+ <ServerGroupManagerInformationSection serverGroupManager={serverGroupManager} manifest={manifest} />
64
+ <ServerGroupManagerManifestConditionSection serverGroupManager={serverGroupManager} manifest={manifest} />
65
+ <ServerGroupManagerAnnotationCustomSection serverGroupManager={serverGroupManager} manifest={manifest} />
66
+ <ServerGroupManagerEventsSection serverGroupManager={serverGroupManager} manifest={manifest} />
67
+ <ServerGroupManagerLabelsSection serverGroupManager={serverGroupManager} manifest={manifest} />
68
+ <ServerGroupManagerArtifactsSection serverGroupManager={serverGroupManager} manifest={manifest} />
69
+ </Details.Content>
70
+ </Details>
71
+ );
72
+ }
@@ -0,0 +1,7 @@
1
+ import type { IManifest, IServerGroupManagerDetailsProps } from '@spinnaker/core';
2
+ import type { IKubernetesServerGroupManager } from '../../../interfaces';
3
+
4
+ export interface IKubernetesServerGroupManagerDetailsSectionProps extends IServerGroupManagerDetailsProps {
5
+ serverGroupManager: IKubernetesServerGroupManager;
6
+ manifest: IManifest;
7
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+
3
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
4
+ import { KubernetesReactInjector } from '../../../reactShims';
5
+
6
+ export function ServerGroupManagerAnnotationCustomSection({
7
+ serverGroupManager,
8
+ manifest,
9
+ }: IKubernetesServerGroupManagerDetailsSectionProps) {
10
+ const { KubernetesAnnotationCustomSections } = KubernetesReactInjector;
11
+ return <KubernetesAnnotationCustomSections manifest={manifest.manifest} resource={serverGroupManager} />;
12
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+
3
+ import type { IArtifact } from '@spinnaker/core';
4
+ import { CollapsibleSection } from '@spinnaker/core';
5
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
6
+ import { ManifestArtifact } from '../../../manifest';
7
+
8
+ export function ServerGroupManagerArtifactsSection({ manifest }: IKubernetesServerGroupManagerDetailsSectionProps) {
9
+ return (
10
+ <CollapsibleSection heading="Artifacts" defaultExpanded={true}>
11
+ {manifest.artifacts.map((artifact: IArtifact) => (
12
+ <ul key={artifact.reference}>
13
+ <ManifestArtifact artifact={artifact} />
14
+ </ul>
15
+ ))}
16
+ </CollapsibleSection>
17
+ );
18
+ }
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+
3
+ import { CollapsibleSection } from '@spinnaker/core';
4
+
5
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
6
+ import { ManifestEvents } from '../../../pipelines/stages/deployManifest/manifestStatus/ManifestEvents';
7
+
8
+ export function ServerGroupManagerEventsSection({ manifest }: IKubernetesServerGroupManagerDetailsSectionProps) {
9
+ return (
10
+ <CollapsibleSection heading="Events" defaultExpanded={true}>
11
+ <ManifestEvents manifest={manifest} />
12
+ </CollapsibleSection>
13
+ );
14
+ }
@@ -0,0 +1,51 @@
1
+ import { UISref } from '@uirouter/react';
2
+ import { orderBy } from 'lodash';
3
+ import React from 'react';
4
+
5
+ import type { IServerGroupSummary } from '@spinnaker/core';
6
+ import { AccountTag, CollapsibleSection, robotToHuman, timestamp } from '@spinnaker/core';
7
+
8
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
9
+
10
+ export function ServerGroupManagerInformationSection({
11
+ serverGroupManager,
12
+ }: IKubernetesServerGroupManagerDetailsSectionProps) {
13
+ return (
14
+ <CollapsibleSection heading="Information" defaultExpanded={true}>
15
+ <dl className="dl-horizontal dl-narrow">
16
+ <dt>Created</dt>
17
+ <dd>{timestamp(serverGroupManager.createdTime)}</dd>
18
+ <dt>Account</dt>
19
+ <dd>
20
+ <AccountTag account={serverGroupManager.account} />
21
+ </dd>
22
+ <dt>Namespace</dt>
23
+ <dd>{serverGroupManager.namespace}</dd>
24
+ <dt>Kind</dt>
25
+ <dd>{serverGroupManager.kind}</dd>
26
+ {serverGroupManager.serverGroups.length > 0 && (
27
+ <>
28
+ <dt>Managing</dt>
29
+ <dd>
30
+ {orderBy(serverGroupManager.serverGroups, ['name'], ['asc']).map((serverGroup: IServerGroupSummary) => (
31
+ <ul key={serverGroup.name}>
32
+ <UISref
33
+ to="^.serverGroup"
34
+ params={{
35
+ region: serverGroup.region,
36
+ accountId: serverGroup.account,
37
+ serverGroup: serverGroup.name,
38
+ provider: 'kubernetes',
39
+ }}
40
+ >
41
+ <a>{robotToHuman(serverGroup.name)}</a>
42
+ </UISref>
43
+ </ul>
44
+ ))}
45
+ </dd>
46
+ </>
47
+ )}
48
+ </dl>
49
+ </CollapsibleSection>
50
+ );
51
+ }
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+
3
+ import { CollapsibleSection } from '@spinnaker/core';
4
+
5
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
6
+ import { ManifestLabels } from '../../../manifest/ManifestLabels';
7
+
8
+ export function ServerGroupManagerLabelsSection({ manifest }: IKubernetesServerGroupManagerDetailsSectionProps) {
9
+ return (
10
+ <CollapsibleSection heading="Labels" defaultExpanded={true}>
11
+ <ManifestLabels manifest={manifest.manifest} />
12
+ </CollapsibleSection>
13
+ );
14
+ }
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+
3
+ import { CollapsibleSection } from '@spinnaker/core';
4
+
5
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
6
+ import type { IKubernetesManifestCondition } from '../../../manifest/status/ManifestCondition';
7
+ import { ManifestCondition } from '../../../manifest/status/ManifestCondition';
8
+
9
+ export function ServerGroupManagerManifestConditionSection({
10
+ manifest,
11
+ }: IKubernetesServerGroupManagerDetailsSectionProps) {
12
+ return (
13
+ <CollapsibleSection heading="Status" defaultExpanded={true}>
14
+ {manifest.manifest.status.conditions.map((condition: IKubernetesManifestCondition) => (
15
+ <ul key={condition.lastTransitionTime}>
16
+ <ManifestCondition condition={condition} />
17
+ </ul>
18
+ ))}
19
+ </CollapsibleSection>
20
+ );
21
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+
3
+ import type { IKubernetesServerGroupManagerDetailsSectionProps } from './IKubernetesServerGroupManagerDetailsSectionProps';
4
+ import { ManifestStatus } from '../../../manifest/status/ManifestStatus';
5
+
6
+ export function ServerGroupManagerManifestStatusSection({
7
+ manifest,
8
+ }: IKubernetesServerGroupManagerDetailsSectionProps) {
9
+ return <ManifestStatus status={manifest.status} />;
10
+ }
@@ -0,0 +1,8 @@
1
+ export * from './IKubernetesServerGroupManagerDetailsSectionProps';
2
+ export * from './ServerGroupManagerAnnotationCustomSection';
3
+ export * from './ServerGroupManagerArtifactsSection';
4
+ export * from './ServerGroupManagerEventsSection';
5
+ export * from './ServerGroupManagerInformationSection';
6
+ export * from './ServerGroupManagerLabelsSection';
7
+ export * from './ServerGroupManagerManifestConditionSection';
8
+ export * from './ServerGroupManagerManifestStatusSection';
@@ -0,0 +1,53 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ import type { IManifest, IServerGroupManager } from '@spinnaker/core';
4
+ import { ManifestReader } from '@spinnaker/core';
5
+
6
+ import type { IKubernetesServerGroupManagerDetailsProps } from './ServerGroupManagerDetails';
7
+ import type { IKubernetesServerGroupManager } from '../../interfaces';
8
+
9
+ export function useKubernetesServerGroupManagerDetails(
10
+ props: IKubernetesServerGroupManagerDetailsProps,
11
+ autoClose: () => void,
12
+ ): [IKubernetesServerGroupManager | undefined, IManifest | undefined, boolean] {
13
+ const [serverGroupManager, setServerGroupManager] = useState<IKubernetesServerGroupManager | undefined>();
14
+ const [manifest, setManifest] = useState<IManifest | undefined>();
15
+ const [loading, setLoading] = useState(true);
16
+
17
+ useEffect(() => {
18
+ if (serverGroupManager) {
19
+ return;
20
+ }
21
+
22
+ const { serverGroupManager: params, app } = props;
23
+ const { accountId, region, name } = params;
24
+
25
+ setLoading(true);
26
+
27
+ const serverGroupManagerDetails = app
28
+ .getDataSource('serverGroupManagers')
29
+ .data.find(
30
+ (manager: IServerGroupManager) =>
31
+ manager.name === name && manager.region === region && manager.account === accountId,
32
+ );
33
+
34
+ if (!serverGroupManagerDetails) {
35
+ autoClose();
36
+ return;
37
+ }
38
+
39
+ ManifestReader.getManifest(accountId, region, name)
40
+ .then((manifest: IManifest) => {
41
+ setManifest(manifest);
42
+ setServerGroupManager(serverGroupManagerDetails);
43
+ })
44
+ .catch((error) => {
45
+ console.error('Error fetching manifest:', error);
46
+ })
47
+ .finally(() => {
48
+ setLoading(false);
49
+ });
50
+ }, [autoClose, props, serverGroupManager]);
51
+
52
+ return [serverGroupManager, manifest, loading];
53
+ }
@@ -1 +1 @@
1
- export * from './details/details.controller';
1
+ export * from './details/sections';
@@ -1 +0,0 @@
1
- export declare const KUBERNETES_MANIFEST_ARTIFACT = "spinnaker.kubernetes.v2.manifest.artifact.component";
@@ -1 +0,0 @@
1
- export declare const KUBERNETES_SERVER_GROUP_DETAILS_CTRL = "spinnaker.kubernetes.serverGroup.details.controller";
@@ -1 +0,0 @@
1
- export declare const KUBERNETES_SERVER_GROUP_RESIZE_CTRL = "spinnaker.kubernetes.serverGroup.details.resize.controller";
@@ -1 +0,0 @@
1
- export declare const KUBERNETES_SERVER_GROUP_MANAGER_DETAILS_CTRL = "spinnaker.kubernetes.serverGroupManager.details.controller";
@@ -1,23 +0,0 @@
1
- import type { IComponentOptions, IController } from 'angular';
2
- import { module } from 'angular';
3
-
4
- import type { IArtifact } from '@spinnaker/core';
5
-
6
- class KubernetesManifestArtifactCtrl implements IController {
7
- public artifact: IArtifact;
8
- }
9
-
10
- const kubernetesManifestArtifactComponent: IComponentOptions = {
11
- bindings: { artifact: '<' },
12
- controller: KubernetesManifestArtifactCtrl,
13
- controllerAs: 'ctrl',
14
- template: `
15
- <span>
16
- <b>{{ctrl.artifact.type}}</b>
17
- <i>{{ctrl.artifact.reference}}</i>
18
- </span>
19
- `,
20
- };
21
-
22
- export const KUBERNETES_MANIFEST_ARTIFACT = 'spinnaker.kubernetes.v2.manifest.artifact.component';
23
- module(KUBERNETES_MANIFEST_ARTIFACT, []).component('kubernetesManifestArtifact', kubernetesManifestArtifactComponent);