Class: Cmd::All

Inherits:
Thor
  • Object
show all
Includes:
PulseMeter::Mixins::Cmd, PulseMeter::Mixins::Utils
Defined in:
lib/cmd.rb

Instance Method Summary collapse

Methods included from PulseMeter::Mixins::Cmd

#all_sensors, #all_sensors_table, #fail!, #with_redis, #with_safe_restore_of

Methods included from PulseMeter::Mixins::Utils

#assert_array!, #assert_positive_integer!, #assert_ranged_float!, #camelize, #camelize_keys, #constantize, #each_subset, #parse_time, #subsets_of, #symbolize_keys, #titleize, #uniqid

Instance Method Details

#create(name, type) ⇒ Object



100
101
102
103
104
105
106
107
108
109
# File 'lib/cmd.rb', line 100

def create(name, type)
  with_redis do
    klass = constantize("PulseMeter::Sensor::Timelined::#{type}")
    puts "PulseMeter::Sensor::Timelined::#{type}"
    fail! "Unknown sensor type #{type}" unless klass
    sensor = klass.new(name, options.dup)
    puts "Sensor created"
    puts all_sensors_table
  end
end

#create_simple(name, type) ⇒ Object



131
132
133
134
135
136
137
138
139
# File 'lib/cmd.rb', line 131

def create_simple(name, type)
  with_redis do
    klass = constantize("PulseMeter::Sensor::#{type}")
    fail! "Unknown sensor type #{type}" unless klass
    sensor = klass.new(name, options.dup)
    puts "Sensor created"
    puts all_sensors_table
  end
end

#delete(name) ⇒ Object



92
93
94
95
# File 'lib/cmd.rb', line 92

def delete(name)
  with_safe_restore_of(name) {|sensor| sensor.cleanup}
  puts "Sensor #{name} deleted"
end

#drop(name, from, to) ⇒ Object



151
152
153
154
155
156
157
158
# File 'lib/cmd.rb', line 151

def drop(name, from, to)
  time_from = parse_time(from)
  time_to = parse_time(to)
  with_safe_restore_of(name) do |sensor|
    fail! "Sensor #{name} has no drop_within method" unless sensor.respond_to?(:drop_within)
    sensor.drop_within(time_from, time_to)
  end
end

#event(name, value) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/cmd.rb', line 56

def event(name, value)
  if "json" == options[:format]
    value = JSON.parse(value)
  end
  with_safe_restore_of(name) {|sensor|
    sensor.event(value)
  }
  PulseMeter.command_aggregator.wait_for_pending_events
end

#reduceObject



44
45
46
47
48
49
50
51
# File 'lib/cmd.rb', line 44

def reduce
  with_redis do
    puts 'Registered sensors to be reduced'
    puts all_sensors_table
    PulseMeter::Sensor::Timeline.reduce_all_raw
    puts "DONE"
  end
end

#sensorsObject



38
39
40
# File 'lib/cmd.rb', line 38

def sensors
  with_redis {puts all_sensors_table(options[:format])}
end

#timeline(name, seconds) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/cmd.rb', line 69

def timeline(name, seconds)
  with_safe_restore_of(name) do |sensor|
    puts sensor.
      timeline(seconds).
      map {|data| [data.start_time, data.value || '']}.
      to_table(options[:format])
  end
end

#timeline_within(name, from, till) ⇒ Object



81
82
83
84
85
86
87
88
# File 'lib/cmd.rb', line 81

def timeline_within(name, from, till)
  with_safe_restore_of(name) do |sensor|
    puts sensor.
      timeline_within(Time.parse(from), Time.parse(till)).
      map {|data| [data.start_time, data.value || '']}.
      to_table(options[:format])
  end
end

#udp_proxy(host, port) ⇒ Object



162
163
164
165
166
167
168
# File 'lib/cmd.rb', line 162

def udp_proxy(host, port)
  with_redis do
    puts 'Starting UDP server'
    server = PulseMeter::UDPServer.new(host, port)
    server.start
  end
end

#update(name) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/cmd.rb', line 114

def update(name)
  with_safe_restore_of(name) do |sensor|
    opts = options.dup
    [:ttl, :interval, :reduce_delay, :raw_data_ttl, :annotation].each do |attr|
      opts[attr] ||= sensor.send(attr)
    end
    klass = sensor.class
    new_sensor = klass.new(name, opts)
    new_sensor.dump!(false)
    puts "Sensor updated"
    puts all_sensors_table
  end
end

#value(name) ⇒ Object



142
143
144
145
146
147
# File 'lib/cmd.rb', line 142

def value(name)
  with_safe_restore_of(name) do |sensor|
    fail! "Sensor #{name} has no value method" unless sensor.respond_to?(:value)
    puts "Value: #{sensor.value}"
  end
end