distcloud-client/distributedcloud-client/dcmanagerclient/api/v1/peer_group_association_mana...

128 lines
4.3 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
OPTION_NOT_APPLICABLE = 'Not applicable'
SYNC_STATUS_INVALID = 'invalid'
BASE_URL = '/peer-group-associations/'
class PeerGroupAssociation(base.Resource):
resource_name = 'peer_group_association'
def __init__(self,
manager,
association_id,
peer_group_id,
system_peer_id,
peer_group_priority,
sync_status,
sync_message,
created_at,
updated_at):
self.manager = manager
self.association_id = association_id
self.peer_group_id = peer_group_id
self.system_peer_id = system_peer_id
self.peer_group_priority = peer_group_priority
self.sync_status = sync_status
self.sync_message = sync_message
self.created_at = created_at
self.updated_at = updated_at
class peer_group_association_manager(base.ResourceManager):
resource_class = PeerGroupAssociation
def _json_to_resource(self, json_object):
sync_message = None if 'sync-message' not in json_object else \
json_object['sync-message']
return self.resource_class(
self,
association_id=json_object['id'],
peer_group_id=json_object['peer-group-id'],
system_peer_id=json_object['system-peer-id'],
peer_group_priority=json_object['peer-group-priority'],
sync_status=json_object['sync-status'],
sync_message=sync_message,
created_at=json_object['created-at'],
updated_at=json_object['updated-at'])
def _peer_group_association_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 = [self._json_to_resource(json_object)]
return resource
def peer_group_association_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['peer_group_associations']
resource = list()
for json_object in json_objects:
resource.append(self._json_to_resource(json_object))
return resource
def peer_group_association_sync(self, url):
resp = self.http_client.patch(url, {})
if resp.status_code != 200:
self._raise_api_exception(resp)
json_object = get_json(resp)
resource = [self._json_to_resource(json_object)]
return resource
def peer_group_association_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 = [self._json_to_resource(json_object)]
return resource
def peer_group_association_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 = [self._json_to_resource(json_object)]
return resource
def add_peer_group_association(self, **kwargs):
data = kwargs
url = BASE_URL
return self.peer_group_association_create(url, data)
def list_peer_group_associations(self):
url = BASE_URL
return self.peer_group_association_list(url)
def peer_group_association_detail(self, associate_ref):
url = BASE_URL + associate_ref
return self._peer_group_association_detail(url)
def sync_peer_group_association(self, associate_ref):
url = BASE_URL + '%s/sync' % associate_ref
return self.peer_group_association_sync(url)
def delete_peer_group_association(self, id):
url = BASE_URL + id
return self._delete(url)
def update_peer_group_association(self, id, **kwargs):
data = kwargs
url = BASE_URL + id
return self.peer_group_association_update(url, data)