Drop timestamping in pollsters
Many of the pollsters define the timestamp individually for each generated sample, which should really be timestamping based on when the data was polled and not when each sample is generated. We need to set the timestamp of the polled data to the timestamp when the polling starts for unity. Previous commit be3f7fb8300e8853ebd35986cdf159422aa247a already unified the timestamp in samples, and now drop the timestamping in pollsters. Change-Id: I9c3047e70fcd6c02278dee91603e2aeb2ca8b8c8 Closes-Bug: #1491509 Implements: blueprint unify-timestamp-of-polled-data
This commit is contained in:
parent
615b1209f0
commit
8dd821a03d
@ -13,7 +13,6 @@
|
|||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.compute import util as compute_util
|
from ceilometer.compute import util as compute_util
|
||||||
from ceilometer import sample
|
from ceilometer import sample
|
||||||
@ -88,7 +87,6 @@ def make_sample_from_instance(instance, name, type, unit, volume,
|
|||||||
user_id=instance.user_id,
|
user_id=instance.user_id,
|
||||||
project_id=instance.tenant_id,
|
project_id=instance.tenant_id,
|
||||||
resource_id=resource_id or instance.id,
|
resource_id=resource_id or instance.id,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=resource_metadata,
|
resource_metadata=resource_metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,8 +12,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from keystoneauth1 import exceptions
|
from keystoneauth1 import exceptions
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
@ -104,8 +102,6 @@ class EnergyPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=None,
|
project_id=None,
|
||||||
resource_id=probe['id'],
|
resource_id=probe['id'],
|
||||||
timestamp=datetime.datetime.fromtimestamp(
|
|
||||||
probe['timestamp']).isoformat(),
|
|
||||||
resource_metadata={}
|
resource_metadata={}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -124,7 +120,5 @@ class PowerPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=None,
|
project_id=None,
|
||||||
resource_id=probe['id'],
|
resource_id=probe['id'],
|
||||||
timestamp=datetime.datetime.fromtimestamp(
|
|
||||||
probe['timestamp']).isoformat(),
|
|
||||||
resource_metadata={}
|
resource_metadata={}
|
||||||
)
|
)
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from oslo_utils import timeutils
|
|
||||||
from six.moves.urllib import parse as urlparse
|
from six.moves.urllib import parse as urlparse
|
||||||
|
|
||||||
from ceilometer import sample
|
from ceilometer import sample
|
||||||
@ -59,7 +58,6 @@ def make_sample_from_host(host_url, name, sample_type, unit, volume,
|
|||||||
user_id=user_id or extra.get('user_id'),
|
user_id=user_id or extra.get('user_id'),
|
||||||
project_id=project_id or extra.get('project_id'),
|
project_id=project_id or extra.get('project_id'),
|
||||||
resource_id=res_id,
|
resource_id=res_id,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=resource_metadata,
|
resource_metadata=resource_metadata,
|
||||||
source='hardware',
|
source='hardware',
|
||||||
)
|
)
|
||||||
|
@ -19,7 +19,6 @@ from __future__ import absolute_import
|
|||||||
|
|
||||||
import glanceclient
|
import glanceclient
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.agent import plugin_base
|
from ceilometer.agent import plugin_base
|
||||||
from ceilometer import keystone_client
|
from ceilometer import keystone_client
|
||||||
@ -110,7 +109,6 @@ class ImagePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=image.owner,
|
project_id=image.owner,
|
||||||
resource_id=image.id,
|
resource_id=image.id,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_image_metadata(image),
|
resource_metadata=self.extract_image_metadata(image),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -127,6 +125,5 @@ class ImageSizePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=image.owner,
|
project_id=image.owner,
|
||||||
resource_id=image.id,
|
resource_id=image.id,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_image_metadata(image),
|
resource_metadata=self.extract_image_metadata(image),
|
||||||
)
|
)
|
||||||
|
@ -16,7 +16,6 @@ import abc
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from ceilometer.agent import plugin_base
|
from ceilometer.agent import plugin_base
|
||||||
@ -89,7 +88,6 @@ class _Base(plugin_base.PollsterBase):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=None,
|
project_id=None,
|
||||||
resource_id=CONF.host,
|
resource_id=CONF.host,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=metadata)
|
resource_metadata=metadata)
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.agent import plugin_base
|
from ceilometer.agent import plugin_base
|
||||||
from ceilometer.i18n import _
|
from ceilometer.i18n import _
|
||||||
@ -112,7 +111,6 @@ class SensorPollster(plugin_base.PollsterBase):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=None,
|
project_id=None,
|
||||||
resource_id=resource_id,
|
resource_id=resource_id,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=metadata)
|
resource_metadata=metadata)
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.i18n import _LW
|
from ceilometer.i18n import _LW
|
||||||
from ceilometer.network.services import base
|
from ceilometer.network.services import base
|
||||||
@ -59,6 +58,5 @@ class FloatingIPPollster(base.BaseServicesPollster):
|
|||||||
user_id=fip.get('user_id'),
|
user_id=fip.get('user_id'),
|
||||||
project_id=fip['tenant_id'],
|
project_id=fip['tenant_id'],
|
||||||
resource_id=fip['id'],
|
resource_id=fip['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(fip)
|
resource_metadata=self.extract_metadata(fip)
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.i18n import _
|
from ceilometer.i18n import _
|
||||||
from ceilometer.network.services import base
|
from ceilometer.network.services import base
|
||||||
@ -58,7 +57,6 @@ class FirewallPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=fw['tenant_id'],
|
project_id=fw['tenant_id'],
|
||||||
resource_id=fw['id'],
|
resource_id=fw['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(fw)
|
resource_metadata=self.extract_metadata(fw)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -92,6 +90,5 @@ class FirewallPolicyPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=fw['tenant_id'],
|
project_id=fw['tenant_id'],
|
||||||
resource_id=fw['id'],
|
resource_id=fw['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(fw)
|
resource_metadata=self.extract_metadata(fw)
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,6 @@ import collections
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from ceilometer.i18n import _
|
from ceilometer.i18n import _
|
||||||
@ -98,7 +97,6 @@ class LBPoolPollster(BaseLBPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=pool['tenant_id'],
|
project_id=pool['tenant_id'],
|
||||||
resource_id=pool['id'],
|
resource_id=pool['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(pool)
|
resource_metadata=self.extract_metadata(pool)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -146,7 +144,6 @@ class LBVipPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=vip['tenant_id'],
|
project_id=vip['tenant_id'],
|
||||||
resource_id=vip['id'],
|
resource_id=vip['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(vip)
|
resource_metadata=self.extract_metadata(vip)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -186,7 +183,6 @@ class LBMemberPollster(BaseLBPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=member['tenant_id'],
|
project_id=member['tenant_id'],
|
||||||
resource_id=member['id'],
|
resource_id=member['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(member)
|
resource_metadata=self.extract_metadata(member)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -217,7 +213,6 @@ class LBHealthMonitorPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=probe['tenant_id'],
|
project_id=probe['tenant_id'],
|
||||||
resource_id=probe['id'],
|
resource_id=probe['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(probe)
|
resource_metadata=self.extract_metadata(probe)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -248,7 +243,6 @@ class _LBStatsPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=pool['tenant_id'],
|
project_id=pool['tenant_id'],
|
||||||
resource_id=pool['id'],
|
resource_id=pool['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=resource_metadata,
|
resource_metadata=resource_metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -377,7 +371,6 @@ def make_sample_from_pool(pool, name, type, unit, volume,
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=pool['tenant_id'],
|
project_id=pool['tenant_id'],
|
||||||
resource_id=pool['id'],
|
resource_id=pool['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=resource_metadata,
|
resource_metadata=resource_metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -423,7 +416,6 @@ class LBListenerPollster(BaseLBPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=listener['tenant_id'],
|
project_id=listener['tenant_id'],
|
||||||
resource_id=listener['id'],
|
resource_id=listener['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(listener)
|
resource_metadata=self.extract_metadata(listener)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -468,6 +460,5 @@ class LBLoadBalancerPollster(BaseLBPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=loadbalancer['tenant_id'],
|
project_id=loadbalancer['tenant_id'],
|
||||||
resource_id=loadbalancer['id'],
|
resource_id=loadbalancer['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(loadbalancer)
|
resource_metadata=self.extract_metadata(loadbalancer)
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
|
|
||||||
from ceilometer.i18n import _
|
from ceilometer.i18n import _
|
||||||
from ceilometer.network.services import base
|
from ceilometer.network.services import base
|
||||||
@ -59,7 +58,6 @@ class VPNServicesPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=vpn['tenant_id'],
|
project_id=vpn['tenant_id'],
|
||||||
resource_id=vpn['id'],
|
resource_id=vpn['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(vpn)
|
resource_metadata=self.extract_metadata(vpn)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -102,6 +100,5 @@ class IPSecConnectionsPollster(base.BaseServicesPollster):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=conn['tenant_id'],
|
project_id=conn['tenant_id'],
|
||||||
resource_id=conn['id'],
|
resource_id=conn['id'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=self.extract_metadata(conn)
|
resource_metadata=self.extract_metadata(conn)
|
||||||
)
|
)
|
||||||
|
@ -86,7 +86,7 @@ class _Base(plugin_base.PollsterBase):
|
|||||||
if not isinstance(data, list):
|
if not isinstance(data, list):
|
||||||
data = [data]
|
data = [data]
|
||||||
for (volume, resource_id,
|
for (volume, resource_id,
|
||||||
resource_metadata, timestamp) in data:
|
resource_metadata) in data:
|
||||||
|
|
||||||
yield sample.Sample(
|
yield sample.Sample(
|
||||||
name=self.meter_name,
|
name=self.meter_name,
|
||||||
@ -96,6 +96,5 @@ class _Base(plugin_base.PollsterBase):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=None,
|
project_id=None,
|
||||||
resource_id=resource_id,
|
resource_id=resource_id,
|
||||||
timestamp=timestamp,
|
|
||||||
resource_metadata=resource_metadata
|
resource_metadata=resource_metadata
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from oslo_utils import timeutils
|
|
||||||
from six.moves.urllib import parse as urlparse
|
from six.moves.urllib import parse as urlparse
|
||||||
|
|
||||||
from ceilometer.network.statistics import driver
|
from ceilometer.network.statistics import driver
|
||||||
@ -104,7 +103,6 @@ class OpencontrailDriver(driver.Driver):
|
|||||||
fqdn_uuid = params.get('fqdn_uuid', ['*'])[0]
|
fqdn_uuid = params.get('fqdn_uuid', ['*'])[0]
|
||||||
virtual_network = params.get('virtual_network', [None])[0]
|
virtual_network = params.get('virtual_network', [None])[0]
|
||||||
|
|
||||||
timestamp = timeutils.utcnow().isoformat()
|
|
||||||
statistics = data['o_client'].networks.get_vm_statistics(fqdn_uuid)
|
statistics = data['o_client'].networks.get_vm_statistics(fqdn_uuid)
|
||||||
if not statistics:
|
if not statistics:
|
||||||
return
|
return
|
||||||
@ -113,7 +111,7 @@ class OpencontrailDriver(driver.Driver):
|
|||||||
for sample in iter(extractor, value, ports_map,
|
for sample in iter(extractor, value, ports_map,
|
||||||
resource, virtual_network):
|
resource, virtual_network):
|
||||||
if sample is not None:
|
if sample is not None:
|
||||||
yield sample + (timestamp, )
|
yield sample
|
||||||
|
|
||||||
def _get_iter(self, meter_name):
|
def _get_iter(self, meter_name):
|
||||||
if meter_name.startswith('switch.port'):
|
if meter_name.startswith('switch.port'):
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
import six
|
import six
|
||||||
from six import moves
|
from six import moves
|
||||||
from six.moves.urllib import parse as urlparse
|
from six.moves.urllib import parse as urlparse
|
||||||
@ -161,9 +160,6 @@ class OpenDayLightDriver(driver.Driver):
|
|||||||
cs.host_tracker.get_active_hosts(container_name))
|
cs.host_tracker.get_active_hosts(container_name))
|
||||||
container_data['inactive_hosts'] = (
|
container_data['inactive_hosts'] = (
|
||||||
cs.host_tracker.get_inactive_hosts(container_name))
|
cs.host_tracker.get_inactive_hosts(container_name))
|
||||||
|
|
||||||
container_data['timestamp'] = timeutils.utcnow().isoformat()
|
|
||||||
|
|
||||||
data[container_name] = container_data
|
data[container_name] = container_data
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.exception(_('Request failed to connect to OpenDaylight'
|
LOG.exception(_('Request failed to connect to OpenDaylight'
|
||||||
@ -199,7 +195,6 @@ class OpenDayLightDriver(driver.Driver):
|
|||||||
|
|
||||||
samples = []
|
samples = []
|
||||||
for name, value in six.iteritems(data):
|
for name, value in six.iteritems(data):
|
||||||
timestamp = value['timestamp']
|
|
||||||
for sample in iter(extractor, value):
|
for sample in iter(extractor, value):
|
||||||
if sample is not None:
|
if sample is not None:
|
||||||
# set controller name and container name
|
# set controller name and container name
|
||||||
@ -207,7 +202,7 @@ class OpenDayLightDriver(driver.Driver):
|
|||||||
sample[2]['controller'] = 'OpenDaylight'
|
sample[2]['controller'] = 'OpenDaylight'
|
||||||
sample[2]['container'] = name
|
sample[2]['container'] = name
|
||||||
|
|
||||||
samples.append(sample + (timestamp, ))
|
samples.append(sample)
|
||||||
|
|
||||||
return samples
|
return samples
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
from keystoneauth1 import exceptions
|
from keystoneauth1 import exceptions
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
import six.moves.urllib.parse as urlparse
|
import six.moves.urllib.parse as urlparse
|
||||||
|
|
||||||
from ceilometer.agent import plugin_base
|
from ceilometer.agent import plugin_base
|
||||||
@ -117,7 +116,6 @@ class ContainersObjectsPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant + '/' + it.name,
|
resource_id=tenant + '/' + it.name,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -137,7 +135,6 @@ class ContainersSizePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant + '/' + it.name,
|
resource_id=tenant + '/' + it.name,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -156,7 +153,6 @@ class ObjectsSizePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -175,7 +171,6 @@ class ObjectsPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -192,7 +187,6 @@ class ObjectsContainersPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -212,6 +206,5 @@ class UsagePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
@ -20,7 +20,6 @@ from __future__ import absolute_import
|
|||||||
from keystoneauth1 import exceptions
|
from keystoneauth1 import exceptions
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from oslo_utils import timeutils
|
|
||||||
import six.moves.urllib.parse as urlparse
|
import six.moves.urllib.parse as urlparse
|
||||||
from swiftclient import client as swift
|
from swiftclient import client as swift
|
||||||
|
|
||||||
@ -115,7 +114,6 @@ class ObjectsPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -134,7 +132,6 @@ class ObjectsSizePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -153,7 +150,6 @@ class ObjectsContainersPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant,
|
resource_id=tenant,
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -177,7 +173,6 @@ class ContainersObjectsPollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant + '/' + container['name'],
|
resource_id=tenant + '/' + container['name'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -201,6 +196,5 @@ class ContainersSizePollster(_Base):
|
|||||||
user_id=None,
|
user_id=None,
|
||||||
project_id=tenant,
|
project_id=tenant,
|
||||||
resource_id=tenant + '/' + container['name'],
|
resource_id=tenant + '/' + container['name'],
|
||||||
timestamp=timeutils.utcnow().isoformat(),
|
|
||||||
resource_metadata=None,
|
resource_metadata=None,
|
||||||
)
|
)
|
||||||
|
@ -12,8 +12,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import datetime
|
|
||||||
|
|
||||||
from keystoneauth1 import exceptions
|
from keystoneauth1 import exceptions
|
||||||
import mock
|
import mock
|
||||||
from oslotest import base
|
from oslotest import base
|
||||||
@ -107,10 +105,6 @@ class TestEnergyPollster(_BaseTestCase):
|
|||||||
samples_by_name = dict((s.resource_id, s) for s in samples)
|
samples_by_name = dict((s.resource_id, s) for s in samples)
|
||||||
for name, probe in PROBE_DICT['probes'].items():
|
for name, probe in PROBE_DICT['probes'].items():
|
||||||
sample = samples_by_name[name]
|
sample = samples_by_name[name]
|
||||||
expected = datetime.datetime.fromtimestamp(
|
|
||||||
probe['timestamp']
|
|
||||||
).isoformat()
|
|
||||||
self.assertEqual(expected, sample.timestamp)
|
|
||||||
self.assertEqual(probe[self.unit], sample.volume)
|
self.assertEqual(probe[self.unit], sample.volume)
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,8 +135,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},),
|
||||||
mock.ANY),
|
|
||||||
(13,
|
(13,
|
||||||
'96d49cc3-4e01-40ce-9cac-c0e32642a442',
|
'96d49cc3-4e01-40ce-9cac-c0e32642a442',
|
||||||
{'device_owner_id':
|
{'device_owner_id':
|
||||||
@ -145,8 +144,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.receive.packets', expected,
|
self._test_meter('switch.port.receive.packets', expected,
|
||||||
self.fake_port_stats_with_node())
|
self.fake_port_stats_with_node())
|
||||||
|
|
||||||
@ -159,8 +157,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.receive.packets', expected)
|
self._test_meter('switch.port.receive.packets', expected)
|
||||||
|
|
||||||
def test_switch_port_transmit_packets(self):
|
def test_switch_port_transmit_packets(self):
|
||||||
@ -172,8 +169,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.transmit.packets', expected)
|
self._test_meter('switch.port.transmit.packets', expected)
|
||||||
|
|
||||||
def test_switch_port_receive_bytes(self):
|
def test_switch_port_receive_bytes(self):
|
||||||
@ -185,8 +181,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.receive.bytes', expected)
|
self._test_meter('switch.port.receive.bytes', expected)
|
||||||
|
|
||||||
def test_switch_port_transmit_bytes(self):
|
def test_switch_port_transmit_bytes(self):
|
||||||
@ -198,8 +193,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'if_stats_list'},
|
'resource': 'if_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.transmit.bytes', expected)
|
self._test_meter('switch.port.transmit.bytes', expected)
|
||||||
|
|
||||||
def test_switch_port_receive_packets_fip(self):
|
def test_switch_port_receive_packets_fip(self):
|
||||||
@ -212,8 +206,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'fip_stats_list'},
|
'resource': 'fip_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.receive.packets', expected)
|
self._test_meter('switch.port.receive.packets', expected)
|
||||||
|
|
||||||
def test_switch_port_transmit_packets_fip(self):
|
def test_switch_port_transmit_packets_fip(self):
|
||||||
@ -226,8 +219,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'fip_stats_list'},
|
'resource': 'fip_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.transmit.packets', expected)
|
self._test_meter('switch.port.transmit.packets', expected)
|
||||||
|
|
||||||
def test_switch_port_receive_bytes_fip(self):
|
def test_switch_port_receive_bytes_fip(self):
|
||||||
@ -240,8 +232,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'fip_stats_list'},
|
'resource': 'fip_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.receive.bytes', expected)
|
self._test_meter('switch.port.receive.bytes', expected)
|
||||||
|
|
||||||
def test_switch_port_transmit_bytes_fip(self):
|
def test_switch_port_transmit_bytes_fip(self):
|
||||||
@ -254,8 +245,7 @@ class TestOpencontrailDriver(base.BaseTestCase):
|
|||||||
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
'network_id': '298a3088-a446-4d5a-bad8-f92ecacd786b',
|
||||||
'project': 'demo',
|
'project': 'demo',
|
||||||
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
'project_id': '89271fa581ab4380bf172f868c3615f9',
|
||||||
'resource': 'fip_stats_list'},
|
'resource': 'fip_stats_list'},)]
|
||||||
mock.ANY)]
|
|
||||||
self._test_meter('switch.port.transmit.bytes', expected)
|
self._test_meter('switch.port.transmit.bytes', expected)
|
||||||
|
|
||||||
def test_switch_port_transmit_bytes_non_existing_network(self):
|
def test_switch_port_transmit_bytes_non_existing_network(self):
|
||||||
|
@ -122,7 +122,6 @@ class _Base(base.BaseTestCase):
|
|||||||
self.assertEqual(expected[0], sample[0]) # check volume
|
self.assertEqual(expected[0], sample[0]) # check volume
|
||||||
self.assertEqual(expected[1], sample[1]) # check resource id
|
self.assertEqual(expected[1], sample[1]) # check resource id
|
||||||
self.assertEqual(expected[2], sample[2]) # check resource metadata
|
self.assertEqual(expected[2], sample[2]) # check resource metadata
|
||||||
self.assertIsNotNone(sample[3]) # timestamp
|
|
||||||
|
|
||||||
|
|
||||||
class TestOpenDayLightDriverSpecial(_Base):
|
class TestOpenDayLightDriverSpecial(_Base):
|
||||||
|
@ -105,75 +105,65 @@ class TestBaseGetSamples(base.BaseTestCase):
|
|||||||
|
|
||||||
return [v for v in self.pollster.get_samples(self, {}, resources)]
|
return [v for v in self.pollster.get_samples(self, {}, resources)]
|
||||||
|
|
||||||
def _assert_sample(self, s, volume, resource_id, resource_metadata,
|
def _assert_sample(self, s, volume, resource_id, resource_metadata):
|
||||||
timestamp):
|
self.assertEqual('foo', s.name)
|
||||||
self.assertEqual('foo', s.name)
|
self.assertEqual(sample.TYPE_CUMULATIVE, s.type)
|
||||||
self.assertEqual(sample.TYPE_CUMULATIVE, s.type)
|
self.assertEqual('bar', s.unit)
|
||||||
self.assertEqual('bar', s.unit)
|
self.assertEqual(volume, s.volume)
|
||||||
self.assertEqual(volume, s.volume)
|
self.assertIsNone(s.user_id)
|
||||||
self.assertIsNone(s.user_id)
|
self.assertIsNone(s.project_id)
|
||||||
self.assertIsNone(s.project_id)
|
self.assertEqual(resource_id, s.resource_id)
|
||||||
self.assertEqual(resource_id, s.resource_id)
|
self.assertEqual(resource_metadata, s.resource_metadata)
|
||||||
self.assertEqual(timestamp, s.timestamp)
|
|
||||||
self.assertEqual(resource_metadata, s.resource_metadata)
|
|
||||||
|
|
||||||
def test_get_samples_one_driver_one_resource(self):
|
def test_get_samples_one_driver_one_resource(self):
|
||||||
times = self._make_timestamps(2)
|
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
(2, 'b', None))
|
||||||
times[0]),
|
|
||||||
(2, 'b', None, times[1]))
|
|
||||||
|
|
||||||
self._setup_ext_mgr(http=fake_driver())
|
self._setup_ext_mgr(http=fake_driver())
|
||||||
|
|
||||||
samples = self._get_samples('http://foo')
|
samples = self._get_samples('http://foo')
|
||||||
|
|
||||||
self.assertEqual(1, len(samples))
|
self.assertEqual(1, len(samples))
|
||||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, times[0])
|
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||||
|
|
||||||
def test_get_samples_one_driver_two_resource(self):
|
def test_get_samples_one_driver_two_resource(self):
|
||||||
times = self._make_timestamps(3)
|
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||||
fake_driver = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
(2, 'b', None),
|
||||||
times[0]),
|
(3, 'c', None))
|
||||||
(2, 'b', None, times[1]),
|
|
||||||
(3, 'c', None, times[2]))
|
|
||||||
|
|
||||||
self._setup_ext_mgr(http=fake_driver())
|
self._setup_ext_mgr(http=fake_driver())
|
||||||
|
|
||||||
samples = self._get_samples('http://foo', 'http://bar')
|
samples = self._get_samples('http://foo', 'http://bar')
|
||||||
|
|
||||||
self.assertEqual(2, len(samples))
|
self.assertEqual(2, len(samples))
|
||||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, times[0])
|
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||||
self._assert_sample(samples[1], 2, 'b', {}, times[1])
|
self._assert_sample(samples[1], 2, 'b', {})
|
||||||
|
|
||||||
def test_get_samples_two_driver_one_resource(self):
|
def test_get_samples_two_driver_one_resource(self):
|
||||||
times = self._make_timestamps(4)
|
fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'},),
|
||||||
fake_driver1 = self._make_fake_driver((1, 'a', {'spam': 'egg'},
|
(2, 'b', None))
|
||||||
times[0]),
|
|
||||||
(2, 'b', None), times[1])
|
|
||||||
|
|
||||||
fake_driver2 = self._make_fake_driver((11, 'A', None, times[2]),
|
fake_driver2 = self._make_fake_driver((11, 'A', None),
|
||||||
(12, 'B', None, times[3]))
|
(12, 'B', None))
|
||||||
|
|
||||||
self._setup_ext_mgr(http=fake_driver1(), https=fake_driver2())
|
self._setup_ext_mgr(http=fake_driver1(), https=fake_driver2())
|
||||||
|
|
||||||
samples = self._get_samples('http://foo')
|
samples = self._get_samples('http://foo')
|
||||||
|
|
||||||
self.assertEqual(1, len(samples))
|
self.assertEqual(1, len(samples))
|
||||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, times[0])
|
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||||
|
|
||||||
def test_get_samples_multi_samples(self):
|
def test_get_samples_multi_samples(self):
|
||||||
times = self._make_timestamps(2)
|
fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'},),
|
||||||
fake_driver = self._make_fake_driver([(1, 'a', {'spam': 'egg'},
|
(2, 'b', None)])
|
||||||
times[0]),
|
|
||||||
(2, 'b', None, times[1])])
|
|
||||||
|
|
||||||
self._setup_ext_mgr(http=fake_driver())
|
self._setup_ext_mgr(http=fake_driver())
|
||||||
|
|
||||||
samples = self._get_samples('http://foo')
|
samples = self._get_samples('http://foo')
|
||||||
|
|
||||||
self.assertEqual(2, len(samples))
|
self.assertEqual(2, len(samples))
|
||||||
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'}, times[0])
|
self._assert_sample(samples[0], 1, 'a', {'spam': 'egg'})
|
||||||
self._assert_sample(samples[1], 2, 'b', {}, times[1])
|
self._assert_sample(samples[1], 2, 'b', {})
|
||||||
|
|
||||||
def test_get_samples_return_none(self):
|
def test_get_samples_return_none(self):
|
||||||
fake_driver = self._make_fake_driver(None)
|
fake_driver = self._make_fake_driver(None)
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- >
|
||||||
|
[`bug 1491509 <https://bugs.launchpad.net/ceilometer/+bug/1491509>`_]
|
||||||
|
Patch to unify timestamp in samples polled by pollsters. Set the time
|
||||||
|
point polling starts as timestamp of samples, and drop timetamping in
|
||||||
|
pollsters.
|
Loading…
x
Reference in New Issue
Block a user