|
1 | | -// Copyright (c) .NET Foundation. All rights reserved. |
| 1 | +// Copyright (c) .NET Foundation. All rights reserved. |
2 | 2 | // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. |
3 | 3 |
|
4 | 4 | using System; |
@@ -400,8 +400,10 @@ private void AddStorageCredentialArgument(StringBuilder argument, string sasToke |
400 | 400 | { |
401 | 401 | AppendArgument(argument, sasTokenArgument); |
402 | 402 | } |
403 | | - |
404 | | - AppendArgument(argument, storageKeyArgument); |
| 403 | + else if (!string.IsNullOrEmpty(_arguments.GetOrDefault<string>(storageKeyArgument))) |
| 404 | + { |
| 405 | + AppendArgument(argument, storageKeyArgument); |
| 406 | + } |
405 | 407 | } |
406 | 408 |
|
407 | 409 | private async Task StrikeAsync() |
@@ -504,32 +506,55 @@ private IContainer GetAutofacContainer() |
504 | 506 |
|
505 | 507 | services.Configure<Catalog2RegistrationConfiguration>(config => |
506 | 508 | { |
| 509 | + config.StorageUseManagedIdentity = _arguments.GetOrDefault<bool>(Arguments.UseManagedIdentity); |
| 510 | + config.StorageManagedIdentityClientId = _arguments.GetOrDefault<string>(Arguments.ClientId); |
| 511 | + |
507 | 512 | config.LegacyBaseUrl = _arguments.GetOrDefault<string>(Arguments.StorageBaseAddress); |
508 | 513 | config.LegacyStorageContainer = _arguments.GetOrDefault<string>(Arguments.StorageContainer); |
509 | | - config.StorageConnectionString = GetConnectionString( |
510 | | - config.StorageConnectionString, |
511 | | - Arguments.StorageAccountName, |
512 | | - Arguments.StorageKeyValue, |
513 | | - Arguments.StorageSasValue, |
514 | | - Arguments.StorageSuffix); |
515 | 514 |
|
516 | 515 | config.GzippedBaseUrl = _arguments.GetOrDefault<string>(Arguments.CompressedStorageBaseAddress); |
517 | 516 | config.GzippedStorageContainer = _arguments.GetOrDefault<string>(Arguments.CompressedStorageContainer); |
518 | | - config.StorageConnectionString = GetConnectionString( |
519 | | - config.StorageConnectionString, |
520 | | - Arguments.CompressedStorageAccountName, |
521 | | - Arguments.CompressedStorageKeyValue, |
522 | | - Arguments.CompressedStorageSasValue, |
523 | | - Arguments.StorageSuffix); |
524 | 517 |
|
525 | 518 | config.SemVer2BaseUrl = _arguments.GetOrDefault<string>(Arguments.SemVer2StorageBaseAddress); |
526 | 519 | config.SemVer2StorageContainer = _arguments.GetOrDefault<string>(Arguments.SemVer2StorageContainer); |
527 | | - config.StorageConnectionString = GetConnectionString( |
528 | | - config.StorageConnectionString, |
529 | | - Arguments.SemVer2StorageAccountName, |
530 | | - Arguments.SemVer2StorageKeyValue, |
531 | | - Arguments.SemVer2StorageSasValue, |
532 | | - Arguments.StorageSuffix); |
| 520 | + |
| 521 | + config.HasSasToken = new List<string>() |
| 522 | + { |
| 523 | + _arguments.GetOrDefault<string>(Arguments.StorageSasValue), |
| 524 | + _arguments.GetOrDefault<string>(Arguments.CompressedStorageSasValue), |
| 525 | + _arguments.GetOrDefault<string>(Arguments.SemVer2StorageSasValue) |
| 526 | + } |
| 527 | + .All(t => !string.IsNullOrEmpty(t)); |
| 528 | + |
| 529 | + if (config.StorageUseManagedIdentity && !config.HasSasToken) |
| 530 | + { |
| 531 | + var storageAccountName = _arguments.GetOrDefault<string>(Arguments.StorageAccountName); |
| 532 | + var storageSuffix = _arguments.GetOrDefault(Arguments.StorageSuffix, "core.windows.net"); |
| 533 | + |
| 534 | + config.StorageServiceUrl = $"https://{storageAccountName}.blob.{storageSuffix}"; |
| 535 | + config.StorageConnectionString = $"BlobEndpoint={config.StorageServiceUrl}"; |
| 536 | + } |
| 537 | + else |
| 538 | + { |
| 539 | + config.StorageConnectionString = GetConnectionString( |
| 540 | + config.StorageConnectionString, |
| 541 | + Arguments.StorageAccountName, |
| 542 | + Arguments.StorageKeyValue, |
| 543 | + Arguments.StorageSasValue, |
| 544 | + Arguments.StorageSuffix); |
| 545 | + config.StorageConnectionString = GetConnectionString( |
| 546 | + config.StorageConnectionString, |
| 547 | + Arguments.CompressedStorageAccountName, |
| 548 | + Arguments.CompressedStorageKeyValue, |
| 549 | + Arguments.CompressedStorageSasValue, |
| 550 | + Arguments.StorageSuffix); |
| 551 | + config.StorageConnectionString = GetConnectionString( |
| 552 | + config.StorageConnectionString, |
| 553 | + Arguments.SemVer2StorageAccountName, |
| 554 | + Arguments.SemVer2StorageKeyValue, |
| 555 | + Arguments.SemVer2StorageSasValue, |
| 556 | + Arguments.StorageSuffix); |
| 557 | + } |
533 | 558 |
|
534 | 559 | config.GalleryBaseUrl = _arguments.GetOrThrow<string>(Arguments.GalleryBaseAddress); |
535 | 560 | var contentBaseAddress = _arguments.GetOrThrow<string>(Arguments.ContentBaseAddress); |
@@ -568,7 +593,13 @@ private string GetConnectionString( |
568 | 593 | } |
569 | 594 | else |
570 | 595 | { |
571 | | - builder.AppendFormat("SharedAccessSignature={0};", _arguments.GetOrThrow<string>(accountSasArgument)); |
| 596 | + var sasToken = _arguments.GetOrThrow<string>(accountSasArgument); |
| 597 | + // workaround for https://github.com/Azure/azure-sdk-for-net/issues/44373 |
| 598 | + if (sasToken.StartsWith("?")) |
| 599 | + { |
| 600 | + sasToken = sasToken.Substring(1); |
| 601 | + } |
| 602 | + builder.AppendFormat("SharedAccessSignature={0};", sasToken); |
572 | 603 | } |
573 | 604 |
|
574 | 605 | builder.AppendFormat("EndpointSuffix={0}", _arguments.GetOrDefault(endpointSuffixArgument, "core.windows.net")); |
|
0 commit comments