itchy 0.2.5 → 0.2.7

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: a86f74cac38fa3647f1d1ce4d7f17da7815bc0a4
4
- data.tar.gz: 077114a2fe79de9d59713054d3c35ddf51dea59d
3
+ metadata.gz: fdda0b2aa4e9eb5cc2ea91f70fac7563a84549dd
4
+ data.tar.gz: a0af4183e2155fc184c60dec6dbbf6bfb845d703
5
5
  SHA512:
6
- metadata.gz: 5a4f026036966cbdaf0bbc703985edd37ac3aced1bf6796edbefdf87b641922788a3e2a30117794be4ce59868cb48e9c0e0be444698c32e75aec672f3b5da2fb
7
- data.tar.gz: d8debf3428818e35bff502852ca50ce4a7123f7d8f90b3727d6dc38934c5734e50cc9fe773c04e491397b70ee15f8379cedf6f4d4de602232fe3b5b61704751d
6
+ metadata.gz: 7443a124bc70d22664b774c31ebc5e2da9b773b136c0b8a335365478f5813cb27224f152a0272dc1a098a79717cbdb0c99802ec20f4cf370b80176dfc3bd2d07
7
+ data.tar.gz: c3c4bc6f42d601077ca9f91390ae9ec77e335fa0819f407bb28e969cb345b021d3318958b1fd02871304ced73a833c7394c429abb51be3d75a8414c4f20fd93a
data/bin/itchy CHANGED
@@ -47,12 +47,25 @@ class ItchyRunnable < Thor
47
47
  end
48
48
 
49
49
  desc 'archive', 'Handle an incoming vmcatcher event and store it for further processing'
50
- method_option :metadata_dir, type: :string, default: Itchy::Settings.metadata_dir,
51
- aliases: '-m', desc: 'Path to a metadata directory for storing events, must be writable'
52
- method_option :log_to, type: :string, default: Itchy::Settings.log_to.archive_log, aliasses: '-l',
53
- desc: 'Logging output, file path or stderr/stdout'
54
- method_option :file_permissions, type: :string, default: Itchy::Settings['permissions']['file'],
55
- aliases: '-p', desc: 'Sets permissions for all created files'
50
+
51
+ method_option :metadata_dir,
52
+ type: :string,
53
+ default: Itchy::Settings.metadata_dir,
54
+ aliases: '-m',
55
+ desc: 'Path to a metadata directory for storing events, must be writable'
56
+
57
+ method_option :log_to,
58
+ type: :string,
59
+ default: Itchy::Settings.log_to.archive_log,
60
+ aliasses: '-l',
61
+ desc: 'Logging output, file path or stderr/stdout'
62
+
63
+ method_option :file_permissions,
64
+ type: :string,
65
+ default: Itchy::Settings['permissions']['file'],
66
+ aliases: '-p',
67
+ desc: 'Sets permissions for all created files'
68
+
56
69
  method_option *shared_option_log_level
57
70
  method_option *shared_option_debug
58
71
 
@@ -71,18 +84,56 @@ class ItchyRunnable < Thor
71
84
  end
72
85
 
73
86
  desc 'process', 'Process stored events'
74
- method_option :metadata_dir, type: :string, default: Itchy::Settings.metadata_dir,
75
- aliases: '-m', desc: 'Path to a metadata directory for stored events'
76
- method_option :required_format, type: :string, default: Itchy::Settings.output_image_format,
77
- aliases: '-f', desc: 'Required output format of converted images'
78
- method_option :output_dir, type: :string, default: Itchy::Settings.output_dir,
79
- aliases: '-o', desc: 'Path to a directory where processed events descriptors will be stored'
80
- method_option :descriptor_dir, type: :string, default: Itchy::Settings.descriptor_dir,
81
- aliases: '-e', desc: 'Path to a directory where appliance descriptors will be stored'
82
- method_option :file_permissions, type: :string, default: Itchy::Settings['permissions']['file'],
83
- aliases: '-p', desc: 'Sets permissions for all created files'
84
- method_option :log_to, type: :string, default: Itchy::Settings.log_to.process_log, aliases: '-l',
85
- desc: 'Logging output, file path or stderr/stdout'
87
+
88
+ method_option :metadata_dir,
89
+ type: :string,
90
+ default: Itchy::Settings.metadata_dir,
91
+ aliases: '-m',
92
+ desc: 'Path to a metadata directory for stored events'
93
+
94
+ method_option :required_format,
95
+ type: :string,
96
+ default: Itchy::Settings.output_image_format,
97
+ aliases: '-f',
98
+ desc: 'Required output format of converted images'
99
+
100
+ method_option :output_dir,
101
+ type: :string,
102
+ default: Itchy::Settings.output_dir,
103
+ aliases: '-o',
104
+ desc: 'Path to a directory where processed events descriptors will be stored'
105
+
106
+ method_option :temp_image_dir,
107
+ type: :string,
108
+ default: Itchy::Settings.temp_image_dir,
109
+ aliases: '-t',
110
+ desc: 'Path to a directory where images will be temporary stored while being processed'
111
+
112
+ method_option :descriptor_dir,
113
+ type: :string,
114
+ default: Itchy::Settings.descriptor_dir,
115
+ aliases: '-e',
116
+ desc: 'Path to a directory where appliance descriptors will be stored'
117
+
118
+ method_option :file_permissions,
119
+ type: :string,
120
+ default: Itchy::Settings['permissions']['file'],
121
+ aliases: '-p',
122
+ desc: 'Sets permissions for all created files'
123
+
124
+ method_option :log_to,
125
+ type: :string,
126
+ default: Itchy::Settings.log_to.process_log,
127
+ aliases: '-l',
128
+ desc: 'Logging output, file path or stderr/stdout'
129
+
130
+
131
+ method_option :qemu_img_binary,
132
+ type: :string,
133
+ default: Itchy::Settings['qemu_img_binary'],
134
+ aliases: '-q',
135
+ desc: 'Path to qemu-img command binary, if not used, ITCHY will look for it in PATH'
136
+
86
137
  method_option *shared_option_log_level
87
138
  method_option *shared_option_debug
88
139
 
data/config/itchy.yml CHANGED
@@ -3,6 +3,7 @@ defaults: &defaults
3
3
  metadata_dir: /var/spool/itchy/metadata
4
4
  output_dir: /var/spool/itchy/output
5
5
  descriptor_dir: /var/spool/itchy/descriptors
6
+ temp_image_dir: /var/spool/itchy/temp
6
7
  log_to:
7
8
  archive_log: /var/log/itchy/archive.log
8
9
  process_log: /var/log/itchy/process.log
@@ -11,7 +12,7 @@ defaults: &defaults
11
12
  permissions:
12
13
  file: '0664'
13
14
  output_image_format: qcow2
14
- qemu_img_binary: /usr/bin/qemu-img
15
+ #qemu_img_binary: # When used, ITCHY will use this binary to run qemu-img command (converting images)
15
16
 
16
17
  ###############################################
17
18
  ####### DO NOT EDIT AFTER THIS POINT ########
@@ -1,12 +1,15 @@
1
1
  module Itchy
2
2
  # Converting different image formats
3
3
  class FormatConverter
4
+
5
+
4
6
  # Creates and converter instance for converting image to requried format
5
7
  #
6
8
  # @param unpacking_dir [String] path to directory where image is stored
7
9
  # @param metadata [VmcatcherEvent] metadata of event corresponding to image
8
10
  # @param vmcatcher_configuration [VmcatcherConfiguration] vmcatcher configuration
9
11
  def initialize(unpacking_dir, metadata, vmcatcher_configuration)
12
+
10
13
  unless vmcatcher_configuration.is_a?(Itchy::VmcatcherConfiguration)
11
14
  fail ArgumentError, '\'vmcatcher_configuration\' must be an instance of ' \
12
15
  'Itchy::VmcatcherConfiguration!'
@@ -22,14 +25,15 @@ module Itchy
22
25
  # @param file_format [String] actual format of the image
23
26
  # @param required_format [String] required format
24
27
  # @param output_dir [String] path to a directory where converted image should be stored
25
- def convert!(file_format, required_format, output_dir)
28
+ def convert!(file_format, required_format, output_dir, qemu_img_binary)
26
29
  Itchy::Log.info "[#{self.class.name}] Converting image " \
27
30
  "#{@metadata.dc_identifier.inspect} from " \
28
31
  "original format: #{file_format} to " \
29
32
  "required format: #{required_format}."
30
33
 
31
34
  new_file_name = "#{::Time.now.to_i}_#{@metadata.dc_identifier}"
32
- convert_cmd = Mixlib::ShellOut.new("qemu-img convert -f #{file_format} -O #{required_format} #{@unpacking_dir}/#{@metadata.dc_identifier} #{output_dir}/#{new_file_name}")
35
+ qemu_command = qemu_img_binary || Itchy::BASIC_QEMU_COMMAND
36
+ convert_cmd = Mixlib::ShellOut.new("#{qemu_command} convert -f #{file_format} -O #{required_format} #{@unpacking_dir}/#{@metadata.dc_identifier} #{output_dir}/#{new_file_name}")
33
37
  convert_cmd.run_command
34
38
  begin
35
39
  convert_cmd.error!
@@ -46,7 +46,7 @@ module Itchy
46
46
  new_file_name = copy_same_format(unpacking_dir, metadata)
47
47
  else
48
48
  converter = Itchy::FormatConverter.new(unpacking_dir, metadata, vmcatcher_configuration)
49
- new_file_name = converter.convert!(file_format, @options.required_format, @options.output_dir)
49
+ new_file_name = converter.convert!(file_format, @options.required_format, @options.output_dir, @options.qemu_img_binary)
50
50
  end
51
51
  remove_dir(unpacking_dir)
52
52
  rescue Itchy::Errors::FileInspectError, Itchy::Errors::FormatConversionError,
@@ -64,7 +64,10 @@ module Itchy
64
64
  # @param unpacking_dir [String] name and path of the checked file
65
65
  # @return [String] image format
66
66
  def format(file)
67
- image_format_tester = Mixlib::ShellOut.new("qemu-img info #{file}")
67
+
68
+ qemu_command = @options.qemu_img_binary || Itchy::BASIC_QEMU_COMMAND
69
+
70
+ image_format_tester = Mixlib::ShellOut.new("#{qemu_command} info #{file}")
68
71
  image_format_tester.run_command
69
72
  begin
70
73
  image_format_tester.error!
@@ -119,7 +122,7 @@ module Itchy
119
122
  dir = Dir.new directory
120
123
  counter = 0
121
124
  files = dir['*']
122
- files each do |file|
125
+ files.each do |file|
123
126
  file_format = format("#{directory}/#{file}")
124
127
  if KNOWN_IMAGE_FORMATS.include? file_format
125
128
  counter += 1
@@ -202,7 +205,7 @@ module Itchy
202
205
  # @param vmcatcher_configuration [Itchy::VmcatcherConfiguration] current VMC configuration
203
206
  # @return [String] path to the newly created image directory
204
207
  def prepare_image_temp_dir(metadata, vmcatcher_configuration)
205
- temp_dir = "#{vmcatcher_configuration.cache_dir_cache}/temp/#{metadata.dc_identifier}"
208
+ temp_dir = "#{@options.temp_image_dir}/#{metadata.dc_identifier}"
206
209
 
207
210
  begin
208
211
  ::FileUtils.mkdir_p temp_dir
data/lib/itchy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Itchy
2
- VERSION = '0.2.5' unless defined?(::Itchy::VERSION)
2
+ VERSION = '0.2.7' unless defined?(::Itchy::VERSION)
3
3
  end
data/lib/itchy.rb CHANGED
@@ -9,7 +9,9 @@ require 'hashie/mash'
9
9
  require 'cloud-appliance-descriptor'
10
10
 
11
11
  # Wraps all internals of the handler.
12
- module Itchy; end
12
+ module Itchy
13
+ BASIC_QEMU_COMMAND = 'qemu-img'
14
+ end
13
15
 
14
16
  require 'itchy/version'
15
17
  require 'itchy/settings'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lubomir Kosaristan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-14 00:00:00.000000000 Z
12
+ date: 2016-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opennebula