|  | # Copyright 2012 OpenStack Foundation | 
|  | # All Rights Reserved. | 
|  | # | 
|  | #    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 oslo_config import cfg | 
|  | from oslo_config import types | 
|  |  | 
|  |  | 
|  | service_option = [cfg.BoolOpt('ceilometer', | 
|  | default=True, | 
|  | help="Whether or not Ceilometer is expected to" | 
|  | "be available"), | 
|  | cfg.BoolOpt("aodh", | 
|  | default=True, | 
|  | help="Whether or not Aodh is expected to be" | 
|  | "available", | 
|  | deprecated_opts=[cfg.DeprecatedOpt( | 
|  | 'aodh_plugin', | 
|  | group='service_available')]), | 
|  | cfg.BoolOpt('gnocchi', | 
|  | default=True, | 
|  | help="Whether or not Gnocchi is expected to be" | 
|  | "available", | 
|  | deprecated_for_removal=True), | 
|  | cfg.BoolOpt('sg_core', | 
|  | default=False, | 
|  | help="Whether or not sg-core is expected to be" | 
|  | "available", | 
|  | deprecated_for_removal=True)] | 
|  |  | 
|  | telemetry_group = cfg.OptGroup(name='telemetry', | 
|  | title='Telemetry Service Options') | 
|  |  | 
|  | telemetry_services_group = cfg.OptGroup(name='telemetry_services', | 
|  | title='Telemetry Services') | 
|  |  | 
|  | alarming_group = cfg.OptGroup(name='alarming_plugin', | 
|  | title='Alarming Service Options') | 
|  |  | 
|  | metric_group = cfg.OptGroup(name='metric', | 
|  | title='Metric Service Options') | 
|  |  | 
|  | telemetry_opts = [ | 
|  | cfg.IntOpt('notification_wait', | 
|  | default=120, | 
|  | help="The seconds to wait for notifications which " | 
|  | "containers and objects sent to swift."), | 
|  | cfg.IntOpt('notification_sleep', | 
|  | default=1, | 
|  | help="The seconds to sleep after an unsuccessful " | 
|  | "notification received."), | 
|  | cfg.IntOpt('alarm_granularity', | 
|  | default=300, | 
|  | help="Granularity to use for aodh alarms. This must match the " | 
|  | "configured Gnocchi archive policy"), | 
|  | cfg.StrOpt('alarm_metric_name', | 
|  | default="cpu", | 
|  | help="Name of the metric to create an alarm on."), | 
|  | cfg.StrOpt('alarm_aggregation_method', | 
|  | default="rate:mean", | 
|  | help="Aggregation method to use for alarm."), | 
|  | cfg.IntOpt('alarm_threshold', | 
|  | default=10, | 
|  | help="Threshold to cross for the alarm to trigger."), | 
|  | cfg.IntOpt('scaledown_alarm_threshold', | 
|  | default=2000000000, | 
|  | help="Threshold to cross for the alarm to trigger."), | 
|  | cfg.BoolOpt("disable_ssl_certificate_validation", | 
|  | default=False, | 
|  | help="Disable SSL certificate validation when running " | 
|  | "scenario tests"), | 
|  | cfg.URIOpt('sg_core_service_url', | 
|  | default="http://127.0.0.1:3000", | 
|  | help="URL to sg-core prometheus endpoint"), | 
|  | cfg.URIOpt('prometheus_service_url', | 
|  | default="http://127.0.0.1:9090", | 
|  | help="URL to prometheus endpoint"), | 
|  | cfg.IntOpt('ceilometer_polling_interval', | 
|  | default=300, | 
|  | help="Polling interval configured for ceilometer. This can " | 
|  | "be used in test cases to wait for metrics to appear."), | 
|  | cfg.IntOpt('prometheus_scrape_interval', | 
|  | default=15, | 
|  | help="Scrape interval configured for prometheus. This can " | 
|  | "be used in test cases to properly configure autoscaling"), | 
|  | cfg.StrOpt( | 
|  | 'autoscaling_instance_grouping', | 
|  | default='metadata', | 
|  | choices=[ | 
|  | ('prefix', 'Use a common string at the start of instance names to ' | 
|  | 'group instances'), | 
|  | ('metadata', 'Use metering.server_group instance metadata to ' | 
|  | 'group instances. This is preferred method since ' | 
|  | '2025.1') | 
|  | ], | 
|  | help="The method to group instances for autoscaling testing. Note " | 
|  | "that this option affects only tests with prometheus metric " | 
|  | "backend") | 
|  | ] | 
|  |  | 
|  | telemetry_services_opts = [ | 
|  | cfg.ListOpt('metric_backends', | 
|  | default=[], | 
|  | item_type=types.String(choices=['gnocchi', 'prometheus']), | 
|  | help="Backend store used to store metrics"), | 
|  | cfg.StrOpt('alarm_backend', | 
|  | default='mysql', | 
|  | choices=['mysql', 'postgresql'], | 
|  | help="Database used by the aodh service"), | 
|  | ] | 
|  |  | 
|  | alarming_opts = [ | 
|  | cfg.StrOpt('catalog_type', | 
|  | default='alarming', | 
|  | help="Catalog type of the Alarming service."), | 
|  | cfg.StrOpt('endpoint_type', | 
|  | default='publicURL', | 
|  | choices=['public', 'admin', 'internal', | 
|  | 'publicURL', 'adminURL', 'internalURL'], | 
|  | help="The endpoint type to use for the alarming service."), | 
|  | cfg.BoolOpt('create_alarms', | 
|  | default=True, | 
|  | help="If create alarms dynamically before testing."), | 
|  | ] | 
|  |  | 
|  | metric_opts = [ | 
|  | cfg.StrOpt('catalog_type', | 
|  | default='metric', | 
|  | help="Catalog type of the Metric service."), | 
|  | cfg.StrOpt('endpoint_type', | 
|  | default='publicURL', | 
|  | choices=['public', 'admin', 'internal', | 
|  | 'publicURL', 'adminURL', 'internalURL'], | 
|  | help="The endpoint type to use for the metric service."), | 
|  | ] |