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

142 lines
4.5 KiB
Python
Executable File

#
# Copyright (c) 2015-2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
import json
from nfv_vim import objects
from nfv_vim.database import model
from nfv_vim.database._database import database_get
def database_subnet_add(subnet_obj):
"""
Add a subnet object to the database
"""
db = database_get()
session = db.session()
query = session.query(model.Subnet)
query = query.filter(model.Subnet.uuid == subnet_obj.uuid)
subnet = query.first()
if not subnet:
subnet = model.Subnet()
subnet.uuid = subnet_obj.uuid
subnet.name = subnet_obj.name
subnet.ip_version = subnet_obj.ip_version
subnet.subnet_ip = subnet_obj.subnet_ip
subnet.subnet_prefix = subnet_obj.subnet_prefix
subnet.gateway_ip = subnet_obj.gateway_ip
subnet.network_uuid = subnet_obj.network_uuid
subnet.is_dhcp_enabled = subnet_obj.is_dhcp_enabled
session.add(subnet)
else:
subnet.is_dhcp_enabled = subnet_obj.is_dhcp_enabled
db.commit()
def database_subnet_delete(subnet_uuid):
"""
Delete a subnet object from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Subnet)
query.filter(model.Subnet.uuid == subnet_uuid).delete()
session.commit()
def database_subnet_get_list():
"""
Fetch all the subnet objects from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Subnet)
subnet_objs = list()
for subnet in query.all():
subnet_obj = objects.Subnet(subnet.uuid, subnet.name,
subnet.ip_version, subnet.subnet_ip,
subnet.subnet_prefix, subnet.gateway_ip,
subnet.network_uuid,
subnet.is_dhcp_enabled)
subnet_objs.append(subnet_obj)
return subnet_objs
def database_network_add(network_obj):
"""
Add a network object to the database
"""
provider_data = network_obj.provider_data
db = database_get()
session = db.session()
query = session.query(model.Network)
query = query.filter(model.Network.uuid == network_obj.uuid)
network = query.first()
if not network:
network = model.Network()
network.uuid = network_obj.uuid
network.name = network_obj.name
network.admin_state = network_obj.admin_state
network.oper_state = network_obj.oper_state
network.avail_status = json.dumps(network_obj.avail_status)
network.is_shared = network_obj.is_shared
network.mtu = network_obj.mtu
network.physical_network = provider_data.physical_network
network.network_type = provider_data.network_type
network.segmentation_id = provider_data.segmentation_id
session.add(network)
else:
network.admin_state = network_obj.admin_state
network.oper_state = network_obj.oper_state
network.avail_status = json.dumps(network_obj.avail_status)
network.is_shared = network_obj.is_shared
network.mtu = network_obj.mtu
network.physical_network = provider_data.physical_network
network.network_type = provider_data.network_type
network.segmentation_id = provider_data.segmentation_id
db.commit()
def database_network_delete(network_uuid):
"""
Delete a network object from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Network)
query.filter(model.Network.uuid == network_uuid).delete()
session.commit()
def database_network_get_list():
"""
Fetch all the network objects from the database
"""
db = database_get()
session = db.session()
query = session.query(model.Network)
network_objs = list()
for network in query.all():
provider_data = objects.NetworkProviderData(network.physical_network,
network.network_type,
network.segmentation_id)
network_obj = objects.Network(network.uuid, network.name,
network.admin_state,
network.oper_state,
json.loads(network.avail_status),
network.is_shared,
network.mtu,
provider_data)
network_objs.append(network_obj)
return network_objs