@@ -8,8 +8,6 @@ module VCAP::CloudController
88 class Route < Sequel ::Model
99 class InvalidOrganizationRelation < CloudController ::Errors ::InvalidRelation ; end
1010
11- class OutOfVIPException < CloudController ::Errors ::InvalidRelation ; end
12-
1311 many_to_one :domain
1412 many_to_one :space , after_set : :validate_changed_space
1513 one_through_one :organization , join_table : Space . table_name , left_key : :id , left_primary_key : :space_id , right_primary_key : :id , right_key : :organization_id
@@ -109,7 +107,6 @@ def validate
109107 validate_total_routes
110108 validate_ports
111109 validate_total_reserved_route_ports if port && port > 0
112- errors . add ( :name , :vip_offset ) if vip_offset_exceeds_range?
113110
114111 RouteValidator . new ( self ) . validate
115112 rescue RoutingApi ::UaaUnavailable
@@ -191,59 +188,17 @@ def internal?
191188 domain . internal
192189 end
193190
194- def vip
195- vip_offset && internal_route_vip_range . nth ( vip_offset ) . to_s
196- end
197-
198191 def wildcard_host?
199192 host == '*'
200193 end
201194
202195 private
203196
204- def vip_offset_exceeds_range?
205- return false if vip_offset . nil?
206- return true if vip_offset <= 0
207-
208- vip_offset > internal_route_vip_range_len
209- end
210-
211197 def before_destroy
212198 destroy_route_bindings
213199 super
214200 end
215201
216- def find_next_vip_offset
217- # This code courtesy of Jeremy Evans as part of discussion on
218- # https://groups.google.com/d/msg/sequel-talk/3GJ8_mOgJ9U/roWJ2sWHAwAJ
219- # See SQL self-joins for the reasoning behind this
220-
221- n = Route . exclude ( vip_offset : 1 ) .
222- exclude { vip_offset - 1 =~ Route . select ( :vip_offset ) } . order ( :vip_offset ) . get { vip_offset - 1 } ||
223- ( return ( Route . max ( :vip_offset ) || 0 ) + 1 )
224- Route . where { vip_offset < n } . reverse ( :vip_offset ) . get { vip_offset + 1 } || 1
225- end
226-
227- def before_save
228- return unless internal? && vip_offset . nil?
229-
230- len = internal_route_vip_range_len
231- raise OutOfVIPException . new ( 'out of vip_offset slots' ) if self . class . exclude ( vip_offset : nil ) . count >= len
232-
233- self . vip_offset = find_next_vip_offset
234- end
235-
236- def internal_route_vip_range_len
237- internal_route_vip_range . len - 2
238- end
239-
240- def internal_route_vip_range
241- @internal_route_vip_range ||= begin
242- internal_route_vip_range = Config . config . get ( :internal_route_vip_range )
243- NetAddr ::IPv4Net . parse ( internal_route_vip_range )
244- end
245- end
246-
247202 def destroy_route_bindings
248203 errors = RouteBindingDelete . new . delete ( route_binding_dataset )
249204 raise errors . first unless errors . empty?
0 commit comments