Skip to content

Commit 4481d9a

Browse files
committed
(MODULES-11567): Enhance validation methods to resolve deferred values for validation in sqlserver_instance type
1 parent 4c3e5fb commit 4481d9a

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lib/puppet/type/sqlserver_instance.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ def validate
131131
end
132132

133133
def set?(key)
134-
!self[key].nil? && !self[key].empty?
134+
self_key = resolve_deferred_value(self[key])
135+
!self_key.nil? && !self_key.empty?
135136
end
136137

137138
def validate_user_password_required(account, pass)
@@ -144,11 +145,11 @@ def validate_user_password_required(account, pass)
144145
end
145146

146147
def domain_or_local_user?(user)
147-
PuppetX::Sqlserver::ServerHelper.is_domain_or_local_user?(user, Facter.value(:hostname))
148+
PuppetX::Sqlserver::ServerHelper.is_domain_or_local_user?(resolve_deferred_value(user), Facter.value(:hostname))
148149
end
149150

150151
def strong_password?(key)
151-
password = self[key]
152+
password = resolve_deferred_value(self[key])
152153
return unless password
153154

154155
message_start = "Password for #{key} is not strong"
@@ -162,4 +163,12 @@ def strong_password?(key)
162163

163164
true
164165
end
166+
167+
# When preprocess_deferred is false, deferred values remain unresolved at the time of validation, causing it to fail.
168+
# To address this, following logic is added to explicitly resolve deferred values during validation
169+
def resolve_deferred_value(value)
170+
return value unless value.is_a?(Puppet::Pops::Evaluator::DeferredValue)
171+
172+
value.resolve
173+
end
165174
end

0 commit comments

Comments
 (0)