This is an automated email from the ASF dual-hosted git repository.
mykolabodnar pushed a commit to branch DATALAB-2409
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
The following commit(s) were added to refs/heads/DATALAB-2409 by this push:
new 9d0e06f [DATALAB-2409] - [AWS] SSN configure refactored
9d0e06f is described below
commit 9d0e06ff0596d9fc47ddd9abde6d9dd83483f979
Author: bodnarmykola <[email protected]>
AuthorDate: Fri Jul 30 12:00:31 2021 +0300
[DATALAB-2409] - [AWS] SSN configure refactored
---
.../src/general/lib/aws/meta_lib.py | 55 +++++++++++++---------
.../src/general/scripts/aws/ssn_configure.py | 16 +++----
2 files changed, 41 insertions(+), 30 deletions(-)
diff --git a/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
b/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
index b3ea91c..858c58d 100644
--- a/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
+++ b/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
@@ -31,34 +31,45 @@ import subprocess
from botocore.client import Config as botoConfig
from datalab.fab import *
-def get_instance_metadata(tag_name, instance_name, metadata):
+def get_instance_hostname(tag_name, instance_name):
try:
+ public = ''
+ private = ''
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(
Filters=[{'Name': 'tag:{}'.format(tag_name), 'Values':
[instance_name]},
{'Name': 'instance-state-name', 'Values': ['running']}])
for instance in instances:
- if metadata == 'hostname':
- public = getattr(instance, 'public_dns_name')
- private = getattr(instance, 'private_dns_name')
- if public:
- return public
- else:
- return private
- if public == '' and private == '':
- raise Exception("Unable to find instance hostname with
instance name: " + instance_name)
- elif metadata == 'ip_address':
- public = getattr(instance, 'public_ip_address')
- private = getattr(instance, 'private_ip_address')
- ips = {'Public': public, 'Private': private}
- if ips == {}:
- raise Exception("Unable to find instance IP addresses with
instance name: " + instance_name)
- return ips
- except Exception as err:
- logging.error("Error with finding instance metadata with instance
name: "
- + instance_name + " : " + str(err) + "\n Traceback: " +
traceback.print_exc(file=sys.stdout))
- append_result(str({"error": "Error with finding instance metadata",
- "error_message": str(err) + "\n Traceback: " +
traceback.print_exc(file=sys.stdout)}))
+ public = getattr(instance, 'public_dns_name')
+ private = getattr(instance, 'private_dns_name')
+ if public:
+ return public
+ else:
+ return private
+ if public == '' and private == '':
+ raise Exception("Unable to find instance hostname with instance
name: " + instance_name)
+ except Exception as err:
+ logging.error("Error with finding instance hostname with instance
name: " + instance_name + " : " + str(err) + "\n Traceback: " +
traceback.print_exc(file=sys.stdout))
+ append_result(str({"error": "Error with finding instance hostname",
"error_message": str(err) + "\n Traceback: " +
traceback.print_exc(file=sys.stdout)}))
+ traceback.print_exc(file=sys.stdout)
+
+def get_instance_ip_address(tag_name, instance_name):
+ try:
+ ec2 = boto3.resource('ec2')
+ instances = ec2.instances.filter(
+ Filters=[{'Name': 'tag:{}'.format(tag_name), 'Values':
[instance_name]},
+ {'Name': 'instance-state-name', 'Values': ['running']}])
+ ips = {}
+ for instance in instances:
+ public = getattr(instance, 'public_ip_address')
+ private = getattr(instance, 'private_ip_address')
+ ips = {'Public': public, 'Private': private}
+ if ips == {}:
+ raise Exception("Unable to find instance IP addresses with
instance name: " + instance_name)
+ return ips
+ except Exception as err:
+ logging.error("Error with getting ip address by name: " + str(err) +
"\n Traceback: " + traceback.print_exc(file=sys.stdout))
+ append_result(str({"error": "Error with getting ip address by name",
"error_message": str(err) + "\n Traceback: " +
traceback.print_exc(file=sys.stdout)}))
traceback.print_exc(file=sys.stdout)
diff --git
a/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
b/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
index cdf628a..e6be78f 100644
--- a/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
+++ b/infrastructure-provisioning/src/general/scripts/aws/ssn_configure.py
@@ -71,17 +71,17 @@ if __name__ == "__main__":
ssn_conf['datalab_ssh_user'] = os.environ['conf_os_user']
ssn_conf['ssn_datalab_path'] = os.environ['ssn_datalab_path']
ssn_conf['conf_tag_resource_id'] = os.environ['conf_tag_resource_id']
- ssn_conf['instance_hostname'] = (lambda x:
datalab.meta_lib.get_instance_metadata(
- ssn_conf['tag_name'], ssn_conf['instance_name'], 'ip_address').get(
- 'Private') if x == 'private' else
datalab.meta_lib.get_instance_metadata(
- ssn_conf['tag_name'], ssn_conf['instance_name'],
'hostname'))(ssn_conf['network_type'])
+ ssn_conf['instance_hostname'] = (lambda x:
datalab.meta_lib.get_instance_ip_address(
+ ssn_conf['tag_name'], ssn_conf['instance_name']).get(
+ 'Private') if x == 'private' else
datalab.meta_lib.get_instance_hostname(
+ ssn_conf['tag_name'],
ssn_conf['instance_name']))(ssn_conf['network_type'])
ssn_conf['initial_user'] = (lambda x: 'ubuntu' if x == 'debian' else
'ec2-user')(os.environ['conf_os_family'])
ssn_conf['sudo_group'] = (lambda x: 'sudo' if x == 'debian' else
'wheel')(os.environ['conf_os_family'])
ssn_conf['step_cert_sans'] = (lambda x: (lambda x: ' --san {0} --san
{1}'.format(
- datalab.meta_lib.get_instance_metadata(ssn_conf['tag_name'],
ssn_conf['instance_name'], 'hostname'),
- datalab.meta_lib.get_instance_metadata(ssn_conf['tag_name'],
ssn_conf['instance_name'], 'ip_address').get(
- 'Public')) if x == 'public' else ' --san
{0}'.format(datalab.meta_lib.get_instance_metadata(
- ssn_conf['tag_name'], ssn_conf['instance_name'],
'ip_address').get('Private')))(
+ datalab.meta_lib.get_instance_hostname(ssn_conf['tag_name'],
ssn_conf['instance_name']),
+ datalab.meta_lib.get_instance_ip_address(ssn_conf['tag_name'],
ssn_conf['instance_name']).get(
+ 'Public')) if x == 'public' else ' --san
{0}'.format(datalab.meta_lib.get_instance_ip_address(
+ ssn_conf['tag_name'], ssn_conf['instance_name']).get('Private')))(
ssn_conf['network_type']) if x == 'true' else
'')(os.environ['conf_stepcerts_enabled'])
if 'aws_vpc_id' in os.environ and os.environ['aws_vpc_id'] != '':
ssn_conf['aws_vpc_id'] = os.environ['aws_vpc_id']
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]