distcloud-client/distributedcloud-client/dcmanagerclient/api/v1/system_peer_manager.py

132 lines
4.6 KiB
Python

# 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)