Class: Registry
- Inherits:
-
Object
- Object
- Registry
- Defined in:
- lib/registry.rb
Instance Method Summary collapse
- #deleteDirectory(root) ⇒ Object
- #exists(key) ⇒ Object
- #getKeyValue(key) ⇒ Object
- #getKeyValues(root) ⇒ Object
- #getSecret(key) ⇒ Object
- #prepareHttp(uri) ⇒ Object
- #prepareHttpForVault(uri) ⇒ Object
- #register(root, key, value) ⇒ Object
- #registerDirectory(root) ⇒ Object
- #setKeyValue(root, key, value) ⇒ Object
- #setSecret(key, value) ⇒ Object
- #setVaultRecord(key, value) ⇒ Object
Instance Method Details
#deleteDirectory(root) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/registry.rb', line 73 def deleteDirectory (root) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{root}?recurse=true") http = prepareHttp(uri) request = Net::HTTP::Delete.new(uri.request_uri) resp = http.request(request) if Integer(resp.code) != 200 puts "-- KEY NOT DELETED! " + root abort("Response code #{resp.code}") end end |
#exists(key) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/registry.rb', line 59 def exists (key) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{key}") http = prepareHttp(uri) request = Net::HTTP::Get.new(uri.request_uri) resp = http.request(request) if Integer(resp.code) == 200 return true else return false end end |
#getKeyValue(key) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/registry.rb', line 27 def getKeyValue (key) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{key}") http = prepareHttp(uri) request = Net::HTTP::Get.new(uri.request_uri) resp = http.request(request) if Integer(resp.code) != 200 puts "-- KEY VALUE NOT FOUND! " + key abort("Problem reading registry, response code #{resp.code}") end result = JSON.parse(resp.body) return Base64.decode64(result[0]["Value"]) end |
#getKeyValues(root) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/registry.rb', line 7 def getKeyValues (root) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{root}?recurse=true") http = prepareHttp(uri) request = Net::HTTP::Get.new(uri.request_uri) resp = http.request(request) if ( Integer(resp.code) != 200 ) puts "-- KEY VALUE NOT FOUND! " + root abort("Problem reading registry, response code #{resp.code}") else response = [] result = JSON.parse(resp.body) result.each() do |item| response.push({item["Key"] => Base64.decode64(item["Value"])}) end return JSON.generate(response) end end |
#getSecret(key) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/registry.rb', line 103 def getSecret (key) uri = URI.parse(ENV["VAULT_URL"] + "/v1/secret/#{key}") http = prepareHttpForVault(uri) request = Net::HTTP::Get.new(uri.request_uri) request['X-Vault-Token'] = ENV["VAULT_TOKEN"] resp = http.request(request) if Integer(resp.code) != 200 puts "-- UNABLE TO GET SECRET! #{key}" abort("Problem getting secret from vault, response code #{resp.code}") end return JSON.parse(resp.body)['data'] end |
#prepareHttp(uri) ⇒ Object
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/registry.rb', line 153 def prepareHttp (uri) http = Net::HTTP.new(uri.host, uri.port) if (Canzea::config[:consul_tls]) pemCert = File.read(Canzea::config[:consul_tls_cert_file]) pemKey = File.read(Canzea::config[:consul_tls_key_file]) http.use_ssl = true http.ca_file = Canzea::config[:consul_tls_ca_file] http.cert = OpenSSL::X509::Certificate.new(pemCert) http.key = OpenSSL::PKey::RSA.new(pemKey) http.verify_mode = OpenSSL::SSL::VERIFY_PEER # http.set_debug_output($stdout) http.ssl_version = :SSLv23 end return http end |
#prepareHttpForVault(uri) ⇒ Object
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/registry.rb', line 172 def prepareHttpForVault (uri) http = Net::HTTP.new(uri.host, uri.port) if (Canzea::config[:consul_tls]) pemCert = File.read(Canzea::config[:vault_tls_cert_file]) pemKey = File.read(Canzea::config[:vault_tls_key_file]) http.use_ssl = true http.ca_file = Canzea::config[:consul_tls_ca_file] http.cert = OpenSSL::X509::Certificate.new(pemCert) http.key = OpenSSL::PKey::RSA.new(pemKey) http.verify_mode = OpenSSL::SSL::VERIFY_PEER # http.set_debug_output($stdout) http.ssl_version = :SSLv23 end return http end |
#register(root, key, value) ⇒ Object
99 100 101 |
# File 'lib/registry.rb', line 99 def register (root, key, value) setKeyValue root, key, value end |
#registerDirectory(root) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/registry.rb', line 86 def registerDirectory (root) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{root}?dir=true") http = prepareHttp(uri) request = Net::HTTP::Put.new(uri.request_uri) resp = http.request(request) if Integer(resp.code) > 202 puts "-- KEY DIRECTORY NOT SAVED! #{root}" abort("Problem adding to registry, response code #{resp.code}") end end |
#setKeyValue(root, key, value) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/registry.rb', line 44 def setKeyValue (root, key, value) uri = URI.parse(ENV["CONSUL_URL"] + "/v1/kv/#{root}/#{key}") http = prepareHttp(uri) request = Net::HTTP::Put.new(uri.request_uri) request.body = "#{value}"; resp = http.request(request) if Integer(resp.code) != 200 puts "-- KEY VALUE NOT SAVED! #{root} #{key}" abort("Problem adding to registry, response code #{resp.code}") end end |
#setSecret(key, value) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/registry.rb', line 136 def setSecret (key, value) uri = URI.parse(ENV["VAULT_URL"] + "/v1/secret/#{key}") http = prepareHttpForVault(uri) request = Net::HTTP::Put.new(uri.request_uri) request['Content-Type'] = 'application/json' request['X-Vault-Token'] = ENV["VAULT_TOKEN"] request.body = "#{value}"; resp = http.request(request) if Integer(resp.code) != 204 puts "-- SECRET NOT SAVED! #{key}" abort("Problem adding to vault, response code #{resp.code}") end end |
#setVaultRecord(key, value) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/registry.rb', line 119 def setVaultRecord (key, value) uri = URI.parse(ENV["VAULT_URL"] + "/v1/#{key}") http = prepareHttpForVault(uri) request = Net::HTTP::Put.new(uri.request_uri) request['Content-Type'] = 'application/json' request['X-Vault-Token'] = ENV["VAULT_TOKEN"] request.body = "#{value}"; resp = http.request(request) if Integer(resp.code) != 204 puts "-- VAULT RECORD NOT SAVED! #{key}" abort("Problem adding to vault, response code #{resp.code}") end end |