class Terremark < Fog::Bin
  class << self
    def available?
      Fog::Terremark::VCLOUD_OPTIONS.all? {|requirement| Fog.credentials.include?(requirement)}
    end

    def terremark_service(service)
      case service
        when :vcloud
          Fog::Terremark::Vcloud
        else
          raise "Unsupported Terremark Service"
      end
    end

    def [](service)
      @@connections ||= Hash.new do |hash, key|
        credentials = Fog.credentials.reject do |k,v|
          case key
            when :vcloud
              !Fog::Terremark::VCLOUD_OPTIONS.include?(k)
          end
        end
        hash[key] = terremark_service(key).new(credentials)
      end
      @@connections[service]
    end
  end
end
