Exemplo n.º 1
0
        protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken)
        {
            var source  = arguments.GetOrThrow <string>(Arguments.Source);
            var verbose = arguments.GetOrDefault(Arguments.Verbose, false);

            var contentBaseAddress      = arguments.GetOrDefault <string>(Arguments.ContentBaseAddress);
            var galleryBaseAddress      = arguments.GetOrDefault <string>(Arguments.GalleryBaseAddress);
            var isContentFlatContainer  = arguments.GetOrDefault <bool>(Arguments.ContentIsFlatContainer);
            var allIconsInFlatContainer = arguments.GetOrDefault <bool>(Arguments.AllIconsInFlatContainer);
            var maxConcurrentBatches    = MaxConcurrentBatches(arguments.GetOrDefault <int>(Arguments.MaxConcurrentBatches));

            // The term "legacy" here refers to the registration hives that do not contain any SemVer 2.0.0 packages.
            // In production, this is two registration hives:
            //   1) the first hive released, which is not gzipped and does not have SemVer 2.0.0 packages
            //   2) the secondary hive released, which is gzipped but does not have SemVer 2.0.0 packages
            var storageFactories = CommandHelpers.CreateRegistrationStorageFactories(arguments, verbose);

            Logger.LogInformation(
                "CONFIG source: \"{ConfigSource}\" storage: \"{Storage}\"",
                source,
                storageFactories.LegacyStorageFactory);

            if (isContentFlatContainer)
            {
                var flatContainerCursorUriString = arguments.GetOrThrow <string>(Arguments.CursorUri);
                var flatContainerName            = arguments.GetOrThrow <string>(Arguments.FlatContainerName);
                RegistrationMakerCatalogItem.PackagePathProvider = new FlatContainerPackagePathProvider(flatContainerName);
                // In case that the flat container is used as the packages' source the registration needs to wait for the flatcontainer cursor
                _back = new HttpReadCursor(new Uri(flatContainerCursorUriString));
            }
            else
            {
                RegistrationMakerCatalogItem.PackagePathProvider = new PackagesFolderPackagePathProvider();
                _back = MemoryCursor.CreateMax();
            }

            _collector = new RegistrationCollector(
                new Uri(source),
                storageFactories.LegacyStorageFactory,
                storageFactories.SemVer2StorageFactory,
                contentBaseAddress == null ? null : new Uri(contentBaseAddress),
                galleryBaseAddress == null ? null : new Uri(galleryBaseAddress),
                allIconsInFlatContainer,
                TelemetryService,
                Logger,
                CommandHelpers.GetHttpMessageHandlerFactory(TelemetryService, verbose),
                maxConcurrentBatches: maxConcurrentBatches);

            var cursorStorage = storageFactories.LegacyStorageFactory.Create();

            _front = new DurableCursor(cursorStorage.ResolveUri("cursor.json"), cursorStorage, MemoryCursor.MinValue);
            storageFactories.SemVer2StorageFactory?.Create();

            _destination = storageFactories.LegacyStorageFactory.DestinationAddress;
            TelemetryService.GlobalDimensions[TelemetryConstants.Destination] = _destination?.AbsoluteUri;
        }
Exemplo n.º 2
0
        protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken)
        {
            var source                     = arguments.GetOrThrow <string>(Arguments.Source);
            var verbose                    = arguments.GetOrDefault(Arguments.Verbose, false);
            var contentBaseAddress         = arguments.GetOrDefault <string>(Arguments.ContentBaseAddress);
            var storageFactory             = CommandHelpers.CreateStorageFactory(arguments, verbose);
            var httpClientTimeoutInSeconds = arguments.GetOrDefault <int?>(Arguments.HttpClientTimeoutInSeconds);
            var httpClientTimeout          = httpClientTimeoutInSeconds.HasValue ? (TimeSpan?)TimeSpan.FromSeconds(httpClientTimeoutInSeconds.Value) : null;

            StorageFactory preferredPackageSourceStorageFactory = null;
            IAzureStorage  preferredPackageSourceStorage        = null;

            var preferAlternatePackageSourceStorage = arguments.GetOrDefault(Arguments.PreferAlternatePackageSourceStorage, defaultValue: false);

            if (preferAlternatePackageSourceStorage)
            {
                preferredPackageSourceStorageFactory = CommandHelpers.CreateSuffixedStorageFactory("PreferredPackageSourceStorage", arguments, verbose);
                preferredPackageSourceStorage        = preferredPackageSourceStorageFactory.Create() as IAzureStorage;
            }

            Logger.LogInformation("CONFIG source: \"{ConfigSource}\" storage: \"{Storage}\" preferred package source storage: \"{PreferredPackageSourceStorage}\"",
                                  source,
                                  storageFactory,
                                  preferredPackageSourceStorageFactory);
            Logger.LogInformation("HTTP client timeout: {Timeout}", httpClientTimeout);

            MaxDegreeOfParallelism = 256;

            _collector = new DnxCatalogCollector(
                new Uri(source),
                storageFactory,
                preferredPackageSourceStorage,
                contentBaseAddress == null ? null : new Uri(contentBaseAddress),
                TelemetryService,
                Logger,
                MaxDegreeOfParallelism,
                httpClient => new CatalogClient(new SimpleHttpClient(httpClient, LoggerFactory.CreateLogger <SimpleHttpClient>()), LoggerFactory.CreateLogger <CatalogClient>()),
                CommandHelpers.GetHttpMessageHandlerFactory(TelemetryService, verbose),
                httpClientTimeout);

            var storage = storageFactory.Create();

            _front = new DurableCursor(storage.ResolveUri("cursor.json"), storage, MemoryCursor.MinValue);
            _back  = MemoryCursor.CreateMax();

            _destination = storageFactory.BaseAddress;
            TelemetryService.GlobalDimensions[TelemetryConstants.Destination] = _destination.AbsoluteUri;
        }