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 a71b065 [DATALAB-2409] - [AWS] SSN configuration script refactored
a71b065 is described below
commit a71b06536fbf6aeca18c820035dcb6789be4fc8c
Author: bodnarmykola <[email protected]>
AuthorDate: Mon Aug 2 15:36:47 2021 +0300
[DATALAB-2409] - [AWS] SSN configuration script refactored
---
.../src/general/lib/os/fab.py | 12 ++++-
.../src/general/scripts/aws/ssn_prepare.py | 62 ++++++++++------------
2 files changed, 39 insertions(+), 35 deletions(-)
diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py
b/infrastructure-provisioning/src/general/lib/os/fab.py
index 844d0a7..fc9c570 100644
--- a/infrastructure-provisioning/src/general/lib/os/fab.py
+++ b/infrastructure-provisioning/src/general/lib/os/fab.py
@@ -1151,4 +1151,14 @@ def init_datalab_connection(hostname, username, keyfile):
time.sleep(10)
except:
traceback.print_exc()
- sys.exit(1)
\ No newline at end of file
+ sys.exit(1)
+
+def logging_datalab():
+ local_log_filename = "{}_{}.log".format(os.environ['conf_resource'],
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='{}'.format(local_log_filepath),
+ filemode='w')
+ console = logging.StreamHandler()
+ logging.getLogger('').addHandler(console)
diff --git a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
index 3106a7c..557555f 100644
--- a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
+++ b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
@@ -41,28 +41,22 @@ def cleanup_aws_resources(tag_name, service_base_name):
raise Exception
if __name__ == "__main__":
- #configuring logs
- local_log_filename = "{}_{}.log".format(os.environ['conf_resource'],
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,
- handlers=[logging.StreamHandler(),
logging.FileHandler(local_log_filepath)])
#creating aws config file
try:
- logging.info('[CREATE AWS CONFIG FILE]')
+ datalab.fab.logging_datalab.info('[CREATE AWS CONFIG FILE]')
if 'aws_access_key' in os.environ and 'aws_secret_access_key' in
os.environ:
datalab.actions_lib.create_aws_config_files(generate_full_config=True)
else:
datalab.actions_lib.create_aws_config_files()
except Exception as err:
- logging.info('Unable to create configuration')
+ datalab.fab.logging_datalab.info('Unable to create configuration')
datalab.fab.append_result("Unable to create configuration", err)
traceback.print_exc()
sys.exit(1)
#deriving variables for ssn node deployment
try:
- logging.info('[DERIVING NAMES]')
+ datalab.fab.logging_datalab.info('[DERIVING NAMES]')
ssn_conf = dict()
ssn_conf['service_base_name'] = os.environ['conf_service_base_name'] =
datalab.fab.replace_multi_symbols(
os.environ['conf_service_base_name'][:20], '-', True)
@@ -100,11 +94,11 @@ if __name__ == "__main__":
#checking sbn for unique value
try:
if datalab.meta_lib.get_instance_by_name(ssn_conf['tag_name'],
ssn_conf['instance_name']):
- logging.info("Service base name should be unique and less or equal
20 symbols. Please try again.")
+ datalab.fab.logging_datalab.info("Service base name should be
unique and less or equal 20 symbols. Please try again.")
sys.exit(1)
except Exception as err:
datalab.fab.append_result("Failed to make predeployment check.",
str(err))
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
traceback.print_exc()
sys.exit(1)
@@ -113,7 +107,7 @@ if __name__ == "__main__":
if 'aws_vpc_id' in os.environ and os.environ['aws_vpc_id'] != '':
ssn_conf['aws_vpc_id'] = os.environ['aws_vpc_id']
else:
- logging.info('[CREATE VPC AND ROUTE TABLE]')
+ datalab.fab.logging_datalab.info('[CREATE VPC AND ROUTE TABLE]')
params = "--vpc {} --region {} --infra_tag_name {}
--infra_tag_value {} --vpc_name {}".format(
ssn_conf['vpc_cidr'], ssn_conf['region'],
ssn_conf['tag_name'], ssn_conf['service_base_name'],
ssn_conf['vpc_name'])
@@ -127,7 +121,7 @@ if __name__ == "__main__":
for cidr in
datalab.meta_lib.get_vpc_cidr_by_id(ssn_conf['aws_vpc_id']):
ssn_conf['allowed_vpc_cidr_ip_ranges'].append({"CidrIp": cidr})
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create VPC", str(err))
sys.exit(1)
@@ -137,7 +131,7 @@ if __name__ == "__main__":
and os.environ['aws_vpc2_id'] != '':
ssn_conf['aws_vpc2_id'] = os.environ['aws_vpc2_id']
elif os.environ['conf_duo_vpc_enable'] == 'true':
- logging.info('[CREATE SECONDARY VPC AND ROUTE TABLE]')
+ datalab.fab.logging_datalab.info('[CREATE SECONDARY VPC AND ROUTE
TABLE]')
params = "--vpc {} --region {} --infra_tag_name {}
--infra_tag_value {} --secondary" \
" --vpc_name {}".format(ssn_conf['vpc2_cidr'],
ssn_conf['region'], ssn_conf['tag2_name'],
ssn_conf['service_base_name'],
ssn_conf['vpc2_name'])
@@ -149,7 +143,7 @@ if __name__ == "__main__":
ssn_conf['aws_vpc2_id'] =
datalab.meta_lib.get_vpc_by_tag(ssn_conf['tag2_name'],
ssn_conf['service_base_name'])
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create secondary VPC", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -159,7 +153,7 @@ if __name__ == "__main__":
if 'aws_subnet_id' in os.environ and os.environ['aws_subnet_id'] != '':
ssn_conf['aws_subnet_id'] = os.environ['aws_subnet_id']
else:
- logging.info('[CREATE SUBNET]')
+ datalab.fab.logging_datalab.info('[CREATE SUBNET]')
params = "--vpc_id {0} --username {1} --infra_tag_name {2}
--infra_tag_value {3} --prefix {4} " \
"--ssn {5} --zone {6} --subnet_name
{7}".format(ssn_conf['aws_vpc_id'], 'ssn',
ssn_conf['tag_name'],
@@ -175,7 +169,7 @@ if __name__ == "__main__":
ssn_conf['aws_vpc_id'])
datalab.actions_lib.enable_auto_assign_ip(ssn_conf['aws_subnet_id'])
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create Subnet", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -183,15 +177,15 @@ if __name__ == "__main__":
#creating peering connection
try:
if os.environ['conf_duo_vpc_enable'] == 'true' and
ssn_conf['aws_vpc_id'] and ssn_conf['aws_vpc2_id']:
- logging.info('[CREATE PEERING CONNECTION]')
+ datalab.fab.logging_datalab.info('[CREATE PEERING CONNECTION]')
ssn_conf['aws_peering_id'] =
datalab.actions_lib.create_peering_connection(
ssn_conf['aws_vpc_id'], ssn_conf['aws_vpc2_id'],
ssn_conf['service_base_name'])
- logging.info('PEERING CONNECTION ID:' + ssn_conf['aws_peering_id'])
+ datalab.fab.logging_datalab.info('PEERING CONNECTION ID:' +
ssn_conf['aws_peering_id'])
datalab.actions_lib.create_route_by_id(ssn_conf['aws_subnet_id'],
ssn_conf['aws_vpc_id'],
ssn_conf['aws_peering_id'],
datalab.meta_lib.get_cidr_by_vpc(ssn_conf['aws_vpc2_id']))
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create peering connection",
str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -201,7 +195,7 @@ if __name__ == "__main__":
if 'aws_security_groups_ids' in os.environ and
os.environ['aws_security_groups_ids'] != '':
ssn_conf['aws_security_groups_ids'] =
os.environ['aws_security_groups_ids']
else:
- logging.info('[CREATE SG FOR SSN]')
+ datalab.fab.logging_datalab.info('[CREATE SG FOR SSN]')
ssn_conf['ingress_sg_rules_template'] =
datalab.meta_lib.format_sg([
{
"PrefixListIds": [],
@@ -256,14 +250,14 @@ if __name__ == "__main__":
raise Exception
ssn_conf['aws_security_groups_ids'] =
datalab.meta_lib.get_security_group_by_name(ssn_conf['sg_name'])
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create security group for SSN",
str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
#creating roles
try:
- logging.info('[CREATE ROLES]')
+ datalab.fab.logging_datalab.info('[CREATE ROLES]')
params = "--role_name {} --role_profile_name {} --policy_name {}
--policy_file_name {} --region {} " \
"--infra_tag_name {} --infra_tag_value {} --user_tag_value
{}". \
format(ssn_conf['role_name'], ssn_conf['role_profile_name'],
ssn_conf['policy_name'],
@@ -275,14 +269,14 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create roles", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
#creating endpoint and rout-table
try:
- logging.info('[CREATE ENDPOINT AND ROUTE-TABLE]')
+ datalab.fab.logging_datalab.info('[CREATE ENDPOINT AND ROUTE-TABLE]')
params = "--vpc_id {} --region {} --infra_tag_name {}
--infra_tag_value {}".format(
ssn_conf['aws_vpc_id'], ssn_conf['region'], ssn_conf['tag_name'],
ssn_conf['service_base_name'])
try:
@@ -291,7 +285,7 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create endpoint", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -299,7 +293,7 @@ if __name__ == "__main__":
# creating endpoint and rout-table notebook vpc
try:
if os.environ['conf_duo_vpc_enable'] == 'true':
- logging.info('[CREATE ENDPOINT AND ROUTE-TABLE FOR NOTEBOOK VPC]')
+ datalab.fab.logging_datalab.info('[CREATE ENDPOINT AND ROUTE-TABLE
FOR NOTEBOOK VPC]')
params = "--vpc_id {} --region {} --infra_tag_name {}
--infra_tag_value {}".format(
ssn_conf['aws_vpc2_id'], ssn_conf['aws_region'],
ssn_conf['tag2_name'],
ssn_conf['service_base_name'])
@@ -309,14 +303,14 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create secondary endpoint",
str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
#creating ssn instance
try:
- logging.info('[CREATE SSN INSTANCE]')
+ datalab.fab.logging_datalab.info('[CREATE SSN INSTANCE]')
params = "--node_name {0} --ami_id {1} --instance_type {2} --key_name
{3} --security_group_ids {4} " \
"--subnet_id {5} --iam_profile {6} --infra_tag_name {7}
--infra_tag_value {8} --instance_class {9} " \
"--primary_disk_size {10}".\
@@ -330,7 +324,7 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create ssn instance", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -338,7 +332,7 @@ if __name__ == "__main__":
#associating elastic ip
try:
if ssn_conf['network_type'] == 'public':
- logging.info('[ASSOCIATING ELASTIC IP]')
+ datalab.fab.logging_datalab.info('[ASSOCIATING ELASTIC IP]')
ssn_conf['ssn_id'] =
datalab.meta_lib.get_instance_by_name(ssn_conf['tag_name'],
ssn_conf['instance_name'])
try:
ssn_conf['elastic_ip'] = os.environ['ssn_elastic_ip']
@@ -352,7 +346,7 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create elastic ip", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
@@ -366,7 +360,7 @@ if __name__ == "__main__":
else:
ssn_conf['instance_ip'] =
datalab.meta_lib.get_instance_ip_address(ssn_conf['tag_name'],
ssn_conf['instance_name']).get('Public')
- logging.info('[CREATING ROUTE53 RECORD]')
+ datalab.fab.logging_datalab.info('[CREATING ROUTE53 RECORD]')
try:
datalab.actions_lib.create_route_53_record(os.environ['ssn_hosted_zone_id'],
os.environ['ssn_hosted_zone_name'],
@@ -375,7 +369,7 @@ if __name__ == "__main__":
traceback.print_exc()
raise Exception
except Exception as err:
- logging.error('Error: {0}'.format(err))
+ datalab.fab.logging_datalab.error('Error: {0}'.format(err))
datalab.fab.append_result("Failed to create route53 record", str(err))
cleanup_aws_resources(ssn_conf['tag_name'],
ssn_conf['service_base_name'])
sys.exit(1)
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]