@@ -119,7 +119,7 @@ internal TemplateContext()
119
119
_Symbols = new Dictionary < string , IDeploymentSymbol > ( StringComparer . OrdinalIgnoreCase ) ;
120
120
}
121
121
122
- internal TemplateContext ( PipelineContext context , SubscriptionOption subscription , ResourceGroupOption resourceGroup , TenantOption tenant , ManagementGroupOption managementGroup , ParameterDefaultsOption parameterDefaults )
122
+ internal TemplateContext ( PipelineContext context , SubscriptionOption subscription , ResourceGroupOption resourceGroup , TenantOption tenant , ManagementGroupOption managementGroup , IDictionary < string , object > parameterDefaults )
123
123
: this ( )
124
124
{
125
125
Pipeline = context ;
@@ -136,27 +136,27 @@ internal TemplateContext(PipelineContext context, SubscriptionOption subscriptio
136
136
ManagementGroup = managementGroup ;
137
137
138
138
if ( parameterDefaults != null )
139
- ParameterDefaults = parameterDefaults ;
139
+ ParameterDefaults = new Dictionary < string , object > ( parameterDefaults , StringComparer . OrdinalIgnoreCase ) ;
140
140
}
141
141
142
142
internal TemplateContext ( PipelineContext context )
143
143
: this ( )
144
144
{
145
145
Pipeline = context ;
146
146
if ( context ? . Option ? . Configuration ? . Subscription != null )
147
- Subscription = context ? . Option ? . Configuration ? . Subscription ;
147
+ Subscription = context . Option . Configuration . Subscription ;
148
148
149
149
if ( context ? . Option ? . Configuration ? . ResourceGroup != null )
150
- ResourceGroup = context ? . Option ? . Configuration ? . ResourceGroup ;
150
+ ResourceGroup = context . Option . Configuration . ResourceGroup ;
151
151
152
152
if ( context ? . Option ? . Configuration ? . Tenant != null )
153
- Tenant = context ? . Option ? . Configuration ? . Tenant ;
153
+ Tenant = context . Option . Configuration . Tenant ;
154
154
155
155
if ( context ? . Option ? . Configuration ? . ManagementGroup != null )
156
- ManagementGroup = context ? . Option ? . Configuration ? . ManagementGroup ;
156
+ ManagementGroup = context . Option . Configuration . ManagementGroup ;
157
157
158
158
if ( context ? . Option ? . Configuration ? . ParameterDefaults != null )
159
- ParameterDefaults = context ? . Option ? . Configuration ? . ParameterDefaults ;
159
+ ParameterDefaults = new Dictionary < string , object > ( context . Option . Configuration . ParameterDefaults , StringComparer . OrdinalIgnoreCase ) ;
160
160
}
161
161
162
162
private Dictionary < string , IParameterValue > Parameters { get ; }
@@ -173,7 +173,7 @@ internal TemplateContext(PipelineContext context)
173
173
174
174
public ManagementGroupOption ManagementGroup { get ; internal set ; }
175
175
176
- public ParameterDefaultsOption ParameterDefaults { get ; private set ; }
176
+ public IDictionary < string , object > ParameterDefaults { get ; private set ; }
177
177
178
178
/// <inheritdoc/>
179
179
public DeploymentValue Deployment => _Deployment . Count > 0 ? _Deployment . Peek ( ) : null ;
@@ -628,15 +628,51 @@ internal bool TryParameterAssignment(string parameterName, out JToken value)
628
628
internal bool TryParameterDefault ( string parameterName , ParameterType type , out JToken value )
629
629
{
630
630
value = default ;
631
- return type . Type switch
631
+ switch ( type . Type )
632
632
{
633
- TypePrimitive . String or TypePrimitive . SecureString => ParameterDefaults . TryGetString ( parameterName , out value ) ,
634
- TypePrimitive . Bool => ParameterDefaults . TryGetBool ( parameterName , out value ) ,
635
- TypePrimitive . Int => ParameterDefaults . TryGetLong ( parameterName , out value ) ,
636
- TypePrimitive . Array => ParameterDefaults . TryGetArray ( parameterName , out value ) ,
637
- TypePrimitive . Object or TypePrimitive . SecureObject => ParameterDefaults . TryGetObject ( parameterName , out value ) ,
638
- _ => false ,
633
+ case TypePrimitive . String :
634
+ case TypePrimitive . SecureString :
635
+ if ( ParameterDefaults . TryGetString ( parameterName , out var s ) )
636
+ {
637
+ value = new JValue ( s ) ;
638
+ return true ;
639
+ }
640
+ break ;
641
+
642
+ case TypePrimitive . Bool :
643
+ if ( ParameterDefaults . TryGetBool ( parameterName , out var b ) )
644
+ {
645
+ value = new JValue ( b ) ;
646
+ return true ;
647
+ }
648
+ break ;
649
+
650
+ case TypePrimitive . Int :
651
+ if ( ParameterDefaults . TryGetLong ( parameterName , out var i ) )
652
+ {
653
+ value = new JValue ( i ) ;
654
+ return true ;
655
+ }
656
+ break ;
657
+
658
+ case TypePrimitive . Array :
659
+ if ( ParameterDefaults . TryGetArray ( parameterName , out var a ) )
660
+ {
661
+ value = a ;
662
+ return true ;
663
+ }
664
+ break ;
665
+
666
+ case TypePrimitive . Object :
667
+ case TypePrimitive . SecureObject :
668
+ if ( ParameterDefaults . TryGetObject ( parameterName , out var o ) )
669
+ {
670
+ value = o ;
671
+ return true ;
672
+ }
673
+ break ;
639
674
} ;
675
+ return false ;
640
676
}
641
677
642
678
internal bool TryParameter ( string parameterName )
@@ -1492,7 +1528,6 @@ private TemplateContext GetDeploymentContext(TemplateContext context, string dep
1492
1528
var resourceGroup = new ResourceGroupOption ( context . ResourceGroup ) ;
1493
1529
var tenant = new TenantOption ( context . Tenant ) ;
1494
1530
var managementGroup = new ManagementGroupOption ( context . ManagementGroup ) ;
1495
- var parameterDefaults = new ParameterDefaultsOption ( context . ParameterDefaults ) ;
1496
1531
if ( TryStringProperty ( resource , PROPERTY_SUBSCRIPTIONID , out var subscriptionId ) )
1497
1532
{
1498
1533
var targetSubscriptionId = ExpandString ( context , subscriptionId ) ;
@@ -1510,7 +1545,7 @@ private TemplateContext GetDeploymentContext(TemplateContext context, string dep
1510
1545
resourceGroup . SubscriptionId = subscription . SubscriptionId ;
1511
1546
TryObjectProperty ( template , PROPERTY_PARAMETERS , out var templateParameters ) ;
1512
1547
1513
- var deploymentContext = new TemplateContext ( context . Pipeline , subscription , resourceGroup , tenant , managementGroup , parameterDefaults ) ;
1548
+ var deploymentContext = new TemplateContext ( context . Pipeline , subscription , resourceGroup , tenant , managementGroup , context . ParameterDefaults ) ;
1514
1549
1515
1550
// Handle custom type definitions early to allow type mapping of parameters if required.
1516
1551
if ( TryObjectProperty ( template , PROPERTY_DEFINITIONS , out var definitions ) )
0 commit comments