-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move EKS Discover joinToken generation to the ManualHelm dialog. #37730
Changes from 1 commit
c05349b
52f6cf7
55f8214
5fafad1
0d9a158
e67ad98
8faf471
2f7a401
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. When I open the story for I wanted to use the story to see how storybook-error.movThere was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added container to the dialog 52f6cf7 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -39,11 +39,12 @@ import { isIamPermError } from 'teleport/Discover/Shared/Aws/error'; | |
import { AgentStepProps } from 'teleport/Discover/types'; | ||
import useTeleport from 'teleport/useTeleport'; | ||
|
||
import { useJoinTokenSuspender } from 'teleport/Discover/Shared/useJoinTokenSuspender'; | ||
import { generateCmd } from 'teleport/Discover/Kubernetes/HelmChart/HelmChart'; | ||
import { GenerateCmdProps } from 'teleport/Discover/Kubernetes/HelmChart/HelmChart'; | ||
import { Kube } from 'teleport/services/kube'; | ||
|
||
import { Header, ResourceKind } from '../../Shared'; | ||
import { JoinToken } from 'teleport/services/joinToken'; | ||
|
||
import { Header } from '../../Shared'; | ||
|
||
import { ClustersList } from './EksClustersList'; | ||
import { ManualHelmDialog } from './ManualHelmDialog'; | ||
|
@@ -97,14 +98,9 @@ export function EnrollEksCluster(props: AgentStepProps) { | |
useState(false); | ||
const [isManualHelmDialogShown, setIsManualHelmDialogShown] = useState(false); | ||
const [waitingResourceId, setWaitingResourceId] = useState(''); | ||
const [joinToken, setJoinToken] = useState<JoinToken>(null); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's document the fact that we need a separate state for the join token because while the join token is used mostly by code in If I saw this code without any context, my inclination would be to move There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added comment 👍 55f8214 |
||
const ctx = useTeleport(); | ||
|
||
const { joinToken } = useJoinTokenSuspender([ | ||
ResourceKind.Kubernetes, | ||
ResourceKind.Application, | ||
ResourceKind.Discovery, | ||
]); | ||
|
||
function fetchClustersWithNewRegion(region: Regions) { | ||
setSelectedRegion(region); | ||
// Clear table when fetching with new region. | ||
|
@@ -205,8 +201,6 @@ export function EnrollEksCluster(props: AgentStepProps) { | |
{ | ||
region: selectedRegion, | ||
enableAppDiscovery: isAppDiscoveryEnabled, | ||
joinToken: joinToken.id, | ||
resourceId: joinToken.internalResourceId, | ||
Comment on lines
-208
to
-209
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why did we remove it? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not used anymore by the backend - we now create our own token in the backend enrollment code and return resourceId that frontend should look for while pinging resource. |
||
clusterNames: [selectedCluster.name], | ||
} | ||
); | ||
|
@@ -262,22 +256,22 @@ export function EnrollEksCluster(props: AgentStepProps) { | |
!selectedCluster || | ||
enrollmentState.status !== 'notStarted'; | ||
|
||
let command = ''; | ||
let manualCommandProps: GenerateCmdProps = null; | ||
if (selectedCluster) { | ||
command = generateCmd({ | ||
manualCommandProps = { | ||
namespace: 'teleport-agent', | ||
clusterName: selectedCluster.name, | ||
proxyAddr: ctx.storeUser.state.cluster.publicURL, | ||
tokenId: joinToken.id, | ||
clusterVersion: ctx.storeUser.state.cluster.authVersion, | ||
resourceId: joinToken.internalResourceId, | ||
tokenId: '', // Filled in by the ManualHelmDialog. | ||
resourceId: '', | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since But I don't think the current approach is bad, I just wanted to show an alternative approach. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I was never a fan of sending all the information into the dialog. Changed to the way you suggested 0d9a158 |
||
isEnterprise: ctx.isEnterprise, | ||
isCloud: ctx.isCloud, | ||
automaticUpgradesEnabled: ctx.automaticUpgradesEnabled, | ||
automaticUpgradesTargetVersion: ctx.automaticUpgradesTargetVersion, | ||
joinLabels: [...selectedCluster.labels, ...selectedCluster.joinLabels], | ||
disableAppDiscovery: !isAppDiscoveryEnabled, | ||
}); | ||
}; | ||
} | ||
|
||
return ( | ||
|
@@ -366,7 +360,8 @@ export function EnrollEksCluster(props: AgentStepProps) { | |
)} | ||
{isManualHelmDialogShown && ( | ||
<ManualHelmDialog | ||
command={command} | ||
commandProps={manualCommandProps} | ||
setJoinToken={setJoinToken} | ||
cancel={() => setIsManualHelmDialogShown(false)} | ||
confirmedCommands={() => { | ||
setEnrollmentState({ status: 'awaitingAgent' }); | ||
|
@@ -377,7 +372,7 @@ export function EnrollEksCluster(props: AgentStepProps) { | |
)} | ||
{isAgentWaitingDialogShown && ( | ||
<AgentWaitingDialog | ||
joinResourceId={waitingResourceId || joinToken.internalResourceId} | ||
joinResourceId={waitingResourceId || joinToken?.internalResourceId} | ||
status={enrollmentState.status} | ||
clusterName={selectedCluster.name} | ||
updateWaitingResult={(result: Kube) => { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AFAIK,
worker.resetHandlers
is needed only when usingres.once
.res.once
is necessary only you want a scenario where a single response from an endpoint is different from other responses from the same endpoint (https://github.com/gravitational/teleport.e/pull/3256/commits/7dca9032287fe442b540b7437955432092abc622).Since
res.once
is not used here, I think we can dropworker.resetHandlers
and removewindow.msw
usage which will save Ryan some work when moving to Storybook 7 (#37331, #34450). Let me know though if the lack ofworker.resetHandlers
interferes with some other stuff that I don't know about.useJoinTokenSuspender
is used only inManualHelmDialog
, so let's put the cleanup only in that story.Patch
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Yes, it seems to be working fine without
msw
5fafad1