1a502b9151
Introduce the DataNetwork api, client, model to allow modelling of the physical data network, with the following attributes: datanetwork_name mtu datanetwork_type (flat, vlan, vxlan) VxLAN specific attributes - port_number - multicast_group - ttl - mode ('dynamic' default, or 'static') The system data network may then be assigned to interface. This is part of the Story to "Move neutron provider network modelling to system configuration". The interface api is currently made compatible with current usage to allow specifying datanetwork (formerly providernetwork). The following new CLI commands and corresponding api are exposed: datanetwork-add Add a datanetwork. datanetwork-delete Delete a datanetwork. datanetwork-list List datanetworks. datanetwork-modify Modify a datanetwork. datanetwork-show Show datanetwork details. interface-datanetwork-assign Assign a datanetwork to an interface. interface-datanetwork-list List datanetwork interfaces. interface-datanetwork-remove Remove an assigned datanetwork from an interface. interface-datanetwork-show Show interface datanetwork details. 'system datanetwork-add' must be run where 'neutron providernetwork-create'. Tests Performed: AIO Sanity Sanity 2-controller, 2-compute Sanity Storage lab Interface Profile create and apply Containers deployment Change-Id: I630f90768647dbb414a60978bf8f8f641496afd5 Story: 2004455 Task: 28324 Signed-off-by: John Kung <john.kung@windriver.com>
111 lines
3.1 KiB
Python
111 lines
3.1 KiB
Python
#
|
|
# Copyright (c) 2019 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
# coding=utf-8
|
|
#
|
|
|
|
from sysinv.db import api as db_api
|
|
from sysinv.objects import base
|
|
from sysinv.objects import utils
|
|
|
|
from oslo_log import log
|
|
|
|
LOG = log.getLogger(__name__)
|
|
|
|
|
|
def _get_mtu(field, db_object):
|
|
mtu = None
|
|
datanetwork = getattr(db_object, 'datanetwork', None)
|
|
if hasattr(datanetwork, 'mtu'):
|
|
mtu = datanetwork.mtu
|
|
return mtu
|
|
|
|
|
|
def _get_multicast_group(field, db_object):
|
|
multicast_group = None
|
|
datanetwork = getattr(db_object, 'datanetwork', None)
|
|
if hasattr(datanetwork, 'multicast_group'):
|
|
multicast_group = datanetwork.multicast_group
|
|
return multicast_group
|
|
|
|
|
|
def _get_port_num(field, db_object):
|
|
port_num = None
|
|
datanetwork = getattr(db_object, 'datanetwork', None)
|
|
if hasattr(datanetwork, 'port_num'):
|
|
port_num = datanetwork.port_num
|
|
return port_num
|
|
|
|
|
|
def _get_ttl(field, db_object):
|
|
ttl = None
|
|
datanetwork = getattr(db_object, 'datanetwork', None)
|
|
if hasattr(datanetwork, 'ttl'):
|
|
ttl = datanetwork.ttl
|
|
return ttl
|
|
|
|
|
|
def _get_mode(field, db_object):
|
|
mode = None
|
|
datanetwork = getattr(db_object, 'datanetwork', None)
|
|
if hasattr(datanetwork, 'mode'):
|
|
mode = datanetwork.mode
|
|
return mode
|
|
|
|
|
|
class InterfaceDataNetwork(base.SysinvObject):
|
|
VERSION = '1.0'
|
|
|
|
dbapi = db_api.get_instance()
|
|
|
|
fields = {
|
|
'id': int,
|
|
'uuid': utils.uuid_or_none,
|
|
'forihostid': utils.int_or_none,
|
|
'interface_id': utils.int_or_none,
|
|
'interface_uuid': utils.uuid_or_none,
|
|
'ifname': utils.str_or_none,
|
|
'datanetwork_id': utils.int_or_none,
|
|
'datanetwork_uuid': utils.uuid_or_none,
|
|
'datanetwork_name': utils.str_or_none,
|
|
'datanetwork_network_type': utils.str_or_none,
|
|
'datanetwork_description': utils.str_or_none,
|
|
'datanetwork_mtu': utils.int_or_none,
|
|
'datanetwork_port_num': utils.int_or_none,
|
|
'datanetwork_multicast_group': utils.str_or_none,
|
|
'datanetwork_ttl': utils.int_or_none,
|
|
'datanetwork_mode': utils.str_or_none,
|
|
}
|
|
|
|
_foreign_fields = {
|
|
'forihostid': 'interface:forihostid',
|
|
'interface_id': 'interface:id',
|
|
'interface_uuid': 'interface:uuid',
|
|
'ifname': 'interface:ifname',
|
|
'datanetwork_uuid': 'datanetwork:uuid',
|
|
'datanetwork_id': 'datanetwork:id',
|
|
'datanetwork_name': 'datanetwork:name',
|
|
'datanetwork_network_type': 'datanetwork:network_type',
|
|
'datanetwork_description': 'datanetwork:description',
|
|
'datanetwork_mtu': _get_mtu,
|
|
'datanetwork_port_num': _get_port_num,
|
|
'datanetwork_multicast_group': _get_multicast_group,
|
|
'datanetwork_ttl': _get_ttl,
|
|
'datanetwork_mode': _get_mode,
|
|
}
|
|
|
|
_optional_fields = {
|
|
'datanetwork_port_num',
|
|
'datanetwork_multicast_group',
|
|
'datanetwork_ttl',
|
|
'datanetwork_mode',
|
|
}
|
|
|
|
@base.remotable_classmethod
|
|
def get_by_uuid(cls, context, uuid):
|
|
return cls.dbapi.interface_datanetwork_get(uuid)
|