From 8d5f676039b94a7c670ed1d9c74b3b6357a3dbb4 Mon Sep 17 00:00:00 2001 From: Alan Ren Date: Fri, 22 Mar 2019 11:29:51 -0700 Subject: [PATCH] a few deploy cluster wizard changes (#4644) * update icon for target types * Revert "update icon for target types" This reverts commit 79bd7674f2c09602430a0b10829f7b0d3234eb98. * update target type icons * update eula and privacy policy links * existing cluster page * adjust the loading indicator position --- extensions/big-data-cluster/images/aks.svg | 1 + .../big-data-cluster/images/cluster.svg | 1 - .../images/cluster_inverse.svg | 1 - .../big-data-cluster/images/kubernetes.svg | 1 + .../create-cluster/createClusterModel.ts | 14 ++- .../pages/selectExistingClusterPage.ts | 109 +++++++++++------- .../pages/selectTargetClusterTypePage.ts | 6 +- .../create-cluster/pages/settingsPage.ts | 10 +- src/sql/platform/dialog/media/dialogModal.css | 2 +- 9 files changed, 88 insertions(+), 57 deletions(-) create mode 100644 extensions/big-data-cluster/images/aks.svg delete mode 100644 extensions/big-data-cluster/images/cluster.svg delete mode 100644 extensions/big-data-cluster/images/cluster_inverse.svg create mode 100644 extensions/big-data-cluster/images/kubernetes.svg diff --git a/extensions/big-data-cluster/images/aks.svg b/extensions/big-data-cluster/images/aks.svg new file mode 100644 index 0000000000..1df4bc8835 --- /dev/null +++ b/extensions/big-data-cluster/images/aks.svg @@ -0,0 +1 @@ +AKS \ No newline at end of file diff --git a/extensions/big-data-cluster/images/cluster.svg b/extensions/big-data-cluster/images/cluster.svg deleted file mode 100644 index e0e8e68f41..0000000000 --- a/extensions/big-data-cluster/images/cluster.svg +++ /dev/null @@ -1 +0,0 @@ -cluster \ No newline at end of file diff --git a/extensions/big-data-cluster/images/cluster_inverse.svg b/extensions/big-data-cluster/images/cluster_inverse.svg deleted file mode 100644 index b35c0c5d36..0000000000 --- a/extensions/big-data-cluster/images/cluster_inverse.svg +++ /dev/null @@ -1 +0,0 @@ -cluster_inverse \ No newline at end of file diff --git a/extensions/big-data-cluster/images/kubernetes.svg b/extensions/big-data-cluster/images/kubernetes.svg new file mode 100644 index 0000000000..0b17a4013a --- /dev/null +++ b/extensions/big-data-cluster/images/kubernetes.svg @@ -0,0 +1 @@ +Kubernetes \ No newline at end of file diff --git a/extensions/big-data-cluster/src/wizards/create-cluster/createClusterModel.ts b/extensions/big-data-cluster/src/wizards/create-cluster/createClusterModel.ts index e572bbe55b..3674c255d3 100644 --- a/extensions/big-data-cluster/src/wizards/create-cluster/createClusterModel.ts +++ b/extensions/big-data-cluster/src/wizards/create-cluster/createClusterModel.ts @@ -9,6 +9,8 @@ import { getContexts, KubectlContext, setContext, inferCurrentClusterType } from import { Kubectl } from '../../kubectl/kubectl'; import { Scriptable, ScriptingDictionary } from '../../scripting/scripting'; import * as nls from 'vscode-nls'; +import * as os from 'os'; +import * as path from 'path'; const localize = nls.loadMessageBundle(); @@ -61,8 +63,8 @@ export class CreateClusterModel implements Scriptable { description: localize('bdc-create.AKSClusterDescription', 'This option configures new Azure Kubernetes Service (AKS) for SQL Server big data cluster deployments. AKS makes it simple to create, configure and manage a cluster of virutal machines that are preconfigured with a Kubernetes cluster to run containerized applications.'), iconPath: { - dark: 'images/cluster_inverse.svg', - light: 'images/cluster.svg' + dark: 'images/aks.svg', + light: 'images/aks.svg' } }; @@ -72,8 +74,8 @@ export class CreateClusterModel implements Scriptable { fullName: localize('bdc-create.ExistingClusterFullName', 'Existing Kubernetes Cluster'), description: localize('bdc-create.ExistingClusterDescription', 'This option assumes you already have a Kubernetes cluster installed, Once a prerequisite check is done, ensure the correct cluster context is selected.'), iconPath: { - dark: 'images/cluster_inverse.svg', - light: 'images/cluster.svg' + dark: 'images/kubernetes.svg', + light: 'images/kubernetes.svg' } }; resolve([aksCluster, existingCluster]); @@ -120,6 +122,10 @@ export class CreateClusterModel implements Scriptable { return promise; } + public getDefaultKubeConfigPath(): string { + return path.join(os.homedir(), '.kube', 'config'); + } + public targetClusterType: TargetClusterType; public selectedCluster: KubectlContext; diff --git a/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectExistingClusterPage.ts b/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectExistingClusterPage.ts index c3907d654d..f78e97acd6 100644 --- a/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectExistingClusterPage.ts +++ b/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectExistingClusterPage.ts @@ -7,6 +7,7 @@ import * as azdata from 'azdata'; import * as vscode from 'vscode'; import * as os from 'os'; +import * as fs from 'fs'; import { WizardPageBase } from '../../wizardPageBase'; import { CreateClusterWizard } from '../createClusterWizard'; import { setActiveKubeconfig } from '../../../config/config'; @@ -21,6 +22,11 @@ export class SelectExistingClusterPage extends WizardPageBase { - this.initExistingClusterControl(view); + this.view = view; + this.initExistingClusterControl(); let formBuilder = view.modelBuilder.formContainer().withFormItems( [ { @@ -47,6 +54,14 @@ export class SelectExistingClusterPage extends WizardPageBase { if (e.lastPage > e.newPage) { this.wizard.wizardObject.message = null; @@ -63,21 +78,24 @@ export class SelectExistingClusterPage extends WizardPageBase { + this.browseFileButton.onDidClick(async () => { let fileUris = await vscode.window.showOpenDialog( { canSelectFiles: true, @@ -98,35 +116,42 @@ export class SelectExistingClusterPage extends WizardPageBase { - let option = view.modelBuilder.radioButton().withProperties({ - label: cluster.contextName, - checked: cluster.active, - name: ClusterRadioButtonGroupName - }).component(); - - if (cluster.active) { - self.wizard.model.selectedCluster = cluster; - self.wizard.wizardObject.message = null; - } - - option.onDidClick(() => { - self.wizard.model.selectedCluster = cluster; - self.wizard.wizardObject.message = null; - }); - return option; - }); - - self.clusterContextContainer.addItem(self.clusterContextsLabel); - self.clusterContextContainer.addItems(options); - } else { - self.clusterContextContainer.addItem(this.errorLoadingClustersLabel); - } + self.loadClusterContexts(fileUri.fsPath); }); } + + private async loadClusterContexts(configPath: string): Promise { + this.clusterContextLoadingComponent.loading = true; + let self = this; + this.configFileInput.value = configPath; + await setActiveKubeconfig(configPath); + + let clusters = await this.wizard.model.loadClusters(); + if (clusters.length !== 0) { + let options = clusters.map(cluster => { + let option = this.view.modelBuilder.radioButton().withProperties({ + label: cluster.contextName, + checked: cluster.active, + name: ClusterRadioButtonGroupName + }).component(); + + if (cluster.active) { + self.wizard.model.selectedCluster = cluster; + self.wizard.wizardObject.message = null; + } + + option.onDidClick(() => { + self.wizard.model.selectedCluster = cluster; + self.wizard.wizardObject.message = null; + }); + return option; + }); + + self.clusterContextContainer.addItem(self.clusterContextsLabel); + self.clusterContextContainer.addItems(options); + } else { + self.clusterContextContainer.addItem(this.errorLoadingClustersLabel); + } + this.clusterContextLoadingComponent.loading = false; + } } \ No newline at end of file diff --git a/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectTargetClusterTypePage.ts b/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectTargetClusterTypePage.ts index 74e3be412a..f1149e81d3 100644 --- a/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectTargetClusterTypePage.ts +++ b/extensions/big-data-cluster/src/wizards/create-cluster/pages/selectTargetClusterTypePage.ts @@ -30,8 +30,8 @@ export class SelectTargetClusterTypePage extends WizardPageBase { acceptEulaCheckbox.checked = false; let eulaLink: azdata.LinkArea = { - text: localize('bdc-create.LicenseAgreementText', 'License Agreement'), - url: 'https://docs.microsoft.com/en-us/sql/getting-started/about-the-sql-server-license-terms?view=sql-server-2014' + text: localize('bdc-create.LicenseTerms', 'license terms'), + url: 'https://go.microsoft.com/fwlink/?LinkId=2002534' }; let privacyPolicyLink: azdata.LinkArea = { - text: localize('bdc-create.PrivacyPolicyText', 'Privacy Policy'), - url: 'https://privacy.microsoft.com/en-us/privacystatement' + text: localize('bdc-create.PrivacyPolicyText', 'privacy policy'), + url: 'https://go.microsoft.com/fwlink/?LinkId=853010' }; let checkboxText = view.modelBuilder.text().withProperties({ value: localize({ key: 'bdc-create.AcceptTermsText', - comment: ['{0} is the place holder for License Agreement, {1} is the place holder for Privacy Policy'] + comment: ['{0} is the place holder for license terms, {1} is the place holder for privacy policy'] }, 'I accept the {0} and {1}.'), links: [eulaLink, privacyPolicyLink] }).component(); diff --git a/src/sql/platform/dialog/media/dialogModal.css b/src/sql/platform/dialog/media/dialogModal.css index 87278dd7a2..2530d8fd6a 100644 --- a/src/sql/platform/dialog/media/dialogModal.css +++ b/src/sql/platform/dialog/media/dialogModal.css @@ -68,7 +68,7 @@ margin-top: 10px; margin-bottom: 10px; font-size: 1.5em; - font-weight: lighter; + font-weight: bold; } .dialogContainer {