accli 0.7.1__tar.gz → 0.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: accli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: IIASA Accelerator Client
5
5
  Author-email: Wrufesh S <wrufesh@gmail.com>
6
6
  License: The MIT License (MIT)
@@ -257,6 +257,19 @@ class AcceleratorJobProjectService:
257
257
 
258
258
  return data['upload_id'], data['app_bucket_id'], data['uniqified_filename']
259
259
 
260
+
261
+ def get_validator_create_multipart_upload_id(self, filename):
262
+ encoded_filename = quote(filename)
263
+ res = self.http_client_request(
264
+ "GET",
265
+ f"{self.cli_base_url}/validator-multipart-upload-id/?filename={encoded_filename}",
266
+ headers=self.common_request_headers
267
+ )
268
+
269
+ data = todict(res.data)
270
+
271
+ return data['upload_id'], data['app_bucket_id'], data['uniqified_filename']
272
+
260
273
  def get_put_update_multipart_upload_id(self, bucket_object_id):
261
274
  res = self.http_client_request(
262
275
  "GET",
@@ -572,6 +585,84 @@ class AcceleratorJobProjectService:
572
585
 
573
586
  raise err
574
587
 
588
+
589
+ def add_filestream_as_validation_supporter(self, filename, file_stream, is_log_file=False):
590
+ headers = dict()
591
+ headers["Content-Type"] = "application/octet-stream"
592
+
593
+ part_size, part_count = 50 * 1024**2, -1
594
+
595
+ upload_id = None
596
+ app_bucket_id = None
597
+ uniqified_filename = None
598
+
599
+ one_byte = b""
600
+ stop = False
601
+ part_number = 0
602
+ parts = []
603
+ uploaded_size = 0
604
+ put_presigned_url = None
605
+
606
+ try:
607
+ while not stop:
608
+ part_number += 1
609
+ part_data = self.read_part_data(
610
+ file_stream,
611
+ part_size + 1,
612
+ one_byte,
613
+ progress=None,
614
+ )
615
+
616
+ # If part_data_size is less or equal to part_size,
617
+ # then we have reached last part.
618
+ if len(part_data) <= part_size:
619
+ part_count = part_number
620
+ stop = True
621
+ else:
622
+ one_byte = part_data[-1:]
623
+ part_data = part_data[:-1]
624
+
625
+ uploaded_size += len(part_data)
626
+
627
+ if not upload_id:
628
+ (
629
+ upload_id,
630
+ app_bucket_id,
631
+ uniqified_filename,
632
+ ) = self.get_put_create_multipart_upload_id(
633
+ filename,
634
+ # headers=headers
635
+ )
636
+
637
+ put_presigned_url = self.get_validator_create_multipart_upload_id(
638
+ app_bucket_id, uniqified_filename, upload_id, part_number
639
+ )
640
+
641
+ part_upload_response = requests.put(
642
+ put_presigned_url,
643
+ data=part_data,
644
+ # headers=headers,
645
+ verify=False,
646
+ )
647
+
648
+ etag = part_upload_response.headers.get("etag").replace('"', "")
649
+ parts.append((part_number, etag))
650
+
651
+ created_bucket_object_id = self.complete_job_multipart_upload(
652
+ app_bucket_id, uniqified_filename, upload_id, parts, is_log_file=is_log_file
653
+ )
654
+ return created_bucket_object_id
655
+
656
+ except Exception as err:
657
+ # Cancel if any error
658
+ if upload_id:
659
+ self.abort_create_multipart_upload(
660
+ app_bucket_id,
661
+ uniqified_filename,
662
+ upload_id,
663
+ )
664
+ raise err
665
+
575
666
  def update_job_status(self, status):
576
667
  headers = {
577
668
  # "Content-Type": "application/json"
@@ -1,3 +1,3 @@
1
1
  # Please strictly put double quote to use this info for git tag
2
2
  # Read developer guide for git tag command with regex
3
- VERSION = "v0.7.1"
3
+ VERSION = "v0.7.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: accli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: IIASA Accelerator Client
5
5
  Author-email: Wrufesh S <wrufesh@gmail.com>
6
6
  License: The MIT License (MIT)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes