Sha256: 8368d103fbb3c84180a19c093ad7812bdc2c90675b021ac64a687543e51736e4

Contents?: true

Size: 1.18 KB

Versions: 4

Compression:

Stored size: 1.18 KB

Contents

require 'fog/collection'
require 'fog/terremark/models/server'

module Fog
  module Terremark

    class Mock
      def tasks
        Fog::Terremark::Tasks.new(:connection => self)
      end
    end

    class Real
      def tasks
        Fog::Terremark::Tasks.new(:connection => self)
      end
    end

    class Tasks < Fog::Collection

      model Fog::Terremark::Task

      def all
        data = connection.get_tasks_list(task_list_id).body['Tasks']
        load(data)
      end

      def get(task_id)
        if task_id && task = connection.get_task(task_id).body
          new(task)
        elsif !task_id
          nil
        end
      rescue Excon::Errors::Forbidden
        nil
      end

      def task_list_id
        @task_list_id ||=
          if connection.default_organization_id && organization = connection.get_organization(connection.default_organization_id).body
            organization['Links'].detect {|link| link['type'] == 'application/vnd.vmware.vcloud.tasksList+xml'}['href'].split('/').last.to_i
          else
            nil
          end
      end

      private

      def task_list_id=(new_task_list_id)
        @task_list_id = new_task_list_id
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fog-0.0.77 lib/fog/terremark/models/tasks.rb
fog-0.0.76 lib/fog/terremark/models/tasks.rb
fog-0.0.75 lib/fog/terremark/models/tasks.rb
fog-0.0.74 lib/fog/terremark/models/tasks.rb