cloudkeeper 1.6.1 → 1.7.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: 20cfc2b81c1b5aef7d0d889525fddf6685898cec
4
- data.tar.gz: f0950b52a30ebf45f36057b71d1f26f8677565be
3
+ metadata.gz: 7a1f66c8fe0204c321ed16a565f9ca9f720bfb4b
4
+ data.tar.gz: 383c7c53ba0faf825cef509dcc191bdfc301d8f3
5
5
  SHA512:
6
- metadata.gz: a34479892bbc6f97f804513b5b7043fbe0b5361f2e1c2d9408d87d8bbdd4ac6b6761a52238311d8d988f1f07bba25d2429b5908059eb350992df104809f31c97
7
- data.tar.gz: a8e3ddede8e0615b298f1cd873f70a860fbd132e921cf7ecd917196cf50d6970c09a4041498cd547e2f8c30adb3d82bc77483c1ba21079c9cce6b343d6b06c28
6
+ metadata.gz: ba4cd0c58cce7c6fcfeb0f34a29bb556eca29710cdfc71288d49d794a4aa28a3d050339b7059b5afd02542912017bbf86addc4303d6ce37e1406d5ec0d5917f3
7
+ data.tar.gz: 10b1c182148e3d6c68be1715b97428ded54964c7c034d7f2c0a6de91112ebfb18ad6e154a90d606ebca4f05046b34b8ea414ae0cc12702f5ae210a54fa673f25
@@ -63,6 +63,11 @@ Metrics/ParameterLists:
63
63
  Exclude:
64
64
  - 'lib/cloudkeeper/entities/*.rb'
65
65
 
66
+ Naming/UncommunicativeMethodParamName:
67
+ Exclude:
68
+ - 'lib/cloudkeeper/entities/image_list.rb'
69
+ - 'lib/cloudkeeper/entities/appliance.rb'
70
+
66
71
  Metrics/BlockLength:
67
72
  Exclude:
68
73
  - 'Rakefile'
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'cloudkeeper/version'
4
4
 
@@ -33,12 +33,22 @@ module Cloudkeeper
33
33
 
34
34
  def extract_disk
35
35
  archived_disk = disk_file
36
+ archived_disk_sanitized = Cloudkeeper::Utils::Filename.sanitize archived_disk
37
+
36
38
  disk_directory = File.dirname(file)
37
39
  extracted_file = File.join(disk_directory, archived_disk)
38
40
  Cloudkeeper::CommandExecutioner.execute('tar', '-x', '-f', file, '-C', disk_directory, archived_disk)
39
- extracted_file
40
- rescue Cloudkeeper::Errors::CommandExecutionError => ex
41
+
42
+ return extracted_file if archived_disk == archived_disk_sanitized
43
+
44
+ extracted_file_sanitized = File.join(disk_directory, archived_disk_sanitized)
45
+ logger.debug "Renaming file #{extracted_file.inspect} to #{extracted_file_sanitized.inspect}"
46
+ File.rename extracted_file, extracted_file_sanitized
47
+
48
+ extracted_file_sanitized
49
+ rescue Cloudkeeper::Errors::CommandExecutionError, ::SystemCallError => ex
41
50
  delete_if_exists extracted_file
51
+ delete_if_exists extracted_file_sanitized
42
52
  raise ex
43
53
  end
44
54
 
@@ -1,6 +1,5 @@
1
1
  require 'tmpdir'
2
2
  require 'faraday'
3
- require 'zaru'
4
3
  require 'openssl'
5
4
  require 'json'
6
5
 
@@ -67,7 +66,7 @@ module Cloudkeeper
67
66
  end
68
67
 
69
68
  def generate_filename(uri, dir)
70
- File.join(dir, Zaru.sanitize!("#{uri.host}#{uri.path}"))
69
+ File.join(dir, Cloudkeeper::Utils::Filename.sanitize("#{uri.host}#{uri.path}"))
71
70
  end
72
71
 
73
72
  def convert_image_list(image_list_hash)
@@ -72,7 +72,7 @@ module Cloudkeeper
72
72
  end
73
73
 
74
74
  response.value
75
- open(filename, 'w') { |file| response.read_body { |chunk| file.write(chunk) } }
75
+ File.open(filename, 'w') { |file| response.read_body { |chunk| file.write(chunk) } }
76
76
  end
77
77
  end
78
78
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, Net::HTTPBadResponse,
@@ -88,7 +88,7 @@ module Cloudkeeper
88
88
  end
89
89
 
90
90
  def generate_filename(uri)
91
- File.join(Cloudkeeper::Settings[:'image-dir'], Zaru.sanitize!(File.basename(uri.path)))
91
+ File.join(Cloudkeeper::Settings[:'image-dir'], Cloudkeeper::Utils::Filename.sanitize(File.basename(uri.path)))
92
92
  end
93
93
  end
94
94
  end
@@ -5,5 +5,6 @@ module Cloudkeeper
5
5
  autoload :URL, 'cloudkeeper/utils/url'
6
6
  autoload :Appliance, 'cloudkeeper/utils/appliance'
7
7
  autoload :Date, 'cloudkeeper/utils/date'
8
+ autoload :Filename, 'cloudkeeper/utils/filename'
8
9
  end
9
10
  end
@@ -52,7 +52,7 @@ module Cloudkeeper
52
52
 
53
53
  appliance.image.add_image_file image_file.send("to_#{format}".to_sym)
54
54
  rescue Cloudkeeper::Errors::Image::Format::NoRequiredFormatAvailableError, Cloudkeeper::Errors::CommandExecutionError,
55
- Cloudkeeper::Errors::ArgumentError, ::IOError => ex
55
+ Cloudkeeper::Errors::ArgumentError, ::IOError, ::SystemCallError => ex
56
56
  raise Cloudkeeper::Errors::Image::ConversionError, "Image #{appliance.image.uri.inspect} conversion error: #{ex.message}"
57
57
  end
58
58
  end
@@ -0,0 +1,13 @@
1
+ require 'zaru'
2
+
3
+ module Cloudkeeper
4
+ module Utils
5
+ class Filename
6
+ WHITESPACES_REGEXP = /\s+/
7
+
8
+ def self.sanitize(name)
9
+ Zaru.sanitize!(name).gsub(WHITESPACES_REGEXP, '_')
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module Cloudkeeper
2
- VERSION = '1.6.1'.freeze
2
+ VERSION = '1.7.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudkeeper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Kimle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-21 00:00:00.000000000 Z
11
+ date: 2018-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -403,6 +403,7 @@ files:
403
403
  - lib/cloudkeeper/utils/appliance.rb
404
404
  - lib/cloudkeeper/utils/checksum.rb
405
405
  - lib/cloudkeeper/utils/date.rb
406
+ - lib/cloudkeeper/utils/filename.rb
406
407
  - lib/cloudkeeper/utils/hash.rb
407
408
  - lib/cloudkeeper/utils/url.rb
408
409
  - lib/cloudkeeper/version.rb