This is an automated email from the ASF dual-hosted git repository.

ioleksandr pushed a commit to branch DLAB-599
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 709033c13ea1d0ee6db30e43107f37a9bb96c61f
Author: Oleksandr_Isniuk <i.oleksa...@gmail.com>
AuthorDate: Fri Apr 12 17:15:39 2019 +0300

    create ssn subnet in chosen zone
---
 infrastructure-provisioning/src/general/conf/dlab.ini    |  2 ++
 .../src/general/lib/aws/actions_lib.py                   | 16 ++++++++++++++--
 .../src/general/scripts/aws/common_create_subnet.py      |  3 ++-
 .../src/general/scripts/aws/ssn_prepare.py               | 11 ++++++-----
 4 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/infrastructure-provisioning/src/general/conf/dlab.ini 
b/infrastructure-provisioning/src/general/conf/dlab.ini
index 58175fd..2536b00 100644
--- a/infrastructure-provisioning/src/general/conf/dlab.ini
+++ b/infrastructure-provisioning/src/general/conf/dlab.ini
@@ -96,6 +96,8 @@ ssn_instance_size = t2.large
 edge_instance_size = t2.medium
 ### Amazon region name for whole dlab provisioning
 region = us-west-2
+### Amazon zone letter for ssn, edge and notebook subnet provisioning
+# zone = a
 ### Amazon ami name based on debian conf_os_family for all dlab instances
 debian_image_name = 
ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20190212
 ### Amazon ami name based on RedHat conf_os_family for all dlab instances
diff --git a/infrastructure-provisioning/src/general/lib/aws/actions_lib.py 
b/infrastructure-provisioning/src/general/lib/aws/actions_lib.py
index f6f37d0..54b6900 100644
--- a/infrastructure-provisioning/src/general/lib/aws/actions_lib.py
+++ b/infrastructure-provisioning/src/general/lib/aws/actions_lib.py
@@ -243,10 +243,13 @@ def create_rt(vpc_id, infra_tag_name, infra_tag_value, 
secondary):
         traceback.print_exc(file=sys.stdout)
 
 
-def create_subnet(vpc_id, subnet, tag):
+def create_subnet(vpc_id, subnet, tag, zone):
     try:
         ec2 = boto3.resource('ec2')
-        subnet = ec2.create_subnet(VpcId=vpc_id, CidrBlock=subnet)
+        if zone == "":
+            subnet = ec2.create_subnet(VpcId=vpc_id, CidrBlock=subnet, 
AvailabilityZone=zone)
+        else:
+            subnet = ec2.create_subnet(VpcId=vpc_id, CidrBlock=subnet)
         create_tag(subnet.id, tag)
         subnet.reload()
         return subnet.id
@@ -438,6 +441,15 @@ def create_instance(definitions, instance_tag, 
primary_disk_size=12):
                                              SubnetId=definitions.subnet_id,
                                              IamInstanceProfile={'Name': 
definitions.iam_profile},
                                              UserData=user_data)
+        elif definitions.instance_class == 'ssn':
+            get_iam_profile(definitions.iam_profile)
+            instances = ec2.create_instances(ImageId=definitions.ami_id, 
MinCount=1, MaxCount=1,
+                                             KeyName=definitions.key_name,
+                                             
SecurityGroupIds=security_groups_ids,
+                                             
InstanceType=definitions.instance_type,
+                                             SubnetId=definitions.subnet_id,
+                                             IamInstanceProfile={'Name': 
definitions.iam_profile},
+                                             UserData=user_data)
         else:
             get_iam_profile(definitions.iam_profile)
             instances = ec2.create_instances(ImageId=definitions.ami_id, 
MinCount=1, MaxCount=1,
diff --git 
a/infrastructure-provisioning/src/general/scripts/aws/common_create_subnet.py 
b/infrastructure-provisioning/src/general/scripts/aws/common_create_subnet.py
index bd18cdc..889434a 100644
--- 
a/infrastructure-provisioning/src/general/scripts/aws/common_create_subnet.py
+++ 
b/infrastructure-provisioning/src/general/scripts/aws/common_create_subnet.py
@@ -39,6 +39,7 @@ parser.add_argument('--infra_tag_value', type=str, default='')
 parser.add_argument('--prefix', type=str, default='')
 parser.add_argument('--ssn', type=bool, default=False)
 parser.add_argument('--user_subnets_range', type=str, default='')
+parser.add_argument('--zone', type=str, default='')
 args = parser.parse_args()
 
 
@@ -122,7 +123,7 @@ if __name__ == "__main__":
             if subnet_id == '':
                 print("Creating subnet {0} in vpc {1} with tag {2}".
                       format(dlab_subnet_cidr, args.vpc_id, json.dumps(tag)))
-                subnet_id = create_subnet(args.vpc_id, dlab_subnet_cidr, tag)
+                subnet_id = create_subnet(args.vpc_id, dlab_subnet_cidr, tag, 
args.zone)
         else:
             print("REQUESTED SUBNET ALREADY EXISTS. USING CIDR 
{}".format(subnet_check))
             subnet_id = get_subnet_by_cidr(subnet_check)
diff --git a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py 
b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
index 3fcda41..06fa843 100644
--- a/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
+++ b/infrastructure-provisioning/src/general/scripts/aws/ssn_prepare.py
@@ -68,6 +68,7 @@ if __name__ == "__main__":
         tag2_name = service_base_name + '-secondary-Tag'
         instance_name = service_base_name + '-ssn'
         region = os.environ['aws_region']
+        zone_full = os.environ['aws_region'] + '-' + os.environ['aws_zone']
         ssn_image_name = 
os.environ['aws_{}_image_name'.format(os.environ['conf_os_family'])]
         ssn_ami_id = get_ami_id(ssn_image_name)
         policy_path = '/root/files/ssn_policy.json'
@@ -140,8 +141,8 @@ if __name__ == "__main__":
                 pre_defined_subnet = True
                 logging.info('[CREATE SUBNET]')
                 print('[CREATE SUBNET]')
-                params = "--vpc_id {} --username {} --infra_tag_name {} 
--infra_tag_value {} --prefix {} " \
-                         "--ssn {}".format(os.environ['aws_vpc_id'], 'ssn', 
tag_name, service_base_name, '20', True)
+                params = "--vpc_id {0} --username {1} --infra_tag_name {2} 
--infra_tag_value {3} --prefix {4} " \
+                         "--ssn {5} --zone 
{6}".format(os.environ['aws_vpc_id'], 'ssn', tag_name, service_base_name, '20', 
True, zone_full)
                 try:
                     local("~/scripts/{}.py {}".format('common_create_subnet', 
params))
                 except:
@@ -388,11 +389,11 @@ if __name__ == "__main__":
     try:
         logging.info('[CREATE SSN INSTANCE]')
         print('[CREATE SSN INSTANCE]')
-        params = "--node_name {} --ami_id {} --instance_type {} --key_name {} 
--security_group_ids {} --subnet_id {} " \
-                 "--iam_profile {} --infra_tag_name {} --infra_tag_value {}".\
+        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}".\
             format(instance_name, ssn_ami_id, 
os.environ['aws_ssn_instance_size'], os.environ['conf_key_name'],
                    os.environ['aws_security_groups_ids'], 
os.environ['aws_subnet_id'],
-                   role_profile_name, tag_name, instance_name)
+                   role_profile_name, tag_name, instance_name, 'ssn')
 
         try:
             local("~/scripts/{}.py {}".format('common_create_instance', 
params))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org
For additional commands, e-mail: commits-h...@dlab.apache.org

Reply via email to