From bcc1799e0e924ff161600c8b944ac8f0bbb687ae Mon Sep 17 00:00:00 2001 From: Patrick McDonagh Date: Fri, 3 Nov 2017 12:34:40 -0500 Subject: [PATCH] Adds driver ID lookup --- pocloud_driver_setup.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pocloud_driver_setup.py b/pocloud_driver_setup.py index 16776cb..8e23683 100644 --- a/pocloud_driver_setup.py +++ b/pocloud_driver_setup.py @@ -3,6 +3,8 @@ import json import click import boto3 +import csv +import urllib2 CONFIG_FILE_NAME = "driverConfig.json" CONFIG_OUTPUT_FILENAME = "config.txt" @@ -28,6 +30,36 @@ def get_driver_files(): files.append(x) return files +def get_driver_ids(): + """Retrieve the master list of driver IDs from the S3 bucket.""" + ids = [] + url = 'https://s3.amazonaws.com/{}/deviceIds.csv'.format(DRIVER_BUCKET) + response = urllib2.urlopen(url) + csvreader = csv.DictReader(response) + for row in csvreader: + ids.append(row) + return ids + +def check_driver_id(driver_name): + """Check if a driver ID exists and if not, create an ID for it.""" + id_list = get_driver_ids() + for id in id_list: + if id['driver'] == driver_name: + return id['id'] + # if you get here, you didn't find the driver in the list + last_id = int(id_list[-1]['id']) + new_id = ("0000" + str(last_id + 10))[-4:] + new_csv_contents = "driver,id\n" + for id in id_list: + new_csv_contents += "{},{}\n".format(id['driver'], id['id']) + new_csv_contents += "{},{}\n".format(driver_name, new_id) + file_key = "deviceIds.csv" + s3.Bucket(DRIVER_BUCKET).put_object(Key=file_key, Body=new_csv_contents) + s3.ObjectAcl(DRIVER_BUCKET, file_key).put(ACL='public-read') + return new_id + + + @click.group() def cli(): pass @@ -70,10 +102,12 @@ def prepare(dry_run, version): else: version = driver_config['version'] + driver_id = check_driver_id(driver_config['name']) + config_object = { "driverFileName": driver_config['driverFilename'], "deviceName": driver_config['name'], - "driverId": driver_config['driverId'], + "driverId": driver_id, "releaseVersion": "{}".format(version), "files": file_object }