intdash._measurement_markers のソースコード

# Copyright 2020 Aptpod, Inc.
#
# 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 json

import requests

from intdash import _models, timeutils

__all__ = ["MeasurementMarkers"]


[ドキュメント]class MeasurementMarkers(object): """計測マーカーリソースへのアクセスオブジェクトです""" def __init__(self): self.client = None self.version = None
[ドキュメント] def create( self, measurement_uuid, type, detail, name=None, description=None, tag=None ): """計測マーカーをサーバーへ作成します。 Args: measurement_uuid (str): 計測UUID type (MeasurementMarkerType): 計測マーカー種別 ( ``point`` or ``range`` ) detail (MeasurementMarkerDetail): 計測マーカーの詳細 name (str): 計測マーカー名 description (str): 説明 tag (dict): タグ情報 Returns: MeasurementMarker: 計測マーカーオブジェクト .. note:: ``detail`` は 指定した ``type`` に応じて以下のオブジェクトを指定ください。 * ``type`` が ``point`` の場合は、intdash.MeasurementMarkerDetailPoint を指定してください。 * ``type`` が ``range`` の場合は、intdash.MeasurementMarkerDetailRange を指定してください。 .. note:: ``tag`` は、Key(string)とValue(string)のペアのみ登録することができます。 .. parsed-literal:: // NG { "tagkey" : { "nestKey": "not allowed" } } // OK { "tagkey1" : "ok" "tagkey2" : "ok" } """ data = {"detail": detail._to_dict(), "type": type} if name: data["name"] = name if description: data["description"] = description if tag: data["tag"] = tag resp = json.loads( self.client._request( method="post", spath="/api/v1/measurements/{}/markers".format(measurement_uuid), json=data, code=requests.codes.created, version=self.version["create"]["version"], ).text ) return _models.MeasurementMarker._from_dict(resp)
[ドキュメント] def get(self, marker_uuid): """計測マーカーを取得します。 Args: marker_uuid (str): 取得対象の計測マーカーのUUID Returns: MeasurementMarker: 計測マーカーオブジェクト """ resp = json.loads( self.client._request( method="get", spath="/api/v1/measurements/markers/{marker_uuid}".format( marker_uuid=marker_uuid ), version=self.version["get"]["version"], ).text ) return _models.MeasurementMarker._from_dict(resp)
[ドキュメント] def update( self, marker_uuid, measurement_uuid=None, name=None, description=None, type=None, detail=None, tag=None, ): """計測マーカーを更新します。 Args: marker_uuid (str): 更新対象の計測マーカーのUUID measurement_uuid (str): 更新対象の計測マーカーが紐づいている計測のUUID type (MeasurementMarkerType): 計測マーカー種別 ( ``point`` or ``range`` ) detail (MeasurementMarkerDetail): 計測マーカーの詳細 name (str): 計測マーカー名 description (str): 説明 tag (dict): タグ情報 Returns: MeasurementMarker: 計測マーカーオブジェクト .. note:: ``detail`` は 指定した ``type`` に応じて以下のオブジェクトを指定ください。 ``type`` が ``point`` の場合は、MeasurementMarkerDetailPoint を指定してください。 ``type`` が ``range`` の場合は、MeasurementMarkerDetailRange を指定してください。 .. note:: ``measurement_uuid`` を指定した際、 ``marker_uuid`` の計測マーカーが指定の計測に紐付いていないと更新されません。 """ data = {} if name: data["name"] = name if description: data["description"] = description if type: data["type"] = type if detail: data["detail"] = detail._to_dict() if tag: data["tag"] = tag if measurement_uuid: path = ( "/api/v1/measurements/{measurement_uuid}/markers/{marker_uuid}".format( measurement_uuid=measurement_uuid, marker_uuid=marker_uuid ) ) version = self.version["update_by_measurement"]["version"] else: path = "/api/v1/measurements/markers/{marker_uuid}".format( marker_uuid=marker_uuid ) version = self.version["update_by_marker"]["version"] resp = json.loads( self.client._request( method="put", spath=path, json=data, code=requests.codes.created, version=version, ).text ) return _models.MeasurementMarker._from_dict(resp)
[ドキュメント] def delete(self, marker_uuid, measurement_uuid=None): """計測マーカーをサーバーから削除します。 Args: marker_uuid (str): 削除対象のマーカーのUUID measurement_uuid (str): 削除対象の計測マーカーが紐づいている計測のUUID .. note:: ``measurement_uuid`` を指定した際、 ``marker_uuid`` の計測マーカーが指定の計測に紐付いていない場合はエラーになります。 """ if measurement_uuid: path = ( "/api/v1/measurements/{measurement_uuid}/markers/{marker_uuid}".format( measurement_uuid=measurement_uuid, marker_uuid=marker_uuid ) ) version = self.version["delete_by_measurement"]["version"] else: path = "/api/v1/measurements/markers/{marker_uuid}".format( marker_uuid=marker_uuid ) version = self.version["delete_by_marker"]["version"] self.client._request( method="delete", spath=path, code=requests.codes.created, version=version )
[ドキュメント] def list(self, measurement_uuid): """計測UUIDに紐づくすべての計測マーカーを取得します。 Args: measurement_uuid (str): 計測UUID Returns: list[MeasurementMarker]: 計測マーカーオブジェクトのリスト """ resp = json.loads( self.client._request( method="get", spath="/api/v1/measurements/{measurement_uuid}/markers".format( measurement_uuid=measurement_uuid ), version=self.version["list"]["version"], ).text ) return [_models.MeasurementMarker._from_dict(item) for item in resp["items"]]