machinery-tool 1.13.0 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.git_revision +1 -0
  3. data/NEWS +10 -0
  4. data/bin/machinery +7 -1
  5. data/{helpers → filters}/default_filters.json +0 -0
  6. data/{helpers → filters}/filter-packages-for-build.yaml +0 -0
  7. data/{helpers → inspect_helpers}/changed_files.sh +0 -0
  8. data/{helpers → inspect_helpers}/yum_repositories.py +0 -0
  9. data/lib/cli.rb +136 -52
  10. data/lib/compare_task.rb +1 -1
  11. data/lib/constants.rb +1 -1
  12. data/lib/docker_system.rb +135 -0
  13. data/lib/exceptions.rb +3 -2
  14. data/lib/filter.rb +1 -1
  15. data/lib/hint.rb +8 -2
  16. data/lib/inspect_task.rb +3 -3
  17. data/lib/kiwi_config.rb +2 -2
  18. data/lib/list_task.rb +14 -7
  19. data/lib/local_system.rb +20 -2
  20. data/lib/machinery.rb +2 -0
  21. data/lib/machinery_helper.rb +17 -14
  22. data/lib/move_task.rb +22 -0
  23. data/lib/remote_system.rb +4 -0
  24. data/lib/scope_file_access_archive.rb +10 -0
  25. data/lib/scope_file_access_flat.rb +4 -0
  26. data/lib/show_task.rb +1 -1
  27. data/lib/system.rb +16 -2
  28. data/lib/system_description.rb +19 -9
  29. data/lib/system_description_store.rb +10 -0
  30. data/lib/version.rb +1 -1
  31. data/lib/workload_mapper.rb +2 -1
  32. data/machinery-helper/README.md +13 -0
  33. data/machinery-helper/Rakefile +124 -0
  34. data/machinery-helper/machinery_helper.go +228 -0
  35. data/machinery-helper/machinery_helper_test.go +192 -0
  36. data/machinery-helper/mountpoints.go +81 -0
  37. data/machinery-helper/mountpoints_test.go +74 -0
  38. data/machinery-helper/tar.go +142 -0
  39. data/machinery-helper/version.go +5 -0
  40. data/man/generated/machinery.1.gz +0 -0
  41. data/man/generated/machinery.1.html +43 -6
  42. data/plugins/changed_managed_files/changed_managed_files_inspector.rb +1 -1
  43. data/plugins/config_files/config_files_inspector.rb +1 -1
  44. data/plugins/config_files/config_files_renderer.rb +1 -1
  45. data/plugins/environment/environment_inspector.rb +2 -2
  46. data/plugins/environment/schema/system-description-environment.schema-v5.json +4 -0
  47. data/plugins/os/os_inspector.rb +23 -11
  48. data/plugins/repositories/repositories_inspector.rb +1 -1
  49. data/plugins/services/services_inspector.rb +6 -1
  50. data/plugins/unmanaged_files/unmanaged_files_inspector.rb +35 -30
  51. data/plugins/unmanaged_files/unmanaged_files_model.rb +12 -6
  52. data/workload_mapper/docker-registry/clue.rb +0 -2
  53. data/workload_mapper/docker-registry/compose-template.yml +2 -1
  54. data/workload_mapper/docker-registry/container/Dockerfile +1 -1
  55. data/workload_mapper/mariadb/clue.rb +1 -0
  56. data/workload_mapper/mariadb/compose-template.yml +2 -2
  57. data/workload_mapper/rails/compose-template.yml +0 -1
  58. data/workload_mapper/rails/container/Dockerfile +3 -4
  59. data/workload_mapper/wordpress/clue.rb +13 -0
  60. data/workload_mapper/wordpress/compose-template.yml +5 -0
  61. data/workload_mapper/wordpress/config/wp-config.php +38 -0
  62. data/workload_mapper/wordpress/container/Dockerfile +25 -0
  63. data/workload_mapper/wordpress/container/apache2/listen.conf +1 -0
  64. data/workload_mapper/wordpress/container/apache2/wordpress_vhost.conf +21 -0
  65. data/workload_mapper/wordpress/setup/setup.rb.erb +67 -0
  66. metadata +26 -8
  67. data/helpers/inspector_files.rb +0 -52
@@ -91,7 +91,7 @@ class OsInspector < Inspector
91
91
  result["pretty_name"] = strip_arch_from_name(result["pretty_name"])
92
92
 
93
93
  # remove always changing Tumbleweed version from pretty name
94
- if result["pretty_name"] =~ /^openSUSE.*\(Tumbleweed\)/
94
+ if result["pretty_name"] =~ /^openSUSE.*Tumbleweed/
95
95
  result["pretty_name"] = "openSUSE Tumbleweed"
96
96
  end
97
97
  end
@@ -99,6 +99,13 @@ class OsInspector < Inspector
99
99
  # name instead of an abbreviation
100
100
  os = Os.for(result["pretty_name"] || result["name"])
101
101
  os.version = result["version"]
102
+
103
+ # since Tumbleweed does no longer store the version number in the
104
+ # "version" property, we've to read from the "version_id" property
105
+ if os.version == "Tumbleweed"
106
+ os.version = result["version_id"]
107
+ end
108
+
102
109
  os
103
110
  end
104
111
 
@@ -111,19 +118,24 @@ class OsInspector < Inspector
111
118
  # name is always the first line in /etc/SuSE-release
112
119
  result["name"] = strip_arch_from_name(suse_release.split("\n").first)
113
120
 
114
- patch = nil
115
- suse_release.each_line do |l|
116
- if l.start_with?("VERSION")
117
- result["version"] = l.split("=").last.strip
118
- end
119
- if l.start_with?("PATCHLEVEL")
120
- patch = l.split("=").last.strip
121
+ result["patchlevel"] = nil
122
+ suse_release.split("\n").slice(1, suse_release.length).each do |line|
123
+ if !line.start_with?("#")
124
+ key, value = line.split("=")
125
+ result[key.strip.downcase] = value.strip
121
126
  end
122
127
  end
123
- if result["version"] && !patch.nil?
124
- result["version"] = "#{result["version"]} SP#{patch}"
128
+
129
+ if result["version"] && !result["patchlevel"].nil?
130
+ result["version"] = "#{result["version"]} SP#{result["patchlevel"]}"
131
+ end
132
+
133
+ if result["codename"] == "Tumbleweed"
134
+ os = Os.for ("openSUSE Tumbleweed")
135
+ else
136
+ os = Os.for(result["name"])
125
137
  end
126
- os = Os.for(result["name"])
138
+
127
139
  os.version = result["version"]
128
140
  os
129
141
  end
@@ -70,7 +70,7 @@ class RepositoriesInspector < Inspector
70
70
  end
71
71
 
72
72
  def inspect_yum_repositories
73
- script = File.read(File.join(Machinery::ROOT, "helpers", "yum_repositories.py"))
73
+ script = File.read(File.join(Machinery::ROOT, "inspect_helpers", "yum_repositories.py"))
74
74
  begin
75
75
  repositories = JSON.parse(system.run_command(
76
76
  "bash", "-c", "python", stdin: script, stdout: :capture
@@ -24,7 +24,12 @@ class ServicesInspector < Inspector
24
24
  end
25
25
 
26
26
  def inspect(_filter, _options = {})
27
- if @system.has_command?("systemctl")
27
+ if @description.environment.system_type == "docker"
28
+ result = ServicesScope.new(
29
+ init_system: "none",
30
+ services: []
31
+ )
32
+ elsif @system.has_command?("systemctl")
28
33
  result = ServicesScope.new(
29
34
  init_system: "systemd",
30
35
  services: inspect_systemd_services
@@ -24,8 +24,7 @@ class UnmanagedFilesInspector < Inspector
24
24
  @system.check_requirement("sed", "--version")
25
25
  @system.check_requirement("cat", "--version")
26
26
  @system.check_requirement("find", "--version")
27
- @system.check_requirement("tar", "--version") if check_tar
28
- @system.check_requirement("gzip", "--version") if check_tar
27
+ @system.check_create_archive_dependencies if check_tar
29
28
  end
30
29
 
31
30
  # extract pathes from rpm database into ruby hashes
@@ -237,7 +236,7 @@ class UnmanagedFilesInspector < Inspector
237
236
  end
238
237
 
239
238
  helper = MachineryHelper.new(@system)
240
- if helper_usable?(helper, options)
239
+ if helper_usable?(helper)
241
240
  run_helper_inspection(helper, file_filter, do_extract, file_store_tmp, file_store_final,
242
241
  scope)
243
242
  else
@@ -245,18 +244,17 @@ class UnmanagedFilesInspector < Inspector
245
244
  end
246
245
  end
247
246
 
248
- def helper_usable?(helper, options)
247
+ def helper_usable?(helper)
249
248
  if !helper.can_help?
250
249
  Machinery::Ui.puts(
251
250
  "Note: Using traditional inspection because there is no helper binary for" \
252
251
  " architecture '#{@system.arch}' available."
253
252
  )
254
- elsif options[:remote_user] && options[:remote_user] != "root"
253
+ elsif @system.respond_to?(:remote_user) && @system.remote_user != "root"
255
254
  Machinery::Ui.puts(
256
255
  "Note: Using traditional inspection because only 'root' is supported as remote user."
257
256
  )
258
257
  else
259
- Machinery::Ui.puts "Note: Using helper binary for inspection of unmanaged files."
260
258
  return true
261
259
  end
262
260
 
@@ -266,37 +264,44 @@ class UnmanagedFilesInspector < Inspector
266
264
  def run_helper_inspection(helper, filter, do_extract, file_store_tmp, file_store_final, scope)
267
265
  begin
268
266
  helper.inject_helper
267
+ if !helper.has_compatible_version?
268
+ raise Machinery::Errors::UnsupportedHelperVersion.new(
269
+ "Error: machinery-helper is not compatible with this Machinery version." \
270
+ "\nTry to reinstall the package or gem to fix the issue."
271
+ )
272
+ end
273
+
269
274
  helper.run_helper(scope)
270
- ensure
271
- helper.remove_helper
272
- end
273
275
 
274
- scope.files.delete_if { |f| filter.matches?(f.name) }
276
+ scope.files.delete_if { |f| filter.matches?(f.name) }
275
277
 
276
- if do_extract
277
- mount_points = MountPoints.new(@system)
278
- excluded_trees = mount_points.remote + mount_points.special
278
+ if do_extract
279
+ mount_points = MountPoints.new(@system)
280
+ excluded_trees = mount_points.remote + mount_points.special
279
281
 
280
- file_store_tmp.remove
281
- file_store_tmp.create
282
+ file_store_tmp.remove
283
+ file_store_tmp.create
282
284
 
283
- files = scope.files.select { |f| f.file? || f.link? }.map(&:name)
284
- scope.retrieve_files_from_system_as_archive(@system, files, [])
285
- show_extraction_progress(files.count)
285
+ files = scope.files.select { |f| f.file? || f.link? }.map(&:name)
286
+ scope.retrieve_files_from_system_as_archive(@system, files, [])
287
+ show_extraction_progress(files.count)
286
288
 
287
- scope.retrieve_trees_from_system_as_archive(@system,
288
- scope.files.select(&:directory?).map(&:name), excluded_trees) do |count|
289
- show_extraction_progress(files.count + count)
290
- end
289
+ scope.retrieve_trees_from_system_as_archive(@system,
290
+ scope.files.select(&:directory?).map(&:name), excluded_trees) do |count|
291
+ show_extraction_progress(files.count + count)
292
+ end
291
293
 
292
- scope.files = extract_tar_metadata(scope.files, file_store_tmp.path)
293
- file_store_final.remove
294
- file_store_tmp.rename(file_store_final.store_name)
295
- scope.scope_file_store = file_store_final
296
- scope.extracted = true
297
- else
298
- file_store_final.remove
299
- scope.extracted = false
294
+ scope.files = extract_tar_metadata(scope.files, file_store_tmp.path)
295
+ file_store_final.remove
296
+ file_store_tmp.rename(file_store_final.store_name)
297
+ scope.scope_file_store = file_store_final
298
+ scope.extracted = true
299
+ else
300
+ file_store_final.remove
301
+ scope.extracted = false
302
+ end
303
+ ensure
304
+ helper.remove_helper
300
305
  end
301
306
 
302
307
  @description["unmanaged_files"] = scope
@@ -22,14 +22,20 @@ class UnmanagedFileList < Machinery::Array
22
22
  has_elements class: UnmanagedFile
23
23
 
24
24
  def compare_with(other)
25
- only_self = elements.reject do |element|
26
- other.elements.find { |other_element| files_match(element, other_element) }
25
+ self_hash = elements.inject({}) { |hash, e| hash[e.name] = e; hash }
26
+ other_hash = other.elements.inject({}) { |hash, e| hash[e.name] = e; hash }
27
+
28
+ both = []
29
+ only_self = []
30
+ elements.each do |element|
31
+ if other_hash.has_key?(element.name) && files_match(element, other_hash[element.name])
32
+ both << element
33
+ else
34
+ only_self << element
35
+ end
27
36
  end
28
37
  only_other = other.elements.reject do |element|
29
- elements.find { |other_element| files_match(element, other_element) }
30
- end
31
- both = elements.select do |element|
32
- other.elements.find { |other_element| files_match(element, other_element) }
38
+ self_hash.has_key?(element.name) && files_match(element, self_hash[element.name])
33
39
  end
34
40
 
35
41
  [
@@ -1,8 +1,6 @@
1
1
  docker_registry_config = "/etc/registry/config.yml"
2
2
  if system.runs_service?("registry") && system.has_file?(docker_registry_config)
3
3
  identify "docker-registry", "registry"
4
- volume = "registry:/registry"
5
- parameter "volumes", [volume]
6
4
  used_port = /.*:(\d\d\d\d+)/.match(system.read_config(docker_registry_config, "addr")).
7
5
  to_a.fetch(1, nil)
8
6
  port = "#{used_port}:5000"
@@ -1,5 +1,6 @@
1
1
  docker-registry:
2
2
  build: ./docker-registry
3
+ volumes:
4
+ - ./registry:/registry
3
5
  ports: :ports
4
- volumes: :volumes
5
6
  links: :links
@@ -3,7 +3,7 @@ FROM opensuse:13.2
3
3
  RUN zypper -n --gpg-auto-import-keys ar http://download.opensuse.org/repositories/Virtualization:/containers/openSUSE_13.2/ virt
4
4
  RUN zypper -n --gpg-auto-import-keys refresh
5
5
  RUN zypper -n --gpg-auto-import-keys update
6
- RUN zypper -n --gpg-auto-import-keys install docker docker-distribution-registry
6
+ RUN zypper -n --gpg-auto-import-keys install docker-distribution-registry
7
7
 
8
8
  ADD ./data/etc/registry /etc/registry
9
9
 
@@ -1,5 +1,6 @@
1
1
  if system.runs_service?("mysql")
2
2
  identify "mariadb", "db"
3
3
  parameter "user", "dbuser"
4
+ parameter "name", "defaultdb"
4
5
  parameter "password", SecureRandom.base64
5
6
  end
@@ -1,9 +1,9 @@
1
1
  mariadb:
2
2
  build: ./mariadb
3
3
  volumes:
4
- - mariadb/data:/var/lib/mysql
4
+ - ./mariadb/data:/var/lib/mysql
5
5
  environment:
6
6
  DB_ROOT_PASS:
7
7
  DB_USER: :user
8
8
  DB_PASS: :password
9
- DB_NAME:
9
+ DB_NAME: :name
@@ -2,4 +2,3 @@ rails:
2
2
  build: ./rails
3
3
  ports: :ports
4
4
  links: :links
5
- command: "/usr/sbin/apache2ctl -D FOREGROUND"
@@ -1,6 +1,5 @@
1
1
  FROM opensuse:13.2
2
2
 
3
- # see update.sh for why all "apt-get install"s have to stay as one long line
4
3
  RUN zypper -n --gpg-auto-import-keys refresh
5
4
  RUN zypper -n --gpg-auto-import-keys update
6
5
  RUN zypper -n --gpg-auto-import-keys install ca-certificates-mozilla \
@@ -28,14 +27,14 @@ RUN touch /etc/apache2/sysconfig.d/include.conf
28
27
  RUN gem install passenger -v 5.0.7
29
28
  RUN passenger-install-apache2-module.ruby2.1 -a
30
29
 
31
- #variable?
32
30
  RUN mkdir /srv/www/rails
33
31
  WORKDIR /srv/www/rails
34
32
  ADD ./data /srv/www/rails
33
+ RUN echo "gem: --no-ri --no-rdoc" > /srv/www/rails/.gemrc
35
34
  RUN chown -R wwwrun:www /srv/www/rails
36
35
 
37
36
  RUN bundle config build.nokogiri --use-system-libraries
38
- RUN bundle install
37
+ RUN bundle install --without test development
39
38
 
40
39
  ADD apache2/sysconfig_apache2 /etc/sysconfig/apache2
41
40
  ADD apache2/httpd.conf.local /etc/apache2/httpd.conf.local
@@ -43,6 +42,6 @@ ADD apache2/listen.conf /etc/apache2/listen.conf
43
42
  ADD apache2/rails_app_vhost.conf /etc/apache2/vhosts.d/
44
43
  RUN cat /etc/apache2/httpd.conf.local >> /etc/apache2/httpd.conf
45
44
 
46
- ENV COMPOSE=1
45
+ CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
47
46
 
48
47
  EXPOSE 3000
@@ -0,0 +1,13 @@
1
+ if system.runs_service?("apache2")
2
+ apache_vhosts = system["unmanaged_files"].files.select { |f| /vhosts\.d/ =~ f.name }.map(&:name)
3
+ apache_vhosts.each do |vhost|
4
+ root = system.read_config(vhost, "DocumentRoot")
5
+ if system.has_file?(File.join(root, "wp-config.php"))
6
+ identify "wordpress", "web"
7
+ parameter "ports", ["8000:8000"]
8
+ parameter "links", ["db"]
9
+ extract File.join(root, ""), "data"
10
+ break # for now we only handle the first wordpress that was found
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ wordpress:
2
+ build: ./wordpress
3
+ ports: :ports
4
+ links: :links
5
+ command: "/usr/sbin/apache2ctl -D FOREGROUND"
@@ -0,0 +1,38 @@
1
+ <?php
2
+ define('DB_NAME', getenv("DB_NAME"));
3
+ define('DB_USER', getenv("DB_USER"));
4
+ define('DB_PASSWORD', getenv("DB_PASS"));
5
+ define('DB_HOST', 'db');
6
+ define('DB_CHARSET', 'utf8');
7
+ define('DB_COLLATE', '');
8
+
9
+ /**#@+
10
+ * Authentication Unique Keys and Salts.
11
+ *
12
+ * Change these to different unique phrases!
13
+ * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
14
+ * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
15
+ *
16
+ * @since 2.6.0
17
+ */
18
+ define('AUTH_KEY', 'put your unique phrase here');
19
+ define('SECURE_AUTH_KEY', 'put your unique phrase here');
20
+ define('LOGGED_IN_KEY', 'put your unique phrase here');
21
+ define('NONCE_KEY', 'put your unique phrase here');
22
+ define('AUTH_SALT', 'put your unique phrase here');
23
+ define('SECURE_AUTH_SALT', 'put your unique phrase here');
24
+ define('LOGGED_IN_SALT', 'put your unique phrase here');
25
+ define('NONCE_SALT', 'put your unique phrase here');
26
+
27
+ $table_prefix = 'wp_';
28
+
29
+ define('WP_DEBUG', false);
30
+
31
+ /* That's all, stop editing! Happy blogging. */
32
+
33
+ /** Absolute path to the WordPress directory. */
34
+ if ( !defined('ABSPATH') )
35
+ define('ABSPATH', dirname(__FILE__) . '/');
36
+
37
+ /** Sets up WordPress vars and included files. */
38
+ require_once(ABSPATH . 'wp-settings.php');
@@ -0,0 +1,25 @@
1
+ FROM opensuse:13.2
2
+
3
+ # see update.sh for why all "apt-get install"s have to stay as one long line
4
+ RUN zypper -n --gpg-auto-import-keys refresh
5
+ RUN zypper -n --gpg-auto-import-keys update
6
+ RUN zypper -n --gpg-auto-import-keys install apache2-devel \
7
+ mariadb-client \
8
+ libmysqlclient-devel \
9
+ php5 \
10
+ php5-mcrypt \
11
+ php5-gd \
12
+ php5-mysql \
13
+ apache2-mod_php5 \
14
+ which
15
+
16
+ RUN touch /etc/apache2/sysconfig.d/include.conf
17
+
18
+ RUN mkdir /srv/www/wordpress
19
+ WORKDIR /srv/www/wordpress
20
+ ADD ./data /srv/www/wordpress
21
+
22
+ ADD apache2/listen.conf /etc/apache2/listen.conf
23
+ ADD apache2/wordpress_vhost.conf /etc/apache2/vhosts.d/
24
+ RUN echo "LoadModule php5_module /usr/lib64/apache2/mod_php5.so" >> /etc/apache2/sysconfig.d/loadmodule.conf
25
+ RUN echo "variables_order = 'GPCSE'" >> /etc/php5/cli/php.ini
@@ -0,0 +1 @@
1
+ Listen 8000
@@ -0,0 +1,21 @@
1
+ <VirtualHost *:8000>
2
+ DocumentRoot /srv/www/wordpress
3
+ <Directory /srv/www/wordpress/>
4
+ Options Indexes FollowSymLinks MultiViews
5
+ AllowOverride None
6
+ Order allow,deny
7
+ Allow from all
8
+ Require all granted
9
+ </Directory>
10
+ <IfModule mod_php5.c>
11
+ <FilesMatch "\.ph(p[345]?|tml)$">
12
+ SetHandler application/x-httpd-php
13
+ </FilesMatch>
14
+ <FilesMatch "\.php[345]?s$">
15
+ SetHandler application/x-httpd-php-source
16
+ </FilesMatch>
17
+ DirectoryIndex index.php4
18
+ DirectoryIndex index.php5
19
+ DirectoryIndex index.php
20
+ </IfModule>
21
+ </VirtualHost>
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright (c) 2015 SUSE LLC
3
+ #
4
+ # This program is free software; you can redistribute it and/or
5
+ # modify it under the terms of version 3 of the GNU General Public License as
6
+ # published by the Free Software Foundation.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program; if not, contact SUSE LLC.
15
+ #
16
+ # To contact SUSE about this file by physical or electronic mail,
17
+ # you may find current contact information at www.suse.com
18
+ require 'docker'
19
+ require 'json'
20
+
21
+ app_name = "<%= @name %>"
22
+ web_env_vars = <%= @services["web"]["environment"].to_a.map { |ar| ar.join("=") } %>
23
+ db_env_vars = <%= @services["db"]["environment"].to_a.map { |ar| ar.join("=") } %>
24
+ db_workload = "<%= @workloads.find { |_, config| config["service"] == "db" }.first %>"
25
+
26
+ def find_image(name)
27
+ Docker::Image.get(name)
28
+ rescue
29
+ return false
30
+ end
31
+
32
+ def build_image(path, name)
33
+ if find_image(name)
34
+ puts "Found #{name} image, not building again"
35
+ else
36
+ puts "Building image #{name}"
37
+ Docker::Image.build_from_dir(path, t: name) do |output|
38
+ print JSON.parse(output)["stream"]
39
+ end
40
+ end
41
+ end
42
+
43
+ puts "Setting up #{db_workload}"
44
+ if File.exists?("#{Dir.pwd}/#{db_workload}/data/configured.txt")
45
+ puts "Exiting as database has already been configured.\n" \
46
+ "If you want to re run the configuration just remove the files in #{Dir.pwd}/#{db_workload}/data/"
47
+ exit 1
48
+ end
49
+
50
+ db_image = "#{app_name}_db"
51
+ build_image("./#{db_workload}", db_image)
52
+
53
+ volumes = ["#{Dir.pwd}/#{db_workload}/data:/var/lib/mysql"]
54
+ db = Docker::Container.create("Image" => db_image, "name" => "#{db_image}_0", "Env" => db_env_vars, "Binds" => volumes, "Tty" => true, "Stream" => true)
55
+ db.tap(&:start).attach(tty: true) { |output| print output }
56
+
57
+ web_image = "#{app_name}_web"
58
+ build_image("./wordpress", web_image)
59
+
60
+ db.start
61
+
62
+ puts "Stopping db service"
63
+ db.kill
64
+
65
+ puts "removing containers"
66
+ db.remove
67
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: machinery-tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SUSE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cheetah
@@ -227,9 +227,11 @@ email:
227
227
  - machinery@lists.suse.com
228
228
  executables:
229
229
  - machinery
230
- extensions: []
230
+ extensions:
231
+ - machinery-helper/Rakefile
231
232
  extra_rdoc_files: []
232
233
  files:
234
+ - ".git_revision"
233
235
  - COPYING
234
236
  - NEWS
235
237
  - bin/machinery
@@ -239,11 +241,8 @@ files:
239
241
  - export_helpers/merge_users_and_groups.pl.erb
240
242
  - export_helpers/unmanaged_files_autoyast_excludes
241
243
  - export_helpers/unmanaged_files_kiwi_excludes
242
- - helpers/changed_files.sh
243
- - helpers/default_filters.json
244
- - helpers/filter-packages-for-build.yaml
245
- - helpers/inspector_files.rb
246
- - helpers/yum_repositories.py
244
+ - filters/default_filters.json
245
+ - filters/filter-packages-for-build.yaml
247
246
  - html/assets/angular-sanitize.min.js
248
247
  - html/assets/angular.min.js
249
248
  - html/assets/arrow_down.png
@@ -286,6 +285,8 @@ files:
286
285
  - html/assets/wheels_horizontal.png
287
286
  - html/comparison.html.haml
288
287
  - html/index.html.haml
288
+ - inspect_helpers/changed_files.sh
289
+ - inspect_helpers/yum_repositories.py
289
290
  - lib/analyze_config_file_diffs_task.rb
290
291
  - lib/array.rb
291
292
  - lib/autoyast.rb
@@ -303,6 +304,7 @@ files:
303
304
  - lib/copy_task.rb
304
305
  - lib/current_user.rb
305
306
  - lib/deploy_task.rb
307
+ - lib/docker_system.rb
306
308
  - lib/element_filter.rb
307
309
  - lib/exceptions.rb
308
310
  - lib/export_task.rb
@@ -330,6 +332,7 @@ files:
330
332
  - lib/manifest.rb
331
333
  - lib/migration.rb
332
334
  - lib/mountpoints.rb
335
+ - lib/move_task.rb
333
336
  - lib/object.rb
334
337
  - lib/remote_system.rb
335
338
  - lib/remove_task.rb
@@ -356,6 +359,14 @@ files:
356
359
  - lib/workload_mapper.rb
357
360
  - lib/workload_mapper_dsl.rb
358
361
  - lib/zypper.rb
362
+ - machinery-helper/README.md
363
+ - machinery-helper/Rakefile
364
+ - machinery-helper/machinery_helper.go
365
+ - machinery-helper/machinery_helper_test.go
366
+ - machinery-helper/mountpoints.go
367
+ - machinery-helper/mountpoints_test.go
368
+ - machinery-helper/tar.go
369
+ - machinery-helper/version.go
359
370
  - man/generated/machinery.1.gz
360
371
  - man/generated/machinery.1.html
361
372
  - plugins/changed_managed_files/changed_managed_files.md
@@ -478,6 +489,13 @@ files:
478
489
  - workload_mapper/rails/container/apache2/rails_app_vhost.conf
479
490
  - workload_mapper/rails/container/apache2/sysconfig_apache2
480
491
  - workload_mapper/rails/setup/setup.rb.erb
492
+ - workload_mapper/wordpress/clue.rb
493
+ - workload_mapper/wordpress/compose-template.yml
494
+ - workload_mapper/wordpress/config/wp-config.php
495
+ - workload_mapper/wordpress/container/Dockerfile
496
+ - workload_mapper/wordpress/container/apache2/listen.conf
497
+ - workload_mapper/wordpress/container/apache2/wordpress_vhost.conf
498
+ - workload_mapper/wordpress/setup/setup.rb.erb
481
499
  homepage: http://machinery-project.org
482
500
  licenses:
483
501
  - GPL-3.0
@@ -1,52 +0,0 @@
1
- # Copyright (c) 2013-2015 SUSE LLC
2
- #
3
- # This program is free software; you can redistribute it and/or
4
- # modify it under the terms of version 3 of the GNU General Public License as
5
- # published by the Free Software Foundation.
6
- #
7
- # This program is distributed in the hope that it will be useful,
8
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
- # GNU General Public License for more details.
11
- #
12
- # You should have received a copy of the GNU General Public License
13
- # along with this program; if not, contact SUSE LLC.
14
- #
15
- # To contact SUSE about this file by physical or electronic mail,
16
- # you may find current contact information at www.suse.com
17
-
18
-
19
- # This script creates reference data for integration tests
20
- # by inspecting existing machines.
21
- # Therefor it generates files with information of each scope.
22
-
23
- # Usage: rake inspector_files[ip-adress,distribution]
24
-
25
- require "fileutils"
26
- require "cheetah"
27
-
28
- class ReferenceTestData
29
- def initialize
30
- @machinery = File.expand_path("../bin/machinery", File.dirname(__FILE__))
31
- @test_data_path = File.expand_path("../spec/data/", File.dirname(__FILE__))
32
- end
33
-
34
- def inspect(ip_adress)
35
- Cheetah.run(@machinery, "inspect", ip_adress, "-n", "referencetestdata", stdout: :capture)
36
- end
37
-
38
- def write(destination)
39
- Inspector.all_scopes.each do |inspector|
40
- output = Cheetah.run(
41
- @machinery, "show", destination, "-s", inspector.gsub("_", "-"),
42
- "referencetestdata", stdout: :capture
43
- )
44
- File.write(file_path(inspector, destination), output)
45
- end
46
- end
47
-
48
- def file_path(inspector, destination)
49
- FileUtils.mkdir_p("#{@test_data_path}/#{inspector}")
50
- File.join(@test_data_path, inspector, destination)
51
- end
52
- end