lib/vmc/cli/service/bind.rb
require "vmc/detect"
require "vmc/cli/service/base"
module VMC::Service
class Bind < Base
desc "Bind a service to an application"
group :services, :manage
input :service, :desc => "Service to bind", :argument => :optional,
:from_given => by_name(:service_instance, "service")
input :app, :desc => "Application to bind to", :argument => :optional,
:from_given => by_name(:app)
def bind_service
app = input[:app]
service = input[:service, app]
with_progress(
"Binding #{c(service.name, :name)} to #{c(app.name, :name)}") do |s|
if app.binds?(service)
s.skip do
err "App #{b(app.name)} already binds #{b(service.name)}."
end
else
app.bind(service)
end
end
end
private
def ask_service(app)
services = client.service_instances
fail "No services." if services.empty?
ask "Which service?", :choices => services - app.services,
:display => proc(&:name)
end
def ask_app
ask "Which application?", :choices => client.apps,
:display => proc(&:name)
end
end
end