You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by om...@apache.org on 2019/03/25 15:21:49 UTC
[incubator-dlab] branch test_branch updated: [DLAB-77] Added
TensorFlow-Rstudio template
This is an automated email from the ASF dual-hosted git repository.
omartushevskyi pushed a commit to branch test_branch
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/test_branch by this push:
new 59ea784 [DLAB-77] Added TensorFlow-Rstudio template
new b2146a1 Merge pull request #58 from Dyoma33/DLAB-77
59ea784 is described below
commit 59ea784e421e0b09754b68e4c6b63869cd429ded
Author: Dyoma33 <de...@gmail.com>
AuthorDate: Mon Mar 25 17:15:17 2019 +0200
[DLAB-77] Added TensorFlow-Rstudio template
---
.../general/files/gcp/tensor-rstudio_Dockerfile | 37 +++
.../files/gcp/tensor-rstudio_description.json | 20 ++
.../src/general/scripts/gcp/ssn_configure.py | 1 +
.../scripts/gcp/tensor-rstudio_configure.py | 303 +++++++++++++++++++++
.../gcp/jenkins_jobs/create_data_engine/config.xml | 1 +
.../jenkins_jobs/create_notebook_server/config.xml | 1 +
.../jenkins_jobs/start_notebook_server/config.xml | 1 +
.../jenkins_jobs/stop_notebook_server/config.xml | 1 +
.../terminate_notebook_server/config.xml | 1 +
.../src/ssn/files/gcp/mongo_roles.json | 10 +
10 files changed, 376 insertions(+)
diff --git a/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_Dockerfile b/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_Dockerfile
new file mode 100644
index 0000000..06468f8
--- /dev/null
+++ b/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_Dockerfile
@@ -0,0 +1,37 @@
+# *****************************************************************************
+#
+# 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 tensor-rstudio/ /root/
+COPY general/scripts/os/* /root/scripts/
+COPY general/scripts/gcp/tensor-rstudio_* /root/scripts/
+COPY general/lib/os/${OS}/notebook_lib.py /usr/lib/python2.7/dlab/notebook_lib.py
+COPY general/templates/os/${OS}/ungit.service /root/templates/
+COPY general/templates/os/notebook_spark-defaults_local.conf /root/templates/
+COPY general/templates/os/${OS}/ungit.service /root/templates/
+COPY general/templates/os/tensorboard.service /root/templates/
+
+RUN chmod a+x /root/fabfile.py; \
+ chmod a+x /root/scripts/*
diff --git a/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_description.json b/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_description.json
new file mode 100644
index 0000000..31714cc
--- /dev/null
+++ b/infrastructure-provisioning/src/general/files/gcp/tensor-rstudio_description.json
@@ -0,0 +1,20 @@
+{
+ "exploratory_environment_shapes" :
+ {
+ "GPU optimized": [
+ {"Size": "S", "Description": "n1-standard-2", "Type": "n1-standard-2","Ram": "7.50 GB","Cpu": "2"},
+ {"Size": "M", "Description": "n1-highcpu-8", "Type": "n1-highcpu-8","Ram": "7.20 GB","Cpu": "8"},
+ {"Size": "L", "Description": "n1-highmem-32", "Type": "n1-highmem-32","Ram": "208 GB","Cpu": "32"}
+ ]
+ },
+ "exploratory_environment_versions" :
+ [
+ {
+ "template_name": "RStudio with TensorFlow 1.8.0",
+ "description": "Base image with TensorFlow and RStudio node creation routines",
+ "environment_type": "exploratory",
+ "version": "tensorflow_gpu-1.8.0",
+ "vendor": "GCP"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/infrastructure-provisioning/src/general/scripts/gcp/ssn_configure.py b/infrastructure-provisioning/src/general/scripts/gcp/ssn_configure.py
index 591fd77..fe8235f 100644
--- a/infrastructure-provisioning/src/general/scripts/gcp/ssn_configure.py
+++ b/infrastructure-provisioning/src/general/scripts/gcp/ssn_configure.py
@@ -220,6 +220,7 @@ if __name__ == "__main__":
{"name": "rstudio", "tag": "latest"},
{"name": "zeppelin", "tag": "latest"},
{"name": "tensor", "tag": "latest"},
+ {"name": "tensor-rstudio", "tag": "latest"},
{"name": "deeplearning", "tag": "latest"},
{"name": "dataengine", "tag": "latest"},
{"name": "dataengine-service", "tag": "latest"}]
diff --git a/infrastructure-provisioning/src/general/scripts/gcp/tensor-rstudio_configure.py b/infrastructure-provisioning/src/general/scripts/gcp/tensor-rstudio_configure.py
new file mode 100644
index 0000000..f4d1661
--- /dev/null
+++ b/infrastructure-provisioning/src/general/scripts/gcp/tensor-rstudio_configure.py
@@ -0,0 +1,303 @@
+#!/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
+import argparse
+import traceback
+
+
+if __name__ == "__main__":
+ instance_class = 'notebook'
+ local_log_filename = "{}_{}_{}.log".format(os.environ['conf_resource'], os.environ['edge_user_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)
+
+ notebook_config = dict()
+ try:
+ notebook_config['exploratory_name'] = os.environ['exploratory_name']
+ except:
+ notebook_config['exploratory_name'] = ''
+ notebook_config['service_base_name'] = os.environ['conf_service_base_name']
+ notebook_config['instance_type'] = os.environ['gcp_notebook_instance_size']
+ notebook_config['key_name'] = os.environ['conf_key_name']
+ notebook_config['user_keyname'] = os.environ['edge_user_name']
+ notebook_config['network_type'] = os.environ['conf_network_type']
+ notebook_config['instance_name'] = '{}-{}-nb-{}-{}'.format(notebook_config['service_base_name'],
+ os.environ['edge_user_name'],
+ notebook_config['exploratory_name'], args.uuid)
+ notebook_config['expected_image_name'] = '{}-{}-notebook-image'.format(notebook_config['service_base_name'],
+ os.environ['application'])
+ notebook_config['notebook_image_name'] = str(os.environ.get('notebook_image_name'))
+ notebook_config['role_profile_name'] = '{}-{}-nb-de-Profile' \
+ .format(notebook_config['service_base_name'].lower().replace('-', '_'), os.environ['edge_user_name'])
+ notebook_config['security_group_name'] = '{}-{}-nb-SG'.format(notebook_config['service_base_name'],
+ os.environ['edge_user_name'])
+ notebook_config['tag_name'] = '{}-Tag'.format(notebook_config['service_base_name'])
+ notebook_config['dlab_ssh_user'] = os.environ['conf_os_user']
+ notebook_config['shared_image_enabled'] = os.environ['conf_shared_image_enabled']
+ tag = {"Key": notebook_config['tag_name'],
+ "Value": "{}-{}-subnet".format(notebook_config['service_base_name'], os.environ['edge_user_name'])}
+ notebook_config['subnet_cidr'] = get_subnet_by_tag(tag)
+ notebook_config['rstudio_pass'] = id_generator()
+
+ # generating variables regarding EDGE proxy on Notebook instance
+ instance_hostname = get_instance_hostname(notebook_config['tag_name'], notebook_config['instance_name'])
+ edge_instance_name = os.environ['conf_service_base_name'] + "-" + os.environ['edge_user_name'] + '-edge'
+ edge_instance_hostname = get_instance_hostname(notebook_config['tag_name'], edge_instance_name)
+ if notebook_config['network_type'] == 'private':
+ edge_instance_ip = get_instance_ip_address(notebook_config['tag_name'], edge_instance_name).get('Private')
+ else:
+ edge_instance_ip = get_instance_ip_address(notebook_config['tag_name'], edge_instance_name).get('Public')
+ keyfile_name = "{}{}.pem".format(os.environ['conf_key_dir'], os.environ['conf_key_name'])
+
+ try:
+ 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'
+
+ 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'.", str(err))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ # configuring proxy on Notebook instance
+ try:
+ logging.info('[CONFIGURE PROXY ON TENSORFLOW-RSTUDIO INSTANCE]')
+ print('[CONFIGURE PROXY ON TENSORFLOW-RSTUDIO INSTANCE]')
+ additional_config = {"proxy_host": edge_instance_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))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ # updating repositories & installing python packages
+ try:
+ logging.info('[INSTALLING PREREQUISITES TO TENSORFLOW-RSTUDIO NOTEBOOK INSTANCE]')
+ print('[INSTALLING PREREQUISITES TO TENSORFLOW-RSTUDIO NOTEBOOK INSTANCE]')
+ params = "--hostname {} --keyfile {} --user {} --region {}". \
+ format(instance_hostname, notebook_config['ssh_key_path'], notebook_config['dlab_ssh_user'], os.environ['gcp_region'])
+ 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))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ # installing and configuring TensorFlow and RSTUDIO and all dependencies
+ try:
+ logging.info('[CONFIGURE TENSORFLOW-RSTUDIO NOTEBOOK INSTANCE]')
+ print('[CONFIGURE TENSORFLOW-RSTUDIO NOTEBOOK INSTANCE]')
+ params = "--hostname {} --keyfile {} " \
+ "--region {} --rstudio_pass {} " \
+ "--rstudio_version {} --os_user {} " \
+ "--r_mirror {} --exploratory_name {}" \
+ .format(instance_hostname, keyfile_name,
+ os.environ['aws_region'], notebook_config['rstudio_pass'],
+ os.environ['notebook_rstudio_version'], notebook_config['dlab_ssh_user'],
+ os.environ['notebook_r_mirror'], notebook_config['exploratory_name'])
+ try:
+ local("~/scripts/{}.py {}".format('configure_tensor-rstudio_node', params))
+ except:
+ traceback.print_exc()
+ raise Exception
+ except Exception as err:
+ print('Error: {0}'.format(err))
+ append_result("Failed to configure tensoflow-rstudio.", str(err))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ try:
+ print('[INSTALLING USERs KEY]')
+ logging.info('[INSTALLING USERs KEY]')
+ additional_config = {"user_keyname": os.environ['edge_user_name'],
+ "user_keydir": os.environ['conf_key_dir']}
+ params = "--hostname {} --keyfile {} --additional_config '{}' --user {}".format(
+ instance_hostname, notebook_config['ssh_key_path'], 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))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ 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, notebook_config['ssh_key_path'])
+ 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))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ if notebook_config['shared_image_enabled'] == 'true':
+ try:
+ print('[CREATING IMAGE]')
+ primary_image_id = GCPMeta().get_image_by_name(notebook_config['expected_primary_image_name'])
+ secondary_image_id = GCPMeta().get_image_by_name(notebook_config['expected_secondary_image_name'])
+ if primary_image_id == '':
+ print("Looks like it's first time we configure notebook server. Creating images.")
+ primary_image_id = GCPActions().create_image_from_instance_disk(
+ notebook_config['expected_primary_image_name'], 'primary',
+ notebook_config['instance_name'], notebook_config['zone'])
+ if primary_image_id != '':
+ print("Image of primary disk was successfully created. It's ID is {}".format(primary_image_id))
+ if secondary_image_id == '':
+ secondary_image_id = GCPActions().create_image_from_instance_disk(
+ notebook_config['expected_secondary_image_name'], 'secondary', notebook_config['instance_name'],
+ notebook_config['zone'])
+ if secondary_image_id != '':
+ print("Image of secondary disk was successfully created. It's ID is {}".format(secondary_image_id))
+ except Exception as err:
+ print('Error: {0}'.format(err))
+ append_result("Failed creating image.", str(err))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ GCPActions().remove_image(notebook_config['expected_primary_image_name'])
+ GCPActions().remove_image(notebook_config['expected_secondary_image_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_hostname,
+ notebook_config['ssh_key_path'],
+ notebook_config['dlab_ssh_user'],
+ 'rstudio',
+ 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))
+ GCPActions().remove_instance(notebook_config['instance_name'], notebook_config['zone'])
+ sys.exit(1)
+
+ # generating output information
+ ip_address = GCPMeta().get_private_ip_address(notebook_config['instance_name'])
+ rstudio_ip_url = "http://" + ip_address + ":8787/"
+ ungit_ip_url = "http://" + ip_address + ":8085/{}-ungit/".format(notebook_config['exploratory_name'])
+ rstudio_notebook_acces_url = "http://" + edge_instance_hostname + "/{}/".format(notebook_config['exploratory_name'])
+ rstudio_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_type']))
+ print("Key name: {}".format(notebook_config['key_name']))
+ print("User key name: {}".format(os.environ['edge_user_name']))
+ print("Rstudio URL: {}".format(rstudio_ip_url))
+ print("Rstudio user: {}".format(notebook_config['dlab_ssh_user']))
+ print("Rstudio pass: {}".format(notebook_config['rstudio_pass']))
+ 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 = {"hostname": dns_name,
+ "ip": ip_address,
+ "instance_id": get_instance_by_name(notebook_config['tag_name'], notebook_config['instance_name']),
+ "master_keyname": os.environ['conf_key_name'],
+ "tensorboard_log_dir": "/var/log/tensorboard",
+ "notebook_name": notebook_config['instance_name'],
+ "notebook_image_name": notebook_config['notebook_image_name'],
+ "Action": "Create new notebook server",
+ "exploratory_url": [
+ {"description": "RStudio",
+ "url": rstudio_notebook_acces_url},
+ {"description": "TensorBoard",
+ "url": tensorboard_acces_url},
+ {"description": "Ungit",
+ "url": rstudio_ungit_acces_url},
+ {"description": "RStudio (via tunnel)",
+ "url": rstudio_ip_url},
+ {"description": "TensorBoard (via tunnel)",
+ "url": tensorboard_url},
+ {"description": "Ungit (via tunnel)",
+ "url": ungit_ip_url}
+ ],
+ "exploratory_user": notebook_config['dlab_ssh_user'],
+ "exploratory_pass": notebook_config['rstudio_pass']}
+ result.write(json.dumps(res))
\ No newline at end of file
diff --git a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_data_engine/config.xml b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_data_engine/config.xml
index 1f28970..0fe5f41 100644
--- a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_data_engine/config.xml
+++ b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_data_engine/config.xml
@@ -70,6 +70,7 @@ under the License.
<string>rstudio</string>
<string>zeppelin</string>
<string>tensor</string>
+ <string>tensor-rstudio</string>
</a>
</choices>
</hudson.model.ChoiceParameterDefinition>
diff --git a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_notebook_server/config.xml
index c09b1f8..dc5353e 100644
--- a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_notebook_server/config.xml
+++ b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/create_notebook_server/config.xml
@@ -40,6 +40,7 @@ under the License.
<string>rstudio</string>
<string>zeppelin</string>
<string>tensor</string>
+ <string>tensor-rstudio</string>
<string>deeplearning</string>
</a>
</choices>
diff --git a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/start_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/start_notebook_server/config.xml
index 157cbf6..cff88ae 100644
--- a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/start_notebook_server/config.xml
+++ b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/start_notebook_server/config.xml
@@ -45,6 +45,7 @@ under the License.
<string>rstudio</string>
<string>zeppelin</string>
<string>tensor</string>
+ <string>tensor-rstudio</string>
</a>
</choices>
</hudson.model.ChoiceParameterDefinition>
diff --git a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/stop_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/stop_notebook_server/config.xml
index 58a10a6..736431f 100644
--- a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/stop_notebook_server/config.xml
+++ b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/stop_notebook_server/config.xml
@@ -45,6 +45,7 @@ under the License.
<string>rstudio</string>
<string>zeppelin</string>
<string>tensor</string>
+ <string>tensor-rstudio</string>
<string>deeplearning</string>
</a>
</choices>
diff --git a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/terminate_notebook_server/config.xml b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/terminate_notebook_server/config.xml
index e2a04be..a466df4 100644
--- a/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/terminate_notebook_server/config.xml
+++ b/infrastructure-provisioning/src/general/templates/gcp/jenkins_jobs/terminate_notebook_server/config.xml
@@ -45,6 +45,7 @@ under the License.
<string>rstudio</string>
<string>zeppelin</string>
<string>tensor</string>
+ <string>tensor-rstudio</string>
</a>
</choices>
</hudson.model.ChoiceParameterDefinition>
diff --git a/infrastructure-provisioning/src/ssn/files/gcp/mongo_roles.json b/infrastructure-provisioning/src/ssn/files/gcp/mongo_roles.json
index 20f81d9..3cdb601 100644
--- a/infrastructure-provisioning/src/ssn/files/gcp/mongo_roles.json
+++ b/infrastructure-provisioning/src/ssn/files/gcp/mongo_roles.json
@@ -119,6 +119,16 @@
"$anyuser"
]
},
+ {
+ "_id": "nbCreateTensorRstudio",
+ "description": "Create Notebook RStudio with TensorFlow",
+ "exploratories": [
+ "docker.dlab-tensor-rstudio"
+ ],
+ "groups": [
+ "$anyuser"
+ ]
+ },
{
"_id": "nbCreateZeppelin",
"description": "Create Notebook Apache Zeppelin",
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org