Ejemplo n.º 1
0
 def test_start_instance_ip(self):
     c, r = self.botoSetup('latent_buildbot_slave')
     amis = list(r.images.all())
     eip = c.allocate_address(Domain='vpc')
     elastic_ip = eip['PublicIp']
     bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name="latent_buildbot_worker",
                              security_name='latent_buildbot_worker',
                              elastic_ip=elastic_ip,
                              ami=amis[0].id
                              )
     bs._poll_resolution = 0
     id, _, _ = bs._start_instance()
     instances = r.instances.filter(
         Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
     instances = list(instances)
     addresses = c.describe_addresses()['Addresses']
     self.assertEqual(instances[0].id, addresses[0]['InstanceId'])
Ejemplo n.º 2
0
 def test_constructor_minimal(self):
     c, r = self.botoSetup('latent_buildbot_slave')
     amis = list(r.images.all())
     with assertProducesWarnings(
             DeprecatedWorkerNameWarning,
             messages_patterns=[
                 r"Use of default value of 'keypair_name' of "
                 r"EC2LatentWorker constructor is deprecated",
                 r"Use of default value of 'security_name' of "
                 r"EC2LatentWorker constructor is deprecated"
             ]):
         bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                                  identifier='publickey',
                                  secret_identifier='privatekey',
                                  ami=amis[0].id
                                  )
     self.assertEqual(bs.workername, 'bot1')
     self.assertEqual(bs.password, 'sekrit')
     self.assertEqual(bs.instance_type, 'm1.large')
     self.assertEqual(bs.ami, amis[0].id)
Ejemplo n.º 3
0
 def test_use_of_default_security_warning(self):
     c = self.botoSetup()
     amis = c.get_all_images()
     with assertProducesWarnings(
             DeprecatedWorkerNameWarning,
             messages_patterns=[
                 r"Use of default value of 'security_name' of "
                 r"EC2LatentWorker constructor is deprecated",
             ]):
         bs = ec2.EC2LatentWorker(
             'bot1',
             'sekrit',
             'm1.large',
             identifier='publickey',
             secret_identifier='privatekey',
             ami=amis[0].id,
             keypair_name='test_keypair',
         )
     self.assertEqual(bs.keypair_name, 'test_keypair')
     self.assertEqual(bs.security_name, 'latent_buildbot_slave')
Ejemplo n.º 4
0
 def test_start_instance_tags(self):
     _, r = self.botoSetup('latent_buildbot_slave')
     amis = list(r.images.all())
     tags = {'foo': 'bar'}
     bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name="latent_buildbot_worker",
                              security_name='latent_buildbot_worker',
                              tags=tags,
                              ami=amis[0].id
                              )
     bs._poll_resolution = 0
     id, _, _ = bs._start_instance()
     instances = r.instances.filter(
         Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
     instances = list(instances)
     self.assertEqual(len(instances), 1)
     self.assertEqual(instances[0].id, id)
     self.assertEqual(instances[0].tags, [{'Value': 'bar', 'Key': 'foo'}])
Ejemplo n.º 5
0
 def test_constructor_tags(self):
     c = self.botoSetup()
     amis = c.get_all_images()
     tags = {'foo': 'bar'}
     with assertProducesWarnings(
             DeprecatedWorkerNameWarning,
             messages_patterns=[
                 r"Use of default value of 'keypair_name' of "
                 r"EC2LatentWorker constructor is deprecated",
                 r"Use of default value of 'security_name' of "
                 r"EC2LatentWorker constructor is deprecated"
             ]):
         bs = ec2.EC2LatentWorker('bot1',
                                  'sekrit',
                                  'm1.large',
                                  identifier='publickey',
                                  secret_identifier='privatekey',
                                  tags=tags,
                                  ami=amis[0].id)
     self.assertEqual(bs.tags, tags)
Ejemplo n.º 6
0
 def test_start_instance_attach_volume(self):
     c, r = self.botoSetup()
     vol = r.create_volume(Size=10, AvailabilityZone='us-east-1a')
     amis = list(r.images.all())
     ami = amis[0]
     bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name="latent_buildbot_worker",
                              security_name='latent_buildbot_worker',
                              ami=ami.id,
                              volumes=[(vol.id, "/dev/sdz")]
                              )
     id, _, _ = bs._start_instance()
     instances = r.instances.filter(
         Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
     instances = list(instances)
     instance = instances[0]
     sdz = [bm for bm in instance.block_device_mappings if bm['DeviceName'] == '/dev/sdz'][0]
     self.assertEqual(vol.id, sdz['Ebs']['VolumeId'])
Ejemplo n.º 7
0
 def test_start_instance_ip(self):
     c = self.botoSetup()
     amis = c.get_all_images()
     eip = c.allocate_address(domain='vpc')
     elastic_ip = eip.public_ip
     bs = ec2.EC2LatentWorker('bot1',
                              'sekrit',
                              'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name="latent_buildbot_worker",
                              security_name='latent_buildbot_worker',
                              elastic_ip=elastic_ip,
                              ami=amis[0].id)
     id, _, _ = bs._start_instance()
     instances = [
         i for i in c.get_only_instances() if i.state != "terminated"
     ]
     addresses = c.get_all_addresses()
     self.assertEqual(instances[0].id, addresses[0].instance_id)
Ejemplo n.º 8
0
    def test_start_vpc_spot_instance(self):
        c, r = self.botoSetup()

        vpc = r.create_vpc(CidrBlock="192.168.0.0/24")
        subnet = r.create_subnet(VpcId=vpc.id, CidrBlock="192.168.0.0/24")
        amis = list(r.images.all())

        sg = r.create_security_group(GroupName="test_sg",
                                     Description="test_sg",
                                     VpcId=vpc.id)

        bs = ec2.EC2LatentWorker(
            'bot1',
            'sekrit',
            'm1.large',
            identifier='publickey',
            secret_identifier='privatekey',
            keypair_name="latent_buildbot_worker",
            ami=amis[0].id,
            spot_instance=True,
            max_spot_price=1.5,
            security_group_ids=[sg.id],
            subnet_id=subnet.id,
        )
        bs._poll_resolution = 0

        self._patch_moto_describe_spot_price_history(bs, 'm1.large', price=1.0)
        self._patch_moto_describe_spot_instance_requests(c, r, bs)

        instance_id, _, _ = bs._request_spot_instance()
        instances = r.instances.filter(Filters=[{
            'Name': 'instance-state-name',
            'Values': ['running']
        }])
        instances = list(instances)

        self.assertTrue(bs.spot_instance)
        self.assertEqual(len(instances), 1)
        self.assertEqual(instances[0].id, instance_id)
        self.assertEqual(instances[0].subnet_id, subnet.id)
        self.assertEqual(len(instances[0].security_groups), 1)
Ejemplo n.º 9
0
 def test_start_instance_attach_volume(self):
     c = self.botoSetup()
     vol = c.create_volume('10', 'us-east-1a')
     amis = c.get_all_images()
     ami = amis[0]
     bs = ec2.EC2LatentWorker('bot1',
                              'sekrit',
                              'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name="latent_buildbot_worker",
                              security_name='latent_buildbot_worker',
                              ami=ami.id,
                              volumes=[(vol.id, "/dev/sdz")])
     id, _, _ = bs._start_instance()
     instances = [
         i for i in c.get_only_instances() if i.state != "terminated"
     ]
     instance = instances[0]
     self.assertEqual(vol.id,
                      instance.block_device_mapping['/dev/sdz'].volume_id)
Ejemplo n.º 10
0
 def test_start_instance(self):
     _, r = self.botoSetup()
     amis = list(r.images.all())
     bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name='keypair_name',
                              security_name='security_name',
                              ami=amis[0].id
                              )
     bs._poll_resolution = 1
     instance_id, image_id, start_time = bs._start_instance()
     self.assertTrue(instance_id.startswith('i-'))
     self.assertTrue(image_id.startswith('ami-'))
     self.assertTrue(start_time > "00:00:00")
     instances = r.instances.filter(
         Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
     instances = list(instances)
     self.assertEqual(len(instances), 1)
     self.assertEqual(instances[0].id, instance_id)
     self.assertIsNone(instances[0].tags)
     self.assertEqual(instances[0].id, bs.properties.getProperty('instance'))
Ejemplo n.º 11
0
 def test_start_spot_instance(self):
     c, r = self.botoSetup('latent_buildbot_slave')
     amis = list(r.images.all())
     product_description = 'Linux/Unix'
     bs = ec2.EC2LatentWorker('bot1', 'sekrit', 'm1.large',
                              identifier='publickey',
                              secret_identifier='privatekey',
                              keypair_name='keypair_name',
                              security_name='security_name',
                              ami=amis[0].id, spot_instance=True,
                              max_spot_price=1.5,
                              product_description=product_description
                              )
     bs._poll_resolution = 0
     instance_id, _, _ = bs._start_instance()
     instances = r.instances.filter(
         Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
     instances = list(instances)
     self.assertTrue(bs.spot_instance)
     self.assertEqual(bs.product_description, product_description)
     self.assertEqual(len(instances), 1)
     self.assertEqual(instances[0].id, instance_id)
     self.assertIsNone(instances[0].tags)