1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

feature #720: Add resource filtering

This commit is contained in:
Daniel Molina 2011-08-16 15:16:45 +02:00
parent 4d7745f634
commit 31fe71dc34

View File

@ -6,7 +6,7 @@ module OneWatchClient
def resource_monitoring(id, monitoring_resources=[], filter={})
# Retrieve Sequel resource
rsql = pool[id]
rsql = filter_resource(id, filter)
return nil if rsql.nil?
# By default show all the available monitoring resources.
@ -45,6 +45,7 @@ module OneWatchClient
def total_monitoring(monitoring_resources=[], filter={})
# Retrieve Sequel resource
rsql = filter_pool(filter)
return nil if rsql.nil?
# By default show all the available monitoring resources.
# If a set of monitoring resources is specified
@ -117,18 +118,6 @@ module OneWatchClient
a
end
protected
def filter_pool(filter)
if filter[:uid]
pool.filter(:uid=>filter[:uid])
elsif filter[:gid]
pool.filter(:gid=>filter[:gid])
else
pool
end
end
end
class HostWatchClient < WatchClient
@ -136,11 +125,6 @@ module OneWatchClient
WatchHelper::Host
end
def filter_pool(filter)
hosts = super(filter)
hosts.join(WatchHelper::HostSample, :host_id=>:id)
end
def allowed_samples
WatchHelper::HOST_SAMPLE
end
@ -156,6 +140,31 @@ module OneWatchClient
def error(pool)
pool.filter(:state=>3)
end
def filter_pool(filter)
if filter[:uid]
filter[:uid]==0 ? (hosts = pool) : (return nil)
elsif filter[:gid]
filter[:uid]==0 ? (hosts = pool) : (return nil)
else
hosts = pool
end
hosts.join(WatchHelper::HostSample, :host_id=>:id)
end
def filter_resource(id, filter)
rsql = pool[id]
return nil if rsql.nil?
if filter[:uid]
filter[:uid]==0 ? rsql : nil
elsif filter[:gid]
filter[:gid]==0 ? rsql : nil
else
rsql
end
end
end
class VmWatchClient < WatchClient
@ -163,11 +172,6 @@ module OneWatchClient
WatchHelper::Vm
end
def filter_pool(filter)
vms = super(filter)
vms.join(WatchHelper::VmSample, :vm_id=>:id)
end
def allowed_samples
WatchHelper::VM_SAMPLE
end
@ -183,5 +187,30 @@ module OneWatchClient
def error(pool)
pool.filter(:state=>7)
end
def filter_pool(filter)
if filter[:uid]
vms = pool.filter(:uid=>filter[:uid])
elsif filter[:gid]
vms = pool.filter(:gid=>filter[:gid])
else
vms = pool
end
vms.join(WatchHelper::VmSample, :vm_id=>:id)
end
def filter_resource(id, filter)
rsql = pool[id]
return nil if rsql.nil?
if filter[:uid]
filter[:uid]==rsql.uid ? rsql : nil
elsif filter[:gid]
filter[:gid]==rsql.gid ? rsql : nil
else
rsql
end
end
end
end