(account: str, container: str)
| 59 | |
| 60 | |
| 61 | async def sync(account: str, container: str): |
| 62 | import database.metadata_repo |
| 63 | |
| 64 | azure_blob_client = AzureBlobClient(account, container) |
| 65 | datasource = await get(account, container) |
| 66 | if datasource is None: |
| 67 | raise Exception(f"[SYNC] Datasource {account}/{container} does not exist") |
| 68 | if datasource.sasToken: |
| 69 | azure_blob_client.set_sas_token(decrypt(datasource.sasToken.get_secret_value())) |
| 70 | metadatas = azure_blob_client.get_metadata_files() |
| 71 | async for metadata in metadatas: |
| 72 | filepath = metadata[0].replace(".sigmf-meta", "") |
| 73 | try: |
| 74 | if await database.metadata_repo.exists(account, container, filepath): |
| 75 | print(f"[SYNC] Metadata already exists for {filepath}") |
| 76 | continue |
| 77 | if not await azure_blob_client.blob_exist(filepath + ".sigmf-data"): |
| 78 | print(f"[SYNC] Data file {filepath} does not exist for metadata file") |
| 79 | continue |
| 80 | metadata = metadata[1] |
| 81 | metadata.globalMetadata.traceability_origin = DataSourceReference( |
| 82 | **{ |
| 83 | "type": "api", |
| 84 | "account": account, |
| 85 | "container": container, |
| 86 | "file_path": filepath, |
| 87 | } |
| 88 | ) |
| 89 | metadata.globalMetadata.traceability_revision = 0 |
| 90 | file_length = await azure_blob_client.get_file_length( |
| 91 | filepath + ".sigmf-data" |
| 92 | ) |
| 93 | metadata.globalMetadata.traceability_sample_length = ( |
| 94 | file_length |
| 95 | / get_bytes_per_iq_sample(metadata.globalMetadata.core_datatype) |
| 96 | ) |
| 97 | await database.metadata_repo.create(metadata) |
| 98 | print(f"[SYNC] Created metadata for {filepath}") |
| 99 | except Exception as e: |
| 100 | print(f"[SYNC] Error creating metadata for {filepath}: {e}") |
| 101 | print(f"[SYNC] Finished syncing {account}/{container}") |
| 102 | |
| 103 | |
| 104 | async def create(datasource: DataSource, user: Optional[dict]) -> DataSource: |
no test coverage detected