Ejemplo n.º 1
0
 def test_snapshot_data_get_for_project(self):
     actual = db.snapshot_data_get_for_project(self.ctxt, "project1")
     self.assertEqual(actual, (0, 0))
     db.volume_create(self.ctxt, {"id": 1, "project_id": "project1", "size": 42})
     db.snapshot_create(self.ctxt, {"id": 1, "volume_id": 1, "project_id": "project1", "volume_size": 42})
     actual = db.snapshot_data_get_for_project(self.ctxt, "project1")
     self.assertEqual(actual, (1, 42))
Ejemplo n.º 2
0
 def test_snapshot_data_get_for_project(self):
     actual = db.snapshot_data_get_for_project(self.ctxt, 'project1')
     self.assertEqual(actual, (0, 0))
     db.volume_create(self.ctxt, {'id': 1,
                                  'project_id': 'project1',
                                  'size': 42})
     snapshot = db.snapshot_create(self.ctxt, {'id': 1, 'volume_id': 1,
                                               'project_id': 'project1',
                                               'volume_size': 42})
     actual = db.snapshot_data_get_for_project(self.ctxt, 'project1')
     self.assertEqual(actual, (1, 42))
Ejemplo n.º 3
0
 def test_snapshot_data_get_for_project(self):
     actual = db.snapshot_data_get_for_project(self.ctxt, 'project1')
     self.assertEqual(actual, (0, 0))
     db.volume_create(self.ctxt, {
         'id': 1,
         'project_id': 'project1',
         'size': 42
     })
     snapshot = db.snapshot_create(self.ctxt, {
         'id': 1,
         'volume_id': 1,
         'project_id': 'project1',
         'volume_size': 42
     })
     actual = db.snapshot_data_get_for_project(self.ctxt, 'project1')
     self.assertEqual(actual, (1, 42))
Ejemplo n.º 4
0
    def show(self, req, id):
        """Shows the volume usage info given by hosts.

        :param context: security context
        :param host: hostname
        :returns: expected to use HostShowTemplate.
            ex.::

                {'host': {'resource':D},..}
                D: {'host': 'hostname','project': 'admin',
                    'volume_count': 1, 'total_volume_gb': 2048}
        """
        host = id
        context = req.environ['cinder.context']
        if not context.is_admin:
            msg = _("Describe-resource is admin only functionality")
            raise webob.exc.HTTPForbidden(explanation=msg)

        try:
            host_ref = db.service_get_by_host_and_topic(context,
                                                        host,
                                                        CONF.volume_topic)
        except exception.ServiceNotFound:
            raise webob.exc.HTTPNotFound(explanation=_("Host not found"))

        # Getting total available/used resource
        # TODO(jdg): Add summary info for Snapshots
        volume_refs = db.volume_get_all_by_host(context, host_ref['host'])
        (count, sum) = db.volume_data_get_for_host(context,
                                                   host_ref['host'])

        snap_count_total = 0
        snap_sum_total = 0
        resources = [{'resource': {'host': host, 'project': '(total)',
                      'volume_count': str(count),
                      'total_volume_gb': str(sum),
                      'snapshot_count': str(snap_count_total),
                      'total_snapshot_gb': str(snap_sum_total)}}]

        project_ids = [v['project_id'] for v in volume_refs]
        project_ids = list(set(project_ids))
        for project_id in project_ids:
            (count, sum) = db.volume_data_get_for_project(context, project_id)
            (snap_count, snap_sum) = db.snapshot_data_get_for_project(
                context,
                project_id)
            resources.append(
                {'resource':
                    {'host': host,
                     'project': project_id,
                     'volume_count': str(count),
                     'total_volume_gb': str(sum),
                     'snapshot_count': str(snap_count),
                     'total_snapshot_gb': str(snap_sum)}})
            snap_count_total += int(snap_count)
            snap_sum_total += int(snap_sum)
        resources[0]['resource']['snapshot_count'] = str(snap_count_total)
        resources[0]['resource']['total_snapshot_gb'] = str(snap_sum_total)
        return {"host": resources}
Ejemplo n.º 5
0
    def show(self, req, id):
        """Shows the volume usage info given by hosts.

        :param context: security context
        :param host: hostname
        :returns: expected to use HostShowTemplate.
            ex.::

                {'host': {'resource':D},..}
                D: {'host': 'hostname','project': 'admin',
                    'volume_count': 1, 'total_volume_gb': 2048}
        """
        host = id
        context = req.environ['cinder.context']
        if not context.is_admin:
            msg = _("Describe-resource is admin only functionality")
            raise webob.exc.HTTPForbidden(explanation=msg)

        try:
            host_ref = db.service_get_by_host_and_topic(context,
                                                        host,
                                                        CONF.volume_topic)
        except exception.ServiceNotFound:
            raise webob.exc.HTTPNotFound(explanation=_("Host not found"))

        # Getting total available/used resource
        # TODO(jdg): Add summary info for Snapshots
        volume_refs = db.volume_get_all_by_host(context, host_ref['host'])
        (count, sum) = db.volume_data_get_for_host(context,
                                                   host_ref['host'])

        snap_count_total = 0
        snap_sum_total = 0
        resources = [{'resource': {'host': host, 'project': '(total)',
                                   'volume_count': str(count),
                                   'total_volume_gb': str(sum),
                                   'snapshot_count': str(snap_count_total),
                                   'total_snapshot_gb': str(snap_sum_total)}}]

        project_ids = [v['project_id'] for v in volume_refs]
        project_ids = list(set(project_ids))
        for project_id in project_ids:
            (count, sum) = db.volume_data_get_for_project(context, project_id)
            (snap_count, snap_sum) = db.snapshot_data_get_for_project(
                context,
                project_id)
            resources.append(
                {'resource':
                    {'host': host,
                     'project': project_id,
                     'volume_count': str(count),
                     'total_volume_gb': str(sum),
                     'snapshot_count': str(snap_count),
                     'total_snapshot_gb': str(snap_sum)}})
            snap_count_total += int(snap_count)
            snap_sum_total += int(snap_sum)
        resources[0]['resource']['snapshot_count'] = str(snap_count_total)
        resources[0]['resource']['total_snapshot_gb'] = str(snap_sum_total)
        return {"host": resources}
Ejemplo n.º 6
0
 def _sync_snapshots(self, context, project_id, session):
     """Sync snapshots for this specific volume type."""
     (snapshots, gigs) = db.snapshot_data_get_for_project(
         context,
         project_id,
         volume_type_id=self.volume_type_id,
         session=session)
     return {'snapshots_%s' % self.volume_type_name: snapshots}
Ejemplo n.º 7
0
 def _sync_snapshots(self, context, project_id, session):
     """Sync snapshots for this specific volume type."""
     (snapshots, gigs) = db.snapshot_data_get_for_project(
         context,
         project_id,
         volume_type_id=self.volume_type_id,
         session=session)
     return {'snapshots_%s' % self.volume_type_name: snapshots}
Ejemplo n.º 8
0
 def snapshot_data_get_for_project(cls,
                                   context,
                                   project_id,
                                   volume_type_id=None,
                                   host=None):
     return db.snapshot_data_get_for_project(context,
                                             project_id,
                                             volume_type_id,
                                             host=host)
Ejemplo n.º 9
0
def _sync_gigabytes(context, project_id, session):
    (_junk, vol_gigs) = db.volume_data_get_for_project(context,
                                                       project_id,
                                                       session=session)
    if CONF.no_snapshot_gb_quota:
        return {'gigabytes': vol_gigs}

    (_junk, snap_gigs) = db.snapshot_data_get_for_project(context,
                                                          project_id,
                                                          session=session)
    return {'gigabytes': vol_gigs + snap_gigs}
Ejemplo n.º 10
0
def _sync_gigabytes(context, project_id, session):
    (_junk, vol_gigs) = db.volume_data_get_for_project(context,
                                                       project_id,
                                                       session=session)
    if CONF.no_snapshot_gb_quota:
        return {'gigabytes': vol_gigs}

    (_junk, snap_gigs) = db.snapshot_data_get_for_project(context,
                                                          project_id,
                                                          session=session)
    return {'gigabytes': vol_gigs + snap_gigs}
Ejemplo n.º 11
0
    def _sync_gigabytes(self, context, project_id, session):
        """Sync gigabytes for this specific volume type."""
        key = 'gigabytes_%s' % self.volume_type_name
        (_junk, vol_gigs) = db.volume_data_get_for_project(
            context,
            project_id,
            volume_type_id=self.volume_type_id,
            session=session)
        if CONF.no_snapshot_gb_quota:
            return {key: vol_gigs}

        (_junk, snap_gigs) = db.snapshot_data_get_for_project(
            context,
            project_id,
            volume_type_id=self.volume_type_id,
            session=session)
        return {key: vol_gigs + snap_gigs}
Ejemplo n.º 12
0
    def _sync_gigabytes(self, context, project_id, session):
        """Sync gigabytes for this specific volume type."""
        key = 'gigabytes_%s' % self.volume_type_name
        (_junk, vol_gigs) = db.volume_data_get_for_project(
            context,
            project_id,
            volume_type_id=self.volume_type_id,
            session=session)
        if CONF.no_snapshot_gb_quota:
            return {key: vol_gigs}

        (_junk, snap_gigs) = db.snapshot_data_get_for_project(
            context,
            project_id,
            volume_type_id=self.volume_type_id,
            session=session)
        return {key: vol_gigs + snap_gigs}
Ejemplo n.º 13
0
 def snapshot_data_get_for_project(cls, context, project_id,
                                   volume_type_id=None):
     return db.snapshot_data_get_for_project(context, project_id,
                                             volume_type_id)
Ejemplo n.º 14
0
def _sync_snapshots(context, project_id, session):
    (snapshots, gigs) = db.snapshot_data_get_for_project(context,
                                                         project_id,
                                                         session=session)
    return {'snapshots': snapshots}
Ejemplo n.º 15
0
def _sync_snapshots(context, project_id, session):
    (snapshots, gigs) = db.snapshot_data_get_for_project(context,
                                                         project_id,
                                                         session=session)
    return {'snapshots': snapshots}