135 lines
4.7 KiB
Python
135 lines
4.7 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,
|
|
heartbeat_status,
|
|
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.heartbeat_status = heartbeat_status
|
|
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'],
|
|
heartbeat_status=json_object['heartbeat-status'],
|
|
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)
|