vmc-ng/lib/vmc/cli/service.rb in vmc-0.4.0.beta.28 vs vmc-ng/lib/vmc/cli/service.rb in vmc-0.4.0.beta.29
- old
+ new
@@ -23,19 +23,17 @@
}
end
desc "List your service instances"
group :services
- input :name, :desc => "Filter by name regexp"
- input :app, :desc => "Filter by bound application regexp"
- input :service, :desc => "Filter by service regexp"
+ input :name, :desc => "Filter by name"
+ input :service, :desc => "Filter by service type"
input :plan, :desc => "Filter by service plan"
input :provider, :desc => "Filter by service provider"
input :version, :desc => "Filter by service version"
- # TODO: not in v2
- input :type, :desc => "Filter by service type regexp"
- input :tier, :desc => "Filter by service tier regexp"
+ input :app, :desc => "Limit to application's service bindings",
+ :from_given => by_name("app")
def services(input)
instances =
with_progress("Getting service instances") do
client.service_instances(2)
end
@@ -269,40 +267,42 @@
private
def instance_matches(i, options)
if app = options[:app]
- return false if i.service_bindings.none? { |b|
- b.app.name == app
- }
+ return false unless app.services.include? i
end
if name = options[:name]
- return false if i.name !~ /#{name}/
+ return false unless File.fnmatch(name, i.name)
end
+ plan = i.service_plan if v2?
+
if service = options[:service]
- return false if i.service_plan.service.label !~ /#{service}/
+ if v2?
+ return false unless File.fnmatch(service, plan.service.label)
+ else
+ return false unless File.fnmatch(service, i.vendor)
+ end
end
- if !v2? && type = options[:type]
- return false if i.type !~ /#{type}/
+ if plan = options[:plan]
+ fail "--plan is not supported on this target" unless v2?
+ return false unless File.fnmatch(plan.upcase, plan.name.upcase)
end
- if !v2? && tier = options[:tier]
- return false if i.tier !~ /#{tier}/
+ if provider = options[:provider]
+ fail "--provider is not supported on this target" unless v2?
+ return false unless File.fnmatch(provider, plan.service.provider)
end
- if v2? && plan = options[:plan]
- return false if i.service_plan.name !~ /#{plan}/i
- end
-
- if v2? && provider = options[:provider]
- return false if i.service_plan.service.provider !~ /#{provider}/
- end
-
- if v2? && version = options[:version]
- return false if i.service_plan.service.version !~ /#{version}/
+ if version = options[:version]
+ if v2?
+ return false unless File.fnmatch(version, plan.service.version)
+ else
+ return false unless File.fnmatch(version, i.version)
+ end
end
true
end