vol.update(params)
return db.volume_create(self.context, vol)['id']
- def test_notify_usage_exists(self):
- """Ensure 'exists' notification generates appropriate usage data."""
- volume_id = self._create_volume()
- volume = db.volume_get(self.context, volume_id)
- volume_utils.notify_usage_exists(self.context, volume)
- LOG.info("%r" % test_notifier.NOTIFICATIONS)
- self.assertEqual(len(test_notifier.NOTIFICATIONS), 1)
- msg = test_notifier.NOTIFICATIONS[0]
- self.assertEqual(msg['priority'], 'INFO')
- self.assertEqual(msg['event_type'], 'volume.exists')
- payload = msg['payload']
- self.assertEqual(payload['tenant_id'], self.project_id)
- self.assertEqual(payload['user_id'], self.user_id)
- self.assertEqual(payload['snapshot_id'], self.snapshot_id)
- self.assertEqual(payload['volume_id'], volume.id)
- self.assertEqual(payload['size'], self.volume_size)
- for attr in ('display_name', 'created_at', 'launched_at',
- 'status', 'audit_period_beginning',
- 'audit_period_ending'):
- self.assertIn(attr, payload)
- db.volume_destroy(context.get_admin_context(), volume['id'])
-
- def test_get_host_from_queue_simple(self):
- fullname = "%s.%s@%s" % (self.QUEUE_NAME, self.HOSTNAME, self.BACKEND)
- self.assertEqual(volume_utils.get_host_from_queue(fullname),
- self.HOSTNAME)
-
- def test_get_host_from_queue_ip(self):
- fullname = "%s.%s@%s" % (self.QUEUE_NAME, self.HOSTIP, self.BACKEND)
- self.assertEqual(volume_utils.get_host_from_queue(fullname),
- self.HOSTIP)
-
- def test_get_host_from_queue_multi_at_symbol(self):
- fullname = "%s.%s@%s" % (self.QUEUE_NAME, self.HOSTNAME,
- self.MULTI_AT_BACKEND)
- self.assertEqual(volume_utils.get_host_from_queue(fullname),
- self.HOSTNAME)
-
- def test_get_host_from_queue_ip_multi_at_symbol(self):
- fullname = "%s.%s@%s" % (self.QUEUE_NAME, self.HOSTIP,
- self.MULTI_AT_BACKEND)
- self.assertEqual(volume_utils.get_host_from_queue(fullname),
- self.HOSTIP)
-
class LVMVolumeDriverTestCase(test.TestCase):
def test_convert_blocksize_option(self):
def terminate_connection(self, volume, connector, **kwargs):
pass
- def _get_iscsi_initiator(self):
- """Get iscsi initiator name for this machine."""
- # NOTE openiscsi stores initiator name in a file that
- # needs root permission to read.
- contents = utils.read_file_as_root('/etc/iscsi/initiatorname.iscsi')
- for l in contents.split('\n'):
- if l.startswith('InitiatorName='):
- return l[l.index('=') + 1:].strip()
-
def get_volume_stats(self, refresh=False):
"""Get volume stats.
from cinder.openstack.common.notifier import api as notifier_api
from cinder.openstack.common import processutils
from cinder.openstack.common import strutils
-from cinder.openstack.common import timeutils
from cinder import units
from cinder import utils
LOG = logging.getLogger(__name__)
-def get_host_from_queue(queuename):
- # This assumes the queue is named something like cinder-volume
- # and does not have dot separators in the queue name
- return queuename.split('@', 1)[0].split('.', 1)[1]
-
-
-def notify_usage_exists(context, volume_ref, current_period=False):
- """Generates 'exists' notification for a volume for usage auditing
- purposes.
-
- Generates usage for last completed period, unless 'current_period'
- is True.
- """
- begin, end = utils.last_completed_audit_period()
- if current_period:
- audit_start = end
- audit_end = timeutils.utcnow()
- else:
- audit_start = begin
- audit_end = end
-
- extra_usage_info = dict(audit_period_beginning=str(audit_start),
- audit_period_ending=str(audit_end))
-
- notify_about_volume_usage(context, volume_ref,
- 'exists', extra_usage_info=extra_usage_info)
-
-
def null_safe_str(s):
return str(s) if s else ''