You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by io...@apache.org on 2019/04/12 14:15:53 UTC

[incubator-dlab] branch DLAB-599 created (now 709033c)

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

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


      at 709033c  create ssn subnet in chosen zone

This branch includes the following new commits:

     new 709033c  create ssn subnet in chosen zone

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-dlab] 01/01: create ssn subnet in chosen zone

Posted by io...@apache.org.
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....@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-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org