forked from microsoft/winget-cli
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDSCv3ConfigurationSetProcessor.cs
More file actions
83 lines (70 loc) · 4.65 KB
/
Copy pathDSCv3ConfigurationSetProcessor.cs
File metadata and controls
83 lines (70 loc) · 4.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// -----------------------------------------------------------------------------
// <copyright file="DSCv3ConfigurationSetProcessor.cs" company="Microsoft Corporation">
// Copyright (c) Microsoft Corporation. Licensed under the MIT License.
// </copyright>
// -----------------------------------------------------------------------------
namespace Microsoft.Management.Configuration.Processor.DSCv3.Set
{
using System.Collections.Generic;
using Microsoft.Management.Configuration.Processor.DSCv3.Helpers;
using Microsoft.Management.Configuration.Processor.DSCv3.Unit;
using Microsoft.Management.Configuration.Processor.Helpers;
using Microsoft.Management.Configuration.Processor.Set;
/// <summary>
/// Configuration set processor.
/// </summary>
internal sealed partial class DSCv3ConfigurationSetProcessor : ConfigurationSetProcessorBase, IConfigurationSetProcessor, IFindUnitProcessorsSetProcessor
{
private readonly ProcessorSettings processorSettings;
/// <summary>
/// Initializes a new instance of the <see cref="DSCv3ConfigurationSetProcessor"/> class.
/// </summary>
/// <param name="processorSettings">The processor settings to use.</param>
/// <param name="configurationSet">Configuration set.</param>
/// <param name="isLimitMode">Whether the set processor should work in limitation mode.</param>
public DSCv3ConfigurationSetProcessor(ProcessorSettings processorSettings, ConfigurationSet? configurationSet, bool isLimitMode = false)
: base(configurationSet, isLimitMode)
{
this.processorSettings = processorSettings;
}
/// <inheritdoc />
protected override IConfigurationUnitProcessor CreateUnitProcessorInternal(ConfigurationUnit unit)
{
ConfigurationUnitInternal configurationUnitInternal = new ConfigurationUnitInternal(unit, this.ConfigurationSet?.Path);
this.OnDiagnostics(DiagnosticLevel.Verbose, $"Creating unit processor for: {configurationUnitInternal.QualifiedName}...");
ResourceDetails? resourceDetails = this.processorSettings.GetResourceDetails(configurationUnitInternal, ConfigurationUnitDetailFlags.Local);
if (resourceDetails == null)
{
this.OnDiagnostics(DiagnosticLevel.Verbose, $"Resource not found: {configurationUnitInternal.QualifiedName}");
// Don't throw when the resource is not found until https://github.com/PowerShell/DSC/issues/786 is resolved
// throw new Exceptions.FindDscResourceNotFoundException(configurationUnitInternal.QualifiedName, null);
}
return new DSCv3ConfigurationUnitProcessor(this.processorSettings, resourceDetails, configurationUnitInternal, this.IsLimitMode) { SetProcessorFactory = this.SetProcessorFactory };
}
/// <inheritdoc />
protected override IConfigurationUnitProcessorDetails? GetUnitProcessorDetailsInternal(ConfigurationUnit unit, ConfigurationUnitDetailFlags detailFlags)
{
ConfigurationUnitInternal configurationUnitInternal = new ConfigurationUnitInternal(unit, this.ConfigurationSet?.Path);
this.OnDiagnostics(DiagnosticLevel.Verbose, $"Getting resource details [{detailFlags}] for: {configurationUnitInternal.QualifiedName}...");
ResourceDetails? resourceDetails = this.processorSettings.GetResourceDetails(configurationUnitInternal, detailFlags);
if (resourceDetails == null)
{
this.OnDiagnostics(DiagnosticLevel.Verbose, $"Resource not found: {configurationUnitInternal.QualifiedName}");
return null;
}
return resourceDetails.GetConfigurationUnitProcessorDetails();
}
/// <inheritdoc />
protected override IList<IConfigurationUnitProcessorDetails> FindUnitProcessorsInternal(FindUnitProcessorsOptions findOptions)
{
this.OnDiagnostics(DiagnosticLevel.Verbose, $"Finding unit processors with following options. SearchPaths: {findOptions.SearchPaths}, SearchPathsExclusive: {findOptions.SearchPathsExclusive}, DetailFlags: [{findOptions.UnitDetailFlags}]");
List<IConfigurationUnitProcessorDetails> result = new List<IConfigurationUnitProcessorDetails>();
var resourceDetailsList = this.processorSettings.FindAllResourceDetails(findOptions);
foreach (var resourceDetails in resourceDetailsList)
{
result.Add(resourceDetails.GetConfigurationUnitProcessorDetails() !);
}
return result;
}
}
}