Skip to content

Commit

Permalink
Merge pull request #252 from kingdonb/revert-218-regression
Browse files Browse the repository at this point in the history
Revert 218 regression
  • Loading branch information
Kingdon Barrett authored Apr 27, 2022
2 parents 1f162e0 + d3a0d4e commit 76312ea
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 31 deletions.
2 changes: 1 addition & 1 deletion src/azure/getAzureMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface AzureMetadata {
* @param contextName cluster name as in kubernetes config
*/
export async function askUserForAzureMetadata(contextName: string): Promise<AzureMetadata | undefined> {
const azureMetadata = await globalState.getContextClusterMetadata(contextName);
const azureMetadata = globalState.getClusterMetadata(contextName);

const resourceGroup = await window.showInputBox({
title: 'Enter the Azure Resource Group (where the cluster is)',
Expand Down
5 changes: 3 additions & 2 deletions src/commands/enableDisableGitOps.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { window } from 'vscode';
import { azureTools, isAzureProvider } from '../azure/azureTools';
import { failed } from '../errorable';
import { telemetry } from '../extension';
import { telemetry, globalState } from '../extension';
import { fluxTools } from '../flux/fluxTools';
import { checkIfOpenedFolderGitRepositorySourceExists } from '../git/checkIfOpenedFolderGitRepositorySourceExists';
import { kubernetesTools } from '../kubernetes/kubernetesTools';
Expand Down Expand Up @@ -31,7 +31,8 @@ async function enableDisableGitOps(clusterNode: ClusterContextNode | undefined,
clusterName = currentClusterInfo.result.clusterName;
}

const clusterProvider = await kubernetesTools.detectClusterProvider(contextName);
const clusterMetadata = globalState.getClusterMetadata(clusterName);
const clusterProvider = clusterMetadata?.clusterProvider || await kubernetesTools.detectClusterProvider(contextName);

if (clusterProvider === ClusterProvider.Unknown) {
window.showErrorMessage('Cluster provider not detected yet.');
Expand Down
6 changes: 0 additions & 6 deletions src/globalState.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { ExtensionContext, window, workspace } from 'vscode';
import { kubernetesTools } from './kubernetes/kubernetesTools';
import { KnownClusterProviders } from './kubernetes/kubernetesTypes';

export interface ClusterMetadata {
Expand Down Expand Up @@ -43,11 +42,6 @@ export class GlobalState {
return this.context.globalState.get(this.prefix(GlobalStatePrefixes.ClusterMetadata, clusterName));
}

async getContextClusterMetadata(contextName: string): Promise<ClusterMetadata | undefined> {
const clusterName = await kubernetesTools.getClusterName(contextName);
return this.getClusterMetadata(clusterName || contextName);
}

setClusterMetadata(clusterName: string, metadata: ClusterMetadata): void {
this.context.globalState.update(this.prefix(GlobalStatePrefixes.ClusterMetadata, clusterName), metadata);
}
Expand Down
19 changes: 2 additions & 17 deletions src/kubernetes/kubernetesTools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Uri, window } from 'vscode';
import * as kubernetes from 'vscode-kubernetes-tools-api';
import { AzureConstants } from '../azure/azureTools';
import { Errorable, failed, succeeded } from '../errorable';
import { globalState, telemetry } from '../extension';
import { telemetry } from '../extension';
import { checkIfOpenedFolderGitRepositorySourceExists } from '../git/checkIfOpenedFolderGitRepositorySourceExists';
import { output } from '../output';
import { shellCodeError } from '../shell';
Expand Down Expand Up @@ -213,16 +213,6 @@ class KubernetesTools {
};
}

async getClusterName(contextName: string): Promise<string> {
const contexts = await this.getContexts();
if(contexts.succeeded === true) {
return contexts.result.find(context => context.name === contextName)?.context.clusterInfo?.name || contextName;
} else {
return contextName;
}
}


/**
* Get pods by a deployment name.
* @param name pod target name
Expand Down Expand Up @@ -431,16 +421,11 @@ class KubernetesTools {
}

/**
* Try to detect known cluster providers. Returns user selected cluster type if that is set.
* Try to detect known cluster providers.
* @param context target context to get resources from.
* TODO: maybe use Errorable?
*/
async detectClusterProvider(context: string): Promise<ClusterProvider> {
const clusterMetadata = await globalState.getContextClusterMetadata(context);
if(clusterMetadata?.clusterProvider) {
return clusterMetadata.clusterProvider;
}

const tryProviderAzureARC = await this.isClusterAzureARC(context);
if (tryProviderAzureARC === ClusterProvider.AzureARC) {
return ClusterProvider.AzureARC;
Expand Down
2 changes: 1 addition & 1 deletion src/views/nodes/clusterContextNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export class ClusterContextNode extends TreeNode {

this.cluster = kubernetesContext.context.clusterInfo;
this.clusterContext = kubernetesContext;
this.clusterName = kubernetesContext.context.clusterInfo?.name || kubernetesContext.name;
this.clusterName = kubernetesContext.name;
this.contextName = kubernetesContext.name;
this.description = kubernetesContext.context.clusterInfo?.cluster.server;

Expand Down
18 changes: 14 additions & 4 deletions src/views/treeViews.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,10 @@ export interface CurrentClusterInfo {
* 3. Detect cluster provider.
*/
export async function getCurrentClusterInfo(): Promise<Errorable<CurrentClusterInfo>> {
const currentContextResult = await kubernetesTools.getCurrentContext();
const [currentContextResult, contextsResult] = await Promise.all([
kubernetesTools.getCurrentContext(),
kubernetesTools.getContexts(),
]);

if (failed(currentContextResult)) {
const error = `Failed to get current context ${currentContextResult.error[0]}`;
Expand All @@ -117,10 +120,17 @@ export async function getCurrentClusterInfo(): Promise<Errorable<CurrentClusterI
};
}
const currentContextName = currentContextResult.result;
if (failed(contextsResult)) {
const error = `Failed to get contexts ${contextsResult.error[0]}`;
window.showErrorMessage(error);
return {
succeeded: false,
error: [error],
};
}


let currentClusterName = kubernetesTools.getClusterName(currentContextName);
if (typeof currentClusterName !== 'string') {
const currentClusterName = contextsResult.result.find(context => context.name === currentContextName)?.context.clusterInfo?.name;
if (!currentClusterName) {
window.showErrorMessage('Failed to find current cluster name.');
return {
succeeded: false,
Expand Down

0 comments on commit 76312ea

Please sign in to comment.