cinder/cinder/db/sqlalchemy/migrate_repo/versions/047_add_per_volume_quota.py

45 lines
1.7 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_utils import timeutils
from sqlalchemy import MetaData, Table
# Get default value via config. The default will either
# come from the default value set in the quota configuration option
# or via cinder.conf if the user has configured
# default value for per volume size limit there.
def upgrade(migrate_engine):
"""Add default "per_volume_gigabytes" row into DB."""
meta = MetaData()
meta.bind = migrate_engine
quota_classes = Table('quota_classes', meta, autoload=True)
row = quota_classes.count().\
where(quota_classes.c.resource == 'per_volume_gigabytes').\
execute().scalar()
# Do not add entry if there is already 'default' entry exists
# in the database.
# We don't want to write over something the user added.
if row:
return
# Set default per_volume_gigabytes for per volume size
qci = quota_classes.insert()
qci.execute({'created_at': timeutils.utcnow(),
'class_name': 'default',
'resource': 'per_volume_gigabytes',
'hard_limit': -1,
'deleted': False, })