@@ -116,9 +116,11 @@ module ContainerInstances =
116
116
UtilsStorageAccount: string
117
117
UtilsStorageAccountKey: string
118
118
UtilsFileShare: string
119
+ UtilsStorageAccountUri : System .Uri
119
120
120
121
ResultsStorageAccount : string
121
122
ResultsStorageAccountKey: string
123
+ ResultsStorageAccountUri : System .Uri
122
124
123
125
NetworkProfileName: string
124
126
VNetResourceGroup: string
@@ -236,22 +238,22 @@ module ContainerInstances =
236
238
let getStorageKey ( azure : IAzure ) ( resourceGroup : string , storageAccount : string ) =
237
239
async {
238
240
let! storage = azure.StorageAccounts.GetByResourceGroupAsync( resourceGroup, storageAccount). ToAsync
241
+
239
242
let! keys = storage.GetKeysAsync() .ToAsync
240
243
let storageKey = keys.[ 0 ]. Value
241
- return storageKey
244
+ return storageKey, ( System.Uri ( storage.EndPoints.Primary.File ))
242
245
}
243
246
244
247
let getStorageKeyTask ( azure : IAzure ) ( resourceGroup : string , storageAccount : string ) =
245
248
getStorageKey azure ( resourceGroup, storageAccount) |> Async.StartAsTask
246
249
247
250
let initializeTools ( agentConfig : AgentConfig ) =
248
251
async {
249
- let auth = Microsoft.Azure.Storage.Auth.StorageCredentials( agentConfig.UtilsStorageAccount, agentConfig.UtilsStorageAccountKey;)
250
- let account = Microsoft.Azure.Storage.CloudStorageAccount( auth, true )
251
- let sasUrl = account.ToString( true )
252
+ let storageCredential = Azure.Storage.StorageSharedKeyCredential( agentConfig.UtilsStorageAccount, agentConfig.UtilsStorageAccountKey)
253
+ let builder = Azure.Storage.Files.Shares.ShareUriBuilder( agentConfig.UtilsStorageAccountUri, ShareName = agentConfig.UtilsFileShare )
254
+ let share = Azure.Storage.Files.Shares.ShareClient( builder.ToUri(), storageCredential)
255
+ let directoryClient = share.GetDirectoryClient( " tools" )
252
256
253
- let directoryClient = Azure.Storage.Files.Shares.ShareDirectoryClient( sasUrl, agentConfig.UtilsFileShare, " tools" )
254
-
255
257
let asyncEnum = directoryClient.GetFilesAndDirectoriesAsync() .GetAsyncEnumerator()
256
258
257
259
let rec loadAllConfigs ( allConfigs ) =
@@ -368,7 +370,7 @@ module ContainerInstances =
368
370
+ ( sprintf " %s /" storageAccountName)
369
371
+ ( sprintf " path/%s /protocol/" ( Option.defaultValue containerGroupName rootFileShare))
370
372
371
- let createJobShareAndFolders ( logger : ILogger ) ( containerGroupName : string ) ( sasUrl : string ) ( jobCreateRequest : CreateJobRequest ) =
373
+ let createJobShareAndFolders ( logger : ILogger ) ( containerGroupName : string ) ( getShare : string -> Azure.Storage.Files.Shares.ShareClient ) ( jobCreateRequest : CreateJobRequest ) =
372
374
async {
373
375
let shareName , createSubDirectory , shareQuota =
374
376
match jobCreateRequest.JobDefinition.RootFileShare with
@@ -390,9 +392,12 @@ module ContainerInstances =
390
392
let logInfo format = Printf.kprintf logger.LogInformation format
391
393
logInfo " Creating config fileshare: %s " shareName
392
394
395
+ let shareClient = getShare shareName
396
+ let rootDirectory = shareClient.GetRootDirectoryClient()
397
+
393
398
let saveString ( fileName : string ) ( data : string ) =
394
399
async {
395
- let file = Azure.Storage.Files.Shares.ShareFileClient ( sasUrl , shareName , fileName)
400
+ let file = rootDirectory.GetFileClient ( fileName)
396
401
let! _ = file.DeleteIfExistsAsync() .ToAsync
397
402
398
403
let! _ = file.CreateAsync( int64 data.Length). ToAsync
@@ -403,7 +408,6 @@ module ContainerInstances =
403
408
return ()
404
409
}
405
410
406
- let shareClient = Azure.Storage.Files.Shares.ShareClient( sasUrl, shareName)
407
411
let! _ = shareClient.CreateIfNotExistsAsync( dict[], Nullable( shareQuota)) .ToAsync
408
412
409
413
let! subDirectory = createSubDirectory( shareClient)
@@ -579,14 +583,15 @@ module ContainerInstances =
579
583
let workVolume = jobCreateRequest.JobId
580
584
let workDirectory = sprintf " /work-directory-%s " jobCreateRequest.JobId
581
585
582
- let auth = Microsoft.Azure.Storage.Auth.StorageCredentials( agentConfig.ResultsStorageAccount, agentConfig.ResultsStorageAccountKey)
583
- let account = Microsoft.Azure.Storage.CloudStorageAccount( auth, true )
584
- let sasUrl = account.ToString( true )
586
+ let getShare ( shareName ) =
587
+ let storageCredential = Azure.Storage.StorageSharedKeyCredential( agentConfig.ResultsStorageAccount, agentConfig.ResultsStorageAccountKey)
588
+ let builder = Azure.Storage.Files.Shares.ShareUriBuilder( agentConfig.ResultsStorageAccountUri, ShareName = shareName )
589
+ Azure.Storage.Files.Shares.ShareClient( builder.ToUri(), storageCredential)
585
590
586
591
let makeToolConfig payload =
587
592
getToolConfiguration dockerConfigs toolsConfigs payload
588
593
589
- let! shareName = createJobShareAndFolders logger containerGroupName sasUrl jobCreateRequest
594
+ let! shareName = createJobShareAndFolders logger containerGroupName getShare jobCreateRequest
590
595
591
596
jobCreateRequest.JobDefinition.TestTasks.Tasks
592
597
|> Array.countBy( fun task -> task.ToolName)
0 commit comments