@spinnaker/kubernetes 2025.0.5 → 2025.1.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1178 -641
- package/dist/index.js.map +1 -1
- package/dist/interfaces/infrastructure.types.d.ts +4 -1
- package/dist/manifest/AnnotationCustomSections.d.ts +5 -0
- package/dist/manifest/annotationCustomSections.component.d.ts +2 -0
- package/dist/manifest/artifact/ManifestArtifact.d.ts +6 -0
- package/dist/manifest/index.d.ts +1 -1
- package/dist/manifest/manifest.service.d.ts +1 -1
- package/dist/manifest/rollout/RollingRestart.d.ts +9 -1
- package/dist/manifest/status/ManifestStatus.d.ts +8 -0
- package/dist/rawResource/controller/FiltersPubSub.d.ts +1 -1
- package/dist/reactShims/index.d.ts +1 -0
- package/dist/reactShims/kubernetes.react.injector.d.ts +11 -0
- package/dist/reactShims/kubernetes.react.module.d.ts +1 -0
- package/dist/serverGroup/details/KubernetesServerGroupActions.d.ts +7 -0
- package/dist/serverGroup/details/kubernetesServerGroupDetailsGetter.d.ts +4 -0
- package/dist/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.d.ts +5 -0
- package/dist/serverGroup/details/sections/ServerGroupAnnotationCustomSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupEventsSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupHealthSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupImagesSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupInformationSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupLabelsSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupManifestStatusSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/ServerGroupSizeSection.d.ts +3 -0
- package/dist/serverGroup/details/sections/index.d.ts +9 -0
- package/dist/serverGroup/details/useManifest.d.ts +8 -0
- package/dist/serverGroup/index.d.ts +3 -4
- package/dist/serverGroup/{serverGroupCommandBuilder.service.d.ts → serverGroupCommandBuilder.d.ts} +0 -1
- package/dist/serverGroup/{serverGroupTransformer.service.d.ts → serverGroupTransformer.d.ts} +0 -1
- package/dist/serverGroupManager/details/ServerGroupManagerActions.d.ts +9 -0
- package/dist/serverGroupManager/details/ServerGroupManagerDetails.d.ts +7 -0
- package/dist/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.d.ts +6 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerEventsSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerInformationSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.d.ts +3 -0
- package/dist/serverGroupManager/details/sections/index.d.ts +8 -0
- package/dist/serverGroupManager/details/useKubernetesServerGroupManagerDetails.d.ts +4 -0
- package/dist/serverGroupManager/index.d.ts +1 -1
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/interfaces/infrastructure.types.ts +5 -0
- package/src/kubernetes.module.ts +32 -21
- package/src/manifest/AnnotationCustomSections.tsx +6 -0
- package/src/manifest/annotationCustomSections.component.ts +1 -1
- package/src/manifest/artifact/ManifestArtifact.tsx +16 -0
- package/src/manifest/index.ts +1 -1
- package/src/manifest/rollout/RollingRestart.tsx +2 -10
- package/src/manifest/status/ManifestStatus.tsx +39 -0
- package/src/manifest/status/status.component.ts +7 -32
- package/src/reactShims/index.ts +1 -0
- package/src/reactShims/kubernetes.react.injector.ts +30 -0
- package/src/reactShims/kubernetes.react.module.ts +12 -0
- package/src/serverGroup/details/KubernetesServerGroupActions.tsx +138 -0
- package/src/serverGroup/details/kubernetesServerGroupDetailsGetter.ts +63 -0
- package/src/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.ts +6 -0
- package/src/serverGroup/details/sections/ServerGroupAnnotationCustomSection.tsx +11 -0
- package/src/serverGroup/details/sections/ServerGroupEventsSection.tsx +14 -0
- package/src/serverGroup/details/sections/ServerGroupHealthSection.tsx +19 -0
- package/src/serverGroup/details/sections/ServerGroupImagesSection.tsx +14 -0
- package/src/serverGroup/details/sections/ServerGroupInformationSection.tsx +46 -0
- package/src/serverGroup/details/sections/ServerGroupLabelsSection.tsx +14 -0
- package/src/serverGroup/details/sections/ServerGroupManifestStatusSection.tsx +9 -0
- package/src/serverGroup/details/sections/ServerGroupSizeSection.tsx +35 -0
- package/src/serverGroup/details/sections/index.ts +9 -0
- package/src/serverGroup/details/useManifest.ts +42 -0
- package/src/serverGroup/index.ts +3 -4
- package/src/serverGroup/{serverGroupCommandBuilder.service.ts → serverGroupCommandBuilder.ts} +0 -9
- package/src/serverGroup/{serverGroupTransformer.service.spec.ts → serverGroupTransformer.spec.ts} +1 -1
- package/src/serverGroup/{serverGroupTransformer.service.ts → serverGroupTransformer.ts} +0 -7
- package/src/serverGroupManager/details/ServerGroupManagerActions.tsx +171 -0
- package/src/serverGroupManager/details/ServerGroupManagerDetails.tsx +72 -0
- package/src/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.ts +7 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.tsx +12 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.tsx +18 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerEventsSection.tsx +14 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerInformationSection.tsx +51 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.tsx +14 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.tsx +21 -0
- package/src/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.tsx +10 -0
- package/src/serverGroupManager/details/sections/index.ts +8 -0
- package/src/serverGroupManager/details/useKubernetesServerGroupManagerDetails.tsx +53 -0
- package/src/serverGroupManager/index.ts +1 -1
- package/dist/manifest/artifact/artifact.component.d.ts +0 -1
- package/dist/serverGroup/details/details.controller.d.ts +0 -1
- package/dist/serverGroup/details/resize/resize.controller.d.ts +0 -1
- package/dist/serverGroupManager/details/details.controller.d.ts +0 -1
- package/src/manifest/artifact/artifact.component.ts +0 -23
- package/src/serverGroup/details/details.controller.ts +0 -207
- package/src/serverGroup/details/details.html +0 -153
- package/src/serverGroup/details/resize/resize.controller.ts +0 -73
- package/src/serverGroup/details/resize/resize.html +0 -57
- package/src/serverGroupManager/details/details.controller.ts +0 -191
- 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
|
+
}
|
package/src/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.ts
ADDED
|
@@ -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
|
+
}
|
package/src/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.tsx
ADDED
|
@@ -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/
|
|
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);
|