I fix bugs for tagging

bug/bundler_fix
sinn3r 2015-03-22 18:13:40 -05:00
parent 863cbcbddb
commit 708eb42984
1 changed files with 12 additions and 13 deletions

View File

@ -256,19 +256,17 @@ class Db
addrs << ip addrs << ip
wspace = framework.db.workspace wspace = framework.db.workspace
host = framework.db.get_host(:workspace => wspace, :address => ip) host = framework.db.get_host(:workspace => wspace, :address => ip)
possible_tags = Mdm::Tag.includes(:hosts).where("hosts.workspace_id = ? and tags.name = ?", wspace.id, tag_name).order("tags.id DESC").limit(1) if host
tag = (possible_tags.blank? ? Mdm::Tag.new : possible_tags.first) possible_tags = Mdm::Tag.includes(:hosts).where("hosts.workspace_id = ? and hosts.address = ? and tags.name = ?", wspace.id, ip, tag_name).order("tags.id DESC").limit(1)
tag.name = tag_name tag = (possible_tags.blank? ? Mdm::Tag.new : possible_tags.first)
tag.hosts = [host] tag.name = tag_name
tag.save! if tag.changed? tag.hosts = [host]
tag.save! if tag.changed?
end
end end
end end
end end
def find_tags(host)
Mdm::Tag.includes(:hosts).where("hosts.workspace_id = ? and hosts.address = ?", framework.db.workspace.id, host.address).order("tags.id DESC")
end
def cmd_hosts(*args) def cmd_hosts(*args)
return unless active? return unless active?
::ActiveRecord::Base.connection_pool.with_connection { ::ActiveRecord::Base.connection_pool.with_connection {
@ -409,9 +407,10 @@ class Db
each_host_range_chunk(host_ranges) do |host_search| each_host_range_chunk(host_ranges) do |host_search|
framework.db.hosts(framework.db.workspace, onlyup, host_search).each do |host| framework.db.hosts(framework.db.workspace, onlyup, host_search).each do |host|
if search_term if search_term
next unless host.attribute_names.any? { |a| next unless (
host[a.intern].to_s.match(search_term) || !find_tags(host).empty? host.attribute_names.any? { |a| host[a.intern].to_s.match(search_term) } or
} !Mdm::Tag.includes(:hosts).where("hosts.workspace_id = ? and hosts.address = ? and tags.name = ?", framework.db.workspace.id, host.address, search_term.source).order("tags.id DESC").empty?
)
end end
columns = col_names.map do |n| columns = col_names.map do |n|
@ -424,7 +423,7 @@ class Db
end end
# Otherwise, it's just an attribute # Otherwise, it's just an attribute
elsif n == 'tags' elsif n == 'tags'
found_tags = find_tags(host) found_tags = Mdm::Tag.includes(:hosts).where("hosts.workspace_id = ? and hosts.address = ?", framework.db.workspace.id, host.address).order("tags.id DESC")
tag_names = [] tag_names = []
found_tags.each {|t| tag_names << t.name} found_tags.each {|t| tag_names << t.name}
found_tags * ", " found_tags * ", "