142 lines
4.5 KiB
Python
Executable File
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
|