Relocate alarm service into a submodule
This patch moves the resources of the alarm service (aodh) into a submodule of the telemetry, as a service that can be addressed using 'alarm' as service type. Change-Id: I0c2521443225e41b4090ee7ecb5f095072b1fc95
This commit is contained in:
		@@ -68,6 +68,7 @@ from openstack import module_loader
 | 
				
			|||||||
from openstack.network import network_service
 | 
					from openstack.network import network_service
 | 
				
			||||||
from openstack.object_store import object_store_service
 | 
					from openstack.object_store import object_store_service
 | 
				
			||||||
from openstack.orchestration import orchestration_service
 | 
					from openstack.orchestration import orchestration_service
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm import alarm_service
 | 
				
			||||||
from openstack.telemetry import telemetry_service
 | 
					from openstack.telemetry import telemetry_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_logger = logging.getLogger(__name__)
 | 
					_logger = logging.getLogger(__name__)
 | 
				
			||||||
@@ -89,23 +90,22 @@ class Profile(object):
 | 
				
			|||||||
        'compute', etc.
 | 
					        'compute', etc.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        self._services = {}
 | 
					        self._services = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._add_service(alarm_service.AlarmService(version="v2"))
 | 
				
			||||||
 | 
					        self._add_service(block_store_service.BlockStoreService(version="v2"))
 | 
				
			||||||
        self._add_service(cluster_service.ClusterService(version="v1"))
 | 
					        self._add_service(cluster_service.ClusterService(version="v1"))
 | 
				
			||||||
        self._add_service(compute_service.ComputeService(version="v2"))
 | 
					        self._add_service(compute_service.ComputeService(version="v2"))
 | 
				
			||||||
        self._add_service(database_service.DatabaseService(version="v1"))
 | 
					        self._add_service(database_service.DatabaseService(version="v1"))
 | 
				
			||||||
        self._add_service(identity_service.IdentityService(version="v3"))
 | 
					        self._add_service(identity_service.IdentityService(version="v3"))
 | 
				
			||||||
        self._add_service(image_service.ImageService(version="v2"))
 | 
					        self._add_service(image_service.ImageService(version="v2"))
 | 
				
			||||||
 | 
					        self._add_service(key_manager_service.KeyManagerService(version="v1"))
 | 
				
			||||||
 | 
					        self._add_service(message_service.MessageService(version="v1"))
 | 
				
			||||||
        self._add_service(network_service.NetworkService(version="v2"))
 | 
					        self._add_service(network_service.NetworkService(version="v2"))
 | 
				
			||||||
        self._add_service(
 | 
					        self._add_service(
 | 
				
			||||||
            object_store_service.ObjectStoreService(version="v1"))
 | 
					            object_store_service.ObjectStoreService(version="v1"))
 | 
				
			||||||
        self._add_service(
 | 
					        self._add_service(
 | 
				
			||||||
            orchestration_service.OrchestrationService(version="v1"))
 | 
					            orchestration_service.OrchestrationService(version="v1"))
 | 
				
			||||||
        self._add_service(key_manager_service.KeyManagerService(version="v1"))
 | 
					 | 
				
			||||||
        self._add_service(telemetry_service.TelemetryService(version="v1"))
 | 
					        self._add_service(telemetry_service.TelemetryService(version="v1"))
 | 
				
			||||||
        self._add_service(block_store_service.BlockStoreService(version="v2"))
 | 
					 | 
				
			||||||
        self._add_service(message_service.MessageService(version="v1"))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # NOTE: The Metric service is not added here as it currently
 | 
					 | 
				
			||||||
        # only retrieves the /capabilities API.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if plugins:
 | 
					        if plugins:
 | 
				
			||||||
            for plugin in plugins:
 | 
					            for plugin in plugins:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -188,4 +188,4 @@ class ServiceFilter(dict):
 | 
				
			|||||||
        object store where the service type is `object-store` and the module
 | 
					        object store where the service type is `object-store` and the module
 | 
				
			||||||
        is `object_store`.
 | 
					        is `object_store`.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        return self.__class__.__module__.split('.')[1]
 | 
					        return self.__class__.__module__.split('.')[-2]
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										0
									
								
								openstack/telemetry/alarm/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								openstack/telemetry/alarm/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										24
									
								
								openstack/telemetry/alarm/alarm_service.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								openstack/telemetry/alarm/alarm_service.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					# 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 openstack import service_filter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AlarmService(service_filter.ServiceFilter):
 | 
				
			||||||
 | 
					    """The alarm service."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    valid_versions = [service_filter.ValidVersion('v2')]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, version=None):
 | 
				
			||||||
 | 
					        """Create an alarm service."""
 | 
				
			||||||
 | 
					        super(AlarmService, self).__init__(service_type='alarming',
 | 
				
			||||||
 | 
					                                           version=version)
 | 
				
			||||||
							
								
								
									
										0
									
								
								openstack/telemetry/alarm/v2/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								openstack/telemetry/alarm/v2/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										129
									
								
								openstack/telemetry/alarm/v2/_proxy.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								openstack/telemetry/alarm/v2/_proxy.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					# 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 openstack import proxy
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm.v2 import alarm as _alarm
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm.v2 import alarm_change as _alarm_change
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Proxy(proxy.BaseProxy):
 | 
				
			||||||
 | 
					    """.. caution:: This API is a work in progress and is subject to change."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def create_alarm(self, **attrs):
 | 
				
			||||||
 | 
					        """Create a new alarm from attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param dict attrs: Keyword arguments which will be used to create
 | 
				
			||||||
 | 
					                           a :class:`~openstack.telemetry.v2.alarm.Alarm`,
 | 
				
			||||||
 | 
					                           comprised of the properties on the Alarm class.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: The results of alarm creation
 | 
				
			||||||
 | 
					        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return self._create(_alarm.Alarm, **attrs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def delete_alarm(self, alarm, ignore_missing=True):
 | 
				
			||||||
 | 
					        """Delete an alarm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param alarm: The value can be either the ID of an alarm or a
 | 
				
			||||||
 | 
					                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
				
			||||||
 | 
					        :param bool ignore_missing: When set to ``False``
 | 
				
			||||||
 | 
					                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
				
			||||||
 | 
					                    raised when the alarm does not exist.
 | 
				
			||||||
 | 
					                    When set to ``True``, no exception will be set when
 | 
				
			||||||
 | 
					                    attempting to delete a nonexistent alarm.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: ``None``
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        self._delete(_alarm.Alarm, alarm, ignore_missing=ignore_missing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def find_alarm(self, name_or_id, ignore_missing=True):
 | 
				
			||||||
 | 
					        """Find a single alarm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param name_or_id: The name or ID of a alarm.
 | 
				
			||||||
 | 
					        :param bool ignore_missing: When set to ``False``
 | 
				
			||||||
 | 
					                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
				
			||||||
 | 
					                    raised when the resource does not exist.
 | 
				
			||||||
 | 
					                    When set to ``True``, None will be returned when
 | 
				
			||||||
 | 
					                    attempting to find a nonexistent resource.
 | 
				
			||||||
 | 
					        :returns: One :class:`~openstack.telemetry.v2.alarm.Alarm` or None
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return self._find(_alarm.Alarm, name_or_id,
 | 
				
			||||||
 | 
					                          ignore_missing=ignore_missing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_alarm(self, alarm):
 | 
				
			||||||
 | 
					        """Get a single alarm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param alarm: The value can be the ID of an alarm or a
 | 
				
			||||||
 | 
					                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: One :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
				
			||||||
 | 
					        :raises: :class:`~openstack.exceptions.ResourceNotFound`
 | 
				
			||||||
 | 
					                 when no resource can be found.
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return self._get(_alarm.Alarm, alarm)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def alarms(self, **query):
 | 
				
			||||||
 | 
					        """Return a generator of alarms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param kwargs \*\*query: Optional query parameters to be sent to limit
 | 
				
			||||||
 | 
					                                 the resources being returned.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: A generator of alarm objects
 | 
				
			||||||
 | 
					        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        # TODO(Qiming): Check the alarm service API docs/code to verify if
 | 
				
			||||||
 | 
					        #               the parameters need a change.
 | 
				
			||||||
 | 
					        return self._list(_alarm.Alarm, paginated=False, **query)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def update_alarm(self, alarm, **attrs):
 | 
				
			||||||
 | 
					        """Update a alarm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param alarm: Either the id of a alarm or a
 | 
				
			||||||
 | 
					                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
				
			||||||
 | 
					        :attrs kwargs: The attributes to update on the alarm represented
 | 
				
			||||||
 | 
					                       by ``value``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: The updated alarm
 | 
				
			||||||
 | 
					        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return self._update(_alarm.Alarm, alarm, **attrs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def find_alarm_change(self, name_or_id, ignore_missing=True):
 | 
				
			||||||
 | 
					        """Find a single alarm change
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param name_or_id: The name or ID of a alarm change.
 | 
				
			||||||
 | 
					        :param bool ignore_missing: When set to ``False``
 | 
				
			||||||
 | 
					                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
				
			||||||
 | 
					                    raised when the resource does not exist.
 | 
				
			||||||
 | 
					                    When set to ``True``, None will be returned when
 | 
				
			||||||
 | 
					                    attempting to find a nonexistent resource.
 | 
				
			||||||
 | 
					        :returns: One :class:`~openstack.telemetry.v2.alarm_change.AlarmChange`
 | 
				
			||||||
 | 
					                  or None
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        return self._find(_alarm_change.AlarmChange, name_or_id,
 | 
				
			||||||
 | 
					                          ignore_missing=ignore_missing)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def alarm_changes(self, alarm, **query):
 | 
				
			||||||
 | 
					        """Return a generator of alarm changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :param alarm: Alarm resource or id for alarm.
 | 
				
			||||||
 | 
					        :param kwargs \*\*query: Optional query parameters to be sent to limit
 | 
				
			||||||
 | 
					                                 the resources being returned.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        :returns: A generator of alarm change objects
 | 
				
			||||||
 | 
					        :rtype: :class:`~openstack.telemetry.v2.alarm_change.AlarmChange`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        # TODO(Qiming): Check the alarm service API docs/code to verify if
 | 
				
			||||||
 | 
					        #               the parameters need a change.
 | 
				
			||||||
 | 
					        alarm_id = _alarm.Alarm.from_id(alarm).id
 | 
				
			||||||
 | 
					        return self._list(_alarm_change.AlarmChange, paginated=False,
 | 
				
			||||||
 | 
					                          path_args={'alarm_id': alarm_id}, **query)
 | 
				
			||||||
@@ -11,7 +11,7 @@
 | 
				
			|||||||
# under the License.
 | 
					# under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack import resource
 | 
					from openstack import resource
 | 
				
			||||||
from openstack.telemetry import telemetry_service
 | 
					from openstack.telemetry.alarm import alarm_service
 | 
				
			||||||
from openstack import utils
 | 
					from openstack import utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -19,7 +19,7 @@ class Alarm(resource.Resource):
 | 
				
			|||||||
    """.. caution:: This API is a work in progress and is subject to change."""
 | 
					    """.. caution:: This API is a work in progress and is subject to change."""
 | 
				
			||||||
    id_attribute = 'alarm_id'
 | 
					    id_attribute = 'alarm_id'
 | 
				
			||||||
    base_path = '/alarms'
 | 
					    base_path = '/alarms'
 | 
				
			||||||
    service = telemetry_service.TelemetryService()
 | 
					    service = alarm_service.AlarmService()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Supported Operations
 | 
					    # Supported Operations
 | 
				
			||||||
    allow_create = True
 | 
					    allow_create = True
 | 
				
			||||||
@@ -55,6 +55,7 @@ class Alarm(resource.Resource):
 | 
				
			|||||||
    #: The state off the alarm
 | 
					    #: The state off the alarm
 | 
				
			||||||
    state = resource.prop('state')
 | 
					    state = resource.prop('state')
 | 
				
			||||||
    #: The timestamp of the last alarm state change.
 | 
					    #: The timestamp of the last alarm state change.
 | 
				
			||||||
 | 
					    #: *Type: ISO 8601 formatted string*
 | 
				
			||||||
    state_changed_at = resource.prop('state_timestamp')
 | 
					    state_changed_at = resource.prop('state_timestamp')
 | 
				
			||||||
    # TODO(briancurtin): undocumented
 | 
					    # TODO(briancurtin): undocumented
 | 
				
			||||||
    threshold_rule = resource.prop('threshold_rule', type=dict)
 | 
					    threshold_rule = resource.prop('threshold_rule', type=dict)
 | 
				
			||||||
@@ -63,6 +64,7 @@ class Alarm(resource.Resource):
 | 
				
			|||||||
    #: Explicit type specifier to select which rule to follow
 | 
					    #: Explicit type specifier to select which rule to follow
 | 
				
			||||||
    type = resource.prop('type')
 | 
					    type = resource.prop('type')
 | 
				
			||||||
    #: The timestamp of the last alarm definition update.
 | 
					    #: The timestamp of the last alarm definition update.
 | 
				
			||||||
 | 
					    #: *Type: ISO 8601 formatted string*
 | 
				
			||||||
    updated_at = resource.prop('timestamp')
 | 
					    updated_at = resource.prop('timestamp')
 | 
				
			||||||
    #: The ID of the user who created the alarm
 | 
					    #: The ID of the user who created the alarm
 | 
				
			||||||
    user_id = resource.prop('user_id')
 | 
					    user_id = resource.prop('user_id')
 | 
				
			||||||
@@ -70,7 +72,8 @@ class Alarm(resource.Resource):
 | 
				
			|||||||
    def change_state(self, session, next_state):
 | 
					    def change_state(self, session, next_state):
 | 
				
			||||||
        """Set the state of an alarm.
 | 
					        """Set the state of an alarm.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
           The next_state may be one of: 'ok' 'insufficient data' 'alarm'
 | 
					        :param next_state: The valid values can be one of: ``ok``, ``alarm``,
 | 
				
			||||||
 | 
					                           ``insufficient data``.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        url = utils.urljoin(self.base_path, self.id, 'state')
 | 
					        url = utils.urljoin(self.base_path, self.id, 'state')
 | 
				
			||||||
        resp = session.put(url, endpoint_filter=self.service, json=next_state)
 | 
					        resp = session.put(url, endpoint_filter=self.service, json=next_state)
 | 
				
			||||||
@@ -11,7 +11,7 @@
 | 
				
			|||||||
# under the License.
 | 
					# under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack import resource
 | 
					from openstack import resource
 | 
				
			||||||
from openstack.telemetry import telemetry_service
 | 
					from openstack.telemetry.alarm import alarm_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AlarmChange(resource.Resource):
 | 
					class AlarmChange(resource.Resource):
 | 
				
			||||||
@@ -19,7 +19,7 @@ class AlarmChange(resource.Resource):
 | 
				
			|||||||
    id_attribute = 'event_id'
 | 
					    id_attribute = 'event_id'
 | 
				
			||||||
    resource_key = 'alarm_change'
 | 
					    resource_key = 'alarm_change'
 | 
				
			||||||
    base_path = '/alarms/%(alarm_id)s/history'
 | 
					    base_path = '/alarms/%(alarm_id)s/history'
 | 
				
			||||||
    service = telemetry_service.TelemetryService()
 | 
					    service = alarm_service.AlarmService()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Supported Operations
 | 
					    # Supported Operations
 | 
				
			||||||
    allow_list = True
 | 
					    allow_list = True
 | 
				
			||||||
@@ -36,6 +36,7 @@ class AlarmChange(resource.Resource):
 | 
				
			|||||||
    #: The project ID of the initiating identity
 | 
					    #: The project ID of the initiating identity
 | 
				
			||||||
    project_id = resource.prop('project_id')
 | 
					    project_id = resource.prop('project_id')
 | 
				
			||||||
    #: The time/date of the alarm change.
 | 
					    #: The time/date of the alarm change.
 | 
				
			||||||
 | 
					    #: *Type: ISO 8601 formatted string*
 | 
				
			||||||
    triggered_at = resource.prop('timestamp')
 | 
					    triggered_at = resource.prop('timestamp')
 | 
				
			||||||
    #: The type of change
 | 
					    #: The type of change
 | 
				
			||||||
    type = resource.prop('type')
 | 
					    type = resource.prop('type')
 | 
				
			||||||
@@ -11,8 +11,6 @@
 | 
				
			|||||||
# under the License.
 | 
					# under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack import proxy
 | 
					from openstack import proxy
 | 
				
			||||||
from openstack.telemetry.v2 import alarm as _alarm
 | 
					 | 
				
			||||||
from openstack.telemetry.v2 import alarm_change as _alarm_change
 | 
					 | 
				
			||||||
from openstack.telemetry.v2 import capability
 | 
					from openstack.telemetry.v2 import capability
 | 
				
			||||||
from openstack.telemetry.v2 import meter as _meter
 | 
					from openstack.telemetry.v2 import meter as _meter
 | 
				
			||||||
from openstack.telemetry.v2 import resource as _resource
 | 
					from openstack.telemetry.v2 import resource as _resource
 | 
				
			||||||
@@ -23,112 +21,6 @@ from openstack.telemetry.v2 import statistics
 | 
				
			|||||||
class Proxy(proxy.BaseProxy):
 | 
					class Proxy(proxy.BaseProxy):
 | 
				
			||||||
    """.. caution:: This API is a work in progress and is subject to change."""
 | 
					    """.. caution:: This API is a work in progress and is subject to change."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create_alarm(self, **attrs):
 | 
					 | 
				
			||||||
        """Create a new alarm from attributes
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param dict attrs: Keyword arguments which will be used to create
 | 
					 | 
				
			||||||
                           a :class:`~openstack.telemetry.v2.alarm.Alarm`,
 | 
					 | 
				
			||||||
                           comprised of the properties on the Alarm class.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: The results of alarm creation
 | 
					 | 
				
			||||||
        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._create(_alarm.Alarm, **attrs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def delete_alarm(self, alarm, ignore_missing=True):
 | 
					 | 
				
			||||||
        """Delete an alarm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param alarm: The value can be either the ID of an alarm or a
 | 
					 | 
				
			||||||
                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
					 | 
				
			||||||
        :param bool ignore_missing: When set to ``False``
 | 
					 | 
				
			||||||
                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
					 | 
				
			||||||
                    raised when the alarm does not exist.
 | 
					 | 
				
			||||||
                    When set to ``True``, no exception will be set when
 | 
					 | 
				
			||||||
                    attempting to delete a nonexistent alarm.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: ``None``
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        self._delete(_alarm.Alarm, alarm, ignore_missing=ignore_missing)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def find_alarm(self, name_or_id, ignore_missing=True):
 | 
					 | 
				
			||||||
        """Find a single alarm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param name_or_id: The name or ID of a alarm.
 | 
					 | 
				
			||||||
        :param bool ignore_missing: When set to ``False``
 | 
					 | 
				
			||||||
                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
					 | 
				
			||||||
                    raised when the resource does not exist.
 | 
					 | 
				
			||||||
                    When set to ``True``, None will be returned when
 | 
					 | 
				
			||||||
                    attempting to find a nonexistent resource.
 | 
					 | 
				
			||||||
        :returns: One :class:`~openstack.telemetry.v2.alarm.Alarm` or None
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._find(_alarm.Alarm, name_or_id,
 | 
					 | 
				
			||||||
                          ignore_missing=ignore_missing)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def get_alarm(self, alarm):
 | 
					 | 
				
			||||||
        """Get a single alarm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param alarm: The value can be the ID of an alarm or a
 | 
					 | 
				
			||||||
                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: One :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
					 | 
				
			||||||
        :raises: :class:`~openstack.exceptions.ResourceNotFound`
 | 
					 | 
				
			||||||
                 when no resource can be found.
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._get(_alarm.Alarm, alarm)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def alarms(self, **query):
 | 
					 | 
				
			||||||
        """Return a generator of alarms
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param kwargs \*\*query: Optional query parameters to be sent to limit
 | 
					 | 
				
			||||||
                                 the resources being returned.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: A generator of alarm objects
 | 
					 | 
				
			||||||
        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._list(_alarm.Alarm, paginated=False, **query)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def update_alarm(self, alarm, **attrs):
 | 
					 | 
				
			||||||
        """Update a alarm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param alarm: Either the id of a alarm or a
 | 
					 | 
				
			||||||
                      :class:`~openstack.telemetry.v2.alarm.Alarm` instance.
 | 
					 | 
				
			||||||
        :attrs kwargs: The attributes to update on the alarm represented
 | 
					 | 
				
			||||||
                       by ``value``.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: The updated alarm
 | 
					 | 
				
			||||||
        :rtype: :class:`~openstack.telemetry.v2.alarm.Alarm`
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._update(_alarm.Alarm, alarm, **attrs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def find_alarm_change(self, name_or_id, ignore_missing=True):
 | 
					 | 
				
			||||||
        """Find a single alarm change
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param name_or_id: The name or ID of a alarm change.
 | 
					 | 
				
			||||||
        :param bool ignore_missing: When set to ``False``
 | 
					 | 
				
			||||||
                    :class:`~openstack.exceptions.ResourceNotFound` will be
 | 
					 | 
				
			||||||
                    raised when the resource does not exist.
 | 
					 | 
				
			||||||
                    When set to ``True``, None will be returned when
 | 
					 | 
				
			||||||
                    attempting to find a nonexistent resource.
 | 
					 | 
				
			||||||
        :returns: One :class:`~openstack.telemetry.v2.alarm_change.AlarmChange`
 | 
					 | 
				
			||||||
                  or None
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        return self._find(_alarm_change.AlarmChange, name_or_id,
 | 
					 | 
				
			||||||
                          ignore_missing=ignore_missing)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def alarm_changes(self, alarm, **query):
 | 
					 | 
				
			||||||
        """Return a generator of alarm changes
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :param alarm: Alarm resource or id for alarm.
 | 
					 | 
				
			||||||
        :param kwargs \*\*query: Optional query parameters to be sent to limit
 | 
					 | 
				
			||||||
                                 the resources being returned.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        :returns: A generator of alarm change objects
 | 
					 | 
				
			||||||
        :rtype: :class:`~openstack.telemetry.v2.alarm_change.AlarmChange`
 | 
					 | 
				
			||||||
        """
 | 
					 | 
				
			||||||
        alarm_id = _alarm.Alarm.from_id(alarm).id
 | 
					 | 
				
			||||||
        return self._list(_alarm_change.AlarmChange, paginated=False,
 | 
					 | 
				
			||||||
                          path_args={'alarm_id': alarm_id}, **query)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def find_capability(self, name_or_id, ignore_missing=True):
 | 
					    def find_capability(self, name_or_id, ignore_missing=True):
 | 
				
			||||||
        """Find a single capability
 | 
					        """Find a single capability
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,11 +13,13 @@
 | 
				
			|||||||
import unittest
 | 
					import unittest
 | 
				
			||||||
import uuid
 | 
					import uuid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack.telemetry.v2 import alarm
 | 
					from openstack.telemetry.alarm.v2 import alarm
 | 
				
			||||||
from openstack.tests.functional import base
 | 
					from openstack.tests.functional import base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@unittest.skip("bug/1524468")
 | 
					@unittest.skip("bug/1524468")
 | 
				
			||||||
 | 
					@unittest.skipUnless(base.service_exists(service_type="alarming"),
 | 
				
			||||||
 | 
					                     "Alarming service does not exist")
 | 
				
			||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
 | 
					@unittest.skipUnless(base.service_exists(service_type="metering"),
 | 
				
			||||||
                     "Metering service does not exist")
 | 
					                     "Metering service does not exist")
 | 
				
			||||||
class TestAlarm(base.BaseFunctionalTest):
 | 
					class TestAlarm(base.BaseFunctionalTest):
 | 
				
			||||||
@@ -29,7 +31,7 @@ class TestAlarm(base.BaseFunctionalTest):
 | 
				
			|||||||
    def setUpClass(cls):
 | 
					    def setUpClass(cls):
 | 
				
			||||||
        super(TestAlarm, cls).setUpClass()
 | 
					        super(TestAlarm, cls).setUpClass()
 | 
				
			||||||
        meter = next(cls.conn.telemetry.meters())
 | 
					        meter = next(cls.conn.telemetry.meters())
 | 
				
			||||||
        sot = cls.conn.telemetry.create_alarm(
 | 
					        sot = cls.conn.alarm.create_alarm(
 | 
				
			||||||
            name=cls.NAME,
 | 
					            name=cls.NAME,
 | 
				
			||||||
            type='threshold',
 | 
					            type='threshold',
 | 
				
			||||||
            threshold_rule={
 | 
					            threshold_rule={
 | 
				
			||||||
@@ -43,14 +45,14 @@ class TestAlarm(base.BaseFunctionalTest):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def tearDownClass(cls):
 | 
					    def tearDownClass(cls):
 | 
				
			||||||
        sot = cls.conn.telemetry.delete_alarm(cls.ID, ignore_missing=False)
 | 
					        sot = cls.conn.alarm.delete_alarm(cls.ID, ignore_missing=False)
 | 
				
			||||||
        cls.assertIs(None, sot)
 | 
					        cls.assertIs(None, sot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_get(self):
 | 
					    def test_get(self):
 | 
				
			||||||
        sot = self.conn.telemetry.get_alarm(self.ID)
 | 
					        sot = self.conn.alarm.get_alarm(self.ID)
 | 
				
			||||||
        self.assertEqual(self.NAME, sot.name)
 | 
					        self.assertEqual(self.NAME, sot.name)
 | 
				
			||||||
        self.assertEqual(self.ID, sot.id)
 | 
					        self.assertEqual(self.ID, sot.id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_list(self):
 | 
					    def test_list(self):
 | 
				
			||||||
        names = [o.name for o in self.conn.telemetry.alarms()]
 | 
					        names = [o.name for o in self.conn.alarm.alarms()]
 | 
				
			||||||
        self.assertIn(self.NAME, names)
 | 
					        self.assertIn(self.NAME, names)
 | 
				
			||||||
@@ -19,6 +19,8 @@ from openstack.tests.functional import base
 | 
				
			|||||||
@unittest.skip("bug/1524468")
 | 
					@unittest.skip("bug/1524468")
 | 
				
			||||||
@unittest.skipUnless(base.service_exists(service_type="metering"),
 | 
					@unittest.skipUnless(base.service_exists(service_type="metering"),
 | 
				
			||||||
                     "Metering service does not exist")
 | 
					                     "Metering service does not exist")
 | 
				
			||||||
 | 
					@unittest.skipUnless(base.service_exists(service_type="alarming"),
 | 
				
			||||||
 | 
					                     "Alarming service does not exist")
 | 
				
			||||||
class TestAlarmChange(base.BaseFunctionalTest):
 | 
					class TestAlarmChange(base.BaseFunctionalTest):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NAME = uuid.uuid4().hex
 | 
					    NAME = uuid.uuid4().hex
 | 
				
			||||||
@@ -28,7 +30,7 @@ class TestAlarmChange(base.BaseFunctionalTest):
 | 
				
			|||||||
    def setUpClass(cls):
 | 
					    def setUpClass(cls):
 | 
				
			||||||
        super(TestAlarmChange, cls).setUpClass()
 | 
					        super(TestAlarmChange, cls).setUpClass()
 | 
				
			||||||
        meter = next(cls.conn.telemetry.meters())
 | 
					        meter = next(cls.conn.telemetry.meters())
 | 
				
			||||||
        alarm = cls.conn.telemetry.create_alarm(
 | 
					        alarm = cls.conn.alarm.create_alarm(
 | 
				
			||||||
            name=cls.NAME,
 | 
					            name=cls.NAME,
 | 
				
			||||||
            type='threshold',
 | 
					            type='threshold',
 | 
				
			||||||
            threshold_rule={
 | 
					            threshold_rule={
 | 
				
			||||||
@@ -40,9 +42,9 @@ class TestAlarmChange(base.BaseFunctionalTest):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def tearDownClass(cls):
 | 
					    def tearDownClass(cls):
 | 
				
			||||||
        cls.conn.telemetry.delete_alarm(cls.alarm, ignore_missing=False)
 | 
					        cls.conn.alarm.delete_alarm(cls.alarm, ignore_missing=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_list(self):
 | 
					    def test_list(self):
 | 
				
			||||||
        change = next(self.conn.telemetry.alarm_changes(self.alarm))
 | 
					        change = next(self.conn.alarm.alarm_changes(self.alarm))
 | 
				
			||||||
        self.assertEqual(self.alarm.id, change.alarm_id)
 | 
					        self.assertEqual(self.alarm.id, change.alarm_id)
 | 
				
			||||||
        self.assertEqual('creation', change.type)
 | 
					        self.assertEqual('creation', change.type)
 | 
				
			||||||
							
								
								
									
										0
									
								
								openstack/tests/unit/telemetry/alarm/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								openstack/tests/unit/telemetry/alarm/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										28
									
								
								openstack/tests/unit/telemetry/alarm/test_alarm_service.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								openstack/tests/unit/telemetry/alarm/test_alarm_service.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					# 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import testtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm import alarm_service
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestAlarmService(testtools.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_service(self):
 | 
				
			||||||
 | 
					        sot = alarm_service.AlarmService()
 | 
				
			||||||
 | 
					        self.assertEqual('alarming', sot.service_type)
 | 
				
			||||||
 | 
					        self.assertEqual('public', sot.interface)
 | 
				
			||||||
 | 
					        self.assertIsNone(sot.region)
 | 
				
			||||||
 | 
					        self.assertIsNone(sot.service_name)
 | 
				
			||||||
 | 
					        self.assertEqual(1, len(sot.valid_versions))
 | 
				
			||||||
 | 
					        self.assertEqual('v2', sot.valid_versions[0].module)
 | 
				
			||||||
 | 
					        self.assertEqual('v2', sot.valid_versions[0].path)
 | 
				
			||||||
							
								
								
									
										0
									
								
								openstack/tests/unit/telemetry/alarm/v2/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								openstack/tests/unit/telemetry/alarm/v2/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -13,7 +13,7 @@
 | 
				
			|||||||
import mock
 | 
					import mock
 | 
				
			||||||
import testtools
 | 
					import testtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack.telemetry.v2 import alarm
 | 
					from openstack.telemetry.alarm.v2 import alarm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IDENTIFIER = 'IDENTIFIER'
 | 
					IDENTIFIER = 'IDENTIFIER'
 | 
				
			||||||
EXAMPLE = {
 | 
					EXAMPLE = {
 | 
				
			||||||
@@ -31,13 +31,15 @@ EXAMPLE = {
 | 
				
			|||||||
    'state': 'insufficient data',
 | 
					    'state': 'insufficient data',
 | 
				
			||||||
    'state_timestamp': '2015-03-09T12:15:57.233772',
 | 
					    'state_timestamp': '2015-03-09T12:15:57.233772',
 | 
				
			||||||
    'timestamp': '2015-03-09T12:15:57.233772',
 | 
					    'timestamp': '2015-03-09T12:15:57.233772',
 | 
				
			||||||
    'threshold_rule': {'meter_name': 'a',
 | 
					    'threshold_rule': {
 | 
				
			||||||
 | 
					        'meter_name': 'a',
 | 
				
			||||||
        'evaluation_periods:': '1',
 | 
					        'evaluation_periods:': '1',
 | 
				
			||||||
        'period': '60',
 | 
					        'period': '60',
 | 
				
			||||||
        'statistic': 'avg',
 | 
					        'statistic': 'avg',
 | 
				
			||||||
        'threshold': '92.6',
 | 
					        'threshold': '92.6',
 | 
				
			||||||
        'comparison_operator': 'gt',
 | 
					        'comparison_operator': 'gt',
 | 
				
			||||||
                       'exclude_outliers': True, },
 | 
					        'exclude_outliers': True,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    'time_constraints': [{'name': 'a', 'duration': 'b', 'start': 'c', }],
 | 
					    'time_constraints': [{'name': 'a', 'duration': 'b', 'start': 'c', }],
 | 
				
			||||||
    'type': '10',
 | 
					    'type': '10',
 | 
				
			||||||
    'user_id': '11',
 | 
					    'user_id': '11',
 | 
				
			||||||
@@ -59,7 +61,7 @@ class TestAlarm(testtools.TestCase):
 | 
				
			|||||||
        self.assertIsNone(sot.resource_key)
 | 
					        self.assertIsNone(sot.resource_key)
 | 
				
			||||||
        self.assertIsNone(sot.resources_key)
 | 
					        self.assertIsNone(sot.resources_key)
 | 
				
			||||||
        self.assertEqual('/alarms', sot.base_path)
 | 
					        self.assertEqual('/alarms', sot.base_path)
 | 
				
			||||||
        self.assertEqual('metering', sot.service.service_type)
 | 
					        self.assertEqual('alarming', sot.service.service_type)
 | 
				
			||||||
        self.assertTrue(sot.allow_create)
 | 
					        self.assertTrue(sot.allow_create)
 | 
				
			||||||
        self.assertTrue(sot.allow_retrieve)
 | 
					        self.assertTrue(sot.allow_retrieve)
 | 
				
			||||||
        self.assertTrue(sot.allow_update)
 | 
					        self.assertTrue(sot.allow_update)
 | 
				
			||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
import mock
 | 
					import mock
 | 
				
			||||||
import testtools
 | 
					import testtools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack.telemetry.v2 import alarm_change
 | 
					from openstack.telemetry.alarm.v2 import alarm_change
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IDENTIFIER = 'IDENTIFIER'
 | 
					IDENTIFIER = 'IDENTIFIER'
 | 
				
			||||||
EXAMPLE = {
 | 
					EXAMPLE = {
 | 
				
			||||||
@@ -35,7 +35,7 @@ class TestAlarmChange(testtools.TestCase):
 | 
				
			|||||||
        self.assertEqual('alarm_change', sot.resource_key)
 | 
					        self.assertEqual('alarm_change', sot.resource_key)
 | 
				
			||||||
        self.assertIsNone(sot.resources_key)
 | 
					        self.assertIsNone(sot.resources_key)
 | 
				
			||||||
        self.assertEqual('/alarms/%(alarm_id)s/history', sot.base_path)
 | 
					        self.assertEqual('/alarms/%(alarm_id)s/history', sot.base_path)
 | 
				
			||||||
        self.assertEqual('metering', sot.service.service_type)
 | 
					        self.assertEqual('alarming', sot.service.service_type)
 | 
				
			||||||
        self.assertFalse(sot.allow_create)
 | 
					        self.assertFalse(sot.allow_create)
 | 
				
			||||||
        self.assertFalse(sot.allow_retrieve)
 | 
					        self.assertFalse(sot.allow_retrieve)
 | 
				
			||||||
        self.assertFalse(sot.allow_update)
 | 
					        self.assertFalse(sot.allow_update)
 | 
				
			||||||
							
								
								
									
										54
									
								
								openstack/tests/unit/telemetry/alarm/v2/test_proxy.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								openstack/tests/unit/telemetry/alarm/v2/test_proxy.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					# 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 openstack.telemetry.alarm.v2 import _proxy
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm.v2 import alarm
 | 
				
			||||||
 | 
					from openstack.telemetry.alarm.v2 import alarm_change
 | 
				
			||||||
 | 
					from openstack.tests.unit import test_proxy_base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestAlarmProxy(test_proxy_base.TestProxyBase):
 | 
				
			||||||
 | 
					    def setUp(self):
 | 
				
			||||||
 | 
					        super(TestAlarmProxy, self).setUp()
 | 
				
			||||||
 | 
					        self.proxy = _proxy.Proxy(self.session)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_change_find(self):
 | 
				
			||||||
 | 
					        self.verify_find(self.proxy.find_alarm_change,
 | 
				
			||||||
 | 
					                         alarm_change.AlarmChange)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_changes(self):
 | 
				
			||||||
 | 
					        larm = alarm.Alarm.existing(alarm_id='larm')
 | 
				
			||||||
 | 
					        expected_kwargs = {'path_args': {'alarm_id': 'larm'}}
 | 
				
			||||||
 | 
					        self.verify_list(self.proxy.alarm_changes, alarm_change.AlarmChange,
 | 
				
			||||||
 | 
					                         method_args=[larm], paginated=False,
 | 
				
			||||||
 | 
					                         expected_kwargs=expected_kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_create_attrs(self):
 | 
				
			||||||
 | 
					        self.verify_create(self.proxy.create_alarm, alarm.Alarm)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_delete(self):
 | 
				
			||||||
 | 
					        self.verify_delete(self.proxy.delete_alarm, alarm.Alarm, False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_delete_ignore(self):
 | 
				
			||||||
 | 
					        self.verify_delete(self.proxy.delete_alarm, alarm.Alarm, True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_find(self):
 | 
				
			||||||
 | 
					        self.verify_find(self.proxy.find_alarm, alarm.Alarm)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_get(self):
 | 
				
			||||||
 | 
					        self.verify_get(self.proxy.get_alarm, alarm.Alarm)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarms(self):
 | 
				
			||||||
 | 
					        self.verify_list(self.proxy.alarms, alarm.Alarm, paginated=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_alarm_update(self):
 | 
				
			||||||
 | 
					        self.verify_update(self.proxy.update_alarm, alarm.Alarm)
 | 
				
			||||||
@@ -11,8 +11,6 @@
 | 
				
			|||||||
# under the License.
 | 
					# under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from openstack.telemetry.v2 import _proxy
 | 
					from openstack.telemetry.v2 import _proxy
 | 
				
			||||||
from openstack.telemetry.v2 import alarm
 | 
					 | 
				
			||||||
from openstack.telemetry.v2 import alarm_change
 | 
					 | 
				
			||||||
from openstack.telemetry.v2 import capability
 | 
					from openstack.telemetry.v2 import capability
 | 
				
			||||||
from openstack.telemetry.v2 import meter
 | 
					from openstack.telemetry.v2 import meter
 | 
				
			||||||
from openstack.telemetry.v2 import resource
 | 
					from openstack.telemetry.v2 import resource
 | 
				
			||||||
@@ -26,38 +24,6 @@ class TestTelemetryProxy(test_proxy_base.TestProxyBase):
 | 
				
			|||||||
        super(TestTelemetryProxy, self).setUp()
 | 
					        super(TestTelemetryProxy, self).setUp()
 | 
				
			||||||
        self.proxy = _proxy.Proxy(self.session)
 | 
					        self.proxy = _proxy.Proxy(self.session)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_alarm_change_find(self):
 | 
					 | 
				
			||||||
        self.verify_find(self.proxy.find_alarm_change,
 | 
					 | 
				
			||||||
                         alarm_change.AlarmChange)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_changes(self):
 | 
					 | 
				
			||||||
        larm = alarm.Alarm.existing(alarm_id='larm')
 | 
					 | 
				
			||||||
        expected_kwargs = {'path_args': {'alarm_id': 'larm'}}
 | 
					 | 
				
			||||||
        self.verify_list(self.proxy.alarm_changes, alarm_change.AlarmChange,
 | 
					 | 
				
			||||||
                         method_args=[larm], paginated=False,
 | 
					 | 
				
			||||||
                         expected_kwargs=expected_kwargs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_create_attrs(self):
 | 
					 | 
				
			||||||
        self.verify_create(self.proxy.create_alarm, alarm.Alarm)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_delete(self):
 | 
					 | 
				
			||||||
        self.verify_delete(self.proxy.delete_alarm, alarm.Alarm, False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_delete_ignore(self):
 | 
					 | 
				
			||||||
        self.verify_delete(self.proxy.delete_alarm, alarm.Alarm, True)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_find(self):
 | 
					 | 
				
			||||||
        self.verify_find(self.proxy.find_alarm, alarm.Alarm)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_get(self):
 | 
					 | 
				
			||||||
        self.verify_get(self.proxy.get_alarm, alarm.Alarm)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarms(self):
 | 
					 | 
				
			||||||
        self.verify_list(self.proxy.alarms, alarm.Alarm, paginated=False)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_alarm_update(self):
 | 
					 | 
				
			||||||
        self.verify_update(self.proxy.update_alarm, alarm.Alarm)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def test_capability_find(self):
 | 
					    def test_capability_find(self):
 | 
				
			||||||
        self.verify_find(self.proxy.find_capability, capability.Capability)
 | 
					        self.verify_find(self.proxy.find_capability, capability.Capability)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -111,6 +111,8 @@ class TestConnection(base.TestCase):
 | 
				
			|||||||
        conn = connection.Connection(authenticator=auth, profile=prof)
 | 
					        conn = connection.Connection(authenticator=auth, profile=prof)
 | 
				
			||||||
        self.assertEqual(auth, conn.authenticator)
 | 
					        self.assertEqual(auth, conn.authenticator)
 | 
				
			||||||
        self.assertEqual(prof, conn.profile)
 | 
					        self.assertEqual(prof, conn.profile)
 | 
				
			||||||
 | 
					        self.assertEqual('openstack.telemetry.alarm.v2._proxy',
 | 
				
			||||||
 | 
					                         conn.alarm.__class__.__module__)
 | 
				
			||||||
        self.assertEqual('openstack.cluster.v1._proxy',
 | 
					        self.assertEqual('openstack.cluster.v1._proxy',
 | 
				
			||||||
                         conn.cluster.__class__.__module__)
 | 
					                         conn.cluster.__class__.__module__)
 | 
				
			||||||
        self.assertEqual('openstack.compute.v2._proxy',
 | 
					        self.assertEqual('openstack.compute.v2._proxy',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ class TestProfile(base.TestCase):
 | 
				
			|||||||
    def test_init(self):
 | 
					    def test_init(self):
 | 
				
			||||||
        prof = profile.Profile()
 | 
					        prof = profile.Profile()
 | 
				
			||||||
        expected = [
 | 
					        expected = [
 | 
				
			||||||
 | 
					            'alarming',
 | 
				
			||||||
            'clustering',
 | 
					            'clustering',
 | 
				
			||||||
            'compute',
 | 
					            'compute',
 | 
				
			||||||
            'database',
 | 
					            'database',
 | 
				
			||||||
@@ -51,10 +52,12 @@ class TestProfile(base.TestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def test_set(self):
 | 
					    def test_set(self):
 | 
				
			||||||
        prof = profile.Profile()
 | 
					        prof = profile.Profile()
 | 
				
			||||||
        prof.set_version('compute', 'v2')
 | 
					        prof.set_version('alarming', 'v2')
 | 
				
			||||||
        self.assertEqual('v2', prof.get_filter('compute').version)
 | 
					        self.assertEqual('v2', prof.get_filter('alarming').version)
 | 
				
			||||||
        prof.set_version('clustering', 'v1')
 | 
					        prof.set_version('clustering', 'v1')
 | 
				
			||||||
        self.assertEqual('v1', prof.get_filter('clustering').version)
 | 
					        self.assertEqual('v1', prof.get_filter('clustering').version)
 | 
				
			||||||
 | 
					        prof.set_version('compute', 'v2')
 | 
				
			||||||
 | 
					        self.assertEqual('v2', prof.get_filter('compute').version)
 | 
				
			||||||
        prof.set_version('database', 'v3')
 | 
					        prof.set_version('database', 'v3')
 | 
				
			||||||
        self.assertEqual('v3', prof.get_filter('database').version)
 | 
					        self.assertEqual('v3', prof.get_filter('database').version)
 | 
				
			||||||
        prof.set_version('identity', 'v4')
 | 
					        prof.set_version('identity', 'v4')
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user