Skip to content

Commit

Permalink
Change Console APIs to v3
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Elder <[email protected]>
  • Loading branch information
Chris Elder authored and Chris Elder committed Feb 27, 2024
1 parent f6c233e commit 81223b7
Show file tree
Hide file tree
Showing 14 changed files with 350 additions and 293 deletions.
15 changes: 10 additions & 5 deletions plugins/module_utils/certificate_authorities.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def __init__(self, code, message):

class CertificateAuthority:

def __init__(self, name, api_url, operations_url, ca_url, ca_name, tlsca_name, pem, location):
def __init__(self, name, api_url, operations_url, ca_url, ca_name, tlsca_name, pem, location, msp):
self.name = name
self.api_url = api_url
self.operations_url = operations_url
Expand All @@ -50,6 +50,7 @@ def __init__(self, name, api_url, operations_url, ca_url, ca_name, tlsca_name, p
self.tlsca_name = tlsca_name
self.pem = pem
self.location = location
self.msp = msp

def clone(self):
return CertificateAuthority(
Expand All @@ -60,7 +61,8 @@ def clone(self):
ca_name=self.ca_name,
tlsca_name=self.tlsca_name,
pem=self.pem,
location=self.location
location=self.location,
msp=self.msp
)

def equals(self, other):
Expand All @@ -72,7 +74,8 @@ def equals(self, other):
self.ca_name == other.ca_name and
self.tlsca_name == other.tlsca_name and
self.pem == other.pem and
self.location == other.location
self.location == other.location and
self.msp == other.msp
)

def to_json(self):
Expand All @@ -86,7 +89,8 @@ def to_json(self):
tlsca_name=self.tlsca_name,
pem=self.pem,
tls_cert=self.pem,
location=self.location
location=self.location,
msp=self.msp
)

@staticmethod
Expand All @@ -99,7 +103,8 @@ def from_json(data):
ca_name=data['ca_name'],
tlsca_name=data['tlsca_name'],
pem=data['pem'],
location=data['location']
location=data['location'],
msp=data['msp']
)

def wait_for(self, timeout):
Expand Down
63 changes: 29 additions & 34 deletions plugins/module_utils/consoles.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,26 +51,15 @@ def login(self, api_authtype, api_key, api_secret):
raise Exception(f'invalid authentication type "{api_authtype}" specified, valid values are "ibmcloud" and "basic"')
try:
self.logged_in = True
return self._login_v2()
return self._login_v3()
except Exception:
self.logged_in = False
raise

def _login_v2(self):
def _login_v3(self):
try:
self.v1 = False
self.api_base_url = urllib.parse.urljoin(self.api_endpoint, '/ak/api/v2/')
self.health = self.get_health()
self.settings = self.get_settings()
except Exception as e:
if "HTTP status code 404" in str(e):
return self._login_v1()
raise Exception(f'Failed to access the console: {e}')

def _login_v1(self):
try:
self.v1 = True
self.api_base_url = urllib.parse.urljoin(self.api_endpoint, '/ak/api/v1/')
self.api_base_url = urllib.parse.urljoin(self.api_endpoint, '/ak/api/v3/')
self.health = self.get_health()
self.settings = self.get_settings()
except Exception as e:
Expand Down Expand Up @@ -146,7 +135,7 @@ def get_settings(self):
continue
return self.handle_error('Failed to get console settings', e)

def get_all_components(self, deployment_attrs='omitted'):
def get_all_components(self, deployment_attrs='included'):
self._ensure_loggedin()
url = urllib.parse.urljoin(self.api_base_url, f'./components?deployment_attrs={deployment_attrs}&cache=skip')
headers = {
Expand All @@ -167,7 +156,7 @@ def get_all_components(self, deployment_attrs='omitted'):
continue
return self.handle_error('Failed to get all components', e)

def get_component_by_id(self, id, deployment_attrs='omitted'):
def get_component_by_id(self, id, deployment_attrs='included'):
self._ensure_loggedin()
url = urllib.parse.urljoin(self.api_base_url, f'./components/{id}?deployment_attrs={deployment_attrs}&cache=skip')
headers = {
Expand Down Expand Up @@ -204,14 +193,14 @@ def get_component_by_id(self, id, deployment_attrs='omitted'):
continue
return self.handle_error('Failed to get component by ID', e)

def get_component_by_display_name(self, component_type, display_name, deployment_attrs='omitted'):
def get_component_by_display_name(self, component_type, display_name, deployment_attrs='included'):
components = self.get_all_components()
for component in components:
if component.get('display_name', None) == display_name and component.get('type', None) == component_type:
return self.get_component_by_id(component['id'], deployment_attrs)
return None

def get_components_by_cluster_name(self, component_type, cluster_name, deployment_attrs='omitted'):
def get_components_by_cluster_name(self, component_type, cluster_name, deployment_attrs='included'):
components = self.get_all_components()
results = list()
for component in components:
Expand Down Expand Up @@ -306,11 +295,12 @@ def extract_ca_info(self, ca):
'operations_url': ca['operations_url'],
'ca_url': ca['api_url'],
'type': 'fabric-ca',
'ca_name': ca['ca_name'],
'tlsca_name': ca['tlsca_name'],
'pem': ca.get('tls_ca_root_cert', ca.get('tls_cert', None)),
'tls_cert': ca.get('tls_ca_root_cert', ca.get('tls_cert', None)),
'location': ca['location']
'ca_name': ca.get('msp').get('ca').get('name'),
'tlsca_name': ca.get('msp').get('tlsca').get('name'),
'pem': ca.get('msp').get('component').get('tls_cert'),
'tls_cert': ca.get('msp').get('component').get('tls_cert'),
'location': 'kubernetes' if ca['location'] == 'ibm_saas' else ca['location'],
'msp': ca['msp']
}

def create_ext_ca(self, data):
Expand Down Expand Up @@ -463,10 +453,11 @@ def extract_peer_info(self, peer):
'grpcwp_url': peer['grpcwp_url'],
'type': 'fabric-peer',
'msp_id': peer['msp_id'],
'pem': peer.get('tls_ca_root_cert', peer.get('pem', None)),
'tls_ca_root_cert': peer.get('tls_ca_root_cert', peer.get('pem', None)),
'tls_cert': peer.get('tls_cert', None),
'location': peer['location']
'pem': peer.get('msp').get('tlsca').get('root_certs')[0],
'tls_ca_root_cert': peer.get('msp').get('tlsca').get('root_certs')[0],
'tls_cert': peer.get('msp').get('component').get('tls_cert'),
'location': 'kubernetes' if peer['location'] == 'ibm_saas' else peer['location'],
'msp': peer['msp']
}

def create_ext_peer(self, data):
Expand Down Expand Up @@ -717,16 +708,20 @@ def extract_ordering_service_node_info(self, ordering_service_node):
'grpcwp_url': ordering_service_node['grpcwp_url'],
'type': 'fabric-orderer',
'msp_id': ordering_service_node['msp_id'],
'pem': ordering_service_node.get('tls_ca_root_cert', ordering_service_node.get('pem', None)),
'tls_ca_root_cert': ordering_service_node.get('tls_ca_root_cert', ordering_service_node.get('pem', None)),
'tls_cert': ordering_service_node.get('tls_cert', None),
'location': ordering_service_node['location'],
'pem': ordering_service_node.get('msp').get('component').get('tls_cert'),
'tls_ca_root_cert': ordering_service_node.get('msp').get('tlsca').get('root_certs')[0],
'tls_cert': ordering_service_node.get('msp').get('tlsca').get('root_certs')[0],
'location': 'kubernetes' if ordering_service_node['location'] == 'ibm_saas' else ordering_service_node['location'],
'system_channel_id': ordering_service_node['system_channel_id'],
'cluster_id': ordering_service_node['cluster_id'],
'cluster_name': ordering_service_node['cluster_name'],
'client_tls_cert': ordering_service_node.get('client_tls_cert', None),
'server_tls_cert': ordering_service_node.get('server_tls_cert', None),
'consenter_proposal_fin': ordering_service_node.get('consenter_proposal_fin', True)
'client_tls_cert': ordering_service_node.get('msp').get('component').get('tls_cert'),
'server_tls_cert': ordering_service_node.get('msp').get('component').get('tls_cert'),
'consenter_proposal_fin': ordering_service_node.get('consenter_proposal_fin', True),
'id': ordering_service_node['id'],
'display_name': ordering_service_node['display_name'],
'osnadmin_url': ordering_service_node.get('osnadmin_url', None),
'msp': ordering_service_node['msp']
}

def create_ext_ordering_service_node(self, data):
Expand Down
35 changes: 29 additions & 6 deletions plugins/module_utils/ordering_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

class OrderingServiceNode:

def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_ca_root_cert, tls_cert, location, system_channel_id, cluster_id, cluster_name, client_tls_cert, server_tls_cert, consenter_proposal_fin):
def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_ca_root_cert, tls_cert, location, system_channel_id, cluster_id, cluster_name, client_tls_cert, server_tls_cert, consenter_proposal_fin, id, display_name, osnadmin_url, msp):
self.name = name
self.api_url = api_url
self.operations_url = operations_url
Expand All @@ -40,6 +40,10 @@ def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_c
self.client_tls_cert = client_tls_cert
self.server_tls_cert = server_tls_cert
self.consenter_proposal_fin = consenter_proposal_fin
self.id = id
self.display_name = display_name
self.osnadmin_url = osnadmin_url
self.msp = msp

def clone(self):
return OrderingServiceNode(
Expand All @@ -57,7 +61,11 @@ def clone(self):
cluster_name=self.cluster_name,
client_tls_cert=self.client_tls_cert,
server_tls_cert=self.server_tls_cert,
consenter_proposal_fin=self.consenter_proposal_fin
consenter_proposal_fin=self.consenter_proposal_fin,
id=self.id,
display_name=self.display_name,
osnadmin_url=self.osnadmin_url,
msp=self.msp
)

def equals(self, other):
Expand All @@ -76,7 +84,11 @@ def equals(self, other):
self.cluster_name == other.cluster_name and
self.client_tls_cert == other.client_tls_cert and
self.server_tls_cert == other.server_tls_cert and
self.consenter_proposal_fin == other.consenter_proposal_fin
self.consenter_proposal_fin == other.consenter_proposal_fin and
self.id == other.id and
self.display_name == other.display_name and
self.osnadmin_url == other.osnadmin_url and
self.msp == other.msp
)

def to_json(self):
Expand All @@ -96,7 +108,11 @@ def to_json(self):
cluster_name=self.cluster_name,
client_tls_cert=self.client_tls_cert,
server_tls_cert=self.server_tls_cert,
consenter_proposal_fin=self.consenter_proposal_fin
id=self.id,
display_name=self.display_name,
osnadmin_url=self.osnadmin_url,
consenter_proposal_fin=self.consenter_proposal_fin,
msp=self.msp
)

@staticmethod
Expand All @@ -116,7 +132,11 @@ def from_json(data):
cluster_name=data['cluster_name'],
client_tls_cert=data['client_tls_cert'],
server_tls_cert=data['server_tls_cert'],
consenter_proposal_fin=data['consenter_proposal_fin']
consenter_proposal_fin=data['consenter_proposal_fin'],
id=data['id'],
display_name=data['display_name'],
osnadmin_url=data['osnadmin_url'],
msp=data['msp']
)

def wait_for(self, timeout):
Expand Down Expand Up @@ -259,7 +279,10 @@ def equals(self, other):
def to_json(self):
nodes = list()
for node in self.nodes:
nodes.append(node.to_json())
# remove nulls
node_dict = node.to_json()
node_nonulls = {k: v for k, v in node_dict.items() if v is not None}
nodes.append(node_nonulls)
return nodes

@staticmethod
Expand Down
15 changes: 10 additions & 5 deletions plugins/module_utils/peers.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

class Peer:

def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_ca_root_cert, tls_cert, location):
def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_ca_root_cert, tls_cert, location, msp):
self.name = name
self.api_url = api_url
self.operations_url = operations_url
Expand All @@ -37,6 +37,7 @@ def __init__(self, name, api_url, operations_url, grpcwp_url, msp_id, pem, tls_c
self.tls_ca_root_cert = tls_ca_root_cert
self.tls_cert = tls_cert
self.location = location
self.msp = msp

def clone(self):
return Peer(
Expand All @@ -48,7 +49,8 @@ def clone(self):
pem=self.pem,
tls_ca_root_cert=self.tls_ca_root_cert,
tls_cert=self.tls_cert,
location=self.location
location=self.location,
msp=self.msp
)

def equals(self, other):
Expand All @@ -61,7 +63,8 @@ def equals(self, other):
self.pem == other.pem and
self.tls_ca_root_cert == other.tls_ca_root_cert and
self.tls_cert == other.tls_cert and
self.location == other.location
self.location == other.location and
self.msp == other.msp
)

def to_json(self):
Expand All @@ -75,7 +78,8 @@ def to_json(self):
pem=self.pem,
tls_ca_root_cert=self.tls_ca_root_cert,
tls_cert=self.tls_cert,
location=self.location
location=self.location,
msp=self.msp
)

@staticmethod
Expand All @@ -89,7 +93,8 @@ def from_json(data):
pem=data['pem'],
tls_ca_root_cert=data['tls_ca_root_cert'],
tls_cert=data['tls_cert'],
location=data['location']
location=data['location'],
msp=data['msp']
)

def wait_for(self, timeout):
Expand Down
Loading

0 comments on commit 81223b7

Please sign in to comment.