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]

Reply via email to