From bb2a1db6e8b72d21313af4c2a7f4c78d8e06b0af Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Thu, 19 Nov 2020 17:06:49 -0800 Subject: [PATCH] Add connectivity mode option to Arc controller create (#13495) * Add connectivity mode option to Arc controller create * Add connectivity mode to summary * Use name instead of display name for dropdown values --- .../deploy.arc.data.controller.ipynb | 11 +- extensions/arc/package.json | 125 ++++++++++++++---- extensions/arc/package.nls.json | 15 ++- 3 files changed, 123 insertions(+), 28 deletions(-) diff --git a/extensions/arc/notebooks/arcDeployment/deploy.arc.data.controller.ipynb b/extensions/arc/notebooks/arcDeployment/deploy.arc.data.controller.ipynb index 1ec42152d3..23941d73fc 100644 --- a/extensions/arc/notebooks/arcDeployment/deploy.arc.data.controller.ipynb +++ b/extensions/arc/notebooks/arcDeployment/deploy.arc.data.controller.ipynb @@ -132,7 +132,14 @@ " sys.exit(f'Password is required.')\n", " confirm_password = getpass.getpass(prompt = 'Confirm password')\n", " if arc_admin_password != confirm_password:\n", - " sys.exit(f'Passwords do not match.')" + " sys.exit(f'Passwords do not match.')\n", + "\n", + "os.environ[\"SPN_CLIENT_ID\"] = spn_client_id\n", + "os.environ[\"SPN_CLIENT_TENANTID\"] = spn_client_tenantid\n", + "if \"AZDATA_NB_VAR_SPN_CLIENT_SECRET\" in os.environ:\n", + " os.environ[\"SPN_CLIENT_SECRET\"] = os.environ[\"AZDATA_NB_VAR_SPN_CLIENT_SECRET\"]\n", + " print(os.environ[\"SPN_CLIENT_TENANTID\"])\n", + "os.environ[\"SPN_AUTHORITY\"] = \"https://login.microsoftonline.com\"" ], "metadata": { "azdata_cell_guid": "e7e10828-6cae-45af-8c2f-1484b6d4f9ac", @@ -182,7 +189,7 @@ "os.environ[\"AZDATA_PASSWORD\"] = arc_admin_password\n", "if os.name == 'nt':\n", " print(f'If you don\\'t see output produced by azdata, you can run the following command in a terminal window to check the deployment status:\\n\\t {os.environ[\"AZDATA_NB_VAR_KUBECTL\"]} get pods -n {arc_data_controller_namespace}')\n", - "run_command(f'azdata arc dc create --connectivity-mode Indirect -n {arc_data_controller_name} -ns {arc_data_controller_namespace} -s {arc_subscription} -g {arc_resource_group} -l {arc_data_controller_location} -sc {arc_data_controller_storage_class} --profile-name {arc_profile}')\n", + "run_command(f'azdata arc dc create --connectivity-mode {arc_data_controller_connectivity_mode} -n {arc_data_controller_name} -ns {arc_data_controller_namespace} -s {arc_subscription} -g {arc_resource_group} -l {arc_data_controller_location} -sc {arc_data_controller_storage_class} --profile-name {arc_profile}')\n", "print(f'Azure Arc Data Controller: {arc_data_controller_name} created.') " ], "metadata": { diff --git a/extensions/arc/package.json b/extensions/arc/package.json index 3d5a035aa4..dd8acade4e 100644 --- a/extensions/arc/package.json +++ b/extensions/arc/package.json @@ -196,7 +196,7 @@ ] }, { - "title": "%arc.data.controller.data.controller.create.title%", + "title": "%arc.data.controller.data.controller.create.azureconfig.title%", "sections": [ { "title": "%arc.data.controller.project.details.title%", @@ -212,9 +212,99 @@ "subscriptionVariableName": "AZDATA_NB_VAR_ARC_SUBSCRIPTION", "displaySubscriptionVariableName": "AZDATA_NB_VAR_ARC_DISPLAY_SUBSCRIPTION", "resourceGroupVariableName": "AZDATA_NB_VAR_ARC_RESOURCE_GROUP" + }, + { + "type": "azure_locations", + "label": "%arc.data.controller.arc.data.controller.location%", + "defaultValue": "eastus", + "required": true, + "locationVariableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_LOCATION", + "displayLocationVariableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_DISPLAY_LOCATION", + "locations": [ + "australiaeast", + "centralus", + "eastus", + "eastus2", + "francecentral", + "japaneast", + "koreacentral", + "northeurope", + "southeastasia", + "uksouth", + "westeurope", + "westus2" + ] } ] }, + { + "title": "%arc.data.controller.connectivitymode%", + "fields": [ + { + "type": "readonly_text", + "label": "%arc.data.controller.data.controller.connectivitymode.description%", + "labelWidth": "600px" + }, + { + "type": "options", + "label": "%arc.data.controller.connectivitymode%", + "required": true, + "variableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE", + "options": { + "values": [ + { + "name": "indirect", + "displayName": "%arc.data.controller.indirect%" + }, + { + "name": "direct", + "displayName": "%arc.data.controller.direct%" + } + ], + "defaultValue": "%arc.data.controller.indirect%", + "optionsType": "radio" + } + }, + { + "label": "%arc.data.controller.spnclient%", + "variableName": "AZDATA_NB_VAR_SPN_CLIENT_ID", + "type": "text", + "required": true, + "defaultValue": "", + "enabled": { + "target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE", + "value": "%arc.data.controller.direct%" + } + }, + { + "label": "%arc.data.controller.spnclientsecret%", + "variableName": "AZDATA_NB_VAR_SPN_CLIENT_SECRET", + "type": "password", + "required": true, + "defaultValue": "", + "enabled": { + "target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE", + "value": "%arc.data.controller.direct%" + } + }, + { + "label": "%arc.data.controller.spntenant%", + "variableName": "AZDATA_NB_VAR_SPN_CLIENT_TENANTID", + "type": "text", + "required": true, + "defaultValue": "", + "enabled": { + "target": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE", + "value": "%arc.data.controller.direct%" + } + } + ] + } + ] + }, + { + "title": "%arc.data.controller.data.controller.create.controllerconfig.title%", + "sections": [ { "title": "%arc.data.controller.data.controller.details.title%", "fields": [ @@ -253,28 +343,6 @@ "variableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_STORAGE_CLASS", "type": "kube_storage_class", "required": true - }, - { - "type": "azure_locations", - "label": "%arc.data.controller.arc.data.controller.location%", - "defaultValue": "eastus", - "required": true, - "locationVariableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_LOCATION", - "displayLocationVariableName": "AZDATA_NB_VAR_ARC_DATA_CONTROLLER_DISPLAY_LOCATION", - "locations": [ - "australiaeast", - "centralus", - "eastus", - "eastus2", - "francecentral", - "japaneast", - "koreacentral", - "northeurope", - "southeastasia", - "uksouth", - "westeurope", - "westus2" - ] } ] }, @@ -490,6 +558,17 @@ "defaultValue": "$(AZDATA_NB_VAR_ARC_DATA_CONTROLLER_DISPLAY_LOCATION)" } ] + }, + { + "title": "%arc.data.controller.summary.controller%", + "fields": [ + { + "label": "%arc.data.controller.connectivitymode%", + "type": "readonly_text", + "isEvaluated": true, + "defaultValue": "$(AZDATA_NB_VAR_ARC_DATA_CONTROLLER_CONNECTIVITY_MODE)" + } + ] } ] } diff --git a/extensions/arc/package.nls.json b/extensions/arc/package.nls.json index 8452b7c729..f9cde30c40 100644 --- a/extensions/arc/package.nls.json +++ b/extensions/arc/package.nls.json @@ -20,11 +20,13 @@ "arc.data.controller.kube.cluster.context": "Cluster context", "arc.data.controller.cluster.config.profile.title": "Choose the config profile", "arc.data.controller.cluster.config.profile": "Config profile", - "arc.data.controller.data.controller.create.title": "Provide details to create Azure Arc data controller", - "arc.data.controller.project.details.title": "Project details", + "arc.data.controller.data.controller.create.azureconfig.title": "Azure and Connectivity Configuration", + "arc.data.controller.data.controller.connectivitymode.description": "Select the connectivity mode for the controller.", + "arc.data.controller.data.controller.create.controllerconfig.title": "Controller Configuration", + "arc.data.controller.project.details.title": "Azure details", "arc.data.controller.project.details.description": "Select the subscription to manage deployed resources and costs. Use resource groups like folders to organize and manage all your resources.", "arc.data.controller.data.controller.details.title": "Data controller details", - "arc.data.controller.data.controller.details.description": "Provide an Azure region and a name for your Azure Arc data controller. This name will be used to identify your Arc location for remote management and monitoring.", + "arc.data.controller.data.controller.details.description": "Provide a namespace, name and storage class for your Azure Arc data controller. This name will be used to identify your Arc instance for remote management and monitoring.", "arc.data.controller.arc.data.controller.namespace": "Data controller namespace", "arc.data.controller.arc.data.controller.namespace.validation.description": "Namespace must consist of lower case alphanumeric characters or '-', start/end with an alphanumeric character, and be 63 characters or fewer in length.", "arc.data.controller.arc.data.controller.name": "Data controller name", @@ -34,6 +36,12 @@ "arc.data.controller.admin.account.name": "Data controller login", "arc.data.controller.admin.account.password": "Password", "arc.data.controller.admin.account.confirm.password": "Confirm password", + "arc.data.controller.connectivitymode": "Connectivity Mode", + "arc.data.controller.direct": "Direct", + "arc.data.controller.indirect": "Indirect", + "arc.data.controller.spnclient": "SPN Client ID", + "arc.data.controller.spnclientsecret": "SPN Client Secret", + "arc.data.controller.spntenant": "SPN Tenant ID", "arc.data.controller.data.controller.create.summary.title": "Review your configuration", "arc.data.controller.summary.arc.data.controller": "Azure Arc data controller", "arc.data.controller.summary.estimated.cost.per.month": "Estimated cost per month", @@ -55,6 +63,7 @@ "arc.data.controller.summary.resource.group": "Resource group", "arc.data.controller.summary.data.controller.name": "Data controller name", "arc.data.controller.summary.data.controller.namespace": "Data controller namespace", + "arc.data.controller.summary.controller": "Controller", "arc.data.controller.summary.location": "Location", "arc.data.controller.arc.data.controller.agreement": "I accept {0} and {1}.", "microsoft.agreement.privacy.statement":"Microsoft Privacy Statement",