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