f5-icontrol 0.3.1 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
 - data/CHANGELOG.md +5 -0
 - data/f5-icontrol.gemspec +2 -1
 - data/lib/f5/cli/application.rb +125 -2
 - data/lib/f5/icontrol/rapi.rb +3 -1
 - data/lib/f5/icontrol/rapi/resource.rb +1 -1
 - data/lib/f5/icontrol/version.rb +1 -1
 - data/spec/models/rapi_spec.rb +9 -0
 - metadata +22 -9
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: cbee28f646b9200087841aa35846106d4246bafecd3db0ce256d26dc0945f7fb
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 527e6119839ee1891c3a696477e043eef9e63fadb7249d054252997d49b3c7b6
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 348e4ff11cf46ab6d756bb4b4fab8eecbe676a1a0947958f73f3aa3d9ad4cfc6764a56fa775a2129f760115a77a5c20b0e110b7c79563cf5bd842531ceb4ab80
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 63a0f8df5e1b8624069bcab887ffa5b5cde4833d182a7bef28417b918d6763347de2c49a939a8689f9369899e46c7f3bd504545ab44d65b5b5452c1e621b0a13
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/f5-icontrol.gemspec
    CHANGED
    
    | 
         @@ -22,12 +22,13 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       22 
22 
     | 
    
         
             
              spec.add_dependency "rest-client"
         
     | 
| 
       23 
23 
     | 
    
         
             
              spec.add_dependency "thor"
         
     | 
| 
       24 
24 
     | 
    
         
             
              spec.add_dependency "json"
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_dependency "wasabi", "<= 3.5.0"
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
27 
     | 
    
         
             
              spec.add_development_dependency "awesome_print"
         
     | 
| 
       27 
28 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.3"
         
     | 
| 
       28 
29 
     | 
    
         
             
              spec.add_development_dependency "byebug"
         
     | 
| 
       29 
30 
     | 
    
         
             
              spec.add_development_dependency "rake"
         
     | 
| 
       30 
31 
     | 
    
         
             
              spec.add_development_dependency "rspec"
         
     | 
| 
       31 
     | 
    
         
            -
              spec.add_development_dependency "webmock", "~>  
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_development_dependency "webmock", "~> 3.7.0"
         
     | 
| 
       32 
33 
     | 
    
         
             
              spec.add_development_dependency "vcr"
         
     | 
| 
       33 
34 
     | 
    
         
             
            end
         
     | 
    
        data/lib/f5/cli/application.rb
    CHANGED
    
    | 
         @@ -25,9 +25,9 @@ module F5 
     | 
|
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                  def client
         
     | 
| 
       27 
27 
     | 
    
         
             
                    return @client if @client
         
     | 
| 
       28 
     | 
    
         
            -
                    config = YAML.load_file( 
     | 
| 
      
 28 
     | 
    
         
            +
                    config = YAML.load_file(options[:config])
         
     | 
| 
       29 
29 
     | 
    
         
             
                    if config.key?('username') && options[:lb] == 'default'
         
     | 
| 
       30 
     | 
    
         
            -
                      puts "Warning: credentials in  
     | 
| 
      
 30 
     | 
    
         
            +
                      puts "Warning: credentials in #{options[:config]} should be put under a named load balancer."
         
     | 
| 
       31 
31 
     | 
    
         
             
                      configure_lb_as(config)
         
     | 
| 
       32 
32 
     | 
    
         
             
                    else
         
     | 
| 
       33 
33 
     | 
    
         
             
                      configure_lb_as config[options[:lb]]
         
     | 
| 
         @@ -360,9 +360,120 @@ module F5 
     | 
|
| 
       360 
360 
     | 
    
         | 
| 
       361 
361 
     | 
    
         
             
                end
         
     | 
| 
       362 
362 
     | 
    
         | 
| 
      
 363 
     | 
    
         
            +
                class Config < Subcommand
         
     | 
| 
      
 364 
     | 
    
         
            +
                  desc "list", "Lists the current configuration variables."
         
     | 
| 
      
 365 
     | 
    
         
            +
                  def list
         
     | 
| 
      
 366 
     | 
    
         
            +
                    response = client.Management.DBVariable.get_list
         
     | 
| 
      
 367 
     | 
    
         
            +
             
     | 
| 
      
 368 
     | 
    
         
            +
                    dbVariables = Array(response[:item])
         
     | 
| 
      
 369 
     | 
    
         
            +
                    if dbVariables.empty?
         
     | 
| 
      
 370 
     | 
    
         
            +
                      puts "No config variables found"
         
     | 
| 
      
 371 
     | 
    
         
            +
                    else
         
     | 
| 
      
 372 
     | 
    
         
            +
                      dbVariables.each do |p|
         
     | 
| 
      
 373 
     | 
    
         
            +
                        puts "#{p[:name]}: #{p[:value]}"
         
     | 
| 
      
 374 
     | 
    
         
            +
                      end
         
     | 
| 
      
 375 
     | 
    
         
            +
                    end
         
     | 
| 
      
 376 
     | 
    
         
            +
                  end
         
     | 
| 
      
 377 
     | 
    
         
            +
                end
         
     | 
| 
      
 378 
     | 
    
         
            +
             
     | 
| 
      
 379 
     | 
    
         
            +
                class Device < Subcommand
         
     | 
| 
      
 380 
     | 
    
         
            +
                  desc "list", "Lists the all devices regardless of device group."
         
     | 
| 
      
 381 
     | 
    
         
            +
                  def list
         
     | 
| 
      
 382 
     | 
    
         
            +
                    response = client.Management.Device.get_list
         
     | 
| 
      
 383 
     | 
    
         
            +
             
     | 
| 
      
 384 
     | 
    
         
            +
                    devices = Array(response[:item])
         
     | 
| 
      
 385 
     | 
    
         
            +
                    if devices.empty?
         
     | 
| 
      
 386 
     | 
    
         
            +
                      puts "No devices found"
         
     | 
| 
      
 387 
     | 
    
         
            +
                    else
         
     | 
| 
      
 388 
     | 
    
         
            +
                      devices.each do |p|
         
     | 
| 
      
 389 
     | 
    
         
            +
                        puts p
         
     | 
| 
      
 390 
     | 
    
         
            +
                      end
         
     | 
| 
      
 391 
     | 
    
         
            +
                    end
         
     | 
| 
      
 392 
     | 
    
         
            +
                  end
         
     | 
| 
      
 393 
     | 
    
         
            +
                end
         
     | 
| 
      
 394 
     | 
    
         
            +
             
     | 
| 
      
 395 
     | 
    
         
            +
                class DeviceGroup < Subcommand
         
     | 
| 
      
 396 
     | 
    
         
            +
                  desc "list", "Lists the all device groups."
         
     | 
| 
      
 397 
     | 
    
         
            +
                  def list
         
     | 
| 
      
 398 
     | 
    
         
            +
                    response = client.Management.DeviceGroup.get_list
         
     | 
| 
      
 399 
     | 
    
         
            +
             
     | 
| 
      
 400 
     | 
    
         
            +
                    devices = Array(response[:item])
         
     | 
| 
      
 401 
     | 
    
         
            +
                    if devices.empty?
         
     | 
| 
      
 402 
     | 
    
         
            +
                      puts "No devices found"
         
     | 
| 
      
 403 
     | 
    
         
            +
                    else
         
     | 
| 
      
 404 
     | 
    
         
            +
                      devices.each do |p|
         
     | 
| 
      
 405 
     | 
    
         
            +
                        puts p
         
     | 
| 
      
 406 
     | 
    
         
            +
                      end
         
     | 
| 
      
 407 
     | 
    
         
            +
                    end
         
     | 
| 
      
 408 
     | 
    
         
            +
                  end
         
     | 
| 
      
 409 
     | 
    
         
            +
             
     | 
| 
      
 410 
     | 
    
         
            +
                  desc "status DEVICE_GROUP", "Shows the sync status between devices in the specified device group. (Shows status of all device groups of one is not specified.)"
         
     | 
| 
      
 411 
     | 
    
         
            +
                  def status(device_group=nil)
         
     | 
| 
      
 412 
     | 
    
         
            +
                    response = client.Management.DeviceGroup.get_sync_status(device_groups: { item: [ device_group ] })
         
     | 
| 
      
 413 
     | 
    
         
            +
                    puts "STATUS: #{response[:item][:status]}";
         
     | 
| 
      
 414 
     | 
    
         
            +
                    puts "STATUS COLOR: #{response[:item][:color]}";
         
     | 
| 
      
 415 
     | 
    
         
            +
                    puts "STATUS DESCRIPTION: #{response[:item][:member_state]}";
         
     | 
| 
      
 416 
     | 
    
         
            +
                    puts "STATUS SUMMARY: #{response[:item][:summary]}";
         
     | 
| 
      
 417 
     | 
    
         
            +
                    puts "STATUS DETAILS:"
         
     | 
| 
      
 418 
     | 
    
         
            +
                    puts response[:item][:details][:item].nil? ? "No further details." : response[:item][:details][:item]
         
     | 
| 
      
 419 
     | 
    
         
            +
                  end
         
     | 
| 
      
 420 
     | 
    
         
            +
             
     | 
| 
      
 421 
     | 
    
         
            +
                  desc "sync DEVICE_GROUP DEVICE_WITH_CHANGES_PENDING", "This will sync configs between devices in the specified device group."
         
     | 
| 
      
 422 
     | 
    
         
            +
                  def sync(device_group, device)
         
     | 
| 
      
 423 
     | 
    
         
            +
                    device = "#{device.gsub(%r{^/Common/}, '')}"
         
     | 
| 
      
 424 
     | 
    
         
            +
                    response = client.System.ConfigSync.synchronize_to_group_v2(group: device_group, device: "/Common/#{device}", force: false)
         
     | 
| 
      
 425 
     | 
    
         
            +
                    if response.nil? || response.empty?
         
     | 
| 
      
 426 
     | 
    
         
            +
                      puts "Sync completed."
         
     | 
| 
      
 427 
     | 
    
         
            +
                    else
         
     | 
| 
      
 428 
     | 
    
         
            +
                      puts "Sync did not complete."
         
     | 
| 
      
 429 
     | 
    
         
            +
                    end
         
     | 
| 
      
 430 
     | 
    
         
            +
                  end
         
     | 
| 
      
 431 
     | 
    
         
            +
                end
         
     | 
| 
      
 432 
     | 
    
         
            +
             
     | 
| 
      
 433 
     | 
    
         
            +
                class VirtualServer < Subcommand
         
     | 
| 
      
 434 
     | 
    
         
            +
             
     | 
| 
      
 435 
     | 
    
         
            +
                  desc "list", "Lists all the virtual servers"
         
     | 
| 
      
 436 
     | 
    
         
            +
                  def list
         
     | 
| 
      
 437 
     | 
    
         
            +
                    response = client.LocalLB.VirtualServer.get_list
         
     | 
| 
      
 438 
     | 
    
         
            +
             
     | 
| 
      
 439 
     | 
    
         
            +
                    virtualservers = Array(response[:item])
         
     | 
| 
      
 440 
     | 
    
         
            +
                    if virtualservers.empty?
         
     | 
| 
      
 441 
     | 
    
         
            +
                      puts "No virtual servers found"
         
     | 
| 
      
 442 
     | 
    
         
            +
                    else
         
     | 
| 
      
 443 
     | 
    
         
            +
                      virtualservers.each do |p|
         
     | 
| 
      
 444 
     | 
    
         
            +
                        puts p
         
     | 
| 
      
 445 
     | 
    
         
            +
                      end
         
     | 
| 
      
 446 
     | 
    
         
            +
                    end
         
     | 
| 
      
 447 
     | 
    
         
            +
                  end
         
     | 
| 
      
 448 
     | 
    
         
            +
             
     | 
| 
      
 449 
     | 
    
         
            +
                  desc "show VSERVER_NAME", "Shows information about a virtual server"
         
     | 
| 
      
 450 
     | 
    
         
            +
                  def show(vserver)
         
     | 
| 
      
 451 
     | 
    
         
            +
                    destination = extract_items client.LocalLB.VirtualServer.get_destination(virtual_servers: { item: [vserver] } )
         
     | 
| 
      
 452 
     | 
    
         
            +
                    protocol = extract_items client.LocalLB.VirtualServer.get_protocol(virtual_servers: { item: [vserver] } )
         
     | 
| 
      
 453 
     | 
    
         
            +
                    default_pool = extract_items client.LocalLB.VirtualServer.get_default_pool_name(virtual_servers: { item: [vserver] } )
         
     | 
| 
      
 454 
     | 
    
         
            +
             
     | 
| 
      
 455 
     | 
    
         
            +
                    puts "%-25s %-20s %-20s %-20s" % ["Destination Address", "Destination Port", "Protocol", "Default Pool"]
         
     | 
| 
      
 456 
     | 
    
         
            +
                    puts "%-25s %-20s %-20s %-20s" % [destination[:address], destination[:port], protocol.split('_').last, default_pool]
         
     | 
| 
      
 457 
     | 
    
         
            +
                  end
         
     | 
| 
      
 458 
     | 
    
         
            +
             
     | 
| 
      
 459 
     | 
    
         
            +
                  desc "status VSERVER_NAME", "Shows the status of the virtual server"
         
     | 
| 
      
 460 
     | 
    
         
            +
                  def status(vserver)
         
     | 
| 
      
 461 
     | 
    
         
            +
                    response = client.LocalLB.VirtualServer.get_object_status(virtual_servers: { item: [vserver] } )
         
     | 
| 
      
 462 
     | 
    
         
            +
             
     | 
| 
      
 463 
     | 
    
         
            +
                    availability = response[:item][:availability_status].split('_').last
         
     | 
| 
      
 464 
     | 
    
         
            +
                    enabled = response[:item][:enabled_status].split('_').last
         
     | 
| 
      
 465 
     | 
    
         
            +
                    status_description = response[:item][:status_description]
         
     | 
| 
      
 466 
     | 
    
         
            +
             
     | 
| 
      
 467 
     | 
    
         
            +
                    puts "%-40s %-20s %-20s %-20s" % ["Name", "Availability", "Enabled", "Status Description"]
         
     | 
| 
      
 468 
     | 
    
         
            +
                    puts "%-40s %-20s %-20s %-20s" % [vserver, availability, enabled, status_description]
         
     | 
| 
      
 469 
     | 
    
         
            +
                  end
         
     | 
| 
      
 470 
     | 
    
         
            +
                end
         
     | 
| 
      
 471 
     | 
    
         
            +
             
     | 
| 
       363 
472 
     | 
    
         
             
                class Application < Thor
         
     | 
| 
       364 
473 
     | 
    
         
             
                  class_option :lb, default: 'default'
         
     | 
| 
       365 
474 
     | 
    
         | 
| 
      
 475 
     | 
    
         
            +
                  class_option :config, :type => :string, :default => "#{ENV['HOME']}/.f5.yml", :desc => "Defines the location of the configuration file."
         
     | 
| 
      
 476 
     | 
    
         
            +
             
     | 
| 
       366 
477 
     | 
    
         
             
                  desc "node SUBCOMMAND ...ARGS", "manage nodes"
         
     | 
| 
       367 
478 
     | 
    
         
             
                  subcommand "node", Node
         
     | 
| 
       368 
479 
     | 
    
         | 
| 
         @@ -377,6 +488,18 @@ module F5 
     | 
|
| 
       377 
488 
     | 
    
         | 
| 
       378 
489 
     | 
    
         
             
                  desc "vlan SUBCOMMAND ...ARGS", "manage vlans"
         
     | 
| 
       379 
490 
     | 
    
         
             
                  subcommand "vlan", VLAN
         
     | 
| 
      
 491 
     | 
    
         
            +
             
     | 
| 
      
 492 
     | 
    
         
            +
                  desc "config SUBCOMMAND ...ARGS", "view config values"
         
     | 
| 
      
 493 
     | 
    
         
            +
                  subcommand "config", Config
         
     | 
| 
      
 494 
     | 
    
         
            +
             
     | 
| 
      
 495 
     | 
    
         
            +
                  desc "device SUBCOMMAND ...ARGS", "manage devices"
         
     | 
| 
      
 496 
     | 
    
         
            +
                  subcommand "device", Device
         
     | 
| 
      
 497 
     | 
    
         
            +
             
     | 
| 
      
 498 
     | 
    
         
            +
                  desc "devicegroup SUBCOMMAND ...ARGS", "manage device groups"
         
     | 
| 
      
 499 
     | 
    
         
            +
                  subcommand "devicegroup", DeviceGroup
         
     | 
| 
      
 500 
     | 
    
         
            +
             
     | 
| 
      
 501 
     | 
    
         
            +
                  desc "vserver SUBCOMMAND ...ARGS", "manage virtual servers"
         
     | 
| 
      
 502 
     | 
    
         
            +
                  subcommand "vserver", VirtualServer
         
     | 
| 
       380 
503 
     | 
    
         
             
                end
         
     | 
| 
       381 
504 
     | 
    
         
             
              end
         
     | 
| 
       382 
505 
     | 
    
         
             
            end
         
     | 
    
        data/lib/f5/icontrol/rapi.rb
    CHANGED
    
    | 
         @@ -63,7 +63,9 @@ module F5 
     | 
|
| 
       63 
63 
     | 
    
         | 
| 
       64 
64 
     | 
    
         
             
                  private
         
     | 
| 
       65 
65 
     | 
    
         
             
                  def url
         
     | 
| 
       66 
     | 
    
         
            -
                     
     | 
| 
      
 66 
     | 
    
         
            +
                    pool_match = @method_chain.match %r{(/pool/[A-Za-z0-9\-_~]+)}
         
     | 
| 
      
 67 
     | 
    
         
            +
                    method_chain = @method_chain.tr '_', '-'
         
     | 
| 
      
 68 
     | 
    
         
            +
                    method_chain = method_chain.sub %r{/pool/[A-Za-z0-9\-_~]+}, pool_match[1] unless pool_match.nil?
         
     | 
| 
       67 
69 
     | 
    
         
             
                    method_chain.gsub! %r{^/}, ''
         
     | 
| 
       68 
70 
     | 
    
         
             
                    "https://#{@args[:host]}/#{method_chain}"
         
     | 
| 
       69 
71 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -15,7 +15,7 @@ module F5 
     | 
|
| 
       15 
15 
     | 
    
         
             
                      potential_collection = "#{method}Reference"
         
     | 
| 
       16 
16 
     | 
    
         
             
                      if @args.key? potential_collection
         
     | 
| 
       17 
17 
     | 
    
         
             
                        link = @args[potential_collection]["link"]
         
     | 
| 
       18 
     | 
    
         
            -
                        link. 
     | 
| 
      
 18 
     | 
    
         
            +
                        link.sub! %r{^https?://[A-Za-z0-9\-._]+/}, ""
         
     | 
| 
       19 
19 
     | 
    
         
             
                        return F5::Icontrol::RAPI.new(link, @credentials)
         
     | 
| 
       20 
20 
     | 
    
         
             
                      end
         
     | 
| 
       21 
21 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/f5/icontrol/version.rb
    CHANGED
    
    
    
        data/spec/models/rapi_spec.rb
    CHANGED
    
    | 
         @@ -40,6 +40,15 @@ describe F5::Icontrol::RAPI do 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    expect(WebMock).to have_requested(:get, "#{baseurl}/foo-bar/")
         
     | 
| 
       41 
41 
     | 
    
         
             
                  end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                  it "preserves underscores in pool names" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    stub_request(:get, "#{baseurl}/pool/foo_bar").
         
     | 
| 
      
 45 
     | 
    
         
            +
                      to_return(body: pool_collection)
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    subject.pool.load('foo_bar')
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    expect(WebMock).to have_requested(:get, "#{baseurl}/pool/foo_bar")
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       43 
52 
     | 
    
         
             
                  it "understands `each` implicitly calls `get_collection`" do
         
     | 
| 
       44 
53 
     | 
    
         
             
                    stub_request(:get, "#{baseurl}/foo/bar/").
         
     | 
| 
       45 
54 
     | 
    
         
             
                      to_return(body: pool_collection)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: f5-icontrol
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sean Walberg
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire: 
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-09-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: savon
         
     | 
| 
         @@ -66,6 +66,20 @@ dependencies: 
     | 
|
| 
       66 
66 
     | 
    
         
             
                - - ">="
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
68 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 70 
     | 
    
         
            +
              name: wasabi
         
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 72 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 73 
     | 
    
         
            +
                - - "<="
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 75 
     | 
    
         
            +
                    version: 3.5.0
         
     | 
| 
      
 76 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 77 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 79 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 80 
     | 
    
         
            +
                - - "<="
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 82 
     | 
    
         
            +
                    version: 3.5.0
         
     | 
| 
       69 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
84 
     | 
    
         
             
              name: awesome_print
         
     | 
| 
       71 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -142,14 +156,14 @@ dependencies: 
     | 
|
| 
       142 
156 
     | 
    
         
             
                requirements:
         
     | 
| 
       143 
157 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       144 
158 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       145 
     | 
    
         
            -
                    version:  
     | 
| 
      
 159 
     | 
    
         
            +
                    version: 3.7.0
         
     | 
| 
       146 
160 
     | 
    
         
             
              type: :development
         
     | 
| 
       147 
161 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       148 
162 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       149 
163 
     | 
    
         
             
                requirements:
         
     | 
| 
       150 
164 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       151 
165 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       152 
     | 
    
         
            -
                    version:  
     | 
| 
      
 166 
     | 
    
         
            +
                    version: 3.7.0
         
     | 
| 
       153 
167 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       154 
168 
     | 
    
         
             
              name: vcr
         
     | 
| 
       155 
169 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -480,7 +494,7 @@ homepage: https://github.com/swalberg/f5-icontrol 
     | 
|
| 
       480 
494 
     | 
    
         
             
            licenses:
         
     | 
| 
       481 
495 
     | 
    
         
             
            - MIT
         
     | 
| 
       482 
496 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       483 
     | 
    
         
            -
            post_install_message: 
     | 
| 
      
 497 
     | 
    
         
            +
            post_install_message:
         
     | 
| 
       484 
498 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       485 
499 
     | 
    
         
             
            require_paths:
         
     | 
| 
       486 
500 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -495,9 +509,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       495 
509 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       496 
510 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       497 
511 
     | 
    
         
             
            requirements: []
         
     | 
| 
       498 
     | 
    
         
            -
             
     | 
| 
       499 
     | 
    
         
            -
             
     | 
| 
       500 
     | 
    
         
            -
            signing_key: 
         
     | 
| 
      
 512 
     | 
    
         
            +
            rubygems_version: 3.1.2
         
     | 
| 
      
 513 
     | 
    
         
            +
            signing_key:
         
     | 
| 
       501 
514 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       502 
515 
     | 
    
         
             
            summary: A gem to manage F5 BigIP devices using the iControl API
         
     | 
| 
       503 
516 
     | 
    
         
             
            test_files:
         
     |