cloudkeeper 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
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