tools/AduCmdlets-py/CreateSampleSimpleUpdate.py (47 lines of code) (raw):

#!/usr/bin/env python3 # # Device Update for IoT Hub # Copyright (c) Microsoft Corporation. # # Create a sample simple update. # The generated sample update contains fake files and cannot be actually installed onto a device. # # Example: # CreateSampleSimpleUpdate.py --path './test' --update-version '1.2' # import argparse import os import sys import tempfile import scripts.aduupdate as adu_update def main(): parser = argparse.ArgumentParser( description='Create a sample update with mix of inline and reference install steps') parser.add_argument( '--path', required=True, help='Directory to create the import manifest JSON files in') parser.add_argument( '--update-version', required=True, help='Version of update to create and import - major.minor[.build[.revision]]') args = parser.parse_args() output_path = args.path update_version = args.update_version os.makedirs(output_path, exist_ok=True) # Use arbitrary files as update payload files in this sample. # Production code would reference real update files. file_name = 'readme.txt' file = open( os.path.join(output_path, file_name), 'w') with file: file.write('This is the payload file.') update_id = adu_update.update_id( provider='Contoso', name='Toaster', version=update_version) compatibility_info = adu_update.compatibility_info( { 'manufacturer': 'Contoso', 'model': 'Toaster' }) # Note that files is passed as a list. installation_step = adu_update.inline_installation_step( handler='microsoft/swupdate:1', handler_properties={'installedCriteria': '1.0'}, files=[file.name]) # Note that compatibility_infos and installation_steps are passed as lists. update = adu_update.import_manifest( update_id=update_id, compatibility_infos=[compatibility_info], installation_steps=[installation_step]) with open(os.path.join(output_path, 'contoso.toaster.1.0.importmanifest.json'), 'w') as f: f.write(str(update)) if __name__ == '__main__': main()