config/sysinv/sysinv/sysinv/sysinv/objects/address_pool.py

63 lines
2.0 KiB
Python

#
# Copyright (c) 2015 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
def get_range_values(field, db_object):
"""Retrieves the list of ranges associated to the address pool."""
result = []
for entry in getattr(db_object, 'ranges', []):
result.append([entry.start, entry.end])
return result
class AddressPool(base.SysinvObject):
# VERSION 1.0: Initial version
VERSION = '1.0'
dbapi = db_api.get_instance()
fields = {'id': int,
'uuid': utils.uuid_or_none,
'name': utils.str_or_none,
'order': utils.str_or_none,
'family': utils.int_or_none,
'network': utils.ip_str_or_none(),
'prefix': utils.int_or_none,
'controller0_address_id': utils.int_or_none,
'controller1_address_id': utils.int_or_none,
'floating_address_id': utils.int_or_none,
'gateway_address_id': utils.int_or_none,
'controller0_address': utils.ip_str_or_none(),
'controller1_address': utils.ip_str_or_none(),
'floating_address': utils.ip_str_or_none(),
'gateway_address': utils.ip_str_or_none(),
'ranges': list,
}
_foreign_fields = {
'ranges': get_range_values,
'controller0_address': 'controller0_address:address',
'controller1_address': 'controller1_address:address',
'floating_address': 'floating_address:address',
'gateway_address': 'gateway_address:address',
}
@base.remotable_classmethod
def get_by_uuid(cls, context, uuid):
return cls.dbapi.address_pool_get(uuid)
def save_changes(self, context, updates):
self.dbapi.address_pool_update(self.uuid, # pylint: disable=no-member
updates)