akeyless 2.16.8 → 2.16.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/docs/Configure.md +5 -1
- data/docs/GatewayCreateMigration.md +22 -22
- data/docs/GatewayCreateProducerArtifactory.md +2 -0
- data/docs/GatewayCreateProducerAws.md +2 -0
- data/docs/GatewayCreateProducerAzure.md +2 -0
- data/docs/GatewayCreateProducerCassandra.md +2 -0
- data/docs/GatewayCreateProducerCertificateAutomation.md +2 -0
- data/docs/GatewayCreateProducerChef.md +2 -0
- data/docs/GatewayCreateProducerCustom.md +2 -0
- data/docs/GatewayCreateProducerDockerhub.md +2 -0
- data/docs/GatewayCreateProducerEks.md +2 -0
- data/docs/GatewayCreateProducerGcp.md +2 -0
- data/docs/GatewayCreateProducerGithub.md +2 -0
- data/docs/GatewayCreateProducerGke.md +2 -0
- data/docs/GatewayCreateProducerHanaDb.md +2 -0
- data/docs/GatewayCreateProducerLdap.md +2 -0
- data/docs/GatewayCreateProducerMSSQL.md +2 -0
- data/docs/GatewayCreateProducerMongo.md +2 -0
- data/docs/GatewayCreateProducerMySQL.md +2 -0
- data/docs/GatewayCreateProducerNativeK8S.md +2 -0
- data/docs/GatewayCreateProducerOracleDb.md +2 -0
- data/docs/GatewayCreateProducerPostgreSQL.md +2 -0
- data/docs/GatewayCreateProducerRabbitMQ.md +2 -0
- data/docs/GatewayCreateProducerRdp.md +2 -0
- data/docs/GatewayCreateProducerRedshift.md +2 -0
- data/docs/GatewayCreateProducerSnowflake.md +2 -0
- data/docs/GatewayDeleteMigration.md +1 -1
- data/docs/GatewayGetMigration.md +1 -1
- data/docs/GatewayStatusMigration.md +24 -0
- data/docs/GatewayUpdateItem.md +2 -0
- data/docs/GatewayUpdateMigration.md +25 -25
- data/docs/GatewayUpdateProducerArtifactory.md +2 -0
- data/docs/GatewayUpdateProducerAws.md +2 -0
- data/docs/GatewayUpdateProducerAzure.md +2 -0
- data/docs/GatewayUpdateProducerCassandra.md +2 -0
- data/docs/GatewayUpdateProducerCertificateAutomation.md +2 -0
- data/docs/GatewayUpdateProducerChef.md +2 -0
- data/docs/GatewayUpdateProducerCustom.md +2 -0
- data/docs/GatewayUpdateProducerDockerhub.md +2 -0
- data/docs/GatewayUpdateProducerEks.md +2 -0
- data/docs/GatewayUpdateProducerGcp.md +2 -0
- data/docs/GatewayUpdateProducerGithub.md +2 -0
- data/docs/GatewayUpdateProducerGke.md +2 -0
- data/docs/GatewayUpdateProducerHanaDb.md +2 -0
- data/docs/GatewayUpdateProducerLdap.md +2 -0
- data/docs/GatewayUpdateProducerMSSQL.md +2 -0
- data/docs/GatewayUpdateProducerMongo.md +2 -0
- data/docs/GatewayUpdateProducerMySQL.md +2 -0
- data/docs/GatewayUpdateProducerNativeK8S.md +2 -0
- data/docs/GatewayUpdateProducerOracleDb.md +2 -0
- data/docs/GatewayUpdateProducerPostgreSQL.md +2 -0
- data/docs/GatewayUpdateProducerRabbitMQ.md +2 -0
- data/docs/GatewayUpdateProducerRdp.md +2 -0
- data/docs/GatewayUpdateProducerRedshift.md +2 -0
- data/docs/GatewayUpdateProducerSnowflake.md +2 -0
- data/docs/GetKubeExecCreds.md +4 -0
- data/docs/GetPKICertificate.md +4 -0
- data/docs/GetSSHCertificate.md +4 -0
- data/docs/Item.md +2 -0
- data/docs/ItemGeneralInfo.md +2 -0
- data/docs/MigrationGeneral.md +2 -0
- data/docs/MigrationItems.md +24 -0
- data/docs/MigrationStatusReplyObj.md +36 -0
- data/docs/TargetTypeDetailsInput.md +2 -0
- data/docs/UpdateItem.md +2 -0
- data/docs/UploadRSA.md +2 -0
- data/docs/V2Api.md +64 -1
- data/lib/akeyless/api/v2_api.rb +64 -0
- data/lib/akeyless/models/configure.rb +24 -4
- data/lib/akeyless/models/gateway_create_migration.rb +22 -22
- data/lib/akeyless/models/gateway_create_producer_artifactory.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_aws.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_azure.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_cassandra.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_certificate_automation.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_chef.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_custom.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_dockerhub.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_eks.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_gcp.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_github.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_gke.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_hana_db.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_ldap.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_mongo.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_mssql.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_my_sql.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_native_k8_s.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_oracle_db.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_postgre_sql.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_rabbit_mq.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_rdp.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_redshift.rb +11 -1
- data/lib/akeyless/models/gateway_create_producer_snowflake.rb +11 -1
- data/lib/akeyless/models/gateway_delete_migration.rb +1 -1
- data/lib/akeyless/models/gateway_get_migration.rb +1 -0
- data/lib/akeyless/models/gateway_status_migration.rb +251 -0
- data/lib/akeyless/models/gateway_update_item.rb +11 -1
- data/lib/akeyless/models/gateway_update_migration.rb +33 -38
- data/lib/akeyless/models/gateway_update_producer_artifactory.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_aws.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_azure.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_cassandra.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_certificate_automation.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_chef.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_custom.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_dockerhub.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_eks.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_gcp.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_github.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_gke.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_hana_db.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_ldap.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_mongo.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_mssql.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_my_sql.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_native_k8_s.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_oracle_db.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_postgre_sql.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_rabbit_mq.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_rdp.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_redshift.rb +11 -1
- data/lib/akeyless/models/gateway_update_producer_snowflake.rb +11 -1
- data/lib/akeyless/models/get_kube_exec_creds.rb +21 -1
- data/lib/akeyless/models/get_pki_certificate.rb +21 -1
- data/lib/akeyless/models/get_ssh_certificate.rb +21 -1
- data/lib/akeyless/models/item.rb +10 -1
- data/lib/akeyless/models/item_general_info.rb +10 -1
- data/lib/akeyless/models/migration_general.rb +10 -1
- data/lib/akeyless/models/migration_items.rb +246 -0
- data/lib/akeyless/models/migration_status_reply_obj.rb +300 -0
- data/lib/akeyless/models/target_type_details_input.rb +10 -1
- data/lib/akeyless/models/update_item.rb +11 -1
- data/lib/akeyless/models/upload_rsa.rb +11 -1
- data/lib/akeyless/version.rb +1 -1
- data/lib/akeyless.rb +3 -0
- data/spec/models/gateway_status_migration_spec.rb +52 -0
- data/spec/models/migration_items_spec.rb +52 -0
- data/spec/models/migration_status_reply_obj_spec.rb +88 -0
- metadata +511 -499
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
#Akeyless API
|
|
3
|
+
|
|
4
|
+
#The purpose of this application is to provide access to Akeyless API.
|
|
5
|
+
|
|
6
|
+
The version of the OpenAPI document: 2.0
|
|
7
|
+
Contact: support@akeyless.io
|
|
8
|
+
Generated by: https://openapi-generator.tech
|
|
9
|
+
OpenAPI Generator version: 6.0.1-SNAPSHOT
|
|
10
|
+
|
|
11
|
+
=end
|
|
12
|
+
|
|
13
|
+
require 'date'
|
|
14
|
+
require 'time'
|
|
15
|
+
|
|
16
|
+
module Akeyless
|
|
17
|
+
# gatewayStatusMigration is a command that get migration status
|
|
18
|
+
class GatewayStatusMigration
|
|
19
|
+
# Migration ID
|
|
20
|
+
attr_accessor :id
|
|
21
|
+
|
|
22
|
+
# Migration name to display
|
|
23
|
+
attr_accessor :name
|
|
24
|
+
|
|
25
|
+
# Authentication token (see `/auth` and `/configure`)
|
|
26
|
+
attr_accessor :token
|
|
27
|
+
|
|
28
|
+
# The universal identity token, Required only for universal_identity authentication
|
|
29
|
+
attr_accessor :uid_token
|
|
30
|
+
|
|
31
|
+
# Attribute mapping from ruby-style variable name to JSON key.
|
|
32
|
+
def self.attribute_map
|
|
33
|
+
{
|
|
34
|
+
:'id' => :'id',
|
|
35
|
+
:'name' => :'name',
|
|
36
|
+
:'token' => :'token',
|
|
37
|
+
:'uid_token' => :'uid-token'
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Returns all the JSON keys this model knows about
|
|
42
|
+
def self.acceptable_attributes
|
|
43
|
+
attribute_map.values
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Attribute type mapping.
|
|
47
|
+
def self.openapi_types
|
|
48
|
+
{
|
|
49
|
+
:'id' => :'String',
|
|
50
|
+
:'name' => :'String',
|
|
51
|
+
:'token' => :'String',
|
|
52
|
+
:'uid_token' => :'String'
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# List of attributes with nullable: true
|
|
57
|
+
def self.openapi_nullable
|
|
58
|
+
Set.new([
|
|
59
|
+
])
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Initializes the object
|
|
63
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
64
|
+
def initialize(attributes = {})
|
|
65
|
+
if (!attributes.is_a?(Hash))
|
|
66
|
+
fail ArgumentError, "The input argument (attributes) must be a hash in `Akeyless::GatewayStatusMigration` initialize method"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# check to see if the attribute exists and convert string to symbol for hash key
|
|
70
|
+
attributes = attributes.each_with_object({}) { |(k, v), h|
|
|
71
|
+
if (!self.class.attribute_map.key?(k.to_sym))
|
|
72
|
+
fail ArgumentError, "`#{k}` is not a valid attribute in `Akeyless::GatewayStatusMigration`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
|
|
73
|
+
end
|
|
74
|
+
h[k.to_sym] = v
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if attributes.key?(:'id')
|
|
78
|
+
self.id = attributes[:'id']
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
if attributes.key?(:'name')
|
|
82
|
+
self.name = attributes[:'name']
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
if attributes.key?(:'token')
|
|
86
|
+
self.token = attributes[:'token']
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
if attributes.key?(:'uid_token')
|
|
90
|
+
self.uid_token = attributes[:'uid_token']
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Show invalid properties with the reasons. Usually used together with valid?
|
|
95
|
+
# @return Array for valid properties with the reasons
|
|
96
|
+
def list_invalid_properties
|
|
97
|
+
invalid_properties = Array.new
|
|
98
|
+
invalid_properties
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Check to see if the all the properties in the model are valid
|
|
102
|
+
# @return true if the model is valid
|
|
103
|
+
def valid?
|
|
104
|
+
true
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Checks equality by comparing each attribute.
|
|
108
|
+
# @param [Object] Object to be compared
|
|
109
|
+
def ==(o)
|
|
110
|
+
return true if self.equal?(o)
|
|
111
|
+
self.class == o.class &&
|
|
112
|
+
id == o.id &&
|
|
113
|
+
name == o.name &&
|
|
114
|
+
token == o.token &&
|
|
115
|
+
uid_token == o.uid_token
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# @see the `==` method
|
|
119
|
+
# @param [Object] Object to be compared
|
|
120
|
+
def eql?(o)
|
|
121
|
+
self == o
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Calculates hash code according to all attributes.
|
|
125
|
+
# @return [Integer] Hash code
|
|
126
|
+
def hash
|
|
127
|
+
[id, name, token, uid_token].hash
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Builds the object from hash
|
|
131
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
132
|
+
# @return [Object] Returns the model itself
|
|
133
|
+
def self.build_from_hash(attributes)
|
|
134
|
+
new.build_from_hash(attributes)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Builds the object from hash
|
|
138
|
+
# @param [Hash] attributes Model attributes in the form of hash
|
|
139
|
+
# @return [Object] Returns the model itself
|
|
140
|
+
def build_from_hash(attributes)
|
|
141
|
+
return nil unless attributes.is_a?(Hash)
|
|
142
|
+
attributes = attributes.transform_keys(&:to_sym)
|
|
143
|
+
self.class.openapi_types.each_pair do |key, type|
|
|
144
|
+
if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
|
|
145
|
+
self.send("#{key}=", nil)
|
|
146
|
+
elsif type =~ /\AArray<(.*)>/i
|
|
147
|
+
# check to ensure the input is an array given that the attribute
|
|
148
|
+
# is documented as an array but the input is not
|
|
149
|
+
if attributes[self.class.attribute_map[key]].is_a?(Array)
|
|
150
|
+
self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
|
|
151
|
+
end
|
|
152
|
+
elsif !attributes[self.class.attribute_map[key]].nil?
|
|
153
|
+
self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
self
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Deserializes the data based on type
|
|
161
|
+
# @param string type Data type
|
|
162
|
+
# @param string value Value to be deserialized
|
|
163
|
+
# @return [Object] Deserialized data
|
|
164
|
+
def _deserialize(type, value)
|
|
165
|
+
case type.to_sym
|
|
166
|
+
when :Time
|
|
167
|
+
Time.parse(value)
|
|
168
|
+
when :Date
|
|
169
|
+
Date.parse(value)
|
|
170
|
+
when :String
|
|
171
|
+
value.to_s
|
|
172
|
+
when :Integer
|
|
173
|
+
value.to_i
|
|
174
|
+
when :Float
|
|
175
|
+
value.to_f
|
|
176
|
+
when :Boolean
|
|
177
|
+
if value.to_s =~ /\A(true|t|yes|y|1)\z/i
|
|
178
|
+
true
|
|
179
|
+
else
|
|
180
|
+
false
|
|
181
|
+
end
|
|
182
|
+
when :Object
|
|
183
|
+
# generic object (usually a Hash), return directly
|
|
184
|
+
value
|
|
185
|
+
when /\AArray<(?<inner_type>.+)>\z/
|
|
186
|
+
inner_type = Regexp.last_match[:inner_type]
|
|
187
|
+
value.map { |v| _deserialize(inner_type, v) }
|
|
188
|
+
when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
|
|
189
|
+
k_type = Regexp.last_match[:k_type]
|
|
190
|
+
v_type = Regexp.last_match[:v_type]
|
|
191
|
+
{}.tap do |hash|
|
|
192
|
+
value.each do |k, v|
|
|
193
|
+
hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
else # model
|
|
197
|
+
# models (e.g. Pet) or oneOf
|
|
198
|
+
klass = Akeyless.const_get(type)
|
|
199
|
+
klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# Returns the string representation of the object
|
|
204
|
+
# @return [String] String presentation of the object
|
|
205
|
+
def to_s
|
|
206
|
+
to_hash.to_s
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
# to_body is an alias to to_hash (backward compatibility)
|
|
210
|
+
# @return [Hash] Returns the object in the form of hash
|
|
211
|
+
def to_body
|
|
212
|
+
to_hash
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# Returns the object in the form of hash
|
|
216
|
+
# @return [Hash] Returns the object in the form of hash
|
|
217
|
+
def to_hash
|
|
218
|
+
hash = {}
|
|
219
|
+
self.class.attribute_map.each_pair do |attr, param|
|
|
220
|
+
value = self.send(attr)
|
|
221
|
+
if value.nil?
|
|
222
|
+
is_nullable = self.class.openapi_nullable.include?(attr)
|
|
223
|
+
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
hash[param] = _to_hash(value)
|
|
227
|
+
end
|
|
228
|
+
hash
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# Outputs non-array value in the form of hash
|
|
232
|
+
# For object, use to_hash. Otherwise, just return the value
|
|
233
|
+
# @param [Object] value Any valid value
|
|
234
|
+
# @return [Hash] Returns the value in the form of hash
|
|
235
|
+
def _to_hash(value)
|
|
236
|
+
if value.is_a?(Array)
|
|
237
|
+
value.compact.map { |v| _to_hash(v) }
|
|
238
|
+
elsif value.is_a?(Hash)
|
|
239
|
+
{}.tap do |hash|
|
|
240
|
+
value.each { |k, v| hash[k] = _to_hash(v) }
|
|
241
|
+
end
|
|
242
|
+
elsif value.respond_to? :to_hash
|
|
243
|
+
value.to_hash
|
|
244
|
+
else
|
|
245
|
+
value
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
end
|
|
@@ -28,6 +28,9 @@ module Akeyless
|
|
|
28
28
|
|
|
29
29
|
attr_accessor :custom_payload
|
|
30
30
|
|
|
31
|
+
# Protection from accidental deletion of this item
|
|
32
|
+
attr_accessor :delete_protection
|
|
33
|
+
|
|
31
34
|
attr_accessor :keep_prev_version
|
|
32
35
|
|
|
33
36
|
# The name of a key that used to encrypt the secret value (if empty, the account default protectionKey key will be used)
|
|
@@ -78,6 +81,7 @@ module Akeyless
|
|
|
78
81
|
:'api_key' => :'api-key',
|
|
79
82
|
:'auto_rotate' => :'auto-rotate',
|
|
80
83
|
:'custom_payload' => :'custom-payload',
|
|
84
|
+
:'delete_protection' => :'delete_protection',
|
|
81
85
|
:'keep_prev_version' => :'keep-prev-version',
|
|
82
86
|
:'key' => :'key',
|
|
83
87
|
:'name' => :'name',
|
|
@@ -109,6 +113,7 @@ module Akeyless
|
|
|
109
113
|
:'api_key' => :'String',
|
|
110
114
|
:'auto_rotate' => :'String',
|
|
111
115
|
:'custom_payload' => :'String',
|
|
116
|
+
:'delete_protection' => :'String',
|
|
112
117
|
:'keep_prev_version' => :'String',
|
|
113
118
|
:'key' => :'String',
|
|
114
119
|
:'name' => :'String',
|
|
@@ -170,6 +175,10 @@ module Akeyless
|
|
|
170
175
|
self.custom_payload = attributes[:'custom_payload']
|
|
171
176
|
end
|
|
172
177
|
|
|
178
|
+
if attributes.key?(:'delete_protection')
|
|
179
|
+
self.delete_protection = attributes[:'delete_protection']
|
|
180
|
+
end
|
|
181
|
+
|
|
173
182
|
if attributes.key?(:'keep_prev_version')
|
|
174
183
|
self.keep_prev_version = attributes[:'keep_prev_version']
|
|
175
184
|
end
|
|
@@ -270,6 +279,7 @@ module Akeyless
|
|
|
270
279
|
api_key == o.api_key &&
|
|
271
280
|
auto_rotate == o.auto_rotate &&
|
|
272
281
|
custom_payload == o.custom_payload &&
|
|
282
|
+
delete_protection == o.delete_protection &&
|
|
273
283
|
keep_prev_version == o.keep_prev_version &&
|
|
274
284
|
key == o.key &&
|
|
275
285
|
name == o.name &&
|
|
@@ -296,7 +306,7 @@ module Akeyless
|
|
|
296
306
|
# Calculates hash code according to all attributes.
|
|
297
307
|
# @return [Integer] Hash code
|
|
298
308
|
def hash
|
|
299
|
-
[add_tag, api_id, api_key, auto_rotate, custom_payload, keep_prev_version, key, name, new_metadata, new_name, new_version, rm_tag, rotated_password, rotated_username, rotation_hour, rotation_interval, rotator_creds_type, token, type, uid_token].hash
|
|
309
|
+
[add_tag, api_id, api_key, auto_rotate, custom_payload, delete_protection, keep_prev_version, key, name, new_metadata, new_name, new_version, rm_tag, rotated_password, rotated_username, rotation_hour, rotation_interval, rotator_creds_type, token, type, uid_token].hash
|
|
300
310
|
end
|
|
301
311
|
|
|
302
312
|
# Builds the object from hash
|
|
@@ -16,75 +16,78 @@ require 'time'
|
|
|
16
16
|
module Akeyless
|
|
17
17
|
# gatewayUpdateMigration is a command that update migration
|
|
18
18
|
class GatewayUpdateMigration
|
|
19
|
-
# AWS Secret Access Key
|
|
19
|
+
# AWS Secret Access Key (relevant only for AWS migration)
|
|
20
20
|
attr_accessor :aws_key
|
|
21
21
|
|
|
22
|
-
# AWS Access Key ID
|
|
22
|
+
# AWS Access Key ID with sufficient permissions to get all secrets, e.g. 'arn:aws:secretsmanager:[Region]:[AccountId]:secret:[/path/to/secrets/*]' (relevant only for AWS migration)
|
|
23
23
|
attr_accessor :aws_key_id
|
|
24
24
|
|
|
25
|
-
# AWS region
|
|
25
|
+
# AWS region of the required Secrets Manager (relevant only for AWS migration)
|
|
26
26
|
attr_accessor :aws_region
|
|
27
27
|
|
|
28
|
-
# Azure
|
|
28
|
+
# Azure Key Vault Access client ID, should be Azure AD App with a service principal (relevant only for Azure Key Vault migration)
|
|
29
29
|
attr_accessor :azure_client_id
|
|
30
30
|
|
|
31
|
-
# Azure Key Vault Name
|
|
31
|
+
# Azure Key Vault Name (relevant only for Azure Key Vault migration)
|
|
32
32
|
attr_accessor :azure_kv_name
|
|
33
33
|
|
|
34
|
-
# Azure
|
|
34
|
+
# Azure Key Vault secret (relevant only for Azure Key Vault migration)
|
|
35
35
|
attr_accessor :azure_secret
|
|
36
36
|
|
|
37
|
-
# Azure
|
|
37
|
+
# Azure Key Vault Access tenant ID (relevant only for Azure Key Vault migration)
|
|
38
38
|
attr_accessor :azure_tenant_id
|
|
39
39
|
|
|
40
|
-
# Base64-encoded
|
|
40
|
+
# Base64-encoded GCP Service Account private key text with sufficient permissions to Secrets Manager, Minimum required permission is Secret Manager Secret Accessor, e.g. 'roles/secretmanager.secretAccessor' (relevant only for GCP migration)
|
|
41
41
|
attr_accessor :gcp_key
|
|
42
42
|
|
|
43
|
-
# Import secret key as json value or independent secrets
|
|
43
|
+
# Import secret key as json value or independent secrets (relevant only for HasiCorp Vault migration)
|
|
44
44
|
attr_accessor :hashi_json
|
|
45
45
|
|
|
46
|
-
#
|
|
46
|
+
# HashiCorp Vault Namespaces is a comma-separated list of namespaces which need to be imported into Akeyless Vault. For every provided namespace, all its child namespaces are imported as well, e.g. nmsp/subnmsp1/subnmsp2,nmsp/anothernmsp. By default, import all namespaces (relevant only for HasiCorp Vault migration)
|
|
47
47
|
attr_accessor :hashi_ns
|
|
48
48
|
|
|
49
|
-
#
|
|
49
|
+
# HashiCorp Vault access token with sufficient permissions to preform list & read operations on secrets objects (relevant only for HasiCorp Vault migration)
|
|
50
50
|
attr_accessor :hashi_token
|
|
51
51
|
|
|
52
|
-
#
|
|
52
|
+
# HashiCorp Vault API URL, e.g. https://vault-mgr01:8200 (relevant only for HasiCorp Vault migration)
|
|
53
53
|
attr_accessor :hashi_url
|
|
54
54
|
|
|
55
|
-
# Migration ID
|
|
55
|
+
# Migration ID (Can be retrieved with gateway-list-migration command)
|
|
56
56
|
attr_accessor :id
|
|
57
57
|
|
|
58
|
-
# For Certificate Authentication method K8s Cluster CA certificate
|
|
58
|
+
# For Certificate Authentication method K8s Cluster CA certificate (relevant only for K8s migration with Certificate Authentication method)
|
|
59
59
|
attr_accessor :k8s_ca_certificate
|
|
60
60
|
|
|
61
|
-
# K8s Client certificate
|
|
61
|
+
# K8s Client certificate with sufficient permission to list and get secrets in the namespace(s) you selected (relevant only for K8s migration with Certificate Authentication method)
|
|
62
62
|
attr_accessor :k8s_client_certificate
|
|
63
63
|
|
|
64
|
-
# K8s Client key
|
|
64
|
+
# K8s Client key (relevant only for K8s migration with Certificate Authentication method)
|
|
65
65
|
attr_accessor :k8s_client_key
|
|
66
66
|
|
|
67
|
-
# K8s Namespace
|
|
67
|
+
# K8s Namespace, Use this field to import secrets from a particular namespace only. By default, the secrets are imported from all namespaces (relevant only for K8s migration)
|
|
68
68
|
attr_accessor :k8s_namespace
|
|
69
69
|
|
|
70
|
-
# K8s
|
|
70
|
+
# K8s Client password (relevant only for K8s migration with Password Authentication method)
|
|
71
71
|
attr_accessor :k8s_password
|
|
72
72
|
|
|
73
|
-
# K8s Skip Control Plane Secrets
|
|
73
|
+
# K8s Skip Control Plane Secrets, This option allows to avoid importing secrets from system namespaces (relevant only for K8s migration)
|
|
74
74
|
attr_accessor :k8s_skip_system
|
|
75
75
|
|
|
76
|
-
# For Token Authentication method K8s Bearer Token
|
|
76
|
+
# For Token Authentication method K8s Bearer Token with sufficient permission to list and get secrets in the namespace(s) you selected (relevant only for K8s migration with Token Authentication method)
|
|
77
77
|
attr_accessor :k8s_token
|
|
78
78
|
|
|
79
|
-
# K8s
|
|
79
|
+
# K8s API Server URL, e.g. https://k8s-api.mycompany.com:6443 (relevant only for K8s migration)
|
|
80
80
|
attr_accessor :k8s_url
|
|
81
81
|
|
|
82
|
-
# For Password Authentication method K8s
|
|
82
|
+
# For Password Authentication method K8s Client username with sufficient permission to list and get secrets in the namespace(s) you selected (relevant only for K8s migration with Password Authentication method)
|
|
83
83
|
attr_accessor :k8s_username
|
|
84
84
|
|
|
85
85
|
# Migration name
|
|
86
86
|
attr_accessor :name
|
|
87
87
|
|
|
88
|
+
# New migration name
|
|
89
|
+
attr_accessor :new_name
|
|
90
|
+
|
|
88
91
|
# The name of the key that protects the classic key value (if empty, the account default key will be used)
|
|
89
92
|
attr_accessor :protection_key
|
|
90
93
|
|
|
@@ -94,9 +97,6 @@ module Akeyless
|
|
|
94
97
|
# Authentication token (see `/auth` and `/configure`)
|
|
95
98
|
attr_accessor :token
|
|
96
99
|
|
|
97
|
-
# Migration type, can be: hashi/aws/gcp/k8s/azure_kv
|
|
98
|
-
attr_accessor :type
|
|
99
|
-
|
|
100
100
|
# The universal identity token, Required only for universal_identity authentication
|
|
101
101
|
attr_accessor :uid_token
|
|
102
102
|
|
|
@@ -126,10 +126,10 @@ module Akeyless
|
|
|
126
126
|
:'k8s_url' => :'k8s-url',
|
|
127
127
|
:'k8s_username' => :'k8s-username',
|
|
128
128
|
:'name' => :'name',
|
|
129
|
+
:'new_name' => :'new_name',
|
|
129
130
|
:'protection_key' => :'protection-key',
|
|
130
131
|
:'target_location' => :'target-location',
|
|
131
132
|
:'token' => :'token',
|
|
132
|
-
:'type' => :'type',
|
|
133
133
|
:'uid_token' => :'uid-token'
|
|
134
134
|
}
|
|
135
135
|
end
|
|
@@ -165,10 +165,10 @@ module Akeyless
|
|
|
165
165
|
:'k8s_url' => :'String',
|
|
166
166
|
:'k8s_username' => :'String',
|
|
167
167
|
:'name' => :'String',
|
|
168
|
+
:'new_name' => :'String',
|
|
168
169
|
:'protection_key' => :'String',
|
|
169
170
|
:'target_location' => :'String',
|
|
170
171
|
:'token' => :'String',
|
|
171
|
-
:'type' => :'String',
|
|
172
172
|
:'uid_token' => :'String'
|
|
173
173
|
}
|
|
174
174
|
end
|
|
@@ -294,6 +294,10 @@ module Akeyless
|
|
|
294
294
|
self.name = attributes[:'name']
|
|
295
295
|
end
|
|
296
296
|
|
|
297
|
+
if attributes.key?(:'new_name')
|
|
298
|
+
self.new_name = attributes[:'new_name']
|
|
299
|
+
end
|
|
300
|
+
|
|
297
301
|
if attributes.key?(:'protection_key')
|
|
298
302
|
self.protection_key = attributes[:'protection_key']
|
|
299
303
|
end
|
|
@@ -306,10 +310,6 @@ module Akeyless
|
|
|
306
310
|
self.token = attributes[:'token']
|
|
307
311
|
end
|
|
308
312
|
|
|
309
|
-
if attributes.key?(:'type')
|
|
310
|
-
self.type = attributes[:'type']
|
|
311
|
-
end
|
|
312
|
-
|
|
313
313
|
if attributes.key?(:'uid_token')
|
|
314
314
|
self.uid_token = attributes[:'uid_token']
|
|
315
315
|
end
|
|
@@ -319,17 +319,12 @@ module Akeyless
|
|
|
319
319
|
# @return Array for valid properties with the reasons
|
|
320
320
|
def list_invalid_properties
|
|
321
321
|
invalid_properties = Array.new
|
|
322
|
-
if @name.nil?
|
|
323
|
-
invalid_properties.push('invalid value for "name", name cannot be nil.')
|
|
324
|
-
end
|
|
325
|
-
|
|
326
322
|
invalid_properties
|
|
327
323
|
end
|
|
328
324
|
|
|
329
325
|
# Check to see if the all the properties in the model are valid
|
|
330
326
|
# @return true if the model is valid
|
|
331
327
|
def valid?
|
|
332
|
-
return false if @name.nil?
|
|
333
328
|
true
|
|
334
329
|
end
|
|
335
330
|
|
|
@@ -361,10 +356,10 @@ module Akeyless
|
|
|
361
356
|
k8s_url == o.k8s_url &&
|
|
362
357
|
k8s_username == o.k8s_username &&
|
|
363
358
|
name == o.name &&
|
|
359
|
+
new_name == o.new_name &&
|
|
364
360
|
protection_key == o.protection_key &&
|
|
365
361
|
target_location == o.target_location &&
|
|
366
362
|
token == o.token &&
|
|
367
|
-
type == o.type &&
|
|
368
363
|
uid_token == o.uid_token
|
|
369
364
|
end
|
|
370
365
|
|
|
@@ -377,7 +372,7 @@ module Akeyless
|
|
|
377
372
|
# Calculates hash code according to all attributes.
|
|
378
373
|
# @return [Integer] Hash code
|
|
379
374
|
def hash
|
|
380
|
-
[aws_key, aws_key_id, aws_region, azure_client_id, azure_kv_name, azure_secret, azure_tenant_id, gcp_key, hashi_json, hashi_ns, hashi_token, hashi_url, id, k8s_ca_certificate, k8s_client_certificate, k8s_client_key, k8s_namespace, k8s_password, k8s_skip_system, k8s_token, k8s_url, k8s_username, name, protection_key, target_location, token,
|
|
375
|
+
[aws_key, aws_key_id, aws_region, azure_client_id, azure_kv_name, azure_secret, azure_tenant_id, gcp_key, hashi_json, hashi_ns, hashi_token, hashi_url, id, k8s_ca_certificate, k8s_client_certificate, k8s_client_key, k8s_namespace, k8s_password, k8s_skip_system, k8s_token, k8s_url, k8s_username, name, new_name, protection_key, target_location, token, uid_token].hash
|
|
381
376
|
end
|
|
382
377
|
|
|
383
378
|
# Builds the object from hash
|
|
@@ -31,6 +31,9 @@ module Akeyless
|
|
|
31
31
|
# Base URL
|
|
32
32
|
attr_accessor :base_url
|
|
33
33
|
|
|
34
|
+
# Protection from accidental deletion of this item
|
|
35
|
+
attr_accessor :delete_protection
|
|
36
|
+
|
|
34
37
|
# Producer name
|
|
35
38
|
attr_accessor :name
|
|
36
39
|
|
|
@@ -63,6 +66,7 @@ module Akeyless
|
|
|
63
66
|
:'artifactory_token_audience' => :'artifactory-token-audience',
|
|
64
67
|
:'artifactory_token_scope' => :'artifactory-token-scope',
|
|
65
68
|
:'base_url' => :'base-url',
|
|
69
|
+
:'delete_protection' => :'delete_protection',
|
|
66
70
|
:'name' => :'name',
|
|
67
71
|
:'new_name' => :'new-name',
|
|
68
72
|
:'producer_encryption_key_name' => :'producer-encryption-key-name',
|
|
@@ -87,6 +91,7 @@ module Akeyless
|
|
|
87
91
|
:'artifactory_token_audience' => :'String',
|
|
88
92
|
:'artifactory_token_scope' => :'String',
|
|
89
93
|
:'base_url' => :'String',
|
|
94
|
+
:'delete_protection' => :'String',
|
|
90
95
|
:'name' => :'String',
|
|
91
96
|
:'new_name' => :'String',
|
|
92
97
|
:'producer_encryption_key_name' => :'String',
|
|
@@ -139,6 +144,10 @@ module Akeyless
|
|
|
139
144
|
self.base_url = attributes[:'base_url']
|
|
140
145
|
end
|
|
141
146
|
|
|
147
|
+
if attributes.key?(:'delete_protection')
|
|
148
|
+
self.delete_protection = attributes[:'delete_protection']
|
|
149
|
+
end
|
|
150
|
+
|
|
142
151
|
if attributes.key?(:'name')
|
|
143
152
|
self.name = attributes[:'name']
|
|
144
153
|
end
|
|
@@ -214,6 +223,7 @@ module Akeyless
|
|
|
214
223
|
artifactory_token_audience == o.artifactory_token_audience &&
|
|
215
224
|
artifactory_token_scope == o.artifactory_token_scope &&
|
|
216
225
|
base_url == o.base_url &&
|
|
226
|
+
delete_protection == o.delete_protection &&
|
|
217
227
|
name == o.name &&
|
|
218
228
|
new_name == o.new_name &&
|
|
219
229
|
producer_encryption_key_name == o.producer_encryption_key_name &&
|
|
@@ -233,7 +243,7 @@ module Akeyless
|
|
|
233
243
|
# Calculates hash code according to all attributes.
|
|
234
244
|
# @return [Integer] Hash code
|
|
235
245
|
def hash
|
|
236
|
-
[artifactory_admin_name, artifactory_admin_pwd, artifactory_token_audience, artifactory_token_scope, base_url, name, new_name, producer_encryption_key_name, tags, target_name, token, uid_token, user_ttl].hash
|
|
246
|
+
[artifactory_admin_name, artifactory_admin_pwd, artifactory_token_audience, artifactory_token_scope, base_url, delete_protection, name, new_name, producer_encryption_key_name, tags, target_name, token, uid_token, user_ttl].hash
|
|
237
247
|
end
|
|
238
248
|
|
|
239
249
|
# Builds the object from hash
|
|
@@ -42,6 +42,9 @@ module Akeyless
|
|
|
42
42
|
# AWS User programmatic access
|
|
43
43
|
attr_accessor :aws_user_programmatic_access
|
|
44
44
|
|
|
45
|
+
# Protection from accidental deletion of this item
|
|
46
|
+
attr_accessor :delete_protection
|
|
47
|
+
|
|
45
48
|
# Automatic admin credentials rotation
|
|
46
49
|
attr_accessor :enable_admin_rotation
|
|
47
50
|
|
|
@@ -98,6 +101,7 @@ module Akeyless
|
|
|
98
101
|
:'aws_user_groups' => :'aws-user-groups',
|
|
99
102
|
:'aws_user_policies' => :'aws-user-policies',
|
|
100
103
|
:'aws_user_programmatic_access' => :'aws-user-programmatic-access',
|
|
104
|
+
:'delete_protection' => :'delete_protection',
|
|
101
105
|
:'enable_admin_rotation' => :'enable-admin-rotation',
|
|
102
106
|
:'name' => :'name',
|
|
103
107
|
:'new_name' => :'new-name',
|
|
@@ -135,6 +139,7 @@ module Akeyless
|
|
|
135
139
|
:'aws_user_groups' => :'String',
|
|
136
140
|
:'aws_user_policies' => :'String',
|
|
137
141
|
:'aws_user_programmatic_access' => :'Boolean',
|
|
142
|
+
:'delete_protection' => :'String',
|
|
138
143
|
:'enable_admin_rotation' => :'Boolean',
|
|
139
144
|
:'name' => :'String',
|
|
140
145
|
:'new_name' => :'String',
|
|
@@ -218,6 +223,10 @@ module Akeyless
|
|
|
218
223
|
self.aws_user_programmatic_access = true
|
|
219
224
|
end
|
|
220
225
|
|
|
226
|
+
if attributes.key?(:'delete_protection')
|
|
227
|
+
self.delete_protection = attributes[:'delete_protection']
|
|
228
|
+
end
|
|
229
|
+
|
|
221
230
|
if attributes.key?(:'enable_admin_rotation')
|
|
222
231
|
self.enable_admin_rotation = attributes[:'enable_admin_rotation']
|
|
223
232
|
else
|
|
@@ -327,6 +336,7 @@ module Akeyless
|
|
|
327
336
|
aws_user_groups == o.aws_user_groups &&
|
|
328
337
|
aws_user_policies == o.aws_user_policies &&
|
|
329
338
|
aws_user_programmatic_access == o.aws_user_programmatic_access &&
|
|
339
|
+
delete_protection == o.delete_protection &&
|
|
330
340
|
enable_admin_rotation == o.enable_admin_rotation &&
|
|
331
341
|
name == o.name &&
|
|
332
342
|
new_name == o.new_name &&
|
|
@@ -355,7 +365,7 @@ module Akeyless
|
|
|
355
365
|
# Calculates hash code according to all attributes.
|
|
356
366
|
# @return [Integer] Hash code
|
|
357
367
|
def hash
|
|
358
|
-
[access_mode, admin_rotation_interval_days, aws_access_key_id, aws_access_secret_key, aws_role_arns, aws_user_console_access, aws_user_groups, aws_user_policies, aws_user_programmatic_access, enable_admin_rotation, name, new_name, producer_encryption_key_name, region, secure_access_aws_account_id, secure_access_aws_native_cli, secure_access_bastion_issuer, secure_access_enable, secure_access_web, secure_access_web_browsing, secure_access_web_proxy, tags, target_name, token, uid_token, user_ttl].hash
|
|
368
|
+
[access_mode, admin_rotation_interval_days, aws_access_key_id, aws_access_secret_key, aws_role_arns, aws_user_console_access, aws_user_groups, aws_user_policies, aws_user_programmatic_access, delete_protection, enable_admin_rotation, name, new_name, producer_encryption_key_name, region, secure_access_aws_account_id, secure_access_aws_native_cli, secure_access_bastion_issuer, secure_access_enable, secure_access_web, secure_access_web_browsing, secure_access_web_proxy, tags, target_name, token, uid_token, user_ttl].hash
|
|
359
369
|
end
|
|
360
370
|
|
|
361
371
|
# Builds the object from hash
|
|
@@ -28,6 +28,9 @@ module Akeyless
|
|
|
28
28
|
# Azure Tenant ID
|
|
29
29
|
attr_accessor :azure_tenant_id
|
|
30
30
|
|
|
31
|
+
# Protection from accidental deletion of this item
|
|
32
|
+
attr_accessor :delete_protection
|
|
33
|
+
|
|
31
34
|
# FixedUserClaimKeyname
|
|
32
35
|
attr_accessor :fixed_user_claim_keyname
|
|
33
36
|
|
|
@@ -88,6 +91,7 @@ module Akeyless
|
|
|
88
91
|
:'azure_client_id' => :'azure-client-id',
|
|
89
92
|
:'azure_client_secret' => :'azure-client-secret',
|
|
90
93
|
:'azure_tenant_id' => :'azure-tenant-id',
|
|
94
|
+
:'delete_protection' => :'delete_protection',
|
|
91
95
|
:'fixed_user_claim_keyname' => :'fixed-user-claim-keyname',
|
|
92
96
|
:'fixed_user_only' => :'fixed-user-only',
|
|
93
97
|
:'name' => :'name',
|
|
@@ -122,6 +126,7 @@ module Akeyless
|
|
|
122
126
|
:'azure_client_id' => :'String',
|
|
123
127
|
:'azure_client_secret' => :'String',
|
|
124
128
|
:'azure_tenant_id' => :'String',
|
|
129
|
+
:'delete_protection' => :'String',
|
|
125
130
|
:'fixed_user_claim_keyname' => :'String',
|
|
126
131
|
:'fixed_user_only' => :'Boolean',
|
|
127
132
|
:'name' => :'String',
|
|
@@ -181,6 +186,10 @@ module Akeyless
|
|
|
181
186
|
self.azure_tenant_id = attributes[:'azure_tenant_id']
|
|
182
187
|
end
|
|
183
188
|
|
|
189
|
+
if attributes.key?(:'delete_protection')
|
|
190
|
+
self.delete_protection = attributes[:'delete_protection']
|
|
191
|
+
end
|
|
192
|
+
|
|
184
193
|
if attributes.key?(:'fixed_user_claim_keyname')
|
|
185
194
|
self.fixed_user_claim_keyname = attributes[:'fixed_user_claim_keyname']
|
|
186
195
|
else
|
|
@@ -297,6 +306,7 @@ module Akeyless
|
|
|
297
306
|
azure_client_id == o.azure_client_id &&
|
|
298
307
|
azure_client_secret == o.azure_client_secret &&
|
|
299
308
|
azure_tenant_id == o.azure_tenant_id &&
|
|
309
|
+
delete_protection == o.delete_protection &&
|
|
300
310
|
fixed_user_claim_keyname == o.fixed_user_claim_keyname &&
|
|
301
311
|
fixed_user_only == o.fixed_user_only &&
|
|
302
312
|
name == o.name &&
|
|
@@ -327,7 +337,7 @@ module Akeyless
|
|
|
327
337
|
# Calculates hash code according to all attributes.
|
|
328
338
|
# @return [Integer] Hash code
|
|
329
339
|
def hash
|
|
330
|
-
[app_obj_id, azure_client_id, azure_client_secret, azure_tenant_id, fixed_user_claim_keyname, fixed_user_only, name, new_name, producer_encryption_key_name, secure_access_enable, secure_access_web, secure_access_web_browsing, secure_access_web_proxy, tags, target_name, token, uid_token, user_group_obj_id, user_portal_access, user_principal_name, user_programmatic_access, user_role_template_id, user_ttl].hash
|
|
340
|
+
[app_obj_id, azure_client_id, azure_client_secret, azure_tenant_id, delete_protection, fixed_user_claim_keyname, fixed_user_only, name, new_name, producer_encryption_key_name, secure_access_enable, secure_access_web, secure_access_web_browsing, secure_access_web_proxy, tags, target_name, token, uid_token, user_group_obj_id, user_portal_access, user_principal_name, user_programmatic_access, user_role_template_id, user_ttl].hash
|
|
331
341
|
end
|
|
332
342
|
|
|
333
343
|
# Builds the object from hash
|