5dcccd2c66
Agents supporting the guaranteed minimum bandwidth feature need to share their resource view with neutron-server and in turn with Placement too. The resource information is synchronized to neutron-server via the periodic agent heartbeat therefore transient synchronization errors are fixed by the next heartbeat. But synchronization to Placement is not done periodically, but on a (mostly) on demand basis. Therefore to fix transient errors of the synchronization to Placement we must remember the success/failure of the last synchronization attempt. This change introduces a new boolean agent attribute: resources_synced This attribute is: * admin-only (just like the whole agent extension) * read-only (it is only updated by the internal synchronization process) If this attribute is not set then no synchronization to Placement ever happened (which is the natural state of agents not tracking their resources via Placement). If it is False, then another successful synchronization is needed before the contents of Placement can be considered up to date. If it is True, then this agent's resources are up to date in Placement. Change-Id: Ia3dea82fabe5e068192fbe931db8d341d3d37149 Needed-By: https://review.openstack.org/630999 Partial-Bug: #1578989 See-Also: https://review.openstack.org/502306 (nova spec) See-Also: https://review.openstack.org/508149 (neutron spec)
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
# Copyright (c) 2018 Ericsson
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from neutron_lib.api.definitions import agent
|
|
from neutron_lib import constants
|
|
|
|
|
|
ALIAS = 'agent-resources-synced'
|
|
IS_SHIM_EXTENSION = False
|
|
IS_STANDARD_ATTR_EXTENSION = False
|
|
NAME = "Agent's Resource View Synced to Placement"
|
|
DESCRIPTION = 'Stores success/failure of last sync to Placement'
|
|
UPDATED_TIMESTAMP = '2018-12-19T00:00:00-00:00'
|
|
RESOURCE_NAME = agent.RESOURCE_NAME
|
|
COLLECTION_NAME = agent.COLLECTION_NAME
|
|
RESOURCES_SYNCED = 'resources_synced'
|
|
|
|
RESOURCE_ATTRIBUTE_MAP = {
|
|
COLLECTION_NAME: {
|
|
RESOURCES_SYNCED: {
|
|
'allow_post': False,
|
|
'allow_put': False,
|
|
'default': constants.ATTR_NOT_SPECIFIED,
|
|
'is_visible': True,
|
|
}
|
|
}
|
|
}
|
|
|
|
SUB_RESOURCE_ATTRIBUTE_MAP = None
|
|
ACTION_MAP = {}
|
|
ACTION_STATUS = {}
|
|
REQUIRED_EXTENSIONS = [agent.ALIAS]
|
|
OPTIONAL_EXTENSIONS = []
|