Skip to content

Commit 50b7c0b

Browse files
author
Vishvendra
committed
Merge branch 'main' into feat/apple-silicon-support - Resolve conflicts and integrate latest changes
2 parents 35650bd + fad61c2 commit 50b7c0b

File tree

17 files changed

+475
-310
lines changed

17 files changed

+475
-310
lines changed

src/api-engine/api/lib/agent/docker/handler.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def create(self, info):
5656
else:
5757
return None
5858
except Exception as e:
59+
LOG.exception("DockerAgent Not Created")
5960
raise e
6061

6162
def delete(self, *args, **kwargs):
@@ -66,6 +67,7 @@ def delete(self, *args, **kwargs):
6667
else:
6768
raise response.reason
6869
except Exception as e:
70+
LOG.exception("DockerAgent Not Deleted")
6971
raise e
7072

7173
def start(self, *args, **kwargs):
@@ -76,6 +78,7 @@ def start(self, *args, **kwargs):
7678
else:
7779
raise response.reason
7880
except Exception as e:
81+
LOG.exception("DockerAgent Not Started")
7982
raise e
8083

8184
def restart(self, *args, **kwargs):
@@ -86,6 +89,7 @@ def restart(self, *args, **kwargs):
8689
else:
8790
raise response.reason
8891
except Exception as e:
92+
LOG.exception("DockerAgent Not Restarted")
8993
raise e
9094

9195
def stop(self, *args, **kwargs):
@@ -96,6 +100,7 @@ def stop(self, *args, **kwargs):
96100
else:
97101
raise response.reason
98102
except Exception as e:
103+
LOG.exception("DockerAgent Not Stopped")
99104
raise e
100105

101106
def get(self, *args, **kwargs):
@@ -106,6 +111,7 @@ def get(self, *args, **kwargs):
106111
else:
107112
raise response.reason
108113
except Exception as e:
114+
LOG.exception("DockerAgent Not Found")
109115
raise e
110116

111117
def update_config(self, config_file, node_type):
@@ -123,4 +129,5 @@ def update_config(self, config_file, node_type):
123129
else:
124130
raise response.reason
125131
except Exception as e:
132+
LOG.exception("Config Update Failed")
126133
raise e

src/api-engine/api/lib/peer/chaincode.py

Lines changed: 89 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ def lifecycle_approve_for_my_org(self, orderer_url, channel_name, cc_name,
119119
The administrator can use the peer lifecycle chaincode approveformyorg subcommand to approve the chain code on
120120
behalf of the organization.
121121
:param orderer_url: orderer accessable url
122-
:param orderer_tls_rootcert: orderer tls certificate
123122
:param channel_name: channel name
124123
:param cc_name: chaincode name
125124
:param chaincode_version: chaincode version
@@ -216,96 +215,113 @@ def lifecycle_query_approved(self, channel_name, cc_name):
216215

217216
return return_code, chaincodes_info
218217

219-
def lifecycle_check_commit_readiness(self, orderer_url, orderer_tls_rootcert, channel_name, cc_name, cc_version,
220-
policy, sequence=1):
218+
def lifecycle_check_commit_readiness(self, channel_name, cc_name, cc_version, sequence=1):
221219
"""
222-
223-
:param orderer_url:orderer accessable url
224-
:param orderer_tls_rootcert:orderer tls certificate
225220
:param channel_name:channel name
226221
:param cc_name: chaincode name
227222
:param cc_version: chaincode version
228-
:param policy:chaincode policy
229223
:param sequence:The channel chain code defines the serial number. The default value is 1
230224
:return:
231225
"""
232226
try:
227+
ORDERER_CA = os.getenv("ORDERER_CA")
228+
command = []
233229
if os.getenv("CORE_PEER_TLS_ENABLED") == "false" or os.getenv("CORE_PEER_TLS_ENABLED") is None:
234-
res = subprocess.Popen("{} lifecycle chaincode checkcommitreadiness --output json "
235-
" --channelID {} --name {} --version {} --init-required --sequence {} "
236-
"--signature-policy {}"
237-
.format(self.peer, channel_name, cc_name, cc_version, sequence, policy),
238-
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
239-
stdout, stderr = res.communicate()
240-
return_code = res.returncode
241-
if return_code == 0:
242-
content = str(stdout, encoding="utf-8")
243-
chaincodes_info = json.loads(content)
244-
return return_code, chaincodes_info
245-
else:
246-
stderr = str(stderr, encoding="utf-8")
247-
return return_code, stderr
230+
command = [
231+
self.peer,
232+
"lifecycle", "chaincode", "checkcommitreadiness",
233+
"--channelID", channel_name,
234+
"--name", cc_name,
235+
"--version", cc_version,
236+
"--sequence", str(sequence),
237+
"--output", "json",
238+
]
248239
else:
249-
res = subprocess.Popen("{} lifecycle chaincode checkcommitreadiness --output json "
250-
"-o {} --tls --cafile {} --channelID {} --name {} --version {} "
251-
"--signature-policy {} --init-required --sequence {}"
252-
.format(self.peer, orderer_url, orderer_tls_rootcert, channel_name, cc_name,
253-
cc_version, policy, sequence),
254-
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
255-
stdout, stderr = res.communicate()
256-
return_code = res.returncode
257-
if return_code == 0:
258-
content = str(stdout, encoding="utf-8")
259-
chaincodes_info = json.loads(content)
260-
return return_code, chaincodes_info
261-
else:
262-
stderr = str(stderr, encoding="utf-8")
263-
return return_code, stderr
240+
command = [
241+
self.peer,
242+
"lifecycle", "chaincode", "checkcommitreadiness",
243+
"--channelID", channel_name,
244+
"--name", cc_name,
245+
"--version", cc_version,
246+
"--sequence", str(sequence),
247+
"--tls",
248+
"--cafile", ORDERER_CA,
249+
"--output", "json",
250+
]
251+
252+
LOG.info(" ".join(command))
253+
254+
res = subprocess.Popen(command, shell=False,
255+
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
256+
stdout, stderr = res.communicate()
257+
return_code = res.returncode
258+
if return_code == 0:
259+
content = str(stdout, encoding="utf-8")
260+
chaincodes_info = json.loads(content)
261+
return return_code, chaincodes_info
262+
else:
263+
stderr = str(stderr, encoding="utf-8")
264+
return return_code, stderr
264265
except Exception as e:
265-
err_msg = "lifecycle_check_commit_readiness failed for {}!".format(
266-
e)
266+
err_msg = "lifecycle_check_commit_readiness failed for {}!".format(e)
267267
raise Exception(err_msg)
268268

269-
def lifecycle_commit(self, orderer_url, orderer_tls_rootcert, channel_name, cc_name, chaincode_version,
270-
policy, peerlist, peer_root_certs, sequency=1):
269+
def lifecycle_commit(self, orderer_url, channel_name, cc_name, chaincode_version, sequence, policy, peer_list=[], peer_root_certs=[], init_flag=False):
271270
"""
272271
The administrator can submit the chain code definition to the specified channel by using the peer lifecycle
273272
chain code commit subcommand
274273
:param orderer_url: orderer accessable url
275-
:param orderer_tls_rootcert:orderer tls certificate
276274
:param channel_name:channel name
277275
:param cc_name:chaincode name
278276
:param chaincode_version:chaincode version
277+
:param sequence:The channel chain code defines the serial number. The default value is 1
279278
:param policy:chaincode policy
280-
:param peerlist: the list of peerAddress
279+
:param peer_list: the list of peerAddress
281280
:param peer_root_certs: the list of peer_root_certs, the orderer should be same as peerlist's.
282-
:param sequency:The channel chain code defines the serial number. The default value is 1
281+
:param init_flag:if the chaincode is first init.
283282
:return:
284283
"""
285284
try:
286-
peer_addresses_format = " --peerAddresses {} --tlsRootCertFiles {}"
287-
command_str_with_tls = "{} lifecycle chaincode commit -o {} --tls --cafile {} " \
288-
"--channelID {} --name {} --version {} --init-required --sequence {} " \
289-
"--signature-policy {}"
290-
command_str_without_tls = "{} lifecycle chaincode commit -o {} --channelID {} --name {} " \
291-
"--version {} --init-required --sequence {} --signature-policy {}"
292-
293-
peer_addressed = []
294-
for i in range(len(peerlist)):
295-
peer_addressed.append(peerlist[i])
296-
peer_addressed.append(peer_root_certs[i])
285+
command = []
297286
if os.getenv("CORE_PEER_TLS_ENABLED") == "false" or os.getenv("CORE_PEER_TLS_ENABLED") is None:
298-
for i in range(len(peerlist)):
299-
command_str_without_tls = command_str_without_tls + peer_addresses_format
300-
res = os.system(command_str_without_tls.format(self.peer, orderer_url, channel_name, cc_name,
301-
chaincode_version, sequency, policy, *peer_addressed)) # --collections-config {}
287+
command = [
288+
self.peer,
289+
"lifecycle", "chaincode", "commit",
290+
"-o", orderer_url,
291+
"--channelID", channel_name,
292+
"--name", cc_name,
293+
"--version", chaincode_version,
294+
"--sequence", str(sequence),
295+
]
302296
else:
303-
for i in range(len(peerlist)):
304-
command_str_with_tls = command_str_with_tls + peer_addresses_format
305-
306-
res = os.system(command_str_with_tls.format(self.peer, orderer_url, orderer_tls_rootcert, channel_name,
307-
cc_name, chaincode_version, sequency, policy, *peer_addressed))
297+
ORDERER_CA = os.getenv("ORDERER_CA")
298+
command = [
299+
self.peer,
300+
"lifecycle", "chaincode", "commit",
301+
"-o", orderer_url,
302+
"--ordererTLSHostnameOverride", orderer_url.split(":")[0],
303+
"--channelID", channel_name,
304+
"--name", cc_name,
305+
"--version", chaincode_version,
306+
"--sequence", str(sequence),
307+
"--tls",
308+
"--cafile", ORDERER_CA,
309+
]
308310

311+
for i in range(len(peer_list)):
312+
command.append("--peerAddresses")
313+
command.append(peer_list[i])
314+
command.append("--tlsRootCertFiles")
315+
command.append(peer_root_certs[i])
316+
317+
if init_flag:
318+
command.append("--init-required")
319+
if policy:
320+
command.append("--signature-policy")
321+
command.append(policy)
322+
323+
LOG.info(" ".join(command))
324+
res = os.system(" ".join(command))
309325
res = res >> 8
310326
return res
311327

@@ -321,10 +337,16 @@ def lifecycle_query_committed(self, channel_name, cc_name):
321337
:return: chaincodes info has commited in channel of the cc_name
322338
"""
323339
try:
324-
res = subprocess.Popen("{} lifecycle chaincode querycommitted --channelID {} "
325-
"--output json --name {}".format(
326-
self.peer, channel_name, cc_name),
327-
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
340+
command = [
341+
self.peer,
342+
"lifecycle", "chaincode", "querycommitted",
343+
"--channelID", channel_name,
344+
"--output", "json",
345+
"--name", cc_name,
346+
]
347+
LOG.info(" ".join(command))
348+
res = subprocess.Popen(command, shell=False,
349+
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
328350
stdout, stderr = res.communicate()
329351
return_code = res.returncode
330352
if return_code == 0:

src/api-engine/api/routes/agent/views.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def retrieve(self, request, pk=None):
205205
if agent.type == HostType.Kubernetes.name.lower():
206206
k8s_config = KubernetesConfig.objects.get(agent=agent)
207207
except ObjectDoesNotExist:
208-
raise ResourceNotFound
208+
raise ResourceNotFound("Agent not found")
209209
else:
210210
data = agent.__dict__
211211
if k8s_config:
@@ -234,7 +234,7 @@ def update(self, request, pk=None):
234234
# organization = request.user.organization
235235
try:
236236
if Agent.objects.get(name=name):
237-
raise ResourceExists
237+
raise ResourceExists("Agent Exists")
238238
except ObjectDoesNotExist:
239239
pass
240240
Agent.objects.filter(id=pk).update(name=name)
@@ -266,7 +266,7 @@ def partial_update(self, request, pk=None):
266266
try:
267267
agent = Agent.objects.get(id=pk)
268268
except ObjectDoesNotExist:
269-
raise ResourceNotFound
269+
raise ResourceNotFound("Agent not found")
270270
else:
271271
if name:
272272
agent.name = name
@@ -308,10 +308,10 @@ def destroy(self, request, pk=None):
308308
else:
309309
raise CustomError("User can't delete agent!")
310310
except ObjectDoesNotExist:
311-
raise ResourceNotFound
311+
raise ResourceNotFound("Agent not found")
312312
else:
313313
if agent.node.count():
314-
raise ResourceInUse
314+
raise ResourceInUse("Agent in use")
315315
agent.delete()
316316

317317
return Response(ok(None), status=status.HTTP_202_ACCEPTED)
@@ -357,7 +357,7 @@ def apply(self, request):
357357
schedulable=True,
358358
).order_by("capacity")
359359
if len(agents) == 0:
360-
raise NoResource
360+
raise NoResource("No Agent")
361361

362362
agent = agents[0]
363363
agent.organization = request.user.organization
@@ -371,6 +371,7 @@ def apply(self, request):
371371
except NoResource as e:
372372
raise e
373373
except Exception as e:
374+
LOG.exception("Agent Not Applied")
374375
return Response(
375376
err(e.args), status=status.HTTP_400_BAD_REQUEST
376377
)
@@ -399,7 +400,7 @@ def release(self, request, pk=None):
399400
id=pk, organization=request.user.organization
400401
)
401402
except ObjectDoesNotExist:
402-
raise ResourceNotFound
403+
raise ResourceNotFound("Agent not found")
403404
else:
404405
agent.organization = None
405406
agent.save()

0 commit comments

Comments
 (0)