use of com.microsoft.azure.sdk.iot.service.JobProperties in project azure-iot-sdk-java by Azure.
the class ExportImportTests method runImportJob.
private static void runImportJob(List<ExportImportDevice> devices, ImportMode importMode, Optional<StorageAuthenticationType> storageAuthenticationType) throws Exception {
// Creating the json string to be submitted for import using the specified importMode
StringBuilder devicesToAdd = new StringBuilder();
for (int i = 0; i < devices.size(); i++) {
devices.get(i).setImportMode(importMode);
ExportImportDeviceParser parser = Deencapsulation.invoke(devices.get(i), "toExportImportDeviceParser");
devicesToAdd.append(parser.toJson());
if (i < devices.size() - 1) {
devicesToAdd.append("\r\n");
}
}
byte[] blobToImport = devicesToAdd.toString().getBytes(StandardCharsets.UTF_8);
// Creating the Azure storage blob and uploading the serialized string of devices
InputStream stream = new ByteArrayInputStream(blobToImport);
String importBlobName = "devices.txt";
BlockBlobClient importBlob = importContainer.getBlobClient(importBlobName).getBlockBlobClient();
importBlob.delete();
importBlob.upload(stream, blobToImport.length);
// Starting the import job
boolean importJobScheduled = false;
JobProperties importJob = null;
while (!importJobScheduled) {
try {
if (storageAuthenticationType.isPresent()) {
// For a given StorageAuthenticationType, create JobProperties and pass it
JobProperties importJobProperties = JobProperties.createForImportJob(getContainerSasUri(importContainer), getContainerSasUri(importContainer), storageAuthenticationType.get());
importJob = registryManager.importDevices(importJobProperties);
} else {
importJob = registryManager.importDevices(getContainerSasUri(importContainer), getContainerSasUri(importContainer));
}
importJobScheduled = true;
} catch (IotHubTooManyDevicesException e) {
// test is being throttled, wait a while and try again
Thread.sleep(10 * 1000);
}
}
// Waiting for the import job to complete
long startTime = System.currentTimeMillis();
while (true) {
importJob = registryManager.getJob(importJob.getJobId());
if (importJob.getStatus() == JobProperties.JobStatus.COMPLETED || importJob.getStatus() == JobProperties.JobStatus.FAILED) {
break;
}
if (System.currentTimeMillis() - startTime > IMPORT_JOB_TIMEOUT_MILLISECONDS) {
fail("Timed out waiting for the import job to complete");
}
Thread.sleep(100);
}
// Checking the result of the import job
if (importJob.getStatus() != JobProperties.JobStatus.COMPLETED) {
Assert.fail("The import job was not completed successfully for " + importMode + " operation.");
}
}
use of com.microsoft.azure.sdk.iot.service.JobProperties in project azure-iot-sdk-java by Azure.
the class DeviceManagerImportExportWithIdentitySample method ImportDevices.
public static void ImportDevices() throws IOException, IotHubException, InterruptedException {
RegistryManager registryManager = RegistryManager.createFromConnectionString(destinationHubConnectionString);
// If StorageAuthenticationType is set to IdentityBased and userAssignedIdentity property is
// not null, the jobs will use user defined managed identity. If the IoT hub is not
// configured with the user defined managed identity specified in userAssignedIdentity,
// the job will fail.
// If StorageAuthenticationType is set to IdentityBased the userAssignedIdentity property is
// null, the jobs will use system defined identity. If the IoT hub is not configured with the
// user defined managed identity, the job will fail.
// If StorageAuthenticationType is set to IdentityBased and neither user defined nor system defined
// managed identities are configured on the hub, the job will fail.
ManagedIdentity identity = new ManagedIdentity();
identity.setUserAssignedIdentity(userDefinedManagedIdentityResourceId);
JobProperties jobProperties = JobProperties.createForImportJob(blobContainerUri, blobContainerUri, StorageAuthenticationType.IDENTITY, identity);
JobProperties exportJob = registryManager.importDevices(jobProperties);
while (true) {
exportJob = registryManager.getJob(exportJob.getJobId());
if (exportJob.getStatus() == JobProperties.JobStatus.COMPLETED) {
break;
}
Thread.sleep(500);
}
registryManager.close();
}
Aggregations