#!/usr/bin/env python3
import os
import sys
import subprocess
BASE_URL = " https://commadataci.blob.core.windows.net/openpilotci/ "
TOKEN_PATH = " /data/azure_token "
def get_url ( route_name , segment_num , log_type = " rlog " ) :
ext = " hevc " if log_type . endswith ( ' camera ' ) else " bz2 "
return BASE_URL + f " { route_name . replace ( ' | ' , ' / ' ) } / { segment_num } / { log_type } . { ext } "
def get_sas_token ( ) :
sas_token = os . environ . get ( " AZURE_TOKEN " , None )
if os . path . isfile ( TOKEN_PATH ) :
sas_token = open ( TOKEN_PATH ) . read ( ) . strip ( )
if sas_token is None :
sas_token = subprocess . check_output ( " az storage container generate-sas --account-name commadataci --name openpilotci --https-only --permissions lrw \
- - expiry $ ( date - u ' + % Y- % m- %d T % H: % M: % SZ ' - d ' +1 hour ' ) - - auth - mode login - - as - user - - output tsv " , shell=True).decode().strip( " \n " )
return sas_token
def upload_bytes ( data , name ) :
from azure . storage . blob import BlockBlobService # pylint: disable=import-error
service = BlockBlobService ( account_name = " commadataci " , sas_token = get_sas_token ( ) )
service . create_blob_from_bytes ( " openpilotci " , name , data )
return BASE_URL + name
def upload_file ( path , name ) :
from azure . storage . blob import BlockBlobService # pylint: disable=import-error
service = BlockBlobService ( account_name = " commadataci " , sas_token = get_sas_token ( ) )
service . create_blob_from_path ( " openpilotci " , name , path )
return BASE_URL + name
if __name__ == " __main__ " :
for f in sys . argv [ 1 : ] :
name = os . path . basename ( f )
url = upload_file ( f , name )
print ( url )