Sha256: ddfe13b478f40464695d2cc3f8881dc0b7ff9050ccab7053e9468a890d6c7ddf

Contents?: true

Size: 1.99 KB

Versions: 17

Compression:

Stored size: 1.99 KB

Contents

module CloudstackClient

	module IpAddress

		##
    # Lists the public ip addresses.

    def list_public_ip_addresses(args = {})
      params = {
          'command' => 'listPublicIpAddresses',
          'isrecursive' => true
      }
      if args[:project]
        project = get_project(args[:project])
        unless project
          puts "Error: project #{args[:project]} not found."
          exit 1
        end
        params['projectid'] = project['id']
      end
      if args[:account]
        account = list_accounts({name: args[:account]}).first
        unless account
          puts "Error: Account #{args[:account]} not found."
          exit 1
        end
        params['domainid'] = account["domainid"]
        params['account'] = args[:account]
      end
      params['listall'] = args[:listall] if args[:listall]

      json = send_request(params)
      json['publicipaddress'] || []
    end

    ##
    # Finds the public ip address for a given ip address string.

    def get_public_ip_address(ip_address, project_id = nil)
      params = {
          'command' => 'listPublicIpAddresses',
          'ipaddress' => ip_address
      }
      params['projectid'] = project_id if project_id
      json = send_request(params)
      ip_address = json['publicipaddress']

      return nil unless ip_address
      ip_address.first
    end


    ##
    # Acquires and associates a public IP to an account.

    def associate_ip_address(network_id, project_id = nil)
      params = {
          'command' => 'associateIpAddress',
          'networkid' => network_id
      }
      params['projectid'] = project_id if project_id

      json = send_async_request(params)
      json['ipaddress']
    end

    ##
    # Disassociates an ip address from the account.
    #
    # Returns true if successful, false otherwise.

    def disassociate_ip_address(id)
      params = {
          'command' => 'disassociateIpAddress',
          'id' => id
      }
      json = send_async_request(params)
      json['success']
    end

	end

end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
cloudstack_client-0.9.7 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.6 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.5 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.3 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.2 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.1 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.9.0 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.8.0 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.7.1 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.7.0 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.6.4 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.6.3 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.6.2 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.6.0 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.6.1 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.5.0 lib/cloudstack_client/commands/ip_address.rb
cloudstack_client-0.4.4 lib/cloudstack_client/commands/ip_address.rb