150 lines
5.4 KiB
Python
Executable File
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
|