Class: F5::Cli::Pool

Inherits:
Subcommand show all
Defined in:
lib/f5/cli/application.rb

Instance Method Summary collapse

Instance Method Details

#disable(pool, *members) ⇒ Object



302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
# File 'lib/f5/cli/application.rb', line 302

def disable(pool, *members)
  set = pool_members(pool).select do |m|
    members.include? m[:address]
  end

  response = client.LocalLB.Pool.set_member_session_enabled_state(
    pool_names: { item: [ pool ] },
    members: { item: [ set ] },
    session_states: { item: [ set.map { "STATE_DISABLED" } ] }
  )

  if options[:force]
    response = client.LocalLB.Pool.set_member_monitor_state(
      pool_names: { item: [ pool ] },
      members: { item: [ set ] },
      monitor_states: { item: [ set.map { "STATE_DISABLED" } ] }
    )
  end
end

#enable(pool, *members) ⇒ Object



281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# File 'lib/f5/cli/application.rb', line 281

def enable(pool, *members)
  set = pool_members(pool).select do |m|
    members.include? m[:address]
  end

  response = client.LocalLB.Pool.set_member_session_enabled_state(
    pool_names: { item: [ pool ] },
    members: { item: [ set ] },
    session_states: { item: [ set.map { "STATE_ENABLED" } ] }
  )

  response = client.LocalLB.Pool.set_member_monitor_state(
    pool_names: { item: [ pool ] },
    members: { item: [ set ] },
    monitor_states: { item: [ set.map { "STATE_ENABLED" } ] }
  )

end

#listObject



225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/f5/cli/application.rb', line 225

def list
  response = client.LocalLB.Pool.get_list

  pools = Array(response[:item])
  if pools.empty?
    puts "No pools found"
  else
    pools.each do |p|
      puts p
    end
  end
end

#setconnections(pool, *members) ⇒ Object



335
336
337
338
339
340
341
342
# File 'lib/f5/cli/application.rb', line 335

def setconnections(pool, *members)
  set = address_port_list_from_pool(pool, members)
  response = client.LocalLB.Pool.set_member_connection_limit(
    pool_names: { item: [ pool ] },
    members: { item: [ set ] },
    limits: { item: [ set.map { options[:limit] } ] }
  )
end

#setratio(pool, *members) ⇒ Object



324
325
326
327
328
329
330
331
# File 'lib/f5/cli/application.rb', line 324

def setratio(pool, *members)
  set = address_port_list_from_pool(pool, members)
  response = client.LocalLB.Pool.set_member_ratio(
    pool_names: { item: [ pool ] },
    members: { item: [ set ] },
    ratios: { item: [ set.map { options[:ratio] } ] }
  )
end

#show(pool) ⇒ Object



239
240
241
242
243
244
245
246
247
248
# File 'lib/f5/cli/application.rb', line 239

def show(pool)
  members = pool_members(pool)
  if members.empty?
    puts "Pool #{pool} is empty"
  else
    members.each do |member|
      puts "#{member[:address]}:#{member[:port]}"
    end
  end
end

#status(pool) ⇒ Object



251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
# File 'lib/f5/cli/application.rb', line 251

def status(pool)
  members = pool_members(pool)
  response = client.LocalLB.Pool.get_member_object_status(
    pool_names: { item: [ pool ] },
    members: { item: [ members ] }
  )
  statuses = response[:item][:item]
  statuses = [ statuses ] if statuses.is_a? Hash

  response = client.LocalLB.Pool.get_all_member_statistics(
    pool_names: { item: [ pool ] }
  )

  stats = response[:item][:statistics][:item]
  stats = [ stats ] if stats.is_a? Hash

  connections = stats.map do |host|
    stats = host[:statistics][:item]
    c = stats.find { |stat| stat[:type] == "STATISTIC_SERVER_SIDE_CURRENT_CONNECTIONS" }
    c[:value][:high].to_i * (2<<32) + c[:value][:low].to_i
  end

  puts "%20s %25s %25s %25s" % ["Address", "Availability", "Enabled", "Current Connections"]
  statuses.each_with_index do |s, idx|
    puts "%20s %25s %25s %25s" % [ members[idx][:address], s[:availability_status].split(/_/).last, s[:enabled_status].split(/_/).last, connections[idx]]
  end

end