def __init__(self, plugins=None): """User preference for each service. :param plugins: List of entry point namespaces to load. Create a new :class:`~openstack.profile.Profile` object with no preferences defined, but knowledge of the services. Services are identified by their service type, e.g.: 'identity', 'compute', etc. """ self._services = {} self._add_service(anti_ddos_service.AntiDDosService(version="v1")) self._add_service(block_store_service.BlockStoreService(version="v2")) self._add_service(compute_service.ComputeService(version="v2")) self._add_service(cts_service.CTSService(version="v1")) self._add_service(dms_service.DMSService(version="v1")) self._add_service(identity_service.IdentityService(version="v3")) self._add_service(image_service.ImageService(version="v2")) self._add_service(kms_service.KMSService(version="v1")) self._add_service(maas_service.MaaSService(version="v1")) self._add_service(network_service.NetworkService(version="v2.0")) self._add_service( orchestration_service.OrchestrationService(version="v1")) self._add_service(smn_service.SMNService(version="v2")) # QianBiao.NG HuaWei Services self._add_service(dns_service.DNSService(version="v2")) self._add_service(cloud_eye_service.CloudEyeService(version="v1")) ass = auto_scaling_service.AutoScalingService(version="v1") self._add_service(ass) vbs_v2 = volume_backup_service.VolumeBackupService(version="v2") self._add_service(vbs_v2) self._add_service(map_reduce_service.MapReduceService(version="v1")) self._add_service(evs_service.EvsServiceV2_1(version='v2.1')) self._add_service(evs_service.EvsService(version='v2')) self._add_service(ecs_service.EcsService(version='v1')) self._add_service(ecs_service.EcsServiceV1_1(version='v1.1')) self._add_service(vpc_service.VpcService(version='v2.0')) self._add_service(bms_service.BmsService(version='v1')) self._add_service(lb_service.LoadBalancerService(version='v1')) # not support below service # self._add_service(message_service.MessageService(version="v1")) # self._add_service(cluster_service.ClusterService(version="v1")) # self._add_service(database_service.DatabaseService(version="v1")) # self._add_service(alarm_service.AlarmService(version="v2")) # self._add_service(bare_metal_service.BareMetalService(version="v1")) # self._add_service(key_manager_service.KeyManagerService(version="v1")) # self._add_service( # object_store_service.ObjectStoreService(version="v1")) self._add_service(rds_service.RDSService(version="v1")) self._add_service(cdn_service.CDNService(version='v1')) # self._add_service(rds_os_service.RDSService(version="v1")) # self._add_service(telemetry_service.TelemetryService(version="v2")) # self._add_service(workflow_service.WorkflowService(version="v2")) if plugins: for plugin in plugins: self._load_plugin(plugin) self.service_keys = sorted(self._services.keys())
class MetricAggregation(resource.Resource): """CloudEye metric data aggregation resource""" resource_key = 'datapoints' resources_key = 'datapoints' base_path = '/metric-data' service = cloud_eye_service.CloudEyeService() # capabilities allow_list = True #: Mapping of accepted query parameter names. _query_mapping = QueryParameters('namespace', 'metric_name', 'from', 'to', 'period', 'filter', 'dim.0', 'dim.1', 'dim.2') #: Properties #: Metric Data average average = resource.Body('average') #: Metric Data variance variance = resource.Body('variance') #: Metric Data min min = resource.Body('min') #: Metric Data max max = resource.Body('max') #: Metric Data collect timestamp timestamp = resource.Body('timestamp') #: Metric Data Unit unit = resource.Body('unit')
class MetricData(resource.Resource): """CloudEye metric data resource""" base_path = '/metric-data' service = cloud_eye_service.CloudEyeService() # capabilities allow_create = True #: Properties #: Metric Namespace namespace = resource.Body('namespace') #: Metric Name metric_name = resource.Body('metric_name') #: Dimensions dimensions = resource.Body('dimensions', type=list) #: ttl, metric data TTL, max value is: 604800 ttl = resource.Body('ttl', type=int) #: collect time collect_time = resource.Body('collect_time') #: value value = resource.Body('value') #: value type, valid values includes: ``int``, ``float`` value_type = resource.Body('type') #: unit unit = resource.Body('unit')
class Metric(resource.Resource): """CloudEye metric resource""" resource_key = 'metric' resources_key = 'metrics' base_path = '/metrics' next_marker_path = 'meta_data.marker' query_marker_key = 'start' service = cloud_eye_service.CloudEyeService() # capabilities allow_list = True _query_mapping = QueryParameters('namespace', 'metric_name', 'dim.0', 'dim.1', 'dim.2', 'order', 'limit', marker=query_marker_key) #: Properties #: Metric Namespace namespace = resource.Body('namespace') #: Metric Name metric_name = resource.Body('metric_name') #: Metric Dimensions dimensions = resource.Body('dimensions', type=list) #: Metric Unit unit = resource.Body('unit')
def add_metric_data(self, data): """Create Metric Data from a list of attributes :param list data: A List of dict, the dict will be used to create a :class:`~openstack.cloud_eye.v1.metric_data .MetricData`, comprised of the properties on the MetricData class. datas sample: [{ "metric": { "namespace": "MINE.APP", "dimensions": [ { "name": "instance_id", "value": "33328f02-3814-422e-b688-bfdba93d4050" } ], "metric_name": "cpu_util" }, "ttl": 172800, "collect_time": 1463598260000, "value": 60, "unit": "%" }] """ service = cloud_eye_service.CloudEyeService() session = self._session return session.post('/metric-data', endpoint_filter=service, endpoint_override=service.get_endpoint_override(), json=data)
def test_service(self): sot = cloud_eye_service.CloudEyeService() self.assertEqual('cloud-eye', 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('v1', sot.valid_versions[0].module) self.assertEqual('v1', sot.valid_versions[0].path)
class Alarm(resource.Resource): resource_key = None resources_key = None base_path = "/V1.0/%s(project_id)/alarms" service = cloud_eye_service.CloudEyeService() id_attribute = "name" allow_list = True #: The transaction date and time. timestamp = resource.prop("x-timestamp") #: The name of this resource. name = resource.prop("name") #: The value of the resource. Also available in headers. value = resource.prop("value", alias="x-resource-value") #: Is this resource cool? If so, set it to True. #: This is a multi-line comment about cool stuff. cool = resource.prop("cool", type=bool)
class Quota(resource.Resource): """CloudEye Quota resource""" resource_key = "quotas.resources" resources_key = "quotas.resources" base_path = "/quotas" service = cloud_eye_service.CloudEyeService() # capabilities allow_list = True #: Properties #: Quota of type, current only ``alarm`` is valid type = resource.Body("type") #: Quota amount has been used used = resource.Body("used") #: Quota unit unit = resource.Body("unit") #: Quota total amount quota = resource.Body("quota")
class Alarm(resource.Resource): """CloudEye alarm resource""" resource_key = 'metric_alarms' resources_key = 'metric_alarms' base_path = '/alarms' next_marker_path = 'meta_data.marker' query_marker_key = 'start' service = cloud_eye_service.CloudEyeService() # capabilities allow_list = True allow_get = True allow_delete = True _query_mapping = resource.QueryParameters("order", "limit", "start", marker=query_marker_key) #: Properties #: ID of the Alarm id = resource.Body('alarm_id') #: Alarm name name = resource.Body('alarm_name') #: Alarm description description = resource.Body('alarm_description') #: The metric of the alarm metric = resource.Body('metric', type=Metric) #: Is Alarm enabled alarm_enabled = resource.Body('alarm_enabled', type=bool) #: Is Alarm actions enabled alarm_action_enabled = resource.Body('alarm_action_enabled', type=bool) #: Alarm status #: valid values include: ``ok``, ``alarm``, ``insufficient_data`` state = resource.Body('alarm_state') #: Last update time update_time = resource.Body('update_time') #: Alarm trigger condition condition = resource.Body('condition', type=dict) #: Alarm trigger action alarm_actions = resource.Body('alarm_actions', type=list) #: Alarm dismissing trigger action ok_actions = resource.Body('ok_actions', type=list) #: Insufficient data trigger actions insufficientdata_actions = resource.Body('insufficientdata_actions', type=list) # The alarm level is 2 by default and the levels are 1, 2, 3, and 4. # Corresponding to urgent, important, secondary, prompt alarm_level = resource.Body('alarm_level') def _action(self, session, body): """Preform alarm actions given the message body.""" url = utils.urljoin(self.base_path, self.id, 'action') endpoint_override = self.service.get_endpoint_override() return session.put(url, endpoint_filter=self.service, endpoint_override=endpoint_override, json=body, headers={}) def enable(self, session): """Enable alarm""" body = {'alarm_enabled': True} self._action(session, body) def disable(self, session): """Enable alarm""" body = {'alarm_enabled': False} self._action(session, body)