dop_common 0.13.0 → 0.14.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3101843e67bfd39402248c6690b277251588340a
4
- data.tar.gz: 9c633c5f114fc5488f701c99a1fdbfd209476ef9
3
+ metadata.gz: c15d0fe20ed0740ebe9d3b1debfe09ef0945c2e6
4
+ data.tar.gz: ccc70b223bfa575dd4368cf27a3c7baaa0c07d89
5
5
  SHA512:
6
- metadata.gz: 67b40c4e3dbb0b59325d9af71adb5ae7fd52fcc68dc114fae952954e3ed7764f3a047d0f582cb6d6118f918b5c28bb8979b37ceb820aaeb19cd32a2ec6ca8401
7
- data.tar.gz: c56ea64374f39925c35e0fbe4c78acba7c54e7f7a6a53aa473ae5f363213392116c02fd46acd2922015670ae1eb74ba589048383570a8d5b2f6c830a0710cd4d
6
+ metadata.gz: 7c4c0719e3f0860ceba109103b458d8199d5bd703d730b6b2ab190687e99bafeca9782c2a1e39a7bc6e24135bcd81df7ea5160706f0e0aebabaf04d3b105a939
7
+ data.tar.gz: c2cf097514d33f5fc44726616487cf61b9d74c1fe527cc52485771fc411e90ed7d54f94fed99858fc314010f0fb01ff75f29127c704401a41186e288078bd197
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Change Log
2
2
  All notable changes to dop_common will be documented in this file.
3
3
 
4
+ ## [0.14.0] - 2017-04-24
5
+ ### Added
6
+ - Add node property thin_clone for vmware
7
+
4
8
  ## [0.13.0] - 2017-03-28
5
9
  ### Added
6
10
  - Moved thread context logger from dopi to dop_common and reworked it so it is
@@ -548,6 +548,14 @@ a property name is actually a keyword of a node hash.
548
548
  1. __*name_servers*__ - a list of valid IP addresses.
549
549
  2. __*search_domains*__ - a list of valid domains.
550
550
 
551
+ 17. __*thin_clone*__ - an optional, VSphere-specific boolean property that instructs the VSphere provider:
552
+ 1. To transform all disks from a template as thin provision (sparse) if set to `true`.
553
+ 2. To transform all disks from a template as thick provision (flat) if set to `false`.
554
+
555
+ The default (unset) leaves disks as defined in given template (no explicit transformation).
556
+
557
+ __IMPORTANT__: Do not use this property for other cloud provider types than VSphere.
558
+
551
559
  The example bellow shows a specification for a database backend and a web node:
552
560
  ```yaml
553
561
  nodes:
@@ -66,6 +66,7 @@ module DopCommon
66
66
  log_validation_method('infrastructure_properties_valid?')
67
67
  log_validation_method('image_valid?')
68
68
  log_validation_method('full_clone_valid?')
69
+ log_validation_method('thin_clone_valid?')
69
70
  log_validation_method('interfaces_valid?')
70
71
  log_validation_method('flavor_valid?')
71
72
  log_validation_method('cores_valid?')
@@ -140,6 +141,11 @@ module DopCommon
140
141
  end
141
142
  alias_method :full_clone, :full_clone?
142
143
 
144
+ def thin_clone?
145
+ @thin_clone ||= thin_clone_valid? ? @hash[:thin_clone] : nil
146
+ end
147
+ alias_method :thin_clone, :thin_clone?
148
+
143
149
  def interfaces
144
150
  @interfaces ||= interfaces_valid? ? create_interfaces : []
145
151
  end
@@ -261,6 +267,15 @@ module DopCommon
261
267
  true
262
268
  end
263
269
 
270
+ def thin_clone_valid?
271
+ return false if @hash[:thin_clone].nil?
272
+ raise PlanParsingError, "Node #{@node}: The 'thin_clone' can be used only for VSphere provider" unless
273
+ (infrastructure.provides?(:vsphere) || infrastructure.provides?(:vmware))
274
+ raise PlanParsingError, "Node #{@node}: The 'thin_clone', if defined, must be true or false" unless
275
+ @hash.has_key?(:thin_clone) && (@hash[:thin_clone].kind_of?(TrueClass) || @hash[:thin_clone].kind_of?(FalseClass))
276
+ true
277
+ end
278
+
264
279
  def interfaces_valid?
265
280
  return false if @hash[:interfaces].nil?
266
281
  @hash[:interfaces].kind_of?(Hash) or
@@ -1,3 +1,3 @@
1
1
  module DopCommon
2
- VERSION = "0.13.0"
2
+ VERSION = '0.14.0'
3
3
  end
@@ -213,6 +213,56 @@ describe DopCommon::Node do
213
213
  end
214
214
  end
215
215
 
216
+ describe '#thin_clone' do
217
+ it 'will return nil for VSphere provider if unspecified' do
218
+ node = DopCommon::Node.new(
219
+ 'dummy',
220
+ {'infrastructure' => 'vsphere'},
221
+ {:parsed_infrastructures => @infrastructures}
222
+ )
223
+ expect(node.thin_clone).to be_nil
224
+ end
225
+ it 'will return a boolean value if specified properly' do
226
+ node = DopCommon::Node.new(
227
+ 'dummy',
228
+ {'infrastructure' => 'vsphere', 'thin_clone' => true},
229
+ {:parsed_infrastructures => @infrastructures}
230
+ )
231
+ expect(node.thin_clone).to be true
232
+ node = DopCommon::Node.new(
233
+ 'dummy',
234
+ {'infrastructure' => 'vsphere', 'thin_clone' => false},
235
+ {:parsed_infrastructures => @infrastructures}
236
+ )
237
+ expect(node.thin_clone).to be false
238
+ end
239
+ it 'will raise an error if "thin_clone" is of invalid type' do
240
+ node = DopCommon::Node.new(
241
+ 'dummy',
242
+ {'infrastructure' => 'vsphere', 'thin_clone' => :invalid},
243
+ {:parsed_infrastructures => @infrastructures}
244
+ )
245
+ expect{node.thin_clone}.to raise_error DopCommon::PlanParsingError
246
+ end
247
+
248
+ it 'will return nil in case of invalid provider type' do
249
+ node = DopCommon::Node.new(
250
+ 'dummy',
251
+ {'infrastructure' => 'rhev'},
252
+ {:parsed_infrastructures => @infrastructures}
253
+ )
254
+ expect(node.thin_clone).to be_nil
255
+ end
256
+ it 'will raise an error if "thin_clone" specified in case of invalid provider type' do
257
+ node = DopCommon::Node.new(
258
+ 'dummy',
259
+ {'infrastructure' => 'rhev', 'thin_clone' => false},
260
+ {:parsed_infrastructures => @infrastructures}
261
+ )
262
+ expect{node.thin_clone}.to raise_error DopCommon::PlanParsingError
263
+ end
264
+ end
265
+
216
266
  describe '#interfaces' do
217
267
  it 'will return an array of interfaces if specified correctly' do
218
268
  node = DopCommon::Node.new(
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dop_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Zuber
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-03-28 00:00:00.000000000 Z
12
+ date: 2017-04-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashdiff