neutron/neutron/extensions/timestamp_core.py
ZhaoBo 4c2c983618 Add timestamp for neutron core resources
Currently, neutron core resources (like net, subnet, port and subnetpool)
do not save time-stamps upon their creation and updation. This
information can be critical for debugging purposes.

This patch introduces a new extension called "timestamp" extending existing
the neutron core resources to allow their creation and modification times
to be record. Now this patch add this resource schema and the functions which
listen db events to add timestamp fields.

APIImpact
DocImpact: Neutron core resources now contain 'timestamp' fields like
           'created_at' and 'updated_at'

Change-Id: I24114b464403435d9c1e1e123d2bc2f37c8fc6ea
Partially-Implements: blueprint add-port-timestamp
2016-03-05 02:17:35 +00:00

66 lines
2.0 KiB
Python

# Copyright 2015 HuaWei Technologies.
#
# 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.api import extensions
# Attribute Map
CREATED = 'created_at'
UPDATED = 'updated_at'
TIMESTAMP_BODY = {
CREATED: {'allow_post': False, 'allow_put': False,
'is_visible': True, 'default': None
},
UPDATED: {'allow_post': False, 'allow_put': False,
'is_visible': True, 'default': None
},
}
EXTENDED_ATTRIBUTES_2_0 = {
'networks': TIMESTAMP_BODY,
'subnets': TIMESTAMP_BODY,
'ports': TIMESTAMP_BODY,
'subnetpools': TIMESTAMP_BODY,
}
class Timestamp_core(extensions.ExtensionDescriptor):
"""Extension class supporting timestamp.
This class is used by neutron's extension framework for adding timestamp
to neutron core resources.
"""
@classmethod
def get_name(cls):
return "Time Stamp Fields addition for core resources"
@classmethod
def get_alias(cls):
return "timestamp_core"
@classmethod
def get_description(cls):
return ("This extension can be used for recording "
"create/update timestamps for core resources "
"like port/subnet/network/subnetpools.")
@classmethod
def get_updated(cls):
return "2016-03-01T10:00:00-00:00"
def get_extended_resources(self, version):
if version == "2.0":
return EXTENDED_ATTRIBUTES_2_0
else:
return {}