示例#1
0
 def test_notify_usage_exists_instance_not_found(self):
     # Ensure 'exists' notification generates appropriate usage data.
     instance_id = self._create_instance()
     instance = objects.Instance.get_by_id(self.context, instance_id,
             expected_attrs=['metadata', 'system_metadata', 'info_cache'])
     self.compute.terminate_instance(self.context, instance, [], [])
     compute_utils.notify_usage_exists(
         rpc.get_notifier('compute'), self.context, instance)
     msg = fake_notifier.NOTIFICATIONS[-1]
     self.assertEqual(msg.priority, 'INFO')
     self.assertEqual(msg.event_type, 'compute.instance.exists')
     payload = msg.payload
     self.assertEqual(payload['tenant_id'], self.project_id)
     self.assertEqual(payload['user_id'], self.user_id)
     self.assertEqual(payload['instance_id'], instance['uuid'])
     self.assertEqual(payload['instance_type'], 'm1.tiny')
     type_id = flavors.get_flavor_by_name('m1.tiny')['id']
     self.assertEqual(str(payload['instance_type_id']), str(type_id))
     flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid']
     self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id))
     for attr in ('display_name', 'created_at', 'launched_at',
                  'state', 'state_description',
                  'bandwidth', 'audit_period_beginning',
                  'audit_period_ending', 'image_meta'):
         self.assertIn(attr, payload, "Key %s not in payload" % attr)
     self.assertEqual(payload['image_meta'], {})
     image_ref_url = "%s/images/1" % glance.generate_glance_url()
     self.assertEqual(payload['image_ref_url'], image_ref_url)
示例#2
0
 def test_flavor_get_by_None_name_returns_default(self):
     # Ensure get by name returns default flavor with no name.
     default = flavors.get_default_flavor()
     actual = flavors.get_flavor_by_name(None)
     self.assertIsInstance(default, objects.Flavor)
     self.assertIsInstance(actual, objects.Flavor)
     self.assertEqual(default.flavorid, actual.flavorid)
示例#3
0
文件: pipelib.py 项目: hsluoyz/patron
 def launch_vpn_instance(self, context):
     LOG.debug("Launching VPN for %s", context.project_id)
     key_name = self.setup_key_pair(context)
     group_name = self.setup_security_group(context)
     flavor = flavors.get_flavor_by_name(CONF.vpn_flavor)
     instance_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix)
     user_data = self.get_encoded_zip(context.project_id)
     return self.compute_api.create(context,
                                    flavor,
                                    CONF.vpn_image_id,
                                    display_name=instance_name,
                                    user_data=user_data,
                                    key_name=key_name,
                                    security_group=[group_name])
示例#4
0
 def launch_vpn_instance(self, context):
     LOG.debug("Launching VPN for %s", context.project_id)
     key_name = self.setup_key_pair(context)
     group_name = self.setup_security_group(context)
     flavor = flavors.get_flavor_by_name(CONF.vpn_flavor)
     instance_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix)
     user_data = self.get_encoded_zip(context.project_id)
     return self.compute_api.create(context,
                                    flavor,
                                    CONF.vpn_image_id,
                                    display_name=instance_name,
                                    user_data=user_data,
                                    key_name=key_name,
                                    security_group=[group_name])
示例#5
0
 def test_notify_about_instance_usage(self):
     instance_id = self._create_instance()
     instance = objects.Instance.get_by_id(self.context, instance_id,
             expected_attrs=['metadata', 'system_metadata', 'info_cache'])
     # Set some system metadata
     sys_metadata = {'image_md_key1': 'val1',
                     'image_md_key2': 'val2',
                     'other_data': 'meow'}
     instance.system_metadata.update(sys_metadata)
     instance.save()
     extra_usage_info = {'image_name': 'fake_name'}
     compute_utils.notify_about_instance_usage(
         rpc.get_notifier('compute'),
         self.context, instance, 'create.start',
         extra_usage_info=extra_usage_info)
     self.assertEqual(len(fake_notifier.NOTIFICATIONS), 1)
     msg = fake_notifier.NOTIFICATIONS[0]
     self.assertEqual(msg.priority, 'INFO')
     self.assertEqual(msg.event_type, 'compute.instance.create.start')
     payload = msg.payload
     self.assertEqual(payload['tenant_id'], self.project_id)
     self.assertEqual(payload['user_id'], self.user_id)
     self.assertEqual(payload['instance_id'], instance['uuid'])
     self.assertEqual(payload['instance_type'], 'm1.tiny')
     type_id = flavors.get_flavor_by_name('m1.tiny')['id']
     self.assertEqual(str(payload['instance_type_id']), str(type_id))
     flavor_id = flavors.get_flavor_by_name('m1.tiny')['flavorid']
     self.assertEqual(str(payload['instance_flavor_id']), str(flavor_id))
     for attr in ('display_name', 'created_at', 'launched_at',
                  'state', 'state_description', 'image_meta'):
         self.assertIn(attr, payload, "Key %s not in payload" % attr)
     self.assertEqual(payload['image_meta'],
             {'md_key1': 'val1', 'md_key2': 'val2'})
     self.assertEqual(payload['image_name'], 'fake_name')
     image_ref_url = "%s/images/1" % glance.generate_glance_url()
     self.assertEqual(payload['image_ref_url'], image_ref_url)
     self.compute.terminate_instance(self.context, instance, [], [])
示例#6
0
 def _create_instance(self, params=None):
     """Create a test instance."""
     params = params or {}
     flavor = flavors.get_flavor_by_name('m1.tiny')
     sys_meta = flavors.save_flavor_info({}, flavor)
     inst = {}
     inst['image_ref'] = 1
     inst['reservation_id'] = 'r-fakeres'
     inst['user_id'] = self.user_id
     inst['project_id'] = self.project_id
     inst['instance_type_id'] = flavor['id']
     inst['system_metadata'] = sys_meta
     inst['ami_launch_index'] = 0
     inst['root_gb'] = 0
     inst['ephemeral_gb'] = 0
     inst['info_cache'] = {'network_info': '[]'}
     inst.update(params)
     return db.instance_create(self.context, inst)['id']
示例#7
0
 def _wrapped_create(self, params=None):
     instance_type = flavors.get_flavor_by_name('m1.tiny')
     inst = objects.Instance(image_ref=1,
                             user_id=self.user_id,
                             project_id=self.project_id,
                             instance_type_id=instance_type['id'],
                             root_gb=0,
                             ephemeral_gb=0,
                             access_ip_v4='1.2.3.4',
                             access_ip_v6='feed::5eed',
                             display_name='test_instance',
                             hostname='test_instance_hostname',
                             node='test_instance_node',
                             system_metadata={})
     inst._context = self.context
     if params:
         inst.update(params)
     with mock.patch.object(inst, 'save'):
         inst.set_flavor(instance_type)
     inst.create()
     return inst
示例#8
0
 def _wrapped_create(self, params=None):
     instance_type = flavors.get_flavor_by_name('m1.tiny')
     inst = objects.Instance(image_ref=1,
                             user_id=self.user_id,
                             project_id=self.project_id,
                             instance_type_id=instance_type['id'],
                             root_gb=0,
                             ephemeral_gb=0,
                             access_ip_v4='1.2.3.4',
                             access_ip_v6='feed::5eed',
                             display_name='test_instance',
                             hostname='test_instance_hostname',
                             node='test_instance_node',
                             system_metadata={})
     inst._context = self.context
     if params:
         inst.update(params)
     with mock.patch.object(inst, 'save'):
         inst.set_flavor(instance_type)
     inst.create()
     return inst