
Create a Zuul job to check Black Formatter in the code. This commit also applies the Black formatter to the entire project. Test Plan Pass - Success on stx-distcloud-client-tox-black Pass - Success on tox command Story: 2011149 Task: 50393 Change-Id: I5d7b537e83931304ffd5f67ce51e8ebb44f7e65b Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
135 lines
4.4 KiB
Python
135 lines
4.4 KiB
Python
#
|
|
# Copyright (c) 2023-2024 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,
|
|
association_type,
|
|
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.association_type = association_type
|
|
self.sync_status = sync_status
|
|
self.sync_message = sync_message
|
|
self.created_at = created_at
|
|
self.updated_at = updated_at
|
|
|
|
|
|
class PeerGroupAssociationManager(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"],
|
|
association_type=json_object["association-type"],
|
|
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 = []
|
|
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 + f"{associate_ref}/sync"
|
|
return self.peer_group_association_sync(url)
|
|
|
|
def delete_peer_group_association(self, peer_id):
|
|
url = BASE_URL + peer_id
|
|
return self._delete(url)
|
|
|
|
def update_peer_group_association(self, peer_id, **kwargs):
|
|
data = kwargs
|
|
url = BASE_URL + peer_id
|
|
return self.peer_group_association_update(url, data)
|