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