Exemple #1
0
    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')
Exemple #5
0
    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)
Exemple #7
0
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)
Exemple #8
0
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")
Exemple #9
0
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)