Exemple #1
0
    def test_create_environment__env_name_not_passed_in(self):
        with self.assertRaises(TypeError) as context_manager:
            requests.CreateEnvironmentRequest(app_name='my-app')

        self.assertEqual(
            'CreateEnvironmentRequest requires key-word argument env_name',
            str(context_manager.exception))
Exemple #2
0
    def test_compile_spot_options(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'enable_spot': 'true',
            'instance_types': 't2.micro, t2.large',
            'spot_max_price': '.5',
        }
        request = requests.CreateEnvironmentRequest(**request_args)
        self.assertEqual([], request.option_settings)

        request.compile_spot_options()
        self.assertEqual([
            {
                'Namespace': 'aws:ec2:instances',
                'OptionName': 'EnableSpot',
                'Value': 'true'
            },
            {
                'Namespace': 'aws:ec2:instances',
                'OptionName': 'InstanceTypes',
                'Value': 't2.micro, t2.large'
            },
            {
                'Namespace': 'aws:ec2:instances',
                'OptionName': 'SpotMaxPrice',
                'Value': '.5'
            },
        ], request.option_settings)
Exemple #3
0
    def test_compile_shared_lb_options(self):
        request_args = {
            'elb_type': 'application',
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'shared_lb':
            'arn:aws:elasticloadbalancing:us-east-1:881508045124:loadbalancer/app/alb-1/72074d479748b405',
            'shared_lb_port': '100'
        }
        request = requests.CreateEnvironmentRequest(**request_args)
        self.assertEqual([], request.option_settings)

        request.compile_shared_lb_options()
        self.assertEqual([{
            'Namespace': 'aws:elasticbeanstalk:environment',
            'OptionName': 'LoadBalancerIsShared',
            'Value': 'true'
        }, {
            'Namespace':
            'aws:elbv2:loadbalancer',
            'OptionName':
            'SharedLoadBalancer',
            'Value':
            'arn:aws:elasticloadbalancing:us-east-1:881508045124:loadbalancer/app/alb-1/72074d479748b405'
        }, {
            'Namespace': 'aws:elbv2:listener:100',
            'OptionName': 'Rules',
            'Value': 'default'
        }], request.option_settings)
Exemple #4
0
    def test_add_client_defaults__worker_tier(self, has_default_vpc_mock):
        has_default_vpc_mock.return_value = True

        request_args = {
            'app_name': 'ebcli-intTest-app',
            'cname': None,
            'tier': tier.Tier('Worker', 'SQS/HTTP', ''),
            'env_name': 'my-awesome-env',
            'instance_profile': 'my-instance-profile',
            'key_name': 'my-key-name',
            'platform': self.solution,
        }

        request = requests.CreateEnvironmentRequest(**request_args)
        request.add_client_defaults()
        self.assertEqual(
            [
                {
                    'Namespace': 'aws:elasticbeanstalk:command',
                    'OptionName': 'BatchSize',
                    'Value': '30'
                },
                {
                    'Namespace': 'aws:elasticbeanstalk:command',
                    'OptionName': 'BatchSizeType',
                    'Value': 'Percentage'
                }
            ],
            request.option_settings
        )
Exemple #5
0
    def test_compile_database_options__no_database_args(self):
        request = requests.CreateEnvironmentRequest(app_name='my-app', env_name='my-env')
        request_copy = copy.copy(request)

        request_copy.compile_database_options()

        self.assertEqual(request, request_copy)
Exemple #6
0
    def test_create_environment__scale_is_not_an_int(self):
        with self.assertRaises(TypeError) as context_manager:
            requests.CreateEnvironmentRequest(app_name='my-app',
                                              env_name='my-env',
                                              scale='1')

        self.assertEqual('key-word argument scale must be of type int',
                         str(context_manager.exception))
Exemple #7
0
    def test_compile_vpc_options(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'vpc': {
                'id': 'my-vpc-id',
                'ec2subnets': 'subnet-1,subnet-2,subnet-3',
                'elbsubnets': 'subnet-1,subnet-2,subnet-3',
                'elbscheme': 'public',
                'publicip': 'true',
                'securitygroups': 'security-group-1,security-group-2',
                'dbsubnets': 'subnet-1,subnet-2,subnet-3'
            }
        }
        request = requests.CreateEnvironmentRequest(**request_args)
        self.assertEqual([], request.option_settings)

        request.compile_vpc_options()
        self.assertEqual(
            [
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'VPCId',
                    'Value': 'my-vpc-id'
                },
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'AssociatePublicIpAddress',
                    'Value': 'true'
                },
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'ELBScheme',
                    'Value': 'public'
                },
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'ELBSubnets',
                    'Value': 'subnet-1,subnet-2,subnet-3'
                },
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'Subnets',
                    'Value': 'subnet-1,subnet-2,subnet-3'
                },
                {
                    'Namespace': 'aws:autoscaling:launchconfiguration',
                    'OptionName': 'SecurityGroups',
                    'Value': 'security-group-1,security-group-2'
                },
                {
                    'Namespace': 'aws:ec2:vpc',
                    'OptionName': 'DBSubnets',
                    'Value': 'subnet-1,subnet-2,subnet-3'
                }
            ],
            request.option_settings
        )
Exemple #8
0
    def test_compile_database_options(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'database': {
                'username': '******',
                'password': '******',
                'engine': 'mysql',
                'size': '10',
                'instance': 'db.t2.micro',
                'version': '5.6.35'
            }
        }
        request = requests.CreateEnvironmentRequest(**request_args)
        self.assertEqual([], request.option_settings)

        request.compile_database_options()
        self.assertEqual(
            [
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBPassword',
                    'Value': 'password'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBUser',
                    'Value': 'root'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBInstanceClass',
                    'Value': 'db.t2.micro'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBAllocatedStorage',
                    'Value': '10'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBEngine',
                    'Value': 'mysql'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBEngineVersion',
                    'Value': '5.6.35'
                },
                {
                    'Namespace': 'aws:rds:dbinstance',
                    'OptionName': 'DBDeletionPolicy',
                    'Value': 'Snapshot'
                }
            ],
            request.option_settings
        )
Exemple #9
0
    def test_add_option_setting(self):
        request = requests.CreateEnvironmentRequest(app_name='my-app',
                                                    env_name='my-env')
        request.add_option_setting('MyNameSpace', 'MyOptionName', 'MyValue')

        self.assertEqual([{
            'Namespace': 'MyNameSpace',
            'OptionName': 'MyOptionName',
            'Value': 'MyValue'
        }], request.option_settings)
Exemple #10
0
    def test_add_client_defaults__uses_template_name_if_one_exists(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'template_name': 'my-saved-configuration-template-name',
        }

        request = requests.CreateEnvironmentRequest(**request_args)
        request_copy = copy.copy(request)
        request.add_client_defaults()
        self.assertEqual(request_copy, request)
Exemple #11
0
    def test_common_options(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'cname': None,
            'env_name': 'my-awesome-env',
            'instance_profile': 'my-instance-profile',
            'instance_type': 't2.micro',
            'key_name': 'my-key-name',
            'platform': self.solution,
            'sample_application': False,
            'service_role': 'my-service-role',
            'single_instance': False,
            'template_name': None,
            'tier': 'webserver',
            'version_label': None,
            'group_name': None,
            'tags': [],
            'elb_type': 'application',
            'scale': 10,
        }

        request = requests.CreateEnvironmentRequest(**request_args)
        request.compile_common_options()
        self.assertEqual([{
            'Namespace': 'aws:autoscaling:launchconfiguration',
            'OptionName': 'IamInstanceProfile',
            'Value': 'my-instance-profile'
        }, {
            'Namespace': 'aws:elasticbeanstalk:environment',
            'OptionName': 'ServiceRole',
            'Value': 'my-service-role'
        }, {
            'Namespace': 'aws:autoscaling:launchconfiguration',
            'OptionName': 'InstanceType',
            'Value': 't2.micro'
        }, {
            'Namespace': 'aws:autoscaling:launchconfiguration',
            'OptionName': 'EC2KeyName',
            'Value': 'my-key-name'
        }, {
            'Namespace': 'aws:autoscaling:asg',
            'OptionName': 'MaxSize',
            'Value': '10'
        }, {
            'Namespace': 'aws:autoscaling:asg',
            'OptionName': 'MinSize',
            'Value': '10'
        }, {
            'Namespace': 'aws:elasticbeanstalk:environment',
            'OptionName': 'LoadBalancerType',
            'Value': 'application'
        }], request.option_settings)
Exemple #12
0
    def test_common_options__single_instance(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'env_name': 'my-awesome-env',
            'single_instance': True,
        }

        request = requests.CreateEnvironmentRequest(**request_args)
        request.compile_common_options()
        self.assertEqual([{
            'Namespace': 'aws:elasticbeanstalk:environment',
            'OptionName': 'EnvironmentType',
            'Value': 'SingleInstance'
        }], request.option_settings)
Exemple #13
0
    def test_add_client_defaults(self, has_default_vpc_mock):
        has_default_vpc_mock.return_value = True

        request_args = {
            'app_name': 'ebcli-intTest-app',
            'cname': None,
            'env_name': 'my-awesome-env',
            'instance_profile': 'my-instance-profile',
            'key_name': 'my-key-name',
            'platform': self.solution,
        }

        request = requests.CreateEnvironmentRequest(**request_args)
        request.add_client_defaults()
        self.assertEqual(
            [
                {
                    'Namespace': 'aws:elasticbeanstalk:command',
                    'OptionName': 'BatchSize',
                    'Value': '30'
                },
                {
                    'Namespace': 'aws:elasticbeanstalk:command',
                    'OptionName': 'BatchSizeType',
                    'Value': 'Percentage'
                },
                {
                    'Namespace': 'aws:elb:policies',
                    'OptionName': 'ConnectionDrainingEnabled',
                    'Value': 'true'
                },
                {
                    'Namespace': 'aws:elb:loadbalancer',
                    'OptionName': 'CrossZone',
                    'Value': 'true'
                },
                {
                    'Namespace': 'aws:autoscaling:updatepolicy:rollingupdate',
                    'OptionName': 'RollingUpdateEnabled',
                    'Value': 'true'
                },
                {
                    'Namespace': 'aws:autoscaling:updatepolicy:rollingupdate',
                    'OptionName': 'RollingUpdateType',
                    'Value': 'Health'
                }
            ],
            request.option_settings
        )
Exemple #14
0
    def test_create_environment_request_init(self):
        request_args = {
            'app_name': 'ebcli-intTest-app',
            'cname': None,
            'env_name': 'my-awesome-env',
            'instance_profile': None,
            'instance_type': None,
            'key_name': None,
            'platform': self.solution,
            'sample_application': False,
            'service_role': None,
            'single_instance': False,
            'template_name': None,
            'tier': None,
            'version_label': None,
            'group_name': None,
            'tags': [],
            'database': {
                'username': '******',
                'password': '******',
                'engine': 'mysql',
                'size': '10',
                'instance': 'db.t2.micro',
                'version': '5.6.35'
            },
            'vpc': {
                'id': 'my-vpc-id',
                'ec2subnets': 'subnet-1,subnet-2,subnet-3',
                'elbsubnets': 'subnet-1,subnet-2,subnet-3',
                'elbscheme': 'public',
                'publicip': 'true',
                'securitygroups': 'security-group-1,security-group-2',
                'dbsubnets': 'subnet-1,subnet-2,subnet-3'
            },
            'elb_type': None,
            'scale': None,
        }

        create_environment_request = requests.CreateEnvironmentRequest(
            **request_args)

        self.assertFalse(create_environment_request.compiled)
        self.assertEqual([], create_environment_request.option_settings)
        self.assertEqual(
            'Environment created from the EB CLI using "eb create"',
            create_environment_request.description)
        self.assertIsNone(create_environment_request.scale)