Merge pull request #1256 from apache/DATALAB-408
[DATALAB-408]: [SSN] Added docker images to Nexus
diff --git a/infrastructure-provisioning/scripts/deploy_datalab.py b/infrastructure-provisioning/scripts/deploy_datalab.py
index e3bdd4c..f1442de 100644
--- a/infrastructure-provisioning/scripts/deploy_datalab.py
+++ b/infrastructure-provisioning/scripts/deploy_datalab.py
@@ -206,11 +206,21 @@
def build_docker_images(args):
- # Building base and ssn docker images
- subprocess.run('cd {2}; sudo docker build --build-arg OS={0} --build-arg SRC_PATH="infrastructure-provisioning/src/" --file '
+ if args.conf_repository_user and args.conf_repository_pass and args.conf_repository_address:
+ subprocess.run( 'sudo docker login -u {0} -p {1} {2}:8083'
+ .format(args.conf_repository_user, args.conf_repository_pass, args.conf_repository_address), shell=True, check=True)
+ subprocess.run('sudo docker pull {}:8083/docker.datalab-base-{}'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ subprocess.run('sudo docker image tag {}:8083/docker.datalab-base-{} docker.datalab-base'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ subprocess.run('sudo docker image rm {}:8083/docker.datalab-base-{}'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ subprocess.run('sudo docker pull {}:8083/docker.datalab-ssn-{}'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ subprocess.run('sudo docker image tag {}:8083/docker.datalab-ssn-{} docker.datalab-ssn'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ subprocess.run('sudo docker image rm {}:8083/docker.datalab-ssn-{}'.format(args.conf_repository_address, args.conf_cloud_provider), shell=True, check=True)
+ else:
+ # Building base and ssn docker images
+ subprocess.run('cd {2}; sudo docker build --build-arg OS={0} --build-arg SRC_PATH="infrastructure-provisioning/src/" --file '
'infrastructure-provisioning/src/general/files/{1}/'
'base_Dockerfile -t docker.datalab-base .'.format(args.conf_os_family, args.conf_cloud_provider, args.workspace_path), shell=True, check=True)
- subprocess.run('cd {2}; sudo docker build --build-arg OS={0} --file infrastructure-provisioning/src/general/files/{1}/'
+ subprocess.run('cd {2}; sudo docker build --build-arg OS={0} --file infrastructure-provisioning/src/general/files/{1}/'
'ssn_Dockerfile -t docker.datalab-ssn .'.format(args.conf_os_family, args.conf_cloud_provider, args.workspace_path), shell=True, check=True)
diff --git a/infrastructure-provisioning/src/dataengine/scripts/configure_dataengine.py b/infrastructure-provisioning/src/dataengine/scripts/configure_dataengine.py
index 7218cb9..ec351cf 100644
--- a/infrastructure-provisioning/src/dataengine/scripts/configure_dataengine.py
+++ b/infrastructure-provisioning/src/dataengine/scripts/configure_dataengine.py
@@ -206,7 +206,7 @@
# INSTALL LIVY
if not exists(conn, '/home/{0}/.ensure_dir/livy_ensured'.format(args.os_user)):
conn.sudo('wget -P /tmp/ --user={} --password={} '
- '{}/repository/packages/livy.tar.gz --no-check-certificate'
+ 'https://{}/repository/packages/livy.tar.gz --no-check-certificate'
.format(os.environ['conf_repository_user'],
os.environ['conf_repository_pass'], os.environ['conf_repository_address']))
conn.sudo('tar -xzvf /tmp/livy.tar.gz -C /tmp/')
diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py b/infrastructure-provisioning/src/general/lib/os/fab.py
index 844d0a7..e005f35 100644
--- a/infrastructure-provisioning/src/general/lib/os/fab.py
+++ b/infrastructure-provisioning/src/general/lib/os/fab.py
@@ -868,7 +868,7 @@
if exists(conn,'/usr/local/lib/livy'):
conn.sudo('rm -r /usr/local/lib/livy')
conn.sudo('wget -P /tmp/ --user={} --password={} '
- '{}/repository/packages/livy.tar.gz --no-check-certificate'
+ 'https://{}/repository/packages/livy.tar.gz --no-check-certificate'
.format(os.environ['conf_repository_user'],
os.environ['conf_repository_pass'], os.environ['conf_repository_address']))
conn.sudo('tar -xzvf /tmp/livy.tar.gz -C /usr/local/lib/')
diff --git a/infrastructure-provisioning/src/ssn/scripts/configure_docker.py b/infrastructure-provisioning/src/ssn/scripts/configure_docker.py
index aa20a68..849bce0 100644
--- a/infrastructure-provisioning/src/ssn/scripts/configure_docker.py
+++ b/infrastructure-provisioning/src/ssn/scripts/configure_docker.py
@@ -113,28 +113,42 @@
def build_docker_images(image_list, region, datalab_path):
try:
- host_string = '{}@{}'.format(args.os_user, args.hostname)
- if os.environ['conf_cloud_provider'] == 'azure':
- conn.local('scp -i {} /root/azure_auth.json {}:{}sources/infrastructure-provisioning/src/base/'
- 'azure_auth.json'.format(args.keyfile, host_string, args.datalab_path))
- conn.sudo('cp {0}sources/infrastructure-provisioning/src/base/azure_auth.json '
- '/home/{1}/keys/azure_auth.json'.format(args.datalab_path, args.os_user))
- if region == 'cn-north-1':
- add_china_repository(datalab_path)
- for image in image_list:
- name = image['name']
- tag = image['tag']
- conn.sudo('cp {0}sources/infrastructure-provisioning/src/general/files/{1}/{2}_description.json '
- '{0}sources/infrastructure-provisioning/src/{2}/description.json'.format(args.datalab_path, args.cloud_provider, name))
- if name == 'base':
- conn.sudo("bash -c 'cd {4}sources/infrastructure-provisioning/src/; docker build --build-arg OS={2} "
- "--build-arg SRC_PATH=\"\" --file general/files/{3}/{0}_Dockerfile -t docker.datalab-{0}:{1} "
- ".'".format(name, tag, args.os_family, args.cloud_provider, args.datalab_path))
- else:
- conn.sudo("bash -c 'cd {4}sources/infrastructure-provisioning/src/; docker build --build-arg OS={2} "
- "--file general/files/{3}/{0}_Dockerfile -t docker.datalab-{0}:{1} .'".format(name, tag, args.os_family, args.cloud_provider, args.datalab_path))
- conn.sudo('rm -f {}sources/infrastructure-provisioning/src/base/azure_auth.json'.format(args.datalab_path))
- return True
+ if 'conf_repository_user' in os.environ and 'conf_repository_pass' in os.environ and 'conf_repository_address' in os.environ:
+ conn.sudo('sudo docker login -u {0} -p {1} {2}:8083'
+ .format(os.environ['conf_repository_user'], os.environ['conf_repository_pass'], os.environ['conf_repository_address']))
+ for image in image_list:
+ name = image['name']
+ tag = image['tag']
+ conn.sudo('docker pull {0}:8083/docker.datalab-{2}-{1}:{3}'
+ .format(os.environ['conf_repository_address'], os.environ['conf_cloud_provider'], name, tag))
+ conn.sudo('docker image tag {0}:8083/docker.datalab-{2}-{1}:{3} docker.datalab-{2}:{3}'
+ .format(os.environ['conf_repository_address'], os.environ['conf_cloud_provider'], name, tag))
+ conn.sudo('docker image rm {0}:8083/docker.datalab-{2}-{1}:{3}'
+ .format(os.environ['conf_repository_address'], os.environ['conf_cloud_provider'], name, tag))
+ return True
+ else:
+ host_string = '{}@{}'.format(args.os_user, args.hostname)
+ if os.environ['conf_cloud_provider'] == 'azure':
+ conn.local('scp -i {} /root/azure_auth.json {}:{}sources/infrastructure-provisioning/src/base/'
+ 'azure_auth.json'.format(args.keyfile, host_string, args.datalab_path))
+ conn.sudo('cp {0}sources/infrastructure-provisioning/src/base/azure_auth.json '
+ '/home/{1}/keys/azure_auth.json'.format(args.datalab_path, args.os_user))
+ if region == 'cn-north-1':
+ add_china_repository(datalab_path)
+ for image in image_list:
+ name = image['name']
+ tag = image['tag']
+ conn.sudo('cp {0}sources/infrastructure-provisioning/src/general/files/{1}/{2}_description.json '
+ '{0}sources/infrastructure-provisioning/src/{2}/description.json'.format(args.datalab_path, args.cloud_provider, name))
+ if name == 'base':
+ conn.sudo("bash -c 'cd {4}sources/infrastructure-provisioning/src/; docker build --build-arg OS={2} "
+ "--build-arg SRC_PATH=\"\" --file general/files/{3}/{0}_Dockerfile -t docker.datalab-{0}:{1} "
+ ".'".format(name, tag, args.os_family, args.cloud_provider, args.datalab_path))
+ else:
+ conn.sudo("bash -c 'cd {4}sources/infrastructure-provisioning/src/; docker build --build-arg OS={2} "
+ "--file general/files/{3}/{0}_Dockerfile -t docker.datalab-{0}:{1} .'".format(name, tag, args.os_family, args.cloud_provider, args.datalab_path))
+ conn.sudo('rm -f {}sources/infrastructure-provisioning/src/base/azure_auth.json'.format(args.datalab_path))
+ return True
except:
return False
diff --git a/infrastructure-provisioning/src/ssn/scripts/configure_ui.py b/infrastructure-provisioning/src/ssn/scripts/configure_ui.py
index 7a35f90..78e0eb9 100644
--- a/infrastructure-provisioning/src/ssn/scripts/configure_ui.py
+++ b/infrastructure-provisioning/src/ssn/scripts/configure_ui.py
@@ -33,6 +33,7 @@
from fabric import *
from patchwork.files import exists
from patchwork import files
+import time
parser = argparse.ArgumentParser()
parser.add_argument('--hostname', type=str, default='')
@@ -153,7 +154,8 @@
if args.cloud_provider == 'azure' and os.environ['azure_datalake_enable'] == 'true':
conn.sudo('sed -i "s|\'use_ldap\': true|{}|g" ' + args.datalab_path + 'sources/services/self-service/src/main/resources/webapp/src/dictionary/azure.dictionary.ts'.format(
'\'use_ldap\': false'))
-
+ conn.sudo('rm -rf {}sources/services/self-service/src/main/resources/webapp/node_modules'.format(
+ args.datalab_path))
conn.sudo('bash -c "cd {}sources/services/self-service/src/main/resources/webapp/ && echo "N" | npm install"'.format(args.datalab_path))
manage_npm_pkg('bash -c "cd {}sources/services/self-service/src/main/resources/webapp/ && npm run build.prod"'.format(args.datalab_path))
conn.sudo('sudo chown -R {} {}/*'.format(args.os_user, args.datalab_path))
@@ -161,14 +163,14 @@
# Building Back-end
if 'conf_repository_user' in os.environ and 'conf_repository_pass' in os.environ and 'conf_repository_address' in os.environ:
conn.sudo(
- 'wget -P {0}sources/services/provisioning-service/target/ --user={1} --password={2} {3}/repository/packages/{4}/provisioning-service-{4}.jar --no-check-certificate'
+ 'wget -P {0}sources/services/provisioning-service/target/ --user={1} --password={2} https://{3}/repository/packages/{4}/provisioning-service-{4}.jar --no-check-certificate'
.format(args.datalab_path, os.environ['conf_repository_user'], os.environ['conf_repository_pass'], os.environ['conf_repository_address'], os.environ['conf_release_tag']))
conn.sudo(
- 'wget -P {0}sources/services/self-service/target/ --user={1} --password={2} {3}/repository/packages/{4}/self-service-{4}.jar --no-check-certificate'
+ 'wget -P {0}sources/services/self-service/target/ --user={1} --password={2} https://{3}/repository/packages/{4}/self-service-{4}.jar --no-check-certificate'
.format(args.datalab_path, os.environ['conf_repository_user'], os.environ['conf_repository_pass'],
os.environ['conf_repository_address'], os.environ['conf_release_tag']))
conn.sudo(
- 'wget -P {0}sources/services/billing-{4}/target/ --user={1} --password={2} {3}/repository/packages/{5}/billing-{4}-{5}.jar --no-check-certificate'
+ 'wget -P {0}sources/services/billing-{4}/target/ --user={1} --password={2} https://{3}/repository/packages/{5}/billing-{4}-{5}.jar --no-check-certificate'
.format(args.datalab_path, os.environ['conf_repository_user'], os.environ['conf_repository_pass'],
os.environ['conf_repository_address'], args.cloud_provider, os.environ['conf_release_tag']))
else: