vault_ruby_client 0.18.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +287 -0
- data/LICENSE +364 -0
- data/README.md +223 -0
- data/lib/vault/api/approle.rb +221 -0
- data/lib/vault/api/auth.rb +324 -0
- data/lib/vault/api/auth_tls.rb +95 -0
- data/lib/vault/api/auth_token.rb +245 -0
- data/lib/vault/api/help.rb +36 -0
- data/lib/vault/api/kv.rb +230 -0
- data/lib/vault/api/logical.rb +153 -0
- data/lib/vault/api/secret.rb +171 -0
- data/lib/vault/api/sys/audit.rb +94 -0
- data/lib/vault/api/sys/auth.rb +119 -0
- data/lib/vault/api/sys/health.rb +66 -0
- data/lib/vault/api/sys/init.rb +86 -0
- data/lib/vault/api/sys/leader.rb +51 -0
- data/lib/vault/api/sys/lease.rb +52 -0
- data/lib/vault/api/sys/mount.rb +165 -0
- data/lib/vault/api/sys/namespace.rb +86 -0
- data/lib/vault/api/sys/policy.rb +95 -0
- data/lib/vault/api/sys/quota.rb +110 -0
- data/lib/vault/api/sys/seal.rb +84 -0
- data/lib/vault/api/sys.rb +30 -0
- data/lib/vault/api/transform/alphabet.rb +46 -0
- data/lib/vault/api/transform/role.rb +45 -0
- data/lib/vault/api/transform/template.rb +57 -0
- data/lib/vault/api/transform/transformation.rb +64 -0
- data/lib/vault/api/transform.rb +32 -0
- data/lib/vault/api.rb +17 -0
- data/lib/vault/client.rb +460 -0
- data/lib/vault/configurable.rb +53 -0
- data/lib/vault/defaults.rb +218 -0
- data/lib/vault/encode.rb +22 -0
- data/lib/vault/errors.rb +87 -0
- data/lib/vault/persistent/connection.rb +45 -0
- data/lib/vault/persistent/pool.rb +51 -0
- data/lib/vault/persistent/timed_stack_multi.rb +73 -0
- data/lib/vault/persistent.rb +1161 -0
- data/lib/vault/request.rb +47 -0
- data/lib/vault/response.rb +92 -0
- data/lib/vault/vendor/connection_pool/timed_stack.rb +181 -0
- data/lib/vault/vendor/connection_pool/version.rb +8 -0
- data/lib/vault/vendor/connection_pool.rb +153 -0
- data/lib/vault/version.rb +6 -0
- data/lib/vault_ruby_client.rb +53 -0
- metadata +158 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
# Copyright (c) HashiCorp, Inc.
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
3
|
+
|
4
|
+
module Vault
|
5
|
+
class Request
|
6
|
+
attr_reader :client
|
7
|
+
|
8
|
+
def initialize(client)
|
9
|
+
@client = client
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [String]
|
13
|
+
def to_s
|
14
|
+
"#<#{self.class.name}>"
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [String]
|
18
|
+
def inspect
|
19
|
+
"#<#{self.class.name}:0x#{"%x" % (self.object_id << 1)}>"
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
include EncodePath
|
25
|
+
|
26
|
+
# Removes the given header fields from options and returns the result. This
|
27
|
+
# modifies the given options in place.
|
28
|
+
#
|
29
|
+
# @param [Hash] options
|
30
|
+
#
|
31
|
+
# @return [Hash]
|
32
|
+
def extract_headers!(options = {})
|
33
|
+
extract = {
|
34
|
+
wrap_ttl: Vault::Client::WRAP_TTL_HEADER,
|
35
|
+
namespace: Vault::Client::NAMESPACE_HEADER,
|
36
|
+
}
|
37
|
+
|
38
|
+
{}.tap do |h|
|
39
|
+
extract.each do |k,v|
|
40
|
+
if options[k]
|
41
|
+
h[v] = options.delete(k)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# Copyright (c) HashiCorp, Inc.
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
3
|
+
|
4
|
+
module Vault
|
5
|
+
class Response
|
6
|
+
# Defines a new field. This is designed to be used by the subclass as a
|
7
|
+
# mini-DSL.
|
8
|
+
#
|
9
|
+
# @example Default
|
10
|
+
# field :data
|
11
|
+
#
|
12
|
+
# @example With a mutator
|
13
|
+
# field :present, as: :present?
|
14
|
+
#
|
15
|
+
# @param n [Symbol] the name of the field
|
16
|
+
# @option opts [Symbol] :as alias for method name
|
17
|
+
#
|
18
|
+
# @!visibility private
|
19
|
+
def self.field(n, opts = {})
|
20
|
+
self.fields[n] = opts
|
21
|
+
|
22
|
+
if opts[:as].nil?
|
23
|
+
attr_reader n
|
24
|
+
else
|
25
|
+
define_method(opts[:as]) do
|
26
|
+
instance_variable_get(:"@#{n}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Returns the list of fields defined on this subclass.
|
32
|
+
# @!visibility private
|
33
|
+
def self.fields
|
34
|
+
@fields ||= {}
|
35
|
+
end
|
36
|
+
|
37
|
+
# Decodes the given object (usually a Hash) into an instance of this class.
|
38
|
+
#
|
39
|
+
# @param object [Hash<Symbol, Object>]
|
40
|
+
def self.decode(object)
|
41
|
+
self.new(object)
|
42
|
+
end
|
43
|
+
|
44
|
+
def initialize(opts = {})
|
45
|
+
# Initialize all fields as nil to start
|
46
|
+
self.class.fields.each do |k, _|
|
47
|
+
instance_variable_set(:"@#{k}", nil)
|
48
|
+
end
|
49
|
+
|
50
|
+
# For each supplied option, set the instance variable if it was defined
|
51
|
+
# as a field.
|
52
|
+
opts.each do |k, v|
|
53
|
+
if self.class.fields.key?(k)
|
54
|
+
opts = self.class.fields[k]
|
55
|
+
|
56
|
+
if (m = opts[:load]) && !v.nil?
|
57
|
+
v = m.call(v)
|
58
|
+
end
|
59
|
+
|
60
|
+
if opts[:freeze]
|
61
|
+
v = v.freeze
|
62
|
+
end
|
63
|
+
|
64
|
+
instance_variable_set(:"@#{k}", v)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# Create a hash-bashed representation of this response.
|
70
|
+
#
|
71
|
+
# @return [Hash]
|
72
|
+
def to_h
|
73
|
+
self.class.fields.inject({}) do |h, (k, opts)|
|
74
|
+
if opts[:as].nil?
|
75
|
+
h[k] = self.public_send(k)
|
76
|
+
else
|
77
|
+
h[k] = self.public_send(opts[:as])
|
78
|
+
end
|
79
|
+
|
80
|
+
if !h[k].nil? && !h[k].is_a?(Array) && h[k].respond_to?(:to_h)
|
81
|
+
h[k] = h[k].to_h
|
82
|
+
end
|
83
|
+
|
84
|
+
h
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def ==(other)
|
89
|
+
self.to_h == other.to_h
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
# Copyright (c) HashiCorp, Inc.
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
3
|
+
|
4
|
+
require 'thread'
|
5
|
+
require 'timeout'
|
6
|
+
|
7
|
+
module Vault; end
|
8
|
+
|
9
|
+
##
|
10
|
+
# Raised when you attempt to retrieve a connection from a pool that has been
|
11
|
+
# shut down.
|
12
|
+
|
13
|
+
class Vault::ConnectionPool::PoolShuttingDownError < RuntimeError; end
|
14
|
+
|
15
|
+
##
|
16
|
+
# The TimedStack manages a pool of homogeneous connections (or any resource
|
17
|
+
# you wish to manage). Connections are created lazily up to a given maximum
|
18
|
+
# number.
|
19
|
+
|
20
|
+
# Examples:
|
21
|
+
#
|
22
|
+
# ts = TimedStack.new(1) { MyConnection.new }
|
23
|
+
#
|
24
|
+
# # fetch a connection
|
25
|
+
# conn = ts.pop
|
26
|
+
#
|
27
|
+
# # return a connection
|
28
|
+
# ts.push conn
|
29
|
+
#
|
30
|
+
# conn = ts.pop
|
31
|
+
# ts.pop timeout: 5
|
32
|
+
# #=> raises Timeout::Error after 5 seconds
|
33
|
+
|
34
|
+
module Vault
|
35
|
+
class ConnectionPool::TimedStack
|
36
|
+
|
37
|
+
##
|
38
|
+
# Creates a new pool with +size+ connections that are created from the given
|
39
|
+
# +block+.
|
40
|
+
|
41
|
+
def initialize(size = 0, &block)
|
42
|
+
@create_block = block
|
43
|
+
@created = 0
|
44
|
+
@que = []
|
45
|
+
@max = size
|
46
|
+
@mutex = Mutex.new
|
47
|
+
@resource = ConditionVariable.new
|
48
|
+
@shutdown_block = nil
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Returns +obj+ to the stack. +options+ is ignored in TimedStack but may be
|
53
|
+
# used by subclasses that extend TimedStack.
|
54
|
+
|
55
|
+
def push(obj, options = {})
|
56
|
+
@mutex.synchronize do
|
57
|
+
if @shutdown_block
|
58
|
+
@shutdown_block.call(obj)
|
59
|
+
else
|
60
|
+
store_connection obj, options
|
61
|
+
end
|
62
|
+
|
63
|
+
@resource.broadcast
|
64
|
+
end
|
65
|
+
end
|
66
|
+
alias_method :<<, :push
|
67
|
+
|
68
|
+
##
|
69
|
+
# Retrieves a connection from the stack. If a connection is available it is
|
70
|
+
# immediately returned. If no connection is available within the given
|
71
|
+
# timeout a Timeout::Error is raised.
|
72
|
+
#
|
73
|
+
# +:timeout+ is the only checked entry in +options+ and is preferred over
|
74
|
+
# the +timeout+ argument (which will be removed in a future release). Other
|
75
|
+
# options may be used by subclasses that extend TimedStack.
|
76
|
+
|
77
|
+
def pop(timeout = 0.5, options = {})
|
78
|
+
options, timeout = timeout, 0.5 if Hash === timeout
|
79
|
+
timeout = options.fetch :timeout, timeout
|
80
|
+
|
81
|
+
deadline = Time.now + timeout
|
82
|
+
@mutex.synchronize do
|
83
|
+
loop do
|
84
|
+
raise ConnectionPool::PoolShuttingDownError if @shutdown_block
|
85
|
+
return fetch_connection(options) if connection_stored?(options)
|
86
|
+
|
87
|
+
connection = try_create(options)
|
88
|
+
return connection if connection
|
89
|
+
|
90
|
+
to_wait = deadline - Time.now
|
91
|
+
raise Timeout::Error, "Waited #{timeout} sec" if to_wait <= 0
|
92
|
+
@resource.wait(@mutex, to_wait)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Shuts down the TimedStack which prevents connections from being checked
|
99
|
+
# out. The +block+ is called once for each connection on the stack.
|
100
|
+
|
101
|
+
def shutdown(&block)
|
102
|
+
raise ArgumentError, "shutdown must receive a block" unless block_given?
|
103
|
+
|
104
|
+
@mutex.synchronize do
|
105
|
+
@shutdown_block = block
|
106
|
+
@resource.broadcast
|
107
|
+
|
108
|
+
shutdown_connections
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
##
|
113
|
+
# Returns +true+ if there are no available connections.
|
114
|
+
|
115
|
+
def empty?
|
116
|
+
(@created - @que.length) >= @max
|
117
|
+
end
|
118
|
+
|
119
|
+
##
|
120
|
+
# The number of connections available on the stack.
|
121
|
+
|
122
|
+
def length
|
123
|
+
@max - @created + @que.length
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
##
|
129
|
+
# This is an extension point for TimedStack and is called with a mutex.
|
130
|
+
#
|
131
|
+
# This method must returns true if a connection is available on the stack.
|
132
|
+
|
133
|
+
def connection_stored?(options = nil)
|
134
|
+
!@que.empty?
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
# This is an extension point for TimedStack and is called with a mutex.
|
139
|
+
#
|
140
|
+
# This method must return a connection from the stack.
|
141
|
+
|
142
|
+
def fetch_connection(options = nil)
|
143
|
+
@que.pop
|
144
|
+
end
|
145
|
+
|
146
|
+
##
|
147
|
+
# This is an extension point for TimedStack and is called with a mutex.
|
148
|
+
#
|
149
|
+
# This method must shut down all connections on the stack.
|
150
|
+
|
151
|
+
def shutdown_connections(options = nil)
|
152
|
+
while connection_stored?(options)
|
153
|
+
conn = fetch_connection(options)
|
154
|
+
@shutdown_block.call(conn)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
##
|
159
|
+
# This is an extension point for TimedStack and is called with a mutex.
|
160
|
+
#
|
161
|
+
# This method must return +obj+ to the stack.
|
162
|
+
|
163
|
+
def store_connection(obj, options = nil)
|
164
|
+
@que.push obj
|
165
|
+
end
|
166
|
+
|
167
|
+
##
|
168
|
+
# This is an extension point for TimedStack and is called with a mutex.
|
169
|
+
#
|
170
|
+
# This method must create a connection if and only if the total number of
|
171
|
+
# connections allowed has not been met.
|
172
|
+
|
173
|
+
def try_create(options = nil)
|
174
|
+
unless @created == @max
|
175
|
+
object = @create_block.call
|
176
|
+
@created += 1
|
177
|
+
object
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# Copyright (c) HashiCorp, Inc.
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
3
|
+
|
4
|
+
require_relative 'connection_pool/version'
|
5
|
+
require_relative 'connection_pool/timed_stack'
|
6
|
+
|
7
|
+
|
8
|
+
# Generic connection pool class for e.g. sharing a limited number of network connections
|
9
|
+
# among many threads. Note: Connections are lazily created.
|
10
|
+
#
|
11
|
+
# Example usage with block (faster):
|
12
|
+
#
|
13
|
+
# @pool = ConnectionPool.new { Redis.new }
|
14
|
+
#
|
15
|
+
# @pool.with do |redis|
|
16
|
+
# redis.lpop('my-list') if redis.llen('my-list') > 0
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# Using optional timeout override (for that single invocation)
|
20
|
+
#
|
21
|
+
# @pool.with(:timeout => 2.0) do |redis|
|
22
|
+
# redis.lpop('my-list') if redis.llen('my-list') > 0
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# Example usage replacing an existing connection (slower):
|
26
|
+
#
|
27
|
+
# $redis = ConnectionPool.wrap { Redis.new }
|
28
|
+
#
|
29
|
+
# def do_work
|
30
|
+
# $redis.lpop('my-list') if $redis.llen('my-list') > 0
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# Accepts the following options:
|
34
|
+
# - :size - number of connections to pool, defaults to 5
|
35
|
+
# - :timeout - amount of time to wait for a connection if none currently available, defaults to 5 seconds
|
36
|
+
#
|
37
|
+
module Vault
|
38
|
+
class ConnectionPool
|
39
|
+
DEFAULTS = {size: 5, timeout: 5}
|
40
|
+
|
41
|
+
class Error < RuntimeError
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.wrap(options, &block)
|
45
|
+
Wrapper.new(options, &block)
|
46
|
+
end
|
47
|
+
|
48
|
+
def initialize(options = {}, &block)
|
49
|
+
raise ArgumentError, 'Connection pool requires a block' unless block
|
50
|
+
|
51
|
+
options = DEFAULTS.merge(options)
|
52
|
+
|
53
|
+
@size = options.fetch(:size)
|
54
|
+
@timeout = options.fetch(:timeout)
|
55
|
+
|
56
|
+
@available = TimedStack.new(@size, &block)
|
57
|
+
@key = :"current-#{@available.object_id}"
|
58
|
+
end
|
59
|
+
|
60
|
+
if Thread.respond_to?(:handle_interrupt)
|
61
|
+
|
62
|
+
# MRI
|
63
|
+
def with(options = {})
|
64
|
+
Thread.handle_interrupt(Exception => :never) do
|
65
|
+
conn = checkout(options)
|
66
|
+
begin
|
67
|
+
Thread.handle_interrupt(Exception => :immediate) do
|
68
|
+
yield conn
|
69
|
+
end
|
70
|
+
ensure
|
71
|
+
checkin
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
else
|
77
|
+
|
78
|
+
# jruby 1.7.x
|
79
|
+
def with(options = {})
|
80
|
+
conn = checkout(options)
|
81
|
+
begin
|
82
|
+
yield conn
|
83
|
+
ensure
|
84
|
+
checkin
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def checkout(options = {})
|
91
|
+
conn = if stack.empty?
|
92
|
+
timeout = options[:timeout] || @timeout
|
93
|
+
@available.pop(timeout: timeout)
|
94
|
+
else
|
95
|
+
stack.last
|
96
|
+
end
|
97
|
+
|
98
|
+
stack.push conn
|
99
|
+
conn
|
100
|
+
end
|
101
|
+
|
102
|
+
def checkin
|
103
|
+
conn = pop_connection # mutates stack, must be on its own line
|
104
|
+
@available.push(conn) if stack.empty?
|
105
|
+
|
106
|
+
nil
|
107
|
+
end
|
108
|
+
|
109
|
+
def shutdown(&block)
|
110
|
+
@available.shutdown(&block)
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def pop_connection
|
116
|
+
if stack.empty?
|
117
|
+
raise ConnectionPool::Error, 'no connections are checked out'
|
118
|
+
else
|
119
|
+
stack.pop
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def stack
|
124
|
+
::Thread.current[@key] ||= []
|
125
|
+
end
|
126
|
+
|
127
|
+
class Wrapper < ::BasicObject
|
128
|
+
METHODS = [:with, :pool_shutdown]
|
129
|
+
|
130
|
+
def initialize(options = {}, &block)
|
131
|
+
@pool = ::ConnectionPool.new(options, &block)
|
132
|
+
end
|
133
|
+
|
134
|
+
def with(&block)
|
135
|
+
@pool.with(&block)
|
136
|
+
end
|
137
|
+
|
138
|
+
def pool_shutdown(&block)
|
139
|
+
@pool.shutdown(&block)
|
140
|
+
end
|
141
|
+
|
142
|
+
def respond_to?(id, *args)
|
143
|
+
METHODS.include?(id) || with { |c| c.respond_to?(id, *args) }
|
144
|
+
end
|
145
|
+
|
146
|
+
def method_missing(name, *args, &block)
|
147
|
+
with do |connection|
|
148
|
+
connection.send(name, *args, &block)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Copyright (c) HashiCorp, Inc.
|
2
|
+
# SPDX-License-Identifier: MPL-2.0
|
3
|
+
|
4
|
+
module Vault
|
5
|
+
require_relative "vault/errors"
|
6
|
+
require_relative "vault/client"
|
7
|
+
require_relative "vault/configurable"
|
8
|
+
require_relative "vault/defaults"
|
9
|
+
require_relative "vault/response"
|
10
|
+
require_relative "vault/version"
|
11
|
+
|
12
|
+
require_relative "vault/api"
|
13
|
+
|
14
|
+
class << self
|
15
|
+
# API client object based off the configured options in {Configurable}.
|
16
|
+
#
|
17
|
+
# @return [Vault::Client]
|
18
|
+
attr_reader :client
|
19
|
+
|
20
|
+
def setup!
|
21
|
+
@client = Vault::Client.new
|
22
|
+
|
23
|
+
# Set secure SSL options
|
24
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.tap do |opts|
|
25
|
+
opts[:options] &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
|
26
|
+
opts[:options] |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
|
27
|
+
opts[:options] |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2)
|
28
|
+
opts[:options] |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3)
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
# Delegate all methods to the client object, essentially making the module
|
36
|
+
# object behave like a {Client}.
|
37
|
+
def method_missing(m, *args, &block)
|
38
|
+
if @client.respond_to?(m)
|
39
|
+
@client.send(m, *args, &block)
|
40
|
+
else
|
41
|
+
super
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Delegating +respond_to+ to the {Client}.
|
46
|
+
def respond_to_missing?(m, include_private = false)
|
47
|
+
@client.respond_to?(m, include_private) || super
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Load the initial default values
|
53
|
+
Vault.setup!
|
metadata
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vault_ruby_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.18.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- khiav reoy
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-11-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sigv4
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '13.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '13.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.13'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.13'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: webmock
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.24'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.24'
|
83
|
+
description: Vault is a Ruby API client for interacting with a Vault server.
|
84
|
+
email:
|
85
|
+
- khiav223577@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- CHANGELOG.md
|
91
|
+
- LICENSE
|
92
|
+
- README.md
|
93
|
+
- lib/vault/api.rb
|
94
|
+
- lib/vault/api/approle.rb
|
95
|
+
- lib/vault/api/auth.rb
|
96
|
+
- lib/vault/api/auth_tls.rb
|
97
|
+
- lib/vault/api/auth_token.rb
|
98
|
+
- lib/vault/api/help.rb
|
99
|
+
- lib/vault/api/kv.rb
|
100
|
+
- lib/vault/api/logical.rb
|
101
|
+
- lib/vault/api/secret.rb
|
102
|
+
- lib/vault/api/sys.rb
|
103
|
+
- lib/vault/api/sys/audit.rb
|
104
|
+
- lib/vault/api/sys/auth.rb
|
105
|
+
- lib/vault/api/sys/health.rb
|
106
|
+
- lib/vault/api/sys/init.rb
|
107
|
+
- lib/vault/api/sys/leader.rb
|
108
|
+
- lib/vault/api/sys/lease.rb
|
109
|
+
- lib/vault/api/sys/mount.rb
|
110
|
+
- lib/vault/api/sys/namespace.rb
|
111
|
+
- lib/vault/api/sys/policy.rb
|
112
|
+
- lib/vault/api/sys/quota.rb
|
113
|
+
- lib/vault/api/sys/seal.rb
|
114
|
+
- lib/vault/api/transform.rb
|
115
|
+
- lib/vault/api/transform/alphabet.rb
|
116
|
+
- lib/vault/api/transform/role.rb
|
117
|
+
- lib/vault/api/transform/template.rb
|
118
|
+
- lib/vault/api/transform/transformation.rb
|
119
|
+
- lib/vault/client.rb
|
120
|
+
- lib/vault/configurable.rb
|
121
|
+
- lib/vault/defaults.rb
|
122
|
+
- lib/vault/encode.rb
|
123
|
+
- lib/vault/errors.rb
|
124
|
+
- lib/vault/persistent.rb
|
125
|
+
- lib/vault/persistent/connection.rb
|
126
|
+
- lib/vault/persistent/pool.rb
|
127
|
+
- lib/vault/persistent/timed_stack_multi.rb
|
128
|
+
- lib/vault/request.rb
|
129
|
+
- lib/vault/response.rb
|
130
|
+
- lib/vault/vendor/connection_pool.rb
|
131
|
+
- lib/vault/vendor/connection_pool/timed_stack.rb
|
132
|
+
- lib/vault/vendor/connection_pool/version.rb
|
133
|
+
- lib/vault/version.rb
|
134
|
+
- lib/vault_ruby_client.rb
|
135
|
+
homepage: https://github.com/khiav223577/vault_ruby_client
|
136
|
+
licenses:
|
137
|
+
- MPL-2.0
|
138
|
+
metadata: {}
|
139
|
+
post_install_message:
|
140
|
+
rdoc_options: []
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '2.0'
|
148
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
requirements: []
|
154
|
+
rubygems_version: 3.1.4
|
155
|
+
signing_key:
|
156
|
+
specification_version: 4
|
157
|
+
summary: Vault is a Ruby API client for interacting with a Vault server.
|
158
|
+
test_files: []
|