nfv/nfv/nfv-vim/nfv_vim/database/_database_image_module.py

92 lines
3.3 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_image_add(image_obj):
"""
Add an image object to the database
"""
db = database_get()
session = db.session()
query = session.query(model.Image)
query = query.filter(model.Image.uuid == image_obj.uuid)
image = query.first()
if not image:
image = model.Image()
image.uuid = image_obj.uuid
image.name = image_obj.name
image.description = image_obj.description
image.avail_status = json.dumps(image_obj.avail_status)
image.action = image_obj.action
image.container_format = image_obj.container_format
image.disk_format = image_obj.disk_format
image.min_disk_size_gb = image_obj.min_disk_size_gb
image.min_memory_size_mb = image_obj.min_memory_size_mb
image.visibility = image_obj.visibility
image.protected = image_obj.protected
image.properties = json.dumps(image_obj.properties)
image.nfvi_image_data = json.dumps(image_obj.nfvi_image.as_dict())
session.add(image)
else:
image.description = image_obj.description
image.avail_status = json.dumps(image_obj.avail_status)
image.action = image_obj.action
image.min_disk_size_gb = image_obj.min_disk_size_gb
image.min_memory_size_mb = image_obj.min_memory_size_mb
image.visibility = image_obj.visibility
image.protected = image_obj.protected
image.properties = json.dumps(image_obj.properties)
image.nfvi_image_data = json.dumps(image_obj.nfvi_image.as_dict())
db.commit()
def database_image_delete(image_uuid):
"""
Delete an image object from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Image)
query.filter(model.Image.uuid == image_uuid).delete()
session.commit()
def database_image_get_list():
"""
Fetch all the image objects from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Image)
image_objs = list()
for image in query.all():
nfvi_image_data = json.loads(image.nfvi_image_data)
nfvi_image = nfvi.objects.v1.Image(nfvi_image_data['uuid'],
nfvi_image_data['name'],
nfvi_image_data['description'],
nfvi_image_data['avail_status'],
nfvi_image_data['action'],
nfvi_image_data['container_format'],
nfvi_image_data['disk_format'],
nfvi_image_data['min_disk_size_gb'],
nfvi_image_data['min_memory_size_mb'],
nfvi_image_data['visibility'],
nfvi_image_data['protected'],
nfvi_image_data['properties'])
image_obj = objects.Image(nfvi_image)
image_objs.append(image_obj)
return image_objs