lib/vmc/cli/start/target.rb
require "vmc/cli/start/base"
require "vmc/cli/start/target_interactions"
module VMC::Start
class Target < Base
def precondition; end
desc "Set or display the target cloud, organization, and space"
group :start
input :url, :desc => "Target URL to switch to", :argument => :optional
input :organization, :desc => "Organization" , :aliases => %w{--org -o},
:from_given => by_name(:organization)
input :space, :desc => "Space", :alias => "-s",
:from_given => by_name(:space)
interactions TargetInteractions
def target
unless input.has?(:url) || input.has?(:organization) || \
input.has?(:space)
display_target
display_org_and_space unless quiet?
return
end
if input.has?(:url)
target = sane_target_url(input[:url])
with_progress("Setting target to #{c(target, :name)}") do
begin
CFoundry::Client.new(target) # check that it's valid before setting
rescue CFoundry::TargetRefused
fail "Target refused connection."
rescue CFoundry::InvalidTarget
fail "Invalid target URI."
end
set_target(target)
end
end
if v2?
puts "Warning: Targeting a v2 instance. Further commands will fail until a v1 instance is targeted. Please use the 'cf' command to target v2 instances."
end
end
private
def display_org_and_space
return unless v2?
if org = client.current_organization
line "organization: #{c(org.name, :name)}"
end
if space = client.current_space
line "space: #{c(space.name, :name)}"
end
rescue CFoundry::APIError
end
end
end