|
1 |
| - |
2 |
| -from __future__ import print_function |
3 |
| - |
4 |
| -import json |
5 |
| -import zipfile |
6 |
| -import boto3 |
7 |
| -import os |
8 |
| -import re |
9 |
| -import sys |
10 |
| -import argparse |
11 |
| -from botocore.exceptions import ClientError |
12 |
| -import requests |
13 |
| - |
14 |
| -import requests.packages.urllib3 |
15 |
| -requests.packages.urllib3.disable_warnings() |
16 |
| - |
17 |
| -temp_archive_file = 'models.zip' |
18 |
| - |
19 |
| -def main(): |
20 |
| - parser = argparse.ArgumentParser() |
21 |
| - parser.add_argument('-r', '--releaseDoc') |
22 |
| - parser.add_argument('-m', '--modelsDir') |
23 |
| - args = parser.parse_args() |
24 |
| - |
25 |
| - releaseDocPath = args.releaseDoc |
26 |
| - modelsDir = args.modelsDir |
27 |
| - |
28 |
| - print('Release Doc path {0}'.format(releaseDocPath)) |
29 |
| - print('Models Directory {0}'.format(modelsDir)) |
30 |
| - |
31 |
| - releaseDoc = {} |
32 |
| - |
33 |
| - pendingReleases = None |
34 |
| - |
35 |
| - with open(releaseDocPath, "r") as releaseDocFileStream: |
36 |
| - releaseDoc = json.loads(releaseDocFileStream.read()) |
37 |
| - |
38 |
| - if(len(releaseDoc) == 0 or len(releaseDoc["releases"]) == 0): |
39 |
| - return |
40 |
| - |
41 |
| - for release in releaseDoc["releases"]: |
42 |
| - for feature in release["features"]: |
43 |
| - response = requests.get(feature["c2jModels"]) |
44 |
| - if response.status_code != 200: |
45 |
| - print("Error downloading {0} artifacts skipping.", json.dumps(feature)) |
46 |
| - continue |
47 |
| - |
48 |
| - body_stream_to_file(response.content) |
49 |
| - copy_model_files(modelsDir) |
50 |
| - cat_release_notes(feature["releaseNotes"], modelsDir) |
51 |
| - |
52 |
| - cat_pending_releases(release["id"], modelsDir) |
53 |
| - |
54 |
| - emptyReleaseDoc = "{ \"releases\": []}" |
55 |
| - |
56 |
| - with open(releaseDocPath, "w") as emptyReleaseFile: |
57 |
| - emptyReleaseFile.write(emptyReleaseDoc) |
58 |
| - |
59 |
| -def copy_model_files(models_dir): |
60 |
| - archive = zipfile.ZipFile(temp_archive_file, 'r') |
61 |
| - archive.debug = 3 |
62 |
| - for info in archive.infolist(): |
63 |
| - print(info.filename) |
64 |
| - if re.match(r'output/.*\.normal\.json', info.filename): |
65 |
| - outputPath = os.path.join(models_dir, os.path.basename(info.filename)) |
66 |
| - print("copying {0} to {1}".format(info.filename, outputPath)) |
67 |
| - fileHandle = archive.open(info.filename, 'r') |
68 |
| - fileOutput = fileHandle.read() |
69 |
| - |
70 |
| - with open(outputPath, 'wb') as destination: |
71 |
| - destination.write(fileOutput) |
72 |
| - |
73 |
| - fileHandle.close() |
74 |
| - |
75 |
| -def body_stream_to_file(body): |
76 |
| - with open(temp_archive_file, 'w') as archiveFile: |
77 |
| - archiveFile.write(body) |
78 |
| - |
79 |
| -def cat_release_notes(releaseNotes, models_path): |
80 |
| - with open(os.path.join(models_path, "release_notes"), "a") as releaseNotesFile: |
81 |
| - releaseNotesFile.write(releaseNotes + "\n\n") |
82 |
| - |
83 |
| -def cat_pending_releases(release_guid, models_path): |
84 |
| - with open(os.path.join(models_path, "pending_releases"), "a") as pendingReleasesFile: |
85 |
| - pendingReleasesFile.write(release_guid + "\n") |
86 |
| - |
87 |
| -if __name__ == "__main__": |
88 |
| - main() |
| 1 | + |
| 2 | +from __future__ import print_function |
| 3 | + |
| 4 | +import json |
| 5 | +import zipfile |
| 6 | +import boto3 |
| 7 | +import os |
| 8 | +import re |
| 9 | +import sys |
| 10 | +import argparse |
| 11 | +from botocore.exceptions import ClientError |
| 12 | +import requests |
| 13 | + |
| 14 | +import requests.packages.urllib3 |
| 15 | +requests.packages.urllib3.disable_warnings() |
| 16 | + |
| 17 | +temp_archive_file = 'models.zip' |
| 18 | + |
| 19 | +def main(): |
| 20 | + parser = argparse.ArgumentParser() |
| 21 | + parser.add_argument('-r', '--releaseDoc') |
| 22 | + parser.add_argument('-m', '--modelsDir') |
| 23 | + args = parser.parse_args() |
| 24 | + |
| 25 | + releaseDocPath = args.releaseDoc |
| 26 | + modelsDir = args.modelsDir |
| 27 | + |
| 28 | + print('Release Doc path {0}'.format(releaseDocPath)) |
| 29 | + print('Models Directory {0}'.format(modelsDir)) |
| 30 | + |
| 31 | + releaseDoc = {} |
| 32 | + |
| 33 | + pendingReleases = None |
| 34 | + |
| 35 | + with open(releaseDocPath, "r") as releaseDocFileStream: |
| 36 | + releaseDoc = json.loads(releaseDocFileStream.read()) |
| 37 | + |
| 38 | + if(len(releaseDoc) == 0 or len(releaseDoc["releases"]) == 0): |
| 39 | + return |
| 40 | + |
| 41 | + for release in releaseDoc["releases"]: |
| 42 | + for feature in release["features"]: |
| 43 | + response = requests.get(feature["c2jModels"]) |
| 44 | + if response.status_code != 200: |
| 45 | + print("Error downloading {0} artifacts skipping.", json.dumps(feature)) |
| 46 | + continue |
| 47 | + |
| 48 | + body_stream_to_file(response.content) |
| 49 | + copy_model_files(modelsDir) |
| 50 | + cat_release_notes(feature["releaseNotes"], modelsDir) |
| 51 | + |
| 52 | + cat_pending_releases(release["id"], modelsDir) |
| 53 | + |
| 54 | + emptyReleaseDoc = "{ \"releases\": []}" |
| 55 | + |
| 56 | + with open(releaseDocPath, "w") as emptyReleaseFile: |
| 57 | + emptyReleaseFile.write(emptyReleaseDoc) |
| 58 | + |
| 59 | +def copy_model_files(models_dir): |
| 60 | + archive = zipfile.ZipFile(temp_archive_file, 'r') |
| 61 | + archive.debug = 3 |
| 62 | + for info in archive.infolist(): |
| 63 | + print(info.filename) |
| 64 | + if re.match(r'output/.*\.normal\.json', info.filename): |
| 65 | + outputPath = os.path.join(models_dir, os.path.basename(info.filename)) |
| 66 | + print("copying {0} to {1}".format(info.filename, outputPath)) |
| 67 | + fileHandle = archive.open(info.filename, 'r') |
| 68 | + fileOutput = fileHandle.read() |
| 69 | + |
| 70 | + with open(outputPath, 'wb') as destination: |
| 71 | + destination.write(fileOutput) |
| 72 | + |
| 73 | + fileHandle.close() |
| 74 | + |
| 75 | +def body_stream_to_file(body): |
| 76 | + with open(temp_archive_file, 'w') as archiveFile: |
| 77 | + archiveFile.write(body) |
| 78 | + |
| 79 | +def cat_release_notes(releaseNotes, models_path): |
| 80 | + with open(os.path.join(models_path, "release_notes"), "a") as releaseNotesFile: |
| 81 | + releaseNotesFile.write(releaseNotes + "\n\n") |
| 82 | + |
| 83 | +def cat_pending_releases(release_guid, models_path): |
| 84 | + with open(os.path.join(models_path, "pending_releases"), "a") as pendingReleasesFile: |
| 85 | + pendingReleasesFile.write(release_guid + "\n") |
| 86 | + |
| 87 | +if __name__ == "__main__": |
| 88 | + main() |
0 commit comments