File tree Expand file tree Collapse file tree 3 files changed +35
-7
lines changed
Expand file tree Collapse file tree 3 files changed +35
-7
lines changed Original file line number Diff line number Diff line change @@ -78,7 +78,6 @@ def create
7878
7979 space = Space . find ( guid : message . space_guid )
8080 domain = Domain . find ( guid : message . domain_guid )
81- options = message .
8281
8382 unprocessable_space! unless space
8483 unprocessable_domain! unless domain
Original file line number Diff line number Diff line change @@ -57,6 +57,7 @@ class RouteCreateMessage < MetadataBaseMessage
5757
5858 validates_with NoAdditionalKeysValidator
5959 validates_with RelationshipValidator
60+ validates_with OptionsValidator
6061
6162 delegate :space_guid , to : :relationships_message
6263 delegate :domain_guid , to : :relationships_message
@@ -66,6 +67,10 @@ def relationships_message
6667 @relationships_message ||= Relationships . new ( relationships &.deep_symbolize_keys )
6768 end
6869
70+ def options_message
71+ @options_message ||= RouteOptions . new ( options &.deep_symbolize_keys )
72+ end
73+
6974 def wildcard?
7075 host == '*'
7176 end
@@ -86,11 +91,13 @@ def domain_guid
8691 end
8792 end
8893
89- # class RouteOptions < BaseMessage
90- # register_allowed_keys %i[loadbalancing-algorithm]
91- # validates_with NoAdditionalKeysValidator
92- # validates :loadbalancing-algorithm, to_one_relationship: true
93- # end
94-
94+ class RouteOptions < BaseMessage
95+ register_allowed_keys %i[ lb_algo ]
96+ validates_with NoAdditionalKeysValidator
97+ validates :lb_algo ,
98+ inclusion : { in : %w[ least-connections round-robin ] , message : 'must be \'least-connections\' or \'round-robin\'' } ,
99+ presence : true ,
100+ allow_nil : true
101+ end
95102 end
96103end
Original file line number Diff line number Diff line change @@ -240,6 +240,28 @@ def validate(record)
240240 end
241241 end
242242
243+ class OptionsValidator < ActiveModel ::Validator
244+ def validate ( record )
245+ unless record . options . is_a? ( Hash )
246+ record . errors . add ( :options , message : "'options' is not an object" )
247+ return
248+ end
249+
250+ if record . options . empty?
251+ record . errors . add ( :options , message : "'options' must include one or more valid options" )
252+ return
253+ end
254+
255+ opt = record . options_message
256+
257+ return if opt . valid?
258+
259+ opt . errors . full_messages . each do |message |
260+ record . errors . add ( :options , message :)
261+ end
262+ end
263+ end
264+
243265 class ToOneRelationshipValidator < ActiveModel ::EachValidator
244266 def validate_each ( record , attribute , relationship )
245267 if has_correct_structure? ( relationship )
You can’t perform that action at this time.
0 commit comments