Class: Nexpose::ScheduledBackup

Inherits:
APIObject show all
Includes:
JsonSerializer
Defined in:
lib/nexpose/scheduled_backup.rb

Overview

Configuration structure for scheduled backups.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from JsonSerializer

#deserialize, #serialize, #to_hash

Methods inherited from APIObject

#object_from_hash

Constructor Details

#initialize(start:, enabled: true, type:, interval:, platform_independent: true, description: nil, pause_local_scans: true, cancellation_window: 0) ⇒ ScheduledBackup

Returns a new instance of ScheduledBackup.



24
25
26
27
28
29
30
31
32
33
# File 'lib/nexpose/scheduled_backup.rb', line 24

def initialize(start:, enabled: true, type:, interval:, platform_independent: true, description: nil, pause_local_scans: true, cancellation_window: 0)
  @schedule_start       = start
  @enabled              = enabled
  @schedule_type        = type
  @schedule_interval    = interval.to_i
  @platform_independent = platform_independent
  @description          = description
  @pause_local_scans    = pause_local_scans
  @cancellation_window  = cancellation_window.to_i
end

Instance Attribute Details

#cancellation_windowObject

Number of minutes to wait for running scans to pause/complete before aborting the backup task. Defaults to 0 if not set



22
23
24
# File 'lib/nexpose/scheduled_backup.rb', line 22

def cancellation_window
  @cancellation_window
end

#descriptionObject

The description of the backup. Defaults to nil if not set



16
17
18
# File 'lib/nexpose/scheduled_backup.rb', line 16

def description
  @description
end

#enabledObject

Whether or not this schedule is enabled. Defaults to true if not set



8
9
10
# File 'lib/nexpose/scheduled_backup.rb', line 8

def enabled
  @enabled
end

#pause_local_scansObject

Whether the backup should pause all local scans or wait for local scans to complete. Defaults to true if not set



20
21
22
# File 'lib/nexpose/scheduled_backup.rb', line 20

def pause_local_scans
  @pause_local_scans
end

#platform_independentObject

Whether the backup will be platform independent or not. Defaults to true if not set



18
19
20
# File 'lib/nexpose/scheduled_backup.rb', line 18

def platform_independent
  @platform_independent
end

#schedule_intervalObject

The repeat interval based upon type.



12
13
14
# File 'lib/nexpose/scheduled_backup.rb', line 12

def schedule_interval
  @schedule_interval
end

#schedule_startObject

Starting time of the backup task (in unix epoch with milliseconds. Example: 1464956590000)



14
15
16
# File 'lib/nexpose/scheduled_backup.rb', line 14

def schedule_start
  @schedule_start
end

#schedule_typeObject

Valid schedule types: daily, hourly, monthly-date, monthly-day, weekly.



10
11
12
# File 'lib/nexpose/scheduled_backup.rb', line 10

def schedule_type
  @schedule_type
end

Class Method Details

.delete(nsc) ⇒ Object



81
82
83
# File 'lib/nexpose/scheduled_backup.rb', line 81

def self.delete(nsc)
  AJAX.delete(nsc, '/api/2.1/schedule_backup/', AJAX::CONTENT_TYPE::JSON)
end

.from_hash(hash) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/nexpose/scheduled_backup.rb', line 44

def self.from_hash(hash)
  repeat_backup_hash = hash[:repeat_type]
  backup = new(start: hash[:start_date],
               enabled: hash[:enabled],
               type: repeat_backup_hash[:type],
               interval: repeat_backup_hash[:interval],
               platform_independent: hash[:platform_independent],
               description: hash[:description],
               pause_local_scans: hash[:pause_local_scans],
               cancellation_window: hash[:cancellation_window])
  backup
end

.load(nsc) ⇒ Object



74
75
76
77
78
79
# File 'lib/nexpose/scheduled_backup.rb', line 74

def self.load(nsc)
  uri  = '/api/2.1/schedule_backup/'
  resp = AJAX.get(nsc, uri, AJAX::CONTENT_TYPE::JSON)
  hash = JSON.parse(resp, symbolize_names: true).first
  Nexpose::ScheduledBackup.from_hash(hash || [])
end

Instance Method Details

#save(nsc) ⇒ Object



39
40
41
42
# File 'lib/nexpose/scheduled_backup.rb', line 39

def save(nsc)
  params = to_json
  AJAX.post(nsc, '/api/2.1/schedule_backup/', params, AJAX::CONTENT_TYPE::JSON)
end

#to_hObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/nexpose/scheduled_backup.rb', line 57

def to_h
  backup_hash = {
    start_date: @schedule_start,
    enabled: @enabled,
    description: @description,
    platform_independent: @platform_independent,
    pause_local_scans: @pause_local_scans,
    cancellation_window: @cancellation_window
  }
  repeat_hash = {
    type: @schedule_type,
    interval: @schedule_interval
  }
  backup_hash[:repeat_type] = repeat_hash
  backup_hash
end

#to_jsonObject



35
36
37
# File 'lib/nexpose/scheduled_backup.rb', line 35

def to_json
  JSON.generate(to_h)
end