91 lines
3.3 KiB
Python
Executable File
91 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
|