neutron-lib/neutron_lib/api/definitions/agent_resources_synced.py
Bence Romsics 5dcccd2c66 New agent attribute: resources_synced
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)
2019-01-23 16:27:47 +01:00

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 = []