puppet_generator 0.5.4
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.
- data/.gitignore +17 -0
- data/.rdebugrc +7 -0
- data/.rspec +2 -0
- data/.simplecov +8 -0
- data/.travis.yml +6 -0
- data/.yardopts +5 -0
- data/CONTRIBUTING.md +8 -0
- data/Gemfile +34 -0
- data/LICENSE.md +22 -0
- data/README.DEVELOPER.md +11 -0
- data/README.md +477 -0
- data/Rakefile +3 -0
- data/TODO.md +2 -0
- data/bin/ppgen +16 -0
- data/cucumber.yml +2 -0
- data/features/generate_file_definition.feature +357 -0
- data/features/generate_module_directories.feature +36 -0
- data/features/generate_package_definition.feature +206 -0
- data/features/generate_role_definitions.feature +64 -0
- data/features/generate_user_definition.feature +193 -0
- data/features/list.feature +22 -0
- data/features/log_actions.feature +93 -0
- data/features/step_definitions.rb +3 -0
- data/features/support/env.rb +7 -0
- data/features/tasks.feature +25 -0
- data/gemfiles/Gemfile.default +34 -0
- data/gemfiles/Gemfile.travis +17 -0
- data/lib/puppet_generator/actions/copy_files_to_module_directory.rb +23 -0
- data/lib/puppet_generator/actions/null.rb +9 -0
- data/lib/puppet_generator/api.rb +108 -0
- data/lib/puppet_generator/definition.rb +10 -0
- data/lib/puppet_generator/entry_converters/file.rb +9 -0
- data/lib/puppet_generator/entry_converters/package.rb +9 -0
- data/lib/puppet_generator/entry_converters/role.rb +9 -0
- data/lib/puppet_generator/entry_converters/user.rb +9 -0
- data/lib/puppet_generator/exceptions.rb +104 -0
- data/lib/puppet_generator/export_filters/build_role_includes_for_directory.rb +35 -0
- data/lib/puppet_generator/export_filters/filesystem_attributes.rb +57 -0
- data/lib/puppet_generator/export_filters/null.rb +9 -0
- data/lib/puppet_generator/exporters/directory.rb +23 -0
- data/lib/puppet_generator/exporters/file.rb +17 -0
- data/lib/puppet_generator/exporters/stdout.rb +16 -0
- data/lib/puppet_generator/import_filters/null.rb +9 -0
- data/lib/puppet_generator/import_filters/passwd.rb +22 -0
- data/lib/puppet_generator/import_filters/yaml.rb +20 -0
- data/lib/puppet_generator/importers/directory.rb +21 -0
- data/lib/puppet_generator/importers/file.rb +17 -0
- data/lib/puppet_generator/importers/stdin.rb +16 -0
- data/lib/puppet_generator/logger.rb +62 -0
- data/lib/puppet_generator/main.rb +36 -0
- data/lib/puppet_generator/middleware/apply_export_filters.rb +33 -0
- data/lib/puppet_generator/middleware/check_for_empty_source.rb +16 -0
- data/lib/puppet_generator/middleware/configure_logging.rb +30 -0
- data/lib/puppet_generator/middleware/create_module_directories.rb +42 -0
- data/lib/puppet_generator/middleware/create_output.rb +46 -0
- data/lib/puppet_generator/middleware/create_puppet_object_from_entry.rb +24 -0
- data/lib/puppet_generator/middleware/enable_debugging_libraries.rb +15 -0
- data/lib/puppet_generator/middleware/execute_actions.rb +34 -0
- data/lib/puppet_generator/middleware/filter_imported_data.rb +22 -0
- data/lib/puppet_generator/middleware/handle_errors.rb +62 -0
- data/lib/puppet_generator/middleware/output_debug_information_for_models.rb +21 -0
- data/lib/puppet_generator/middleware/read_input.rb +27 -0
- data/lib/puppet_generator/models/action.rb +36 -0
- data/lib/puppet_generator/models/base.rb +115 -0
- data/lib/puppet_generator/models/class_based_model.rb +56 -0
- data/lib/puppet_generator/models/entry_converter.rb +39 -0
- data/lib/puppet_generator/models/error_message.rb +60 -0
- data/lib/puppet_generator/models/export_filter.rb +44 -0
- data/lib/puppet_generator/models/exporter.rb +51 -0
- data/lib/puppet_generator/models/filesystem_based_model.rb +63 -0
- data/lib/puppet_generator/models/import_filter.rb +44 -0
- data/lib/puppet_generator/models/importer.rb +52 -0
- data/lib/puppet_generator/models/logger.rb +11 -0
- data/lib/puppet_generator/models/template.rb +120 -0
- data/lib/puppet_generator/puppet_helper.rb +19 -0
- data/lib/puppet_generator/puppet_objects/file.rb +29 -0
- data/lib/puppet_generator/puppet_objects/package.rb +24 -0
- data/lib/puppet_generator/puppet_objects/role.rb +27 -0
- data/lib/puppet_generator/puppet_objects/user.rb +27 -0
- data/lib/puppet_generator/setup/bare.rb +25 -0
- data/lib/puppet_generator/setup/default_actions.rb +9 -0
- data/lib/puppet_generator/setup/default_entry_converter.rb +8 -0
- data/lib/puppet_generator/setup/default_error_messages.rb +10 -0
- data/lib/puppet_generator/setup/default_export_filter.rb +9 -0
- data/lib/puppet_generator/setup/default_exporter.rb +11 -0
- data/lib/puppet_generator/setup/default_import_filter.rb +10 -0
- data/lib/puppet_generator/setup/default_importer.rb +10 -0
- data/lib/puppet_generator/setup/file.rb +29 -0
- data/lib/puppet_generator/setup/module.rb +22 -0
- data/lib/puppet_generator/setup/package.rb +27 -0
- data/lib/puppet_generator/setup/role.rb +28 -0
- data/lib/puppet_generator/setup/user.rb +27 -0
- data/lib/puppet_generator/task.rb +39 -0
- data/lib/puppet_generator/ui/commandline_parser_helper.rb +31 -0
- data/lib/puppet_generator/ui/create.rb +59 -0
- data/lib/puppet_generator/ui/runner.rb +23 -0
- data/lib/puppet_generator/ui/tasks.rb +16 -0
- data/lib/puppet_generator/version.rb +4 -0
- data/lib/puppet_generator.rb +79 -0
- data/puppet_generator.gemspec +35 -0
- data/rakefiles/default.rake +3 -0
- data/rakefiles/travis.rake +3 -0
- data/script/console +8 -0
- data/script/terminal +16 -0
- data/spec/examples/actions/missing_method.rb +7 -0
- data/spec/examples/apply_export_filters/file.txt +0 -0
- data/spec/examples/entry_converters/missing_method.rb +7 -0
- data/spec/examples/execute_actions/file.txt +0 -0
- data/spec/examples/export_filter/invalid_filter_1.rb +8 -0
- data/spec/examples/export_filter/invalid_filter_2.rb +7 -0
- data/spec/examples/export_filter/missing_method.rb +7 -0
- data/spec/examples/exporter/missing_method.rb +7 -0
- data/spec/examples/exporter/test.d/.gitkeep +0 -0
- data/spec/examples/exporter/test_file.txt +1 -0
- data/spec/examples/import_filter/forbidden_keyword.rb +0 -0
- data/spec/examples/import_filter/invalid_filter_1.rb +8 -0
- data/spec/examples/import_filter/invalid_filter_2.rb +7 -0
- data/spec/examples/import_filter/missing_method.rb +7 -0
- data/spec/examples/importer/missing_method.rb +7 -0
- data/spec/examples/importer/test.d/.gitkeep +0 -0
- data/spec/examples/importer/test_file.txt +1 -0
- data/spec/examples/templates/invalid_template.pp.erb +1 -0
- data/spec/examples/templates/missing_method.rb +7 -0
- data/spec/export_filters/build_role_includes_for_directory_spec.rb +39 -0
- data/spec/middleware/apply_export_filters_spec.rb +45 -0
- data/spec/middleware/execute_actions_spec.rb +44 -0
- data/spec/middleware/handle_errors_spec.rb +12 -0
- data/spec/models/action_spec.rb +37 -0
- data/spec/models/entry_converter_spec.rb +59 -0
- data/spec/models/error_message_spec.rb +78 -0
- data/spec/models/export_filter_spec.rb +36 -0
- data/spec/models/exporter_spec.rb +71 -0
- data/spec/models/import_filter_spec.rb +33 -0
- data/spec/models/importer_spec.rb +66 -0
- data/spec/models/template_spec.rb +47 -0
- data/spec/puppet_generator_spec.rb +7 -0
- data/spec/setup/role_spec.rb +22 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/filesystem_helper.rb +12 -0
- data/spec/support/libraries.rb +10 -0
- data/spec/support/rspec_configuration.rb +5 -0
- data/templates/puppet/many_per_file/file.pp.erb +16 -0
- data/templates/puppet/many_per_file/package.pp.erb +10 -0
- data/templates/puppet/many_per_file/role.pp.erb +7 -0
- data/templates/puppet/many_per_file/user.pp.erb +23 -0
- data/templates/puppet/one_per_file/file.pp.erb +14 -0
- data/templates/puppet/one_per_file/package.pp.erb +8 -0
- data/templates/puppet/one_per_file/role.pp.erb +5 -0
- data/templates/puppet/one_per_file/user.pp.erb +21 -0
- metadata +374 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module PuppetGenerator
|
|
2
|
+
module Ui
|
|
3
|
+
class Create < Thor
|
|
4
|
+
def self.exit_on_failure?
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
|
|
9
|
+
method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
|
|
10
|
+
method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
|
|
11
|
+
method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
|
|
12
|
+
method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
|
|
13
|
+
method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
|
|
14
|
+
desc 'package', 'generate package definitions'
|
|
15
|
+
def package
|
|
16
|
+
PuppetGenerator::Api.new.generate_package_definition(options)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
|
|
20
|
+
method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
|
|
21
|
+
method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
|
|
22
|
+
method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
|
|
23
|
+
method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
|
|
24
|
+
method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
|
|
25
|
+
desc 'file', 'generate file definitions'
|
|
26
|
+
def file
|
|
27
|
+
PuppetGenerator::Api.new.generate_file_definition(options)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
|
|
31
|
+
method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
|
|
32
|
+
method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
|
|
33
|
+
method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
|
|
34
|
+
method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
|
|
35
|
+
method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
|
|
36
|
+
desc 'user', 'generate user definitions'
|
|
37
|
+
def user
|
|
38
|
+
PuppetGenerator::Api.new.generate_user_definition(options)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
desc 'module', 'creates all files needed to build a module'
|
|
42
|
+
def module
|
|
43
|
+
PuppetGenerator::Api.new.generate_module(options)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
method_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
|
|
47
|
+
method_option :import_filter, Ui::CommandlineParserHelper.subcommand_options[:import_filter]
|
|
48
|
+
method_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
|
|
49
|
+
method_option :action, Ui::CommandlineParserHelper.subcommand_options[:action]
|
|
50
|
+
method_option :template_tagged_with, Ui::CommandlineParserHelper.subcommand_options[:template_tagged_with]
|
|
51
|
+
method_option :export_filter, Ui::CommandlineParserHelper.subcommand_options[:export_filter]
|
|
52
|
+
desc 'role', 'generate role definitions'
|
|
53
|
+
def role
|
|
54
|
+
PuppetGenerator::Api.new.generate_role_definition(options)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module PuppetGenerator
|
|
2
|
+
module Ui
|
|
3
|
+
class Runner < Thor
|
|
4
|
+
def self.exit_on_failure?
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class_option :module, Ui::CommandlineParserHelper.runner_options[:module]
|
|
9
|
+
class_option :class, Ui::CommandlineParserHelper.runner_options[:class]
|
|
10
|
+
class_option :debug, Ui::CommandlineParserHelper.runner_options[:debug]
|
|
11
|
+
class_option :silent, Ui::CommandlineParserHelper.runner_options[:silent]
|
|
12
|
+
|
|
13
|
+
desc "create <type>", "Create puppet dsl. Available types: #{Ui::CommandlineParserHelper.pretty_subcommands(Create.tasks)}"
|
|
14
|
+
subcommand :create, Create
|
|
15
|
+
|
|
16
|
+
# desc "list <resource>", "List instances for a given resource. Available resources are: #{Ui::CommandlineParserHelper.pretty_subcommands(List.tasks)}"
|
|
17
|
+
# subcommand :list, List
|
|
18
|
+
|
|
19
|
+
desc "tasks <task>", "Run command with predefined options. Available tasks: #{Ui::CommandlineParserHelper.pretty_subcommands(Tasks.tasks)}"
|
|
20
|
+
subcommand :tasks, Tasks
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module PuppetGenerator
|
|
2
|
+
module Ui
|
|
3
|
+
class Tasks < Thor
|
|
4
|
+
def self.exit_on_failure?
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class_option :source, Ui::CommandlineParserHelper.subcommand_options[:source]
|
|
9
|
+
class_option :destination, Ui::CommandlineParserHelper.subcommand_options[:destination]
|
|
10
|
+
desc "create_roles_in_directory", "Search directory for directories and generate role puppet definition for found .pp-files"
|
|
11
|
+
def create_roles_in_directory
|
|
12
|
+
PuppetGenerator::Ui::Runner.start( %W[create role --export-filter build_role_includes_for_directory --source #{options[:source]} --destination #{options[:destination]}] )
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
require 'erubis'
|
|
3
|
+
require 'middleware'
|
|
4
|
+
require 'find'
|
|
5
|
+
require 'logger'
|
|
6
|
+
require 'pathname'
|
|
7
|
+
require 'ansi'
|
|
8
|
+
require 'etc'
|
|
9
|
+
require 'psych'
|
|
10
|
+
require 'fileutils'
|
|
11
|
+
#require 'hirb'
|
|
12
|
+
require 'forwardable'
|
|
13
|
+
require 'set'
|
|
14
|
+
#require 'active_support/core_ext/object/blank'
|
|
15
|
+
require 'active_support/core_ext/string/inflections'
|
|
16
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
|
17
|
+
require 'fedux_org/stdlib/models'
|
|
18
|
+
require 'thor'
|
|
19
|
+
|
|
20
|
+
require 'puppet_generator/main'
|
|
21
|
+
require 'puppet_generator/version'
|
|
22
|
+
require 'puppet_generator/exceptions'
|
|
23
|
+
|
|
24
|
+
require 'puppet_generator/logger'
|
|
25
|
+
require 'puppet_generator/ui/commandline_parser_helper'
|
|
26
|
+
require 'puppet_generator/ui/create'
|
|
27
|
+
require 'puppet_generator/ui/tasks'
|
|
28
|
+
require 'puppet_generator/ui/runner'
|
|
29
|
+
|
|
30
|
+
require 'puppet_generator/puppet_helper'
|
|
31
|
+
|
|
32
|
+
require 'puppet_generator/models/base'
|
|
33
|
+
require 'puppet_generator/models/filesystem_based_model'
|
|
34
|
+
require 'puppet_generator/models/class_based_model'
|
|
35
|
+
require 'puppet_generator/models/error_message'
|
|
36
|
+
require 'puppet_generator/models/importer'
|
|
37
|
+
require 'puppet_generator/models/exporter'
|
|
38
|
+
require 'puppet_generator/models/export_filter'
|
|
39
|
+
require 'puppet_generator/models/import_filter'
|
|
40
|
+
require 'puppet_generator/models/action'
|
|
41
|
+
require 'puppet_generator/models/template'
|
|
42
|
+
require 'puppet_generator/models/logger'
|
|
43
|
+
require 'puppet_generator/models/entry_converter'
|
|
44
|
+
|
|
45
|
+
require 'puppet_generator/setup/bare'
|
|
46
|
+
require 'puppet_generator/setup/default_importer'
|
|
47
|
+
require 'puppet_generator/setup/default_error_messages'
|
|
48
|
+
require 'puppet_generator/setup/default_actions'
|
|
49
|
+
require 'puppet_generator/setup/default_import_filter'
|
|
50
|
+
require 'puppet_generator/setup/default_exporter'
|
|
51
|
+
require 'puppet_generator/setup/default_export_filter'
|
|
52
|
+
require 'puppet_generator/setup/file'
|
|
53
|
+
require 'puppet_generator/setup/package'
|
|
54
|
+
require 'puppet_generator/setup/user'
|
|
55
|
+
require 'puppet_generator/setup/module'
|
|
56
|
+
require 'puppet_generator/setup/role'
|
|
57
|
+
|
|
58
|
+
require 'puppet_generator/puppet_objects/package'
|
|
59
|
+
require 'puppet_generator/puppet_objects/file'
|
|
60
|
+
require 'puppet_generator/puppet_objects/user'
|
|
61
|
+
require 'puppet_generator/puppet_objects/role'
|
|
62
|
+
|
|
63
|
+
require 'puppet_generator/definition'
|
|
64
|
+
require 'puppet_generator/task'
|
|
65
|
+
require 'puppet_generator/middleware/handle_errors'
|
|
66
|
+
require 'puppet_generator/middleware/check_for_empty_source'
|
|
67
|
+
require 'puppet_generator/middleware/read_input'
|
|
68
|
+
require 'puppet_generator/middleware/create_output'
|
|
69
|
+
require 'puppet_generator/middleware/enable_debugging_libraries'
|
|
70
|
+
require 'puppet_generator/middleware/create_puppet_object_from_entry'
|
|
71
|
+
require 'puppet_generator/middleware/configure_logging'
|
|
72
|
+
require 'puppet_generator/middleware/filter_imported_data'
|
|
73
|
+
require 'puppet_generator/middleware/apply_export_filters'
|
|
74
|
+
require 'puppet_generator/middleware/create_module_directories'
|
|
75
|
+
require 'puppet_generator/middleware/execute_actions'
|
|
76
|
+
require 'puppet_generator/middleware/output_debug_information_for_models'
|
|
77
|
+
require 'puppet_generator/api'
|
|
78
|
+
|
|
79
|
+
module PuppetGenerator; end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'puppet_generator/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "puppet_generator"
|
|
8
|
+
spec.version = PuppetGenerator::VERSION
|
|
9
|
+
spec.authors = ["Max Meyer"]
|
|
10
|
+
spec.email = ["dev@fedux.org"]
|
|
11
|
+
spec.summary = %q{Generate puppet manifests}
|
|
12
|
+
spec.description = <<-DESC
|
|
13
|
+
If you need to build more than one puppet manifests it is quite boring to
|
|
14
|
+
redo the same steps every time. This gem helps you to generate puppet manifests
|
|
15
|
+
for packages, files/directories etc.
|
|
16
|
+
DESC
|
|
17
|
+
spec.homepage = "https://github.com/maxmeyer/puppet_generator"
|
|
18
|
+
spec.license = "MIT"
|
|
19
|
+
|
|
20
|
+
spec.files = `git ls-files`.split($/)
|
|
21
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
22
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
23
|
+
spec.require_paths = ["lib"]
|
|
24
|
+
|
|
25
|
+
spec.add_dependency "middleware"
|
|
26
|
+
spec.add_dependency "ansi"
|
|
27
|
+
spec.add_dependency "erubis"
|
|
28
|
+
#spec.add_dependency "logging4hackers"
|
|
29
|
+
spec.add_dependency "activesupport"
|
|
30
|
+
spec.add_dependency "fedux_org-stdlib"
|
|
31
|
+
spec.add_dependency "thor"
|
|
32
|
+
|
|
33
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
|
34
|
+
spec.add_development_dependency "rake"
|
|
35
|
+
end
|
data/script/console
ADDED
data/script/terminal
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'tmrb'
|
|
4
|
+
|
|
5
|
+
tmux = TmRb::Multiplexer.new
|
|
6
|
+
#creates an empty window
|
|
7
|
+
tmux.new_session(:session_name => "puppet_generator")
|
|
8
|
+
|
|
9
|
+
tmux.new_window(:name => 'lib', :command => 'vim -c \"NERDTree lib/puppet_generator/\"')
|
|
10
|
+
tmux.new_window(:name => 'middleware', :command => 'vim -c \"NERDTree lib/puppet_generator/middleware\"')
|
|
11
|
+
tmux.new_window(:name => 'templates', :command => 'vim -c \"NERDTree lib/puppet_generator/templates/\"')
|
|
12
|
+
tmux.new_window(:name => 'actions', :command => 'vim -c \"NERDTree lib/puppet_generator/actions/\"')
|
|
13
|
+
tmux.new_window(:name => 'filter', :command => 'vim -c \"NERDTree lib/puppet_generator/filter\"')
|
|
14
|
+
tmux.new_window(:name => 'spec', :command => 'vim -c \"NERDTree spec\"')
|
|
15
|
+
tmux.new_window(:name => 'features', :command => 'vim -c \"NERDTree features\"')
|
|
16
|
+
tmux.start
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
asdf
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
asdf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= asdf %>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
require 'puppet_generator/export_filters/build_role_includes_for_directory'
|
|
4
|
+
|
|
5
|
+
describe ExportFilters::BuildRoleIncludesForDirectory do
|
|
6
|
+
|
|
7
|
+
it "returns includes for directory" do
|
|
8
|
+
create_directory 'test'
|
|
9
|
+
create_file 'test/file1.pp'
|
|
10
|
+
create_file 'test/file2.pp'
|
|
11
|
+
create_file 'test/file3.pp'
|
|
12
|
+
|
|
13
|
+
create_directory 'test/dir1'
|
|
14
|
+
create_file 'test/dir1/file1.pp'
|
|
15
|
+
create_file 'test/dir1/file2.pp'
|
|
16
|
+
create_file 'test/dir1/file3.pp'
|
|
17
|
+
|
|
18
|
+
objects = [
|
|
19
|
+
{
|
|
20
|
+
name: 'test',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'test/dir1',
|
|
24
|
+
},
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
switch_to_working_directory do
|
|
28
|
+
filter = ExportFilters::BuildRoleIncludesForDirectory.new
|
|
29
|
+
expect(filter.convert(objects)).to eq(
|
|
30
|
+
[
|
|
31
|
+
{:name=>"test", :includes=>["file1", "file2", "file3"]},
|
|
32
|
+
{:name=>"test/dir1", :includes=>["file1", "file2", "file3"]}
|
|
33
|
+
]
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PuppetGenerator::Middleware::ApplyExportFilters do
|
|
4
|
+
|
|
5
|
+
before(:all) {
|
|
6
|
+
Models::ExportFilter.init
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
it "run filter" do
|
|
10
|
+
test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
|
|
11
|
+
FileUtils.chmod(0644, test_file )
|
|
12
|
+
|
|
13
|
+
user = ENV['USER']
|
|
14
|
+
|
|
15
|
+
task = double( 'task' )
|
|
16
|
+
task.stub( :body ).and_return( [ { name: test_file } ])
|
|
17
|
+
task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes ] } )
|
|
18
|
+
task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
|
|
19
|
+
|
|
20
|
+
app = double('app')
|
|
21
|
+
app.stub(:call)
|
|
22
|
+
|
|
23
|
+
mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
|
|
24
|
+
result = mw.call(task)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "run multiple filters" do
|
|
28
|
+
test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
|
|
29
|
+
FileUtils.chmod(0644, test_file )
|
|
30
|
+
|
|
31
|
+
user = ENV['USER']
|
|
32
|
+
|
|
33
|
+
task = double( 'task' )
|
|
34
|
+
task.stub( :body ).and_return( [ { name: test_file } ])
|
|
35
|
+
task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes , :null ] } )
|
|
36
|
+
task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
|
|
37
|
+
|
|
38
|
+
app = double('app')
|
|
39
|
+
app.stub(:call)
|
|
40
|
+
|
|
41
|
+
mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
|
|
42
|
+
result = mw.call(task)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PuppetGenerator::Middleware::ExecuteActions do
|
|
4
|
+
|
|
5
|
+
before(:all) {
|
|
6
|
+
Models::Action.init
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
it "run action" do
|
|
10
|
+
test_file = File.join( examples_dir, 'execute_actions', 'file.txt' )
|
|
11
|
+
user = ENV['USER']
|
|
12
|
+
|
|
13
|
+
task = double( 'task' )
|
|
14
|
+
task.stub( :body ).and_return( [ { name: test_file } ])
|
|
15
|
+
task.stub( :meta ).and_return( { requested_actions: [ :copy_files_to_module_directory ], module: 'test' } )
|
|
16
|
+
task.should_receive( :body= ).with( [ { :name => File.expand_path('../../examples/execute_actions/file.txt', __FILE__ ), :source => "puppet:///modules/test#{File.expand_path('../../examples/execute_actions/file.txt', __FILE__ )}" } ] )
|
|
17
|
+
|
|
18
|
+
app = double('app')
|
|
19
|
+
app.stub(:call)
|
|
20
|
+
|
|
21
|
+
mw = PuppetGenerator::Middleware::ExecuteActions.new(app)
|
|
22
|
+
|
|
23
|
+
switch_to_working_directory do
|
|
24
|
+
result = mw.call(task)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# it "run multiple filters" do
|
|
29
|
+
# test_file = File.join( examples_dir, 'apply_export_filters', 'file.txt' )
|
|
30
|
+
# user = ENV['USER']
|
|
31
|
+
#
|
|
32
|
+
# task = double( 'task' )
|
|
33
|
+
# task.stub( :body ).and_return( [ { name: test_file } ])
|
|
34
|
+
# task.stub( :meta ).and_return( { requested_export_filter: [ :filesystem_attributes , :null ] } )
|
|
35
|
+
# task.should_receive( :body= ).with( [ {:name => test_file, :type => "file", :owner => user, :mode => "100644"} ] )
|
|
36
|
+
#
|
|
37
|
+
# app = double('app')
|
|
38
|
+
# app.stub(:call)
|
|
39
|
+
#
|
|
40
|
+
# mw = PuppetGenerator::Middleware::ApplyExportFilters.new(app)
|
|
41
|
+
# result = mw.call(task)
|
|
42
|
+
# end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe PuppetGenerator::Middleware::HandleErrors do
|
|
4
|
+
|
|
5
|
+
it "raises an exception if error message is unknown" do
|
|
6
|
+
mw = PuppetGenerator::Middleware::HandleErrors.new('asdf')
|
|
7
|
+
expect {
|
|
8
|
+
mw.send(:exit_with_error, :asdf)
|
|
9
|
+
}.to raise_error Exceptions::UnknownErrorMessage
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Models::Action do
|
|
4
|
+
before(:each) {
|
|
5
|
+
Models::Action.clear
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
it "finds all available actions" do
|
|
9
|
+
Models::Action.init
|
|
10
|
+
expect(Models::Action.all.size).to eq(2)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "raises an error if an action is invalid: missing method \"run\"" do
|
|
14
|
+
test_class = Class.new( Models::Action ) do
|
|
15
|
+
|
|
16
|
+
def self.library_name
|
|
17
|
+
"PuppetGenerator"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.model_name
|
|
21
|
+
"Action"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.path_to_instances
|
|
25
|
+
File.join( examples_dir, 'actions', 'missing_method.rb' )
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.require_path(name)
|
|
29
|
+
File.join( examples_dir, 'actions', 'missing_method' )
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
expect {
|
|
34
|
+
test_class.init
|
|
35
|
+
}.to raise_error Exceptions::InvalidAction
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
describe Models::EntryConverter do
|
|
2
|
+
before(:each) do
|
|
3
|
+
Models::EntryConverter.clear
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
it "raises an error if an entry converter is invalid: missing method \"convert\"" do
|
|
7
|
+
test_class = Class.new( Models::EntryConverter ) do
|
|
8
|
+
|
|
9
|
+
def self.library_name
|
|
10
|
+
"PuppetGenerator"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.model_name
|
|
14
|
+
"EntryConverter"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.path_to_instances
|
|
18
|
+
File.join( examples_dir, 'entry_converters', 'missing_method.rb' )
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.require_path(name)
|
|
22
|
+
File.join( examples_dir, 'entry_converters', 'missing_method' )
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
expect {
|
|
27
|
+
test_class.init
|
|
28
|
+
}.to raise_error Exceptions::InvalidEntryConverter
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "finds an entry converter for a user entry" do
|
|
32
|
+
Models::EntryConverter.init
|
|
33
|
+
|
|
34
|
+
result = Models::EntryConverter.find( :user )
|
|
35
|
+
expect(result.name).to eq(:user)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "finds an entry converter for a package entry" do
|
|
39
|
+
Models::EntryConverter.init
|
|
40
|
+
|
|
41
|
+
result = Models::EntryConverter.find( :package )
|
|
42
|
+
expect(result.name).to eq(:package)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "finds an entry converter for a file entry" do
|
|
46
|
+
Models::EntryConverter.init
|
|
47
|
+
|
|
48
|
+
result = Models::EntryConverter.find( :file )
|
|
49
|
+
expect(result.name).to eq(:file)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "finds an entry converter for a role entry" do
|
|
53
|
+
Models::EntryConverter.init
|
|
54
|
+
|
|
55
|
+
result = Models::EntryConverter.find( :role )
|
|
56
|
+
expect(result.name).to eq(:role)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end
|