mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix service account's imagePullSecrets rendering if secret is not found (#908)
* Fix service account's imagePullSecrets rendering if secret is not found Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
parent
9a9f50ab34
commit
3f8a2b09a0
@ -15,6 +15,7 @@ import { getDetailsUrl } from "../../navigation";
|
||||
import { KubeObjectDetailsProps } from "../kube-object";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { KubeObjectMeta } from "../kube-object/kube-object-meta";
|
||||
import { Icon } from "../icon";
|
||||
|
||||
interface Props extends KubeObjectDetailsProps<ServiceAccount> {
|
||||
}
|
||||
@ -22,21 +23,25 @@ interface Props extends KubeObjectDetailsProps<ServiceAccount> {
|
||||
@observer
|
||||
export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
@observable secrets: Secret[];
|
||||
@observable imagePullSecrets: Secret[];
|
||||
|
||||
@disposeOnUnmount
|
||||
loadSecrets = autorun(async () => {
|
||||
this.secrets = null;
|
||||
this.imagePullSecrets = null;
|
||||
const { object: serviceAccount } = this.props;
|
||||
if (!serviceAccount) {
|
||||
return;
|
||||
}
|
||||
const namespace = serviceAccount.getNs();
|
||||
const secrets = serviceAccount.getSecrets().map(({ name }) => {
|
||||
const secret = secretsStore.getByName(name, namespace);
|
||||
if (!secret) return secretsStore.load({ name, namespace });
|
||||
return secret;
|
||||
return secretsStore.load({ name, namespace });
|
||||
});
|
||||
this.secrets = await Promise.all(secrets);
|
||||
const imagePullSecrets = serviceAccount.getImagePullSecrets().map(async({ name }) => {
|
||||
return secretsStore.load({ name, namespace }).catch(_err => { return this.generateDummySecretObject(name) });
|
||||
});
|
||||
this.imagePullSecrets = await Promise.all(imagePullSecrets)
|
||||
})
|
||||
|
||||
renderSecrets() {
|
||||
@ -49,15 +54,46 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
)
|
||||
}
|
||||
|
||||
renderImagePullSecrets() {
|
||||
const { imagePullSecrets } = this;
|
||||
if (!imagePullSecrets) {
|
||||
return <Spinner center/>
|
||||
}
|
||||
return this.renderSecretLinks(imagePullSecrets)
|
||||
}
|
||||
|
||||
renderSecretLinks(secrets: Secret[]) {
|
||||
return secrets.map(secret => {
|
||||
return secrets.map((secret) => {
|
||||
if (secret.getId() === null) {
|
||||
return (
|
||||
<div key={secret.getName()}>
|
||||
{secret.getName()}
|
||||
<Icon
|
||||
small material="warning"
|
||||
tooltip={<Trans>Secret is not found</Trans>}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<Link key={secret.getId()} to={getDetailsUrl(secret.selfLink)}>
|
||||
{secret.getName()}
|
||||
</Link>
|
||||
)
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
generateDummySecretObject(name: string) {
|
||||
return new Secret({
|
||||
apiVersion: "v1",
|
||||
kind: "Secret",
|
||||
metadata: {
|
||||
name: name,
|
||||
uid: null,
|
||||
selfLink: null,
|
||||
resourceVersion: null
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -69,9 +105,7 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
secret.getNs() == serviceAccount.getNs() &&
|
||||
secret.getAnnotations().some(annot => annot == `kubernetes.io/service-account.name: ${serviceAccount.getName()}`)
|
||||
)
|
||||
const imagePullSecrets = serviceAccount.getImagePullSecrets().map(({ name }) =>
|
||||
secretsStore.getByName(name, serviceAccount.getNs())
|
||||
)
|
||||
const imagePullSecrets = serviceAccount.getImagePullSecrets()
|
||||
return (
|
||||
<div className="ServiceAccountsDetails">
|
||||
<KubeObjectMeta object={serviceAccount}/>
|
||||
@ -83,7 +117,7 @@ export class ServiceAccountsDetails extends React.Component<Props> {
|
||||
}
|
||||
{imagePullSecrets.length > 0 &&
|
||||
<DrawerItem name={<Trans>ImagePullSecrets</Trans>} className="links">
|
||||
{this.renderSecretLinks(imagePullSecrets)}
|
||||
{this.renderImagePullSecrets()}
|
||||
</DrawerItem>
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user