nfv/nfv/nfv-vim/nfv_vim/database/_database_block_storage_mod...

150 lines
5.4 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import json
from nfv_vim import nfvi
from nfv_vim import objects
from nfv_vim.database import model
from nfv_vim.database._database import database_get
def database_volume_add(volume_obj):
"""
Add a volume object to the database
"""
db = database_get()
session = db.session()
query = session.query(model.Volume)
query = query.filter(model.Volume.uuid == volume_obj.uuid)
volume = query.first()
if not volume:
volume = model.Volume()
volume.uuid = volume_obj.uuid
volume.name = volume_obj.name
volume.description = volume_obj.description
volume.avail_status = json.dumps(volume_obj.avail_status)
volume.action = volume_obj.action
volume.size_gb = volume_obj.size_gb
volume.bootable = volume_obj.bootable
volume.encrypted = volume_obj.encrypted
volume.image_uuid = volume_obj.image_uuid
volume.nfvi_volume_data = json.dumps(volume_obj.nfvi_volume.as_dict())
session.add(volume)
else:
volume.name = volume_obj.name
volume.description = volume_obj.description
volume.avail_status = json.dumps(volume_obj.avail_status)
volume.action = volume_obj.action
volume.size_gb = volume_obj.size_gb
volume.bootable = volume_obj.bootable
volume.encrypted = volume_obj.encrypted
volume.image_uuid = volume_obj.image_uuid
volume.nfvi_volume_data = json.dumps(volume_obj.nfvi_volume.as_dict())
db.commit()
def database_volume_delete(volume_uuid):
"""
Delete a volume object from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Volume)
query.filter(model.Volume.uuid == volume_uuid).delete()
session.commit()
def database_volume_get_list():
"""
Fetch all the volume objects from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Volume)
volume_objs = list()
for volume in query.all():
nfvi_volume_data = json.loads(volume.nfvi_volume_data)
nfvi_volume = nfvi.objects.v1.Volume(nfvi_volume_data['uuid'],
nfvi_volume_data['name'],
nfvi_volume_data['description'],
nfvi_volume_data['avail_status'],
nfvi_volume_data['action'],
nfvi_volume_data['size_gb'],
nfvi_volume_data['bootable'],
nfvi_volume_data['encrypted'],
nfvi_volume_data['image_uuid'])
volume_obj = objects.Volume(nfvi_volume)
volume_objs.append(volume_obj)
return volume_objs
def database_volume_snapshot_add(volume_snapshot_obj):
"""
Add a volume snapshot object to the database
"""
db = database_get()
session = db.session()
query = session.query(model.VolumeSnapshot)
query = query.filter(model.VolumeSnapshot.uuid == volume_snapshot_obj.uuid)
volume_snapshot = query.first()
if not volume_snapshot:
volume_snapshot = model.VolumeSnapshot()
volume_snapshot.uuid = volume_snapshot_obj.uuid
volume_snapshot.name = volume_snapshot_obj.name
volume_snapshot.description = volume_snapshot_obj.description
volume_snapshot.size_gb = volume_snapshot_obj.size_gb
volume_snapshot.volume_uuid = volume_snapshot_obj.volume_uuid
volume_snapshot.nfvi_volume_snapshot_data = \
json.dumps(volume_snapshot_obj.nfvi_volume_snapshot.as_dict())
session.add(volume_snapshot)
else:
volume_snapshot.name = volume_snapshot_obj.name
volume_snapshot.description = volume_snapshot_obj.description
volume_snapshot.size_gb = volume_snapshot_obj.size_gb
volume_snapshot.volume_uuid = volume_snapshot_obj.volume_uuid
volume_snapshot.nfvi_volume_snapshot_data = \
json.dumps(volume_snapshot_obj.nfvi_volume_snapshot.as_dict())
db.commit()
def database_volume_snapshot_delete(volume_snapshot_uuid):
"""
Delete a volume snapshot object from the database
"""
db = database_get()
session = db.session()
query = session.query(model.VolumeSnapshot)
query.filter(model.VolumeSnapshot.uuid == volume_snapshot_uuid).delete()
session.commit()
def database_volume_snapshot_get_list():
"""
Fetch all the volume snapshot objects from the database
"""
db = database_get()
session = db.session()
query = session.query(model.VolumeSnapshot)
volume_snapshot_objs = list()
for volume_snapshot in query.all():
nfvi_volume_snapshot_data = \
json.loads(volume_snapshot.nfvi_volume_snapshot_data)
nfvi_volume_snapshot = nfvi.objects.v1.VolumeSnapshot(
nfvi_volume_snapshot_data['uuid'],
nfvi_volume_snapshot_data['name'],
nfvi_volume_snapshot_data['description'],
nfvi_volume_snapshot_data['size_gb'],
nfvi_volume_snapshot_data['volume_uuid'])
volume_snapshot_obj = objects.VolumeSnapshot(nfvi_volume_snapshot)
volume_snapshot_objs.append(volume_snapshot_obj)
return volume_snapshot_objs