class OpenvasCli::VasSchedule
Attributes
comment[R]
duration[RW]
first_time[R]
in_use[RW]
name[R]
next_time[RW]
period[R]
task_ids[RW]
Public Class Methods
get_all(options = {})
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 112 def self.get_all(options = {}) manual_sort = false params = {:details => '1'} params[:schedule_id] = options[:id] if options[:id] case options[:sort_by] when :schedule_id params[:sort_field] = 'id' when :next_time manual_sort = true when :first_time params[:sort_field] = 'first_time' else params[:sort_field] = 'name' end req = Nokogiri::XML::Builder.new { |xml| xml.get_schedules(params) } ret = [] begin schedules = connection.send_receive(req.doc) schedules.xpath("//schedule").each { |s| sch = VasSchedule.new sch.id = extract_value_from("@id", s) sch.name = extract_value_from("name", s) sch.comment = extract_value_from("comment", s) t_time = extract_value_from("first_time", s) sch.first_time = Time.parse(t_time) unless t_time == "" t_time = extract_value_from("next_time", s) sch.next_time = Time.parse(t_time) unless t_time == "" or t_time == "done" period_num = extract_value_from("period", s).to_i if period_num > 0 sch.period = VasPeriod.from_seconds(period_num) end period_num = extract_value_from("period_months", s).to_i if period_num > 0 sch.period = VasPeriod.from_months(period_num) end t_time = extract_value_from("duration", s) unless t_time == "" sch.duration = t_time.to_i unless t_time == 0 end sch.in_use = extract_value_from("in_use", s).to_i > 0 sch.task_ids = [] s.xpath('tasks/task/@id') { |t| sch.task_ids << t.value } ret << sch } if manual_sort if options[:sort_by] == :next_time ret.sort!{ |a,b| a.next_time <=> b.next_time } end end rescue VasExceptions::CommandException => e raise e unless e.message =~ /Failed to find schedule/i end ret end
Public Instance Methods
changed?()
click to toggle source
Calls superclass method
# File lib/openvas-cli/vas_schedule.rb, line 21 def changed? local_changes = false local_changes = @period.changed? if @period local_changes || super end
comment=(v)
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 33 def comment=(v) comment_will_change! unless @comment == v @comment = v end
create_or_update()
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 68 def create_or_update return unless changed? || @id == nil if @id return unless destroy end req = Nokogiri::XML::Builder.new { |xml| xml.create_schedule { xml.name { xml.text(@name) } xml.comment { xml.text(@comment) } if @comment xml.first_time { xml.minute { xml.text(@first_time.min) } xml.hour { xml.text(@first_time.hour) } xml.day_of_month { xml.text(@first_time.day) } xml.month { xml.text(@first_time.month) } xml.year { xml.text(@first_time.year) } } xml.duration { xml.text(@duration ? @duration : 0) } xml.period { if @period xml.text(@period.number) xml.unit { xml.text(@period.period.to_s) } else xml.text(0) xml.unit { xml.text("second") } end } } } begin resp = VasSchedule.connection.send_receive(req.doc) @id = VasSchedule.extract_value_from("/create_schedule_response/@id", resp) unless @id reset_changes true rescue VasExceptions::CommandException => e errors[:command_failure] << e.message nil end end
delete_record()
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 48 def delete_record return unless @id req = Nokogiri::XML::Builder.new { |xml| xml.delete_schedule(:schedule_id => @id) } begin VasSchedule.connection.send_receive(req.doc) @id = nil reset_changes true rescue VasExceptions::CommandException => e errors[:command_failure] << e.message nil end end
first_time=(v)
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 38 def first_time=(v) first_time_will_change! unless @first_time == v @first_time = v end
name=(v)
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 28 def name=(v) name_will_change! unless @name == v @name = v end
period=(v)
click to toggle source
# File lib/openvas-cli/vas_schedule.rb, line 43 def period=(v) period_will_change! unless @period == v @period = v end