90 lines
2.9 KiB
Python
90 lines
2.9 KiB
Python
|
|
from __future__ import print_function
|
|
|
|
import json
|
|
import zipfile
|
|
import boto3
|
|
import os
|
|
import re
|
|
import sys
|
|
import argparse
|
|
from botocore.exceptions import ClientError
|
|
import requests
|
|
|
|
import requests.packages.urllib3
|
|
requests.packages.urllib3.disable_warnings()
|
|
|
|
temp_archive_file = 'models.zip'
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-r', '--releaseDoc')
|
|
parser.add_argument('-m', '--modelsDir')
|
|
args = parser.parse_args()
|
|
|
|
releaseDocPath = args.releaseDoc
|
|
modelsDir = args.modelsDir
|
|
|
|
print('Release Doc path {0}'.format(releaseDocPath))
|
|
print('Models Directory {0}'.format(modelsDir))
|
|
|
|
releaseDoc = {}
|
|
|
|
pendingReleases = None
|
|
|
|
with open(releaseDocPath, "r") as releaseDocFileStream:
|
|
releaseDoc = json.loads(releaseDocFileStream.read())
|
|
|
|
if(len(releaseDoc) == 0 or len(releaseDoc["releases"]) == 0):
|
|
return
|
|
|
|
for release in releaseDoc["releases"]:
|
|
for feature in release["features"]:
|
|
if feature["c2jModels"] != None:
|
|
response = requests.get(feature["c2jModels"])
|
|
if response.status_code != 200:
|
|
print("Error downloading {0} artifacts skipping.", json.dumps(feature))
|
|
continue
|
|
|
|
body_stream_to_file(response.content)
|
|
copy_model_files(modelsDir)
|
|
cat_release_notes(feature["releaseNotes"], modelsDir)
|
|
|
|
cat_pending_releases(release["id"], modelsDir)
|
|
|
|
emptyReleaseDoc = "{ \"releases\": []}"
|
|
|
|
with open(releaseDocPath, "w") as emptyReleaseFile:
|
|
emptyReleaseFile.write(emptyReleaseDoc)
|
|
|
|
def copy_model_files(models_dir):
|
|
archive = zipfile.ZipFile(temp_archive_file, 'r')
|
|
archive.debug = 3
|
|
for info in archive.infolist():
|
|
print(info.filename)
|
|
if re.match(r'output/.*\.normal\.json', info.filename):
|
|
outputPath = os.path.join(models_dir, os.path.basename(info.filename))
|
|
print("copying {0} to {1}".format(info.filename, outputPath))
|
|
fileHandle = archive.open(info.filename, 'r')
|
|
fileOutput = fileHandle.read()
|
|
|
|
with open(outputPath, 'wb') as destination:
|
|
destination.write(fileOutput)
|
|
|
|
fileHandle.close()
|
|
|
|
def body_stream_to_file(body):
|
|
with open(temp_archive_file, 'w') as archiveFile:
|
|
archiveFile.write(body)
|
|
|
|
def cat_release_notes(releaseNotes, models_path):
|
|
with open(os.path.join(models_path, "release_notes"), "a") as releaseNotesFile:
|
|
releaseNotesFile.write(releaseNotes + "\n\n")
|
|
|
|
def cat_pending_releases(release_guid, models_path):
|
|
with open(os.path.join(models_path, "pending_releases"), "a") as pendingReleasesFile:
|
|
pendingReleasesFile.write(release_guid + "\n")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|