Convert Times to strings when being added to redis.

This commit is contained in:
isaac-hammes 2023-08-08 11:05:55 -07:00
parent 30820ec115
commit 46156fd85f
7 changed files with 26 additions and 21 deletions

View file

@ -29,7 +29,6 @@ GEM
ast (2.4.2) ast (2.4.2)
bindata (2.4.15) bindata (2.4.15)
builder (3.2.4) builder (3.2.4)
byebug (11.1.3)
climate_control (1.2.0) climate_control (1.2.0)
coderay (1.1.3) coderay (1.1.3)
concurrent-ruby (1.2.2) concurrent-ruby (1.2.2)
@ -41,9 +40,11 @@ GEM
faraday-net_http (>= 2.0, < 3.1) faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4) ruby2_keywords (>= 0.0.4)
faraday-net_http (3.0.2) faraday-net_http (3.0.2)
ffi (1.15.5-java)
google-cloud-env (1.6.0) google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0) faraday (>= 0.17.3, < 3.0)
json (2.6.3) json (2.6.3)
json (2.6.3-java)
language_server-protocol (3.17.0.3) language_server-protocol (3.17.0.3)
method_source (1.0.0) method_source (1.0.0)
mock_redis (0.36.0) mock_redis (0.36.0)
@ -52,6 +53,7 @@ GEM
ruby2_keywords (~> 0.0.1) ruby2_keywords (~> 0.0.1)
net-ldap (0.18.0) net-ldap (0.18.0)
nio4r (2.5.9) nio4r (2.5.9)
nio4r (2.5.9-java)
opentelemetry-api (1.2.1) opentelemetry-api (1.2.1)
opentelemetry-common (0.19.7) opentelemetry-common (0.19.7)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
@ -99,12 +101,16 @@ GEM
pry (0.14.2) pry (0.14.2)
coderay (~> 1.1) coderay (~> 1.1)
method_source (~> 1.0) method_source (~> 1.0)
pry-byebug (3.10.1) pry (0.14.2-java)
byebug (~> 11.0) coderay (~> 1.1)
pry (>= 0.13, < 0.15) method_source (~> 1.0)
spoon (~> 0.0)
puma (6.3.0) puma (6.3.0)
nio4r (~> 2.0) nio4r (~> 2.0)
puma (6.3.0-java)
nio4r (~> 2.0)
racc (1.7.1) racc (1.7.1)
racc (1.7.1-java)
rack (2.2.8) rack (2.2.8)
rack-protection (3.1.0) rack-protection (3.1.0)
rack (~> 2.2, >= 2.2.4) rack (~> 2.2, >= 2.2.4)
@ -159,6 +165,8 @@ GEM
tilt (~> 2.0) tilt (~> 2.0)
spicy-proton (2.1.15) spicy-proton (2.1.15)
bindata (~> 2.3) bindata (~> 2.3)
spoon (0.0.6)
ffi
statsd-ruby (1.5.0) statsd-ruby (1.5.0)
thor (1.2.2) thor (1.2.2)
thrift (0.18.1) thrift (0.18.1)
@ -169,13 +177,13 @@ GEM
rspec (~> 3) rspec (~> 3)
PLATFORMS PLATFORMS
universal-java-11
x86_64-darwin-22 x86_64-darwin-22
DEPENDENCIES DEPENDENCIES
climate_control (>= 0.2.0) climate_control (>= 0.2.0)
mock_redis (>= 0.17.0) mock_redis (>= 0.17.0)
pry pry
pry-byebug
rack-test (>= 0.6) rack-test (>= 0.6)
rspec (>= 3.2) rspec (>= 3.2)
rubocop (~> 1.54.2) rubocop (~> 1.54.2)

View file

@ -18,7 +18,7 @@ module Vmpooler
# Dependencies for tracing # Dependencies for tracing
require 'opentelemetry-instrumentation-concurrent_ruby' require 'opentelemetry-instrumentation-concurrent_ruby'
require 'opentelemetry-instrumentation-http_client' require 'opentelemetry-instrumentation-http_client'
# require 'opentelemetry-instrumentation-redis' require 'opentelemetry-instrumentation-redis'
require 'opentelemetry-instrumentation-sinatra' require 'opentelemetry-instrumentation-sinatra'
require 'opentelemetry-sdk' require 'opentelemetry-sdk'
require 'opentelemetry/exporter/jaeger' require 'opentelemetry/exporter/jaeger'

View file

@ -25,7 +25,7 @@ module Vmpooler
def validate_token(backend) def validate_token(backend)
tracer.in_span("Vmpooler::API::Helpers.#{__method__}") do tracer.in_span("Vmpooler::API::Helpers.#{__method__}") do
if valid_token?(backend) if valid_token?(backend)
backend.hset("vmpooler__token__#{request.env['HTTP_X_AUTH_TOKEN']}", 'last', Time.now) backend.hset("vmpooler__token__#{request.env['HTTP_X_AUTH_TOKEN']}", 'last', Time.now.to_s)
return true return true
end end

View file

@ -189,8 +189,8 @@ module Vmpooler
span.set_attribute('enduser.id', user) span.set_attribute('enduser.id', user)
has_token_result = has_token? has_token_result = has_token?
backend.sadd("vmpooler__migrating__#{template}", vm) backend.sadd("vmpooler__migrating__#{template}", vm)
backend.hset("vmpooler__active__#{template}", vm, Time.now) backend.hset("vmpooler__active__#{template}", vm, Time.now.to_s)
backend.hset("vmpooler__vm__#{vm}", 'checkout', Time.now) backend.hset("vmpooler__vm__#{vm}", 'checkout', Time.now.to_s)
if Vmpooler::API.settings.config[:auth] and has_token_result if Vmpooler::API.settings.config[:auth] and has_token_result
backend.hset("vmpooler__vm__#{vm}", 'token:token', request.env['HTTP_X_AUTH_TOKEN']) backend.hset("vmpooler__vm__#{vm}", 'token:token', request.env['HTTP_X_AUTH_TOKEN'])
@ -971,7 +971,7 @@ module Vmpooler
result['token'] = o[rand(25)] + (0...31).map { o[rand(o.length)] }.join result['token'] = o[rand(25)] + (0...31).map { o[rand(o.length)] }.join
backend.hset("vmpooler__token__#{result['token']}", 'user', @auth.username) backend.hset("vmpooler__token__#{result['token']}", 'user', @auth.username)
backend.hset("vmpooler__token__#{result['token']}", 'created', Time.now) backend.hset("vmpooler__token__#{result['token']}", 'created', Time.now.to_s)
span = OpenTelemetry::Trace.current_span span = OpenTelemetry::Trace.current_span
span.set_attribute('enduser.id', @auth.username) span.set_attribute('enduser.id', @auth.username)

View file

@ -167,8 +167,8 @@ module Vmpooler
pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias') pool_alias = redis.hget("vmpooler__vm__#{vm}", 'pool_alias')
redis.pipelined do |pipeline| redis.pipelined do |pipeline|
pipeline.hset("vmpooler__active__#{pool}", vm, Time.now) pipeline.hset("vmpooler__active__#{pool}", vm, Time.now.to_s)
pipeline.hset("vmpooler__vm__#{vm}", 'checkout', Time.now) pipeline.hset("vmpooler__vm__#{vm}", 'checkout', Time.now.to_s)
if ondemandrequest_hash['token:token'] if ondemandrequest_hash['token:token']
pipeline.hset("vmpooler__vm__#{vm}", 'token:token', ondemandrequest_hash['token:token']) pipeline.hset("vmpooler__vm__#{vm}", 'token:token', ondemandrequest_hash['token:token'])
pipeline.hset("vmpooler__vm__#{vm}", 'token:user', ondemandrequest_hash['token:user']) pipeline.hset("vmpooler__vm__#{vm}", 'token:user', ondemandrequest_hash['token:user'])
@ -184,10 +184,10 @@ module Vmpooler
redis.pipelined do |pipeline| redis.pipelined do |pipeline|
pipeline.hset("vmpooler__boot__#{Date.today}", "#{pool}:#{vm}", finish) # maybe remove as this is never used by vmpooler itself? pipeline.hset("vmpooler__boot__#{Date.today}", "#{pool}:#{vm}", finish) # maybe remove as this is never used by vmpooler itself?
pipeline.hset("vmpooler__vm__#{vm}", 'ready', Time.now) pipeline.hset("vmpooler__vm__#{vm}", 'ready', Time.now.to_s)
# last boot time is displayed in API, and used by alarming script # last boot time is displayed in API, and used by alarming script
pipeline.hset('vmpooler__lastboot', pool, Time.now) pipeline.hset('vmpooler__lastboot', pool, Time.now.to_s)
end end
$metrics.timing("time_to_ready_state.#{pool}", finish) $metrics.timing("time_to_ready_state.#{pool}", finish)
@ -226,7 +226,7 @@ module Vmpooler
last_checked_too_soon = ((Time.now - Time.parse(check_stamp)).to_i < $config[:config]['vm_checktime'] * 60) if check_stamp last_checked_too_soon = ((Time.now - Time.parse(check_stamp)).to_i < $config[:config]['vm_checktime'] * 60) if check_stamp
break if check_stamp && last_checked_too_soon break if check_stamp && last_checked_too_soon
redis.hset("vmpooler__vm__#{vm}", 'check', Time.now) redis.hset("vmpooler__vm__#{vm}", 'check', Time.now.to_s)
# Check if the hosts TTL has expired # Check if the hosts TTL has expired
# if 'boottime' is nil, set bootime to beginning of unix epoch, forces TTL to be assumed expired # if 'boottime' is nil, set bootime to beginning of unix epoch, forces TTL to be assumed expired
boottime = redis.hget("vmpooler__vm__#{vm}", 'ready') boottime = redis.hget("vmpooler__vm__#{vm}", 'ready')
@ -911,7 +911,7 @@ module Vmpooler
end end
if options[:pending_vm] if options[:pending_vm]
pending_vm_count = redis.scard("vmpooler__pending__#{options[:poolname]}") pending_vm_count = redis.scard("vmpooler__pending__#{options[:poolname]}")
break unless pending_vm_count == 0 break unless pending_vm_count == 0
end end
@ -1333,8 +1333,8 @@ module Vmpooler
ready = redis.scard("vmpooler__ready__#{pool_name}") ready = redis.scard("vmpooler__ready__#{pool_name}")
pending = redis.scard("vmpooler__pending__#{pool_name}") pending = redis.scard("vmpooler__pending__#{pool_name}")
running = redis.scard("vmpooler__running__#{pool_name}") running = redis.scard("vmpooler__running__#{pool_name}")
total = pending.to_i + ready.to_i total = pending.to_i + ready.to_i
$metrics.gauge("ready.#{pool_name}", ready) $metrics.gauge("ready.#{pool_name}", ready)
$metrics.gauge("running.#{pool_name}", running) $metrics.gauge("running.#{pool_name}", running)

View file

@ -1,8 +1,6 @@
require 'spec_helper' require 'spec_helper'
require 'time' require 'time'
require 'mock_redis' require 'mock_redis'
require 'pry'
require 'pry-byebug'
# Custom RSpec :Matchers # Custom RSpec :Matchers

View file

@ -41,7 +41,6 @@ Gem::Specification.new do |s|
s.add_development_dependency 'climate_control', '>= 0.2.0' s.add_development_dependency 'climate_control', '>= 0.2.0'
s.add_development_dependency 'mock_redis', '>= 0.17.0' s.add_development_dependency 'mock_redis', '>= 0.17.0'
s.add_development_dependency 'pry' s.add_development_dependency 'pry'
s.add_development_dependency 'pry-byebug'
s.add_development_dependency 'rack-test', '>= 0.6' s.add_development_dependency 'rack-test', '>= 0.6'
s.add_development_dependency 'rspec', '>= 3.2' s.add_development_dependency 'rspec', '>= 3.2'
s.add_development_dependency 'rubocop', '~> 1.54.2' s.add_development_dependency 'rubocop', '~> 1.54.2'