# Copyright (c) 2023 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # import json from dcmanagerclient.api import base from dcmanagerclient.api.base import get_json BASE_URL = '/system-peers/' class SystemPeer(base.Resource): resource_name = 'system_peer' def __init__(self, manager, peer_id, peer_uuid, peer_name, manager_endpoint, manager_username, peer_controller_gateway_address, administrative_state, heartbeat_interval, heartbeat_failure_threshold, heartbeat_failure_policy, heartbeat_maintenance_timeout, created_at, updated_at): self.manager = manager self.peer_id = peer_id self.peer_uuid = peer_uuid self.peer_name = peer_name self.manager_endpoint = manager_endpoint self.manager_username = manager_username self.gateway_address = peer_controller_gateway_address self.administrative_state = administrative_state self.heartbeat_interval = heartbeat_interval self.heartbeat_failure_threshold = heartbeat_failure_threshold self.heartbeat_failure_policy = heartbeat_failure_policy self.heartbeat_maintenance_timeout = heartbeat_maintenance_timeout self.created_at = created_at self.updated_at = updated_at class system_peer_manager(base.ResourceManager): resource_class = SystemPeer def _json_to_resource(self, json_object): return self.resource_class( self, peer_id=json_object['id'], peer_uuid=json_object['peer-uuid'], peer_name=json_object['peer-name'], manager_endpoint=json_object['manager-endpoint'], manager_username=json_object['manager-username'], peer_controller_gateway_address=json_object[ 'peer-controller-gateway-address'], administrative_state=json_object['administrative-state'], heartbeat_interval=json_object['heartbeat-interval'], heartbeat_failure_threshold=json_object[ 'heartbeat-failure-threshold'], heartbeat_failure_policy=json_object['heartbeat-failure-policy'], heartbeat_maintenance_timeout=json_object[ 'heartbeat-maintenance-timeout'], created_at=json_object['created-at'], updated_at=json_object['updated-at']) def system_peer_create(self, url, data): data = json.dumps(data) resp = self.http_client.post(url, data) if resp.status_code != 200: self._raise_api_exception(resp) json_object = get_json(resp) resource = list() resource.append(self._json_to_resource(json_object)) return resource def system_peer_update(self, url, data): data = json.dumps(data) resp = self.http_client.patch(url, data) if resp.status_code != 200: self._raise_api_exception(resp) json_object = get_json(resp) resource = list() resource.append(self._json_to_resource(json_object)) return resource def system_peer_list(self, url): resp = self.http_client.get(url) if resp.status_code != 200: self._raise_api_exception(resp) json_response_key = get_json(resp) json_objects = json_response_key['system_peers'] resource = list() for json_object in json_objects: resource.append(self._json_to_resource(json_object)) return resource def _system_peer_detail(self, url): resp = self.http_client.get(url) if resp.status_code != 200: self._raise_api_exception(resp) json_object = get_json(resp) resource = list() resource.append(self._json_to_resource(json_object)) return resource def add_system_peer(self, **kwargs): data = kwargs url = BASE_URL return self.system_peer_create(url, data) def list_system_peers(self): url = BASE_URL return self.system_peer_list(url) def system_peer_detail(self, system_peer_ref): url = BASE_URL + system_peer_ref return self._system_peer_detail(url) def delete_system_peer(self, system_peer_ref): url = BASE_URL + system_peer_ref return self._delete(url) def update_system_peer(self, system_peer_ref, **kwargs): data = kwargs url = BASE_URL + system_peer_ref return self.system_peer_update(url, data)