mirror of
				https://github.com/fog/fog.git
				synced 2022-11-09 13:51:43 -05:00 
			
		
		
		
	[terremark] cleanup existing and add stuff for connecting ips/services and delete methods
This commit is contained in:
		
							parent
							
								
									f5b28f8cfa
								
							
						
					
					
						commit
						4421d86953
					
				
					 19 changed files with 505 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -3,12 +3,18 @@ module Fog
 | 
			
		|||
 | 
			
		||||
    def self.new(options={})
 | 
			
		||||
 | 
			
		||||
      require 'fog/terremark/requests/add_internet_service'
 | 
			
		||||
      require 'fog/terremark/requests/add_node_service'
 | 
			
		||||
      require 'fog/terremark/requests/create_internet_service'
 | 
			
		||||
      require 'fog/terremark/requests/delete_internet_service'
 | 
			
		||||
      require 'fog/terremark/requests/delete_node_service'
 | 
			
		||||
      require 'fog/terremark/requests/delete_vapp'
 | 
			
		||||
      require 'fog/terremark/requests/deploy_vapp'
 | 
			
		||||
      require 'fog/terremark/requests/get_catalog'
 | 
			
		||||
      require 'fog/terremark/requests/get_catalog_item'
 | 
			
		||||
      require 'fog/terremark/requests/get_organization'
 | 
			
		||||
      require 'fog/terremark/requests/get_organizations'
 | 
			
		||||
      require 'fog/terremark/requests/get_public_ips'
 | 
			
		||||
      require 'fog/terremark/requests/get_task'
 | 
			
		||||
      require 'fog/terremark/requests/get_tasks_list'
 | 
			
		||||
      require 'fog/terremark/requests/get_vapp'
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +72,65 @@ module Fog
 | 
			
		|||
        @cookie = get_organizations.headers['Set-Cookie']
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      # TODO: bust cache on organization creation?
 | 
			
		||||
      def default_organization_id
 | 
			
		||||
        @default_organization_id ||= begin
 | 
			
		||||
          org_list = get_organizations.body['OrgList']
 | 
			
		||||
          if org_list.length == 1
 | 
			
		||||
            org_list.first['href'].split('/').last.to_i
 | 
			
		||||
          else
 | 
			
		||||
            nil
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def default_vdc_id
 | 
			
		||||
        if default_organization_id
 | 
			
		||||
          @default_vdc_id ||= begin
 | 
			
		||||
            vdcs = get_organization(default_organization_id).body['Links'].select {|link|
 | 
			
		||||
              link['type'] == 'application/vnd.vmware.vcloud.vdc+xml'
 | 
			
		||||
            }
 | 
			
		||||
            if vdcs.length == 1
 | 
			
		||||
              vdcs.first['href'].split('/').last.to_i
 | 
			
		||||
            else
 | 
			
		||||
              nil
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        else
 | 
			
		||||
          nil
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def default_network_id
 | 
			
		||||
        if default_vdc_id
 | 
			
		||||
          @default_network_id ||= begin
 | 
			
		||||
            networks = get_vdc(default_vdc_id).body['AvailableNetworks']
 | 
			
		||||
            if networks.length == 1
 | 
			
		||||
              networks.first['href'].split('/').last.to_i
 | 
			
		||||
            else
 | 
			
		||||
              nil
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        else
 | 
			
		||||
          nil
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def default_public_ip_id
 | 
			
		||||
        if default_vdc_id
 | 
			
		||||
          @default_public_ip_id ||= begin
 | 
			
		||||
            ips = get_public_ips(default_vdc_id).body['PublicIpAddresses']
 | 
			
		||||
            if ips.length == 1
 | 
			
		||||
              ips.first['Href'].split('/').last.to_i
 | 
			
		||||
            else
 | 
			
		||||
              nil
 | 
			
		||||
            end
 | 
			
		||||
          end
 | 
			
		||||
        else
 | 
			
		||||
          nil
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      private
 | 
			
		||||
 | 
			
		||||
      def request(params)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										28
									
								
								lib/fog/terremark/parsers/get_public_Ips.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								lib/fog/terremark/parsers/get_public_Ips.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Parsers
 | 
			
		||||
    module Terremark
 | 
			
		||||
 | 
			
		||||
      class GetPublicIps< Fog::Parsers::Base
 | 
			
		||||
 | 
			
		||||
        def reset
 | 
			
		||||
          @ip_address = {}
 | 
			
		||||
          @response = { 'PublicIpAddresses' => [] }
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def end_element(name)
 | 
			
		||||
          case name
 | 
			
		||||
          when 'Href', 'Name'
 | 
			
		||||
            @ip_address[name] = @value
 | 
			
		||||
          when 'Id'
 | 
			
		||||
            @ip_address[name] = @value.to_i
 | 
			
		||||
          when 'PublicIPAddress'
 | 
			
		||||
            @response['PublicIpAddresses'] << @ip_address
 | 
			
		||||
            @ip_address = {}
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										63
									
								
								lib/fog/terremark/parsers/internet_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lib/fog/terremark/parsers/internet_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Parsers
 | 
			
		||||
    module Terremark
 | 
			
		||||
 | 
			
		||||
      class InternetService < Fog::Parsers::Base
 | 
			
		||||
 | 
			
		||||
        def reset
 | 
			
		||||
          @in_public_ip_address = false
 | 
			
		||||
          @response = { 'PublicIpAddress' => {} }
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def start_element(name, attributes)
 | 
			
		||||
          @value = ''
 | 
			
		||||
          case name
 | 
			
		||||
          when 'Href'
 | 
			
		||||
            data = {}
 | 
			
		||||
            until attributes.empty?
 | 
			
		||||
              data[attributes.shift] = attributes.shift
 | 
			
		||||
            end
 | 
			
		||||
            if @in_public_ip_address
 | 
			
		||||
              @response['PublicIpAddress'][name] = data
 | 
			
		||||
            else
 | 
			
		||||
              @response[name] = data
 | 
			
		||||
            end
 | 
			
		||||
          when 'PublicIpAddress'
 | 
			
		||||
            @in_public_ip_address = true
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def end_element(name)
 | 
			
		||||
          case name
 | 
			
		||||
          when 'Description', 'Protocol'
 | 
			
		||||
            @response[name] = @value
 | 
			
		||||
          when 'Enabled'
 | 
			
		||||
            if @value == 'false'
 | 
			
		||||
              @response[name] = false
 | 
			
		||||
            else
 | 
			
		||||
              @response[name] = true
 | 
			
		||||
            end
 | 
			
		||||
          when 'Id'
 | 
			
		||||
            if @in_public_ip_address
 | 
			
		||||
              @response['PublicIpAddress'][name] = @value.to_i
 | 
			
		||||
            else
 | 
			
		||||
              @response[name] = @value.to_i
 | 
			
		||||
            end
 | 
			
		||||
          when 'Name'
 | 
			
		||||
            if @in_public_ip_address
 | 
			
		||||
              @response['PublicIpAddress'][name] = @value
 | 
			
		||||
            else
 | 
			
		||||
              @response[name] = @value
 | 
			
		||||
            end
 | 
			
		||||
          when 'Port', 'Timeout'
 | 
			
		||||
            @response[name] = @value.to_i
 | 
			
		||||
          when 'PublicIpAddress'
 | 
			
		||||
            @in_public_ip_address = false
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										30
									
								
								lib/fog/terremark/parsers/node_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								lib/fog/terremark/parsers/node_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Parsers
 | 
			
		||||
    module Terremark
 | 
			
		||||
 | 
			
		||||
      class NodeService < Fog::Parsers::Base
 | 
			
		||||
 | 
			
		||||
        def reset
 | 
			
		||||
          @response = {}
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def end_element(name)
 | 
			
		||||
          case name
 | 
			
		||||
          when 'Description', 'Href', 'IpAddress', 'Name', 'Protocol'
 | 
			
		||||
            @response[name] = @value
 | 
			
		||||
          when 'Enabled'
 | 
			
		||||
            if @value == 'false'
 | 
			
		||||
              @response[name] = false
 | 
			
		||||
            else
 | 
			
		||||
              @response[name] = true
 | 
			
		||||
            end
 | 
			
		||||
          when 'Id', 'Port'
 | 
			
		||||
            @response[name] = @value.to_i
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										63
									
								
								lib/fog/terremark/requests/add_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lib/fog/terremark/requests/add_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      require 'fog/terremark/parsers/internet_service'
 | 
			
		||||
 | 
			
		||||
      # Reserve requested resources and deploy vApp
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * ip_id<~Integer> - Id of ip to add service to
 | 
			
		||||
      # * name<~String> - Name of service
 | 
			
		||||
      # * protocol<~String> - Protocol of service
 | 
			
		||||
      # * port<~Integer> - Port of service
 | 
			
		||||
      # * options<~Hash>:
 | 
			
		||||
      #   * Enabled<~Boolean>: defaults to true
 | 
			
		||||
      #   * Description<~String>: optional description
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
      #     * 'endTime'<~String> - endTime of task
 | 
			
		||||
      #     * 'href'<~String> - link to task
 | 
			
		||||
      #     * 'startTime'<~String> - startTime of task
 | 
			
		||||
      #     * 'status'<~String> - status of task
 | 
			
		||||
      #     * 'type'<~String> - type of task
 | 
			
		||||
      #     * 'Owner'<~String> -
 | 
			
		||||
      #       * 'href'<~String> - href of owner
 | 
			
		||||
      #       * 'name'<~String> - name of owner
 | 
			
		||||
      #       * 'type'<~String> - type of owner
 | 
			
		||||
      def add_internet_service(ip_id, name, protocol, port, options = {})
 | 
			
		||||
        unless options.has_key?('Enabled')
 | 
			
		||||
          options['Enabled'] = true
 | 
			
		||||
        end
 | 
			
		||||
        data = <<-DATA
 | 
			
		||||
<InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
 | 
			
		||||
  <Name>#{name}</Name>
 | 
			
		||||
  <Protocol>#{protocol.upcase}</Protocol>
 | 
			
		||||
  <Port>#{port}</Port>
 | 
			
		||||
  <Enabled>#{options['Enabled']}</Enabled>
 | 
			
		||||
  <Description>#{options['Description']}</Description>
 | 
			
		||||
</InternetService>
 | 
			
		||||
DATA
 | 
			
		||||
        request(
 | 
			
		||||
          :body     => data,
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :headers  => {'Content-Type' => 'application/xml'},
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::InternetService.new,
 | 
			
		||||
          :path     => "publicIps/#{ip_id}/internetServices"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def add_internet_service(ip_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										63
									
								
								lib/fog/terremark/requests/add_node_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lib/fog/terremark/requests/add_node_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      require 'fog/terremark/parsers/node_service'
 | 
			
		||||
 | 
			
		||||
      # Reserve requested resources and deploy vApp
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * service_id<~String> - Id of service to add node to
 | 
			
		||||
      # * ip<~String> - Private ip of server to add to node
 | 
			
		||||
      # * name<~String> - Name of service
 | 
			
		||||
      # * port<~Integer> - Port of service
 | 
			
		||||
      # * options<~Hash>:
 | 
			
		||||
      #   * Enabled<~Boolean>: defaults to true
 | 
			
		||||
      #   * Description<~String>: optional description
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
      #     * 'endTime'<~String> - endTime of task
 | 
			
		||||
      #     * 'href'<~String> - link to task
 | 
			
		||||
      #     * 'startTime'<~String> - startTime of task
 | 
			
		||||
      #     * 'status'<~String> - status of task
 | 
			
		||||
      #     * 'type'<~String> - type of task
 | 
			
		||||
      #     * 'Owner'<~String> -
 | 
			
		||||
      #       * 'href'<~String> - href of owner
 | 
			
		||||
      #       * 'name'<~String> - name of owner
 | 
			
		||||
      #       * 'type'<~String> - type of owner
 | 
			
		||||
      def add_node_service(service_id, ip, name, port, options = {})
 | 
			
		||||
        unless options.has_key?('Enabled')
 | 
			
		||||
          options['Enabled'] = true
 | 
			
		||||
        end
 | 
			
		||||
        data = <<-DATA
 | 
			
		||||
<NodeService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createNodeService">
 | 
			
		||||
  <IpAddress>#{ip}</IpAddress>
 | 
			
		||||
  <Name>#{name}</Name>
 | 
			
		||||
  <Port>#{port}</Port>
 | 
			
		||||
  <Enabled>#{options['Enabled']}</Enabled>
 | 
			
		||||
  <Description>#{options['Description']}</Description>
 | 
			
		||||
</NodeService>
 | 
			
		||||
DATA
 | 
			
		||||
        request(
 | 
			
		||||
          :body     => data,
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :headers  => {'Content-Type' => 'application/xml'},
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::InternetService.new,
 | 
			
		||||
          :path     => "internetServices/#{service_id}/nodes"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def add_node_service(ip)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										63
									
								
								lib/fog/terremark/requests/create_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lib/fog/terremark/requests/create_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      require 'fog/terremark/parsers/internet_service'
 | 
			
		||||
 | 
			
		||||
      # Reserve requested resources and deploy vApp
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * vdc_id<~Integer> - Id of vDc to add internet service to
 | 
			
		||||
      # * name<~String> - Name of service
 | 
			
		||||
      # * protocol<~String> - Protocol of service
 | 
			
		||||
      # * port<~Integer> - Port of service
 | 
			
		||||
      # * options<~Hash>:
 | 
			
		||||
      #   * Enabled<~Boolean>: defaults to true
 | 
			
		||||
      #   * Description<~String>: optional description
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
      #     * 'endTime'<~String> - endTime of task
 | 
			
		||||
      #     * 'href'<~String> - link to task
 | 
			
		||||
      #     * 'startTime'<~String> - startTime of task
 | 
			
		||||
      #     * 'status'<~String> - status of task
 | 
			
		||||
      #     * 'type'<~String> - type of task
 | 
			
		||||
      #     * 'Owner'<~String> -
 | 
			
		||||
      #       * 'href'<~String> - href of owner
 | 
			
		||||
      #       * 'name'<~String> - name of owner
 | 
			
		||||
      #       * 'type'<~String> - type of owner
 | 
			
		||||
      def create_internet_service(vdc_id, name, protocol, port, options = {})
 | 
			
		||||
        unless options.has_key?('Enabled')
 | 
			
		||||
          options['Enabled'] = true
 | 
			
		||||
        end
 | 
			
		||||
        data = <<-DATA
 | 
			
		||||
<InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
 | 
			
		||||
  <Name>#{name}</Name>
 | 
			
		||||
  <Protocol>#{protocol.upcase}</Protocol>
 | 
			
		||||
  <Port>#{port}</Port>
 | 
			
		||||
  <Enabled>#{options['Enabled']}</Enabled>
 | 
			
		||||
  <Description>#{options['Description']}</Description>
 | 
			
		||||
</InternetService>
 | 
			
		||||
DATA
 | 
			
		||||
        request(
 | 
			
		||||
          :body     => data,
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :headers  => {'Content-Type' => 'application/xml'},
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::InternetService.new,
 | 
			
		||||
          :path     => "vdc/#{vdc_id}/internetServices"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def create_internet_service(vdc_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										40
									
								
								lib/fog/terremark/requests/delete_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lib/fog/terremark/requests/delete_internet_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      # Destroy an internet service
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * internet_service_id<~Integer> - Id of service to destroy
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
 | 
			
		||||
      # FIXME
 | 
			
		||||
 | 
			
		||||
      #     * 'CatalogItems'<~Array>
 | 
			
		||||
      #       * 'href'<~String> - linke to item
 | 
			
		||||
      #       * 'name'<~String> - name of item
 | 
			
		||||
      #       * 'type'<~String> - type of item
 | 
			
		||||
      #     * 'description'<~String> - Description of catalog
 | 
			
		||||
      #     * 'name'<~String> - Name of catalog
 | 
			
		||||
      def delete_internet_service(internet_service_id)
 | 
			
		||||
        request(
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :method   => 'DELETE',
 | 
			
		||||
          :path     => "InternetServices/#{internet_service_id}"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def delete_internet_service(internet_service_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										40
									
								
								lib/fog/terremark/requests/delete_node_service.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lib/fog/terremark/requests/delete_node_service.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      # Destroy a node
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * node_service_id<~Integer> - Id of node to destroy
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
 | 
			
		||||
      # FIXME
 | 
			
		||||
 | 
			
		||||
      #     * 'CatalogItems'<~Array>
 | 
			
		||||
      #       * 'href'<~String> - linke to item
 | 
			
		||||
      #       * 'name'<~String> - name of item
 | 
			
		||||
      #       * 'type'<~String> - type of item
 | 
			
		||||
      #     * 'description'<~String> - Description of catalog
 | 
			
		||||
      #     * 'name'<~String> - Name of catalog
 | 
			
		||||
      def delete_node_service(node_service_id)
 | 
			
		||||
        request(
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :method   => 'DELETE',
 | 
			
		||||
          :path     => "nodeServices/#{node_service_id}"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def delete_node_service(node_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ module Fog
 | 
			
		|||
          :expects  => 202,
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/vApp/#{vapp_id}/action/deploy"
 | 
			
		||||
          :path     => "vApp/#{vapp_id}/action/deploy"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ module Fog
 | 
			
		|||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def deploy_vapp(task_id)
 | 
			
		||||
      def deploy_vapp(vapp_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										37
									
								
								lib/fog/terremark/requests/get_public_ips.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								lib/fog/terremark/requests/get_public_ips.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Terremark
 | 
			
		||||
    class Real
 | 
			
		||||
 | 
			
		||||
      require 'fog/terremark/parsers/get_public_ips'
 | 
			
		||||
 | 
			
		||||
      # Get list of public ips
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Parameters
 | 
			
		||||
      # * vdc_id<~Integer> - Id of vdc to find public ips for
 | 
			
		||||
      #
 | 
			
		||||
      # ==== Returns
 | 
			
		||||
      # * response<~Excon::Response>:
 | 
			
		||||
      #   * body<~Hash>:
 | 
			
		||||
      #     * 'PublicIpAddresses'<~Array>
 | 
			
		||||
      #       * 'href'<~String> - linke to item
 | 
			
		||||
      #       * 'name'<~String> - name of item
 | 
			
		||||
      def get_public_ips(vdc_id)
 | 
			
		||||
        request(
 | 
			
		||||
          :expects  => 200,
 | 
			
		||||
          :method   => 'GET',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::GetPublicIps.new,
 | 
			
		||||
          :path     => "vdc/#{vdc_id}/publicIps"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Mock
 | 
			
		||||
 | 
			
		||||
      def get_public_ips(vdc_id)
 | 
			
		||||
        raise MockNotImplemented.new("Contributions welcome!")
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ module Fog
 | 
			
		|||
          :expects  => 200,
 | 
			
		||||
          :method   => 'GET',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/task/#{task_id}"
 | 
			
		||||
          :path     => "task/#{task_id}"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ module Fog
 | 
			
		|||
          :expects  => 200,
 | 
			
		||||
          :method   => 'GET',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::GetTasksList.new,
 | 
			
		||||
          :path     => "/tasksList/#{tasks_list_id}"
 | 
			
		||||
          :path     => "tasksList/#{tasks_list_id}"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ module Fog
 | 
			
		|||
          :expects  => 200,
 | 
			
		||||
          :method   => 'GET',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Vapp.new,
 | 
			
		||||
          :path     => "/vapp/#{vapp_id}"
 | 
			
		||||
          :path     => "vapp/#{vapp_id}"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,13 +23,9 @@ module Fog
 | 
			
		|||
      #     * 'name'<~String> - Name of catalog
 | 
			
		||||
      def instantiate_vapp_template(name)
 | 
			
		||||
        # FIXME: much cheating to commence
 | 
			
		||||
 | 
			
		||||
        organization_id = get_organizations.body['OrgList'].first['href'].split('/').last
 | 
			
		||||
        organization = get_organization(organization_id).body
 | 
			
		||||
        vdc_id = organization['Links'].select {|link| link['type'] == 'application/vnd.vmware.vcloud.vdc+xml'}.first['href'].split('/').last
 | 
			
		||||
        vdc = get_vdc(vdc_id).body
 | 
			
		||||
        network_id = vdc['AvailableNetworks'].first['href'].split('/').last
 | 
			
		||||
        catalog_item = 12 # Ubuntu JeOS 9.10 (64-bit)
 | 
			
		||||
        vdc_id        = default_vdc_id
 | 
			
		||||
        network_id    = default_network_id
 | 
			
		||||
        catalog_item  = 12 # Ubuntu JeOS 9.10 (64-bit)
 | 
			
		||||
 | 
			
		||||
        #       case UNRESOLVED:
 | 
			
		||||
        #          return "0";
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +97,7 @@ DATA
 | 
			
		|||
          :headers  => { 'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml' },
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::InstantiateVappTemplate.new,
 | 
			
		||||
          :path     => "/vdc/#{vdc_id}/action/instantiatevAppTemplate"
 | 
			
		||||
          :path     => "vdc/#{vdc_id}/action/instantiatevAppTemplate"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ module Fog
 | 
			
		|||
          :expects  => 202,
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/vApp/#{vapp_id}/power/action/powerOff"
 | 
			
		||||
          :path     => "vApp/#{vapp_id}/power/action/powerOff"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ module Fog
 | 
			
		|||
          :expects  => 202,
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/vApp/#{vapp_id}/power/action/powerOn"
 | 
			
		||||
          :path     => "vApp/#{vapp_id}/power/action/powerOn"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ module Fog
 | 
			
		|||
          :expects  => 202,
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/vApp/#{vapp_id}/power/action/reset"
 | 
			
		||||
          :path     => "vApp/#{vapp_id}/power/action/reset"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ module Fog
 | 
			
		|||
          :expects  => 202,
 | 
			
		||||
          :method   => 'POST',
 | 
			
		||||
          :parser   => Fog::Parsers::Terremark::Task.new,
 | 
			
		||||
          :path     => "/vApp/#{vapp_id}/power/action/shutdown"
 | 
			
		||||
          :path     => "vApp/#{vapp_id}/power/action/shutdown"
 | 
			
		||||
        )
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue