This is an automated email from the ASF dual-hosted git repository. dmysakovets pushed a commit to branch DLAB-625 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 868e4b03d8fcf9dd1af0ef827b7e32cd1c5cdc96 Author: Demyan Mysakovets <demian.mysakove...@gmail.com> AuthorDate: Wed Feb 26 11:15:51 2020 +0200 [DLAB-625] Created Jupyterlab template for Azure --- .../src/general/files/azure/jupyterlab_Dockerfile | 51 +++ .../files/azure/jupyterlab_description.json | 25 ++ .../general/files/gcp/jupyterlab_description.json | 2 +- .../general/scripts/azure/jupyterlab_configure.py | 356 +++++++++++++++++++++ .../src/general/scripts/azure/ssn_configure.py | 1 + .../jenkins_jobs/create_notebook_image/config.xml | 1 + .../jenkins_jobs/create_notebook_server/config.xml | 1 + .../jenkins_jobs/manage_git_credentials/config.xml | 1 + .../jenkins_jobs/start_notebook_server/config.xml | 1 + .../jenkins_jobs/stop_notebook_server/config.xml | 1 + .../terminate_notebook_image/config.xml | 1 + .../terminate_notebook_server/config.xml | 1 + .../scripts/configure_jupyterlab_node.py | 7 - 13 files changed, 441 insertions(+), 8 deletions(-) diff --git a/infrastructure-provisioning/src/general/files/azure/jupyterlab_Dockerfile b/infrastructure-provisioning/src/general/files/azure/jupyterlab_Dockerfile new file mode 100644 index 0000000..97739c1 --- /dev/null +++ b/infrastructure-provisioning/src/general/files/azure/jupyterlab_Dockerfile @@ -0,0 +1,51 @@ +# ***************************************************************************** +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# ****************************************************************************** + + +FROM docker.dlab-base:latest + +ARG OS + +COPY jupyterlab/ /root/ +COPY general/scripts/os/* /root/scripts/ +COPY general/scripts/azure/jupyter* /root/scripts/ +COPY general/lib/os/${OS}/notebook_lib.py /usr/lib/python2.7/dlab/notebook_lib.py +COPY general/templates/os/${OS}/jupyter-notebook.service /root/templates/ +COPY general/templates/os/${OS}/ungit.service /root/templates/ +COPY general/templates/os/notebook_spark-defaults_local.conf /root/templates/ +COPY general/templates/os/pyspark_local_template.json /root/templates/ +COPY general/templates/os/py3spark_local_template.json /root/templates/ +COPY general/templates/os/r_template.json /root/templates/ +COPY general/templates/os/run_template.sh /root/templates/ +COPY general/files/os/toree-assembly-0.2.0.jar /root/files/ +COPY general/files/os/toree_kernel.tar.gz /root/files/ +COPY general/templates/os/pyspark_dataengine_template.json /root/templates/ +COPY general/templates/os/r_dataengine_template.json /root/templates/ +COPY general/templates/os/toree_dataengine_template.json /root/templates/ +COPY general/templates/os/inactive.sh /root/templates/ +COPY general/templates/os/inactive.service /root/templates/ +COPY general/templates/os/inactive.timer /root/templates/ +COPY general/templates/azure/core-site* /root/templates/ + + +RUN chmod a+x /root/fabfile.py; \ + chmod a+x /root/scripts/* + diff --git a/infrastructure-provisioning/src/general/files/azure/jupyterlab_description.json b/infrastructure-provisioning/src/general/files/azure/jupyterlab_description.json new file mode 100644 index 0000000..739bdcf --- /dev/null +++ b/infrastructure-provisioning/src/general/files/azure/jupyterlab_description.json @@ -0,0 +1,25 @@ +{ + "exploratory_environment_shapes" : + { + "Memory optimized" : [ + {"Size": "S", "Description": "Standard_E4s_v3", "Type": "Standard_E4s_v3","Ram": "32 GB","Cpu": "4"}, + {"Size": "M", "Description": "Standard_E16s_v3", "Type": "Standard_E16s_v3","Ram": "128 GB","Cpu": "16"}, + {"Size": "L", "Description": "Standard_E32s_v3", "Type": "Standard_E32s_v3","Ram": "256 GB","Cpu": "32"} + ], + "Compute optimized": [ + {"Size": "S", "Description": "Standard_F2s", "Type": "Standard_F2s","Ram": "4 GB","Cpu": "2"}, + {"Size": "M", "Description": "Standard_F8s", "Type": "Standard_F8s","Ram": "16.0 GB","Cpu": "8"}, + {"Size": "L", "Description": "Standard_F16s", "Type": "Standard_F16s","Ram": "32.0 GB","Cpu": "16"} + ] + }, + "exploratory_environment_versions" : + [ + { + "template_name": "JupyterLab 0.35.6", + "description": "Base image with JupyterLab node creation routines", + "environment_type": "exploratory", + "version": "jupyter_lab-0.35.6", + "vendor": "Azure" + } + ] +} \ No newline at end of file diff --git a/infrastructure-provisioning/src/general/files/gcp/jupyterlab_description.json b/infrastructure-provisioning/src/general/files/gcp/jupyterlab_description.json index 3f202f7..8a376bf 100644 --- a/infrastructure-provisioning/src/general/files/gcp/jupyterlab_description.json +++ b/infrastructure-provisioning/src/general/files/gcp/jupyterlab_description.json @@ -1,4 +1,4 @@ -{ +d{ "exploratory_environment_shapes" : { "For testing" : [ diff --git a/infrastructure-provisioning/src/general/scripts/azure/jupyterlab_configure.py b/infrastructure-provisioning/src/general/scripts/azure/jupyterlab_configure.py new file mode 100644 index 0000000..d87e640 --- /dev/null +++ b/infrastructure-provisioning/src/general/scripts/azure/jupyterlab_configure.py @@ -0,0 +1,356 @@ +#!/usr/bin/python + +# ***************************************************************************** +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# ****************************************************************************** + +import logging +import json +import sys +from dlab.fab import * +from dlab.meta_lib import * +from dlab.actions_lib import * +import os + + +if __name__ == "__main__": + local_log_filename = "{}_{}_{}.log".format(os.environ['conf_resource'], os.environ['project_name'], + os.environ['request_id']) + local_log_filepath = "/logs/" + os.environ['conf_resource'] + "/" + local_log_filename + logging.basicConfig(format='%(levelname)-8s [%(asctime)s] %(message)s', + level=logging.DEBUG, + filename=local_log_filepath) + try: + notebook_config = dict() + try: + notebook_config['exploratory_name'] = os.environ['exploratory_name'].replace('_', '-') + except: + notebook_config['exploratory_name'] = '' + notebook_config['service_base_name'] = os.environ['conf_service_base_name'] + notebook_config['resource_group_name'] = os.environ['azure_resource_group_name'] + notebook_config['instance_size'] = os.environ['azure_notebook_instance_size'] + notebook_config['key_name'] = os.environ['conf_key_name'] + notebook_config['user_name'] = os.environ['edge_user_name'].replace('_', '-') + notebook_config['project_name'] = os.environ['project_name'].lower().replace('_', '-') + notebook_config['endpoint_name'] = os.environ['endpoint_name'].lower().replace('_', '-') + notebook_config['project_tag'] = os.environ['project_name'].lower().replace('_', '-') + notebook_config['endpoint_tag'] = os.environ['endpoint_name'].lower().replace('_', '-') + notebook_config['user_keyname'] = os.environ['project_name'] + notebook_config['instance_name'] = '{}-{}-nb-{}'.format(notebook_config['service_base_name'], + notebook_config['project_name'], + notebook_config['exploratory_name']) + notebook_config['image_enabled'] = os.environ['conf_image_enabled'] + notebook_config['shared_image_enabled'] = os.environ['conf_shared_image_enabled'] + if notebook_config['shared_image_enabled'] == 'false': + notebook_config['expected_image_name'] = '{0}-{1}-{2}-{3}-notebook-image'.format( + notebook_config['service_base_name'], + notebook_config['endpoint_name'], + notebook_config['project_name'], + os.environ['application']) + notebook_config['image_tags'] = {"Name": notebook_config['instance_name'], + "SBN": notebook_config['service_base_name'], + "User": notebook_config['user_name'], + "project_tag": notebook_config['project_tag'], + "endpoint_tag": notebook_config['endpoint_tag'], + "Exploratory": notebook_config['exploratory_name'], + os.environ['conf_billing_tag_key']: os.environ['conf_billing_tag_value']} + else: + notebook_config['expected_image_name'] = '{0}-{1}-{2}-notebook-image'.format( + notebook_config['service_base_name'], + notebook_config['endpoint_name'], + os.environ['application']) + notebook_config['image_tags'] = {"Name": notebook_config['instance_name'], + "SBN": notebook_config['service_base_name'], + "User": notebook_config['user_name'], + "endpoint_tag": notebook_config['endpoint_tag'], + "Exploratory": notebook_config['exploratory_name'], + os.environ['conf_billing_tag_key']: os.environ['conf_billing_tag_value']} + notebook_config['notebook_image_name'] = str(os.environ.get('notebook_image_name')) + notebook_config['security_group_name'] = '{}-{}-nb-sg'.format(notebook_config['service_base_name'], + notebook_config['project_name']) + notebook_config['dlab_ssh_user'] = os.environ['conf_os_user'] + notebook_config['tags'] = {"Name": notebook_config['instance_name'], + "SBN": notebook_config['service_base_name'], + "User": notebook_config['user_name'], + "project_tag": notebook_config['project_tag'], + "endpoint_tag": notebook_config['endpoint_tag'], + "Exploratory": notebook_config['exploratory_name'], + os.environ['conf_billing_tag_key']: os.environ['conf_billing_tag_value']} + notebook_config['ip_address'] = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + notebook_config['instance_name']) + + # generating variables regarding EDGE proxy on Notebook instance + instance_hostname = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + notebook_config['instance_name']) + edge_instance_name = '{0}-{1}-{2}-edge'.format(notebook_config['service_base_name'], + notebook_config['project_name'], + notebook_config['endpoint_name']) + edge_instance_private_hostname = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + edge_instance_name) + if os.environ['conf_network_type'] == 'private': + edge_instance_hostname = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + edge_instance_name) + else: + edge_instance_hostname = AzureMeta().get_instance_public_ip_address(notebook_config['resource_group_name'], + edge_instance_name) + keyfile_name = "{}{}.pem".format(os.environ['conf_key_dir'], os.environ['conf_key_name']) + edge_hostname = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + edge_instance_name) + + if os.environ['conf_os_family'] == 'debian': + initial_user = 'ubuntu' + sudo_group = 'sudo' + if os.environ['conf_os_family'] == 'redhat': + initial_user = 'ec2-user' + sudo_group = 'wheel' + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed to generate variables dictionary.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + try: + logging.info('[CREATING DLAB SSH USER]') + print('[CREATING DLAB SSH USER]') + params = "--hostname {} --keyfile {} --initial_user {} --os_user {} --sudo_group {}".format\ + (instance_hostname, os.environ['conf_key_dir'] + os.environ['conf_key_name'] + ".pem", initial_user, + notebook_config['dlab_ssh_user'], sudo_group) + + try: + local("~/scripts/{}.py {}".format('create_ssh_user', params)) + except: + traceback.print_exc() + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed creating ssh user 'dlab-user'.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + # configuring proxy on Notebook instance + try: + logging.info('[CONFIGURE PROXY ON JUPYTER INSTANCE]') + print('[CONFIGURE PROXY ON JUPYTER INSTANCE]') + additional_config = {"proxy_host": edge_instance_private_hostname, "proxy_port": "3128"} + params = "--hostname {} --instance_name {} --keyfile {} --additional_config '{}' --os_user {}"\ + .format(instance_hostname, notebook_config['instance_name'], keyfile_name, json.dumps(additional_config), + notebook_config['dlab_ssh_user']) + try: + local("~/scripts/{}.py {}".format('common_configure_proxy', params)) + except: + traceback.print_exc() + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed to configure proxy.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + # updating repositories & installing python packages + try: + logging.info('[INSTALLING PREREQUISITES TO JUPYTER NOTEBOOK INSTANCE]') + print('[INSTALLING PREREQUISITES TO JUPYTER NOTEBOOK INSTANCE]') + params = "--hostname {} --keyfile {} --user {} --region {} --edge_private_ip {}".\ + format(instance_hostname, keyfile_name, notebook_config['dlab_ssh_user'], os.environ['azure_region'], + edge_instance_private_hostname) + try: + local("~/scripts/{}.py {}".format('install_prerequisites', params)) + except: + traceback.print_exc() + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed installing apps: apt & pip.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + # installing and configuring jupiter and all dependencies + try: + logging.info('[CONFIGURE JUPYTERLAB NOTEBOOK INSTANCE]') + print('[CONFIGURE JUPYTER NOTEBOOK INSTANCE]') + params = "--hostname {0} --keyfile {1} " \ + "--region {2} --spark_version {3} " \ + "--hadoop_version {4} --os_user {5} " \ + "--scala_version {6} --r_mirror {7} " \ + "--ip_adress {8} --exploratory_name {9} --edge_ip {10}".\ + format(instance_hostname, keyfile_name, + os.environ['azure_region'], os.environ['notebook_spark_version'], + os.environ['notebook_hadoop_version'], notebook_config['dlab_ssh_user'], + os.environ['notebook_scala_version'], os.environ['notebook_r_mirror'], + notebook_config['ip_address'], notebook_config['exploratory_name'], edge_hostname) + try: + local("~/scripts/{}.py {}".format('configure_jupyterlab_node', params)) + remount_azure_disk(True, notebook_config['dlab_ssh_user'], instance_hostname, + os.environ['conf_key_dir'] + os.environ['conf_key_name'] + ".pem") + except: + traceback.print_exc() + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed to configure jupyter.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + try: + print('[INSTALLING USERs KEY]') + logging.info('[INSTALLING USERs KEY]') + additional_config = {"user_keyname": notebook_config['user_keyname'], + "user_keydir": os.environ['conf_key_dir']} + params = "--hostname {} --keyfile {} --additional_config '{}' --user {}".format( + instance_hostname, keyfile_name, json.dumps(additional_config), notebook_config['dlab_ssh_user']) + try: + local("~/scripts/{}.py {}".format('install_user_key', params)) + except: + append_result("Failed installing users key") + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed installing users key.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + try: + print('[SETUP USER GIT CREDENTIALS]') + logging.info('[SETUP USER GIT CREDENTIALS]') + params = '--os_user {} --notebook_ip {} --keyfile "{}"' \ + .format(notebook_config['dlab_ssh_user'], instance_hostname, keyfile_name) + try: + # local("~/scripts/{}.py {}".format('common_download_git_certfile', params)) + local("~/scripts/{}.py {}".format('manage_git_creds', params)) + except: + append_result("Failed setup git credentials") + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed to setup git credentials.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + + if notebook_config['image_enabled'] == 'true': + try: + print('[CREATING IMAGE]') + image = AzureMeta().get_image(notebook_config['resource_group_name'], notebook_config['expected_image_name']) + if image == '': + print("Looks like it's first time we configure notebook server. Creating image.") + prepare_vm_for_image(True, notebook_config['dlab_ssh_user'], instance_hostname, keyfile_name) + AzureActions().create_image_from_instance(notebook_config['resource_group_name'], + notebook_config['instance_name'], + os.environ['azure_region'], + notebook_config['expected_image_name'], + json.dumps(notebook_config['image_tags'])) + print("Image was successfully created.") + local("~/scripts/{}.py".format('common_prepare_notebook')) + instance_running = False + while not instance_running: + if AzureMeta().get_instance_status(notebook_config['resource_group_name'], + notebook_config['instance_name']) == 'running': + instance_running = True + instance_hostname = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + notebook_config['instance_name']) + remount_azure_disk(True, notebook_config['dlab_ssh_user'], instance_hostname, keyfile_name) + set_git_proxy(notebook_config['dlab_ssh_user'], instance_hostname, keyfile_name, + 'http://{}:3128'.format(edge_instance_private_hostname)) + additional_config = {"proxy_host": edge_instance_private_hostname, "proxy_port": "3128"} + params = "--hostname {} --instance_name {} --keyfile {} --additional_config '{}' --os_user {}" \ + .format(instance_hostname, notebook_config['instance_name'], keyfile_name, + json.dumps(additional_config), notebook_config['dlab_ssh_user']) + local("~/scripts/{}.py {}".format('common_configure_proxy', params)) + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed creating image from notebook.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + try: + print('[SETUP EDGE REVERSE PROXY TEMPLATE]') + logging.info('[SETUP EDGE REVERSE PROXY TEMPLATE]') + additional_info = { + 'instance_hostname': instance_hostname, + 'tensor': False + } + params = "--edge_hostname {} " \ + "--keyfile {} " \ + "--os_user {} " \ + "--type {} " \ + "--exploratory_name {} " \ + "--additional_info '{}'"\ + .format(edge_instance_private_hostname, + keyfile_name, + notebook_config['dlab_ssh_user'], + 'jupyter', + notebook_config['exploratory_name'], + json.dumps(additional_info)) + try: + local("~/scripts/{}.py {}".format('common_configure_reverse_proxy', params)) + except: + append_result("Failed edge reverse proxy template") + raise Exception + except Exception as err: + print('Error: {0}'.format(err)) + append_result("Failed to set edge reverse proxy template.", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) + + # generating output information + try: + ip_address = AzureMeta().get_private_ip_address(notebook_config['resource_group_name'], + notebook_config['instance_name']) + jupyter_ip_url = "http://" + ip_address + ":8888/{}/".format(notebook_config['exploratory_name']) + ungit_ip_url = "http://" + ip_address + ":8085/{}-ungit/".format(notebook_config['exploratory_name']) + jupyter_notebook_acces_url = "http://" + edge_instance_hostname + "/{}/".format( + notebook_config['exploratory_name']) + jupyter_ungit_acces_url = "http://" + edge_instance_hostname + "/{}-ungit/".format( + notebook_config['exploratory_name']) + print('[SUMMARY]') + logging.info('[SUMMARY]') + print("Instance name: {}".format(notebook_config['instance_name'])) + print("Private IP: {}".format(ip_address)) + print("Instance type: {}".format(notebook_config['instance_size'])) + print("Key name: {}".format(notebook_config['key_name'])) + print("User key name: {}".format(notebook_config['user_keyname'])) + print("SG name: {}".format(notebook_config['security_group_name'])) + print("Jupyter URL: {}".format(jupyter_ip_url)) + print("Ungit URL: {}".format(ungit_ip_url)) + print('SSH access (from Edge node, via IP address): ssh -i {0}.pem {1}@{2}'. + format(notebook_config['key_name'], notebook_config['dlab_ssh_user'], ip_address)) + + with open("/root/result.json", 'w') as result: + res = {"ip": ip_address, + "master_keyname": os.environ['conf_key_name'], + "notebook_name": notebook_config['instance_name'], + "instance_id": notebook_config['instance_name'], + "Action": "Create new notebook server", + "notebook_image_name": notebook_config['notebook_image_name'], + "exploratory_url": [ + {"description": "Jupyter", + "url": jupyter_notebook_acces_url}, + {"description": "Ungit", + "url": jupyter_ungit_acces_url}#, + #{"description": "Jupyter (via tunnel)", + # "url": jupyter_ip_url}, + #{"description": "Ungit (via tunnel)", + # "url": ungit_ip_url} + ]} + result.write(json.dumps(res)) + except Exception as err: + append_result("Failed to generate output information", str(err)) + AzureActions().remove_instance(notebook_config['resource_group_name'], notebook_config['instance_name']) + sys.exit(1) \ No newline at end of file diff --git a/infrastructure-provisioning/src/general/scripts/azure/ssn_configure.py b/infrastructure-provisioning/src/general/scripts/azure/ssn_configure.py index 02c4eaa..4f35a62 100644 --- a/infrastructure-provisioning/src/general/scripts/azure/ssn_configure.py +++ b/infrastructure-provisioning/src/general/scripts/azure/ssn_configure.py @@ -175,6 +175,7 @@ if __name__ == "__main__": {"name": "edge", "tag": "latest"}, {"name": "project", "tag": "latest"}, {"name": "jupyter", "tag": "latest"}, + {"name": "jupyterlab", "tag": "latest"}, {"name": "rstudio", "tag": "latest"}, {"name": "zeppelin", "tag": "latest"}, {"name": "tensor", "tag": "latest"}, diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_image/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_image/config.xml index 7633fd5..f7a2715 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_image/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_image/config.xml @@ -47,6 +47,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_server/config.xml index 3c42f15..1c3967e 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_server/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/create_notebook_server/config.xml @@ -47,6 +47,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/manage_git_credentials/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/manage_git_credentials/config.xml index bebdc9e..4a5717d 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/manage_git_credentials/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/manage_git_credentials/config.xml @@ -42,6 +42,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/start_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/start_notebook_server/config.xml index 230ff9b..1344e62 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/start_notebook_server/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/start_notebook_server/config.xml @@ -42,6 +42,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/stop_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/stop_notebook_server/config.xml index 02da1ab..3611b2f 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/stop_notebook_server/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/stop_notebook_server/config.xml @@ -42,6 +42,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_image/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_image/config.xml index d8e5a0a..5fa3342 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_image/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_image/config.xml @@ -42,6 +42,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_server/config.xml index 23f2c32..57e4c1b 100644 --- a/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_server/config.xml +++ b/infrastructure-provisioning/src/general/templates/azure/jenkins_jobs/terminate_notebook_server/config.xml @@ -42,6 +42,7 @@ under the License. <choices class="java.util.Arrays$ArrayList"> <a class="string-array"> <string>jupyter</string> + <string>jupyterlab</string> <string>rstudio</string> <string>zeppelin</string> <string>tensor</string> diff --git a/infrastructure-provisioning/src/jupyterlab/scripts/configure_jupyterlab_node.py b/infrastructure-provisioning/src/jupyterlab/scripts/configure_jupyterlab_node.py index 7872b5c..5f56ea8 100644 --- a/infrastructure-provisioning/src/jupyterlab/scripts/configure_jupyterlab_node.py +++ b/infrastructure-provisioning/src/jupyterlab/scripts/configure_jupyterlab_node.py @@ -95,13 +95,6 @@ if __name__ == "__main__": print("Mount additional volume") prepare_disk(args.os_user) - # INSTALL LANGUAGES - print("Install Java") - ensure_jre_jdk(args.os_user) - if os.environ['notebook_r_enabled'] == 'true': - print("Installing R") - ensure_r(args.os_user, r_libs, args.region, args.r_mirror) - # INSTALL DOCKER print ("Install Docker") configure_docker(args.os_user) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org