manageiq-floe 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +1 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +11 -0
  5. data/README.md +46 -0
  6. data/Rakefile +4 -0
  7. data/examples/workflow.json +89 -0
  8. data/exe/manageiq-floe +21 -0
  9. data/lib/manageiq/floe/logging.rb +15 -0
  10. data/lib/manageiq/floe/null_logger.rb +15 -0
  11. data/lib/manageiq/floe/version.rb +7 -0
  12. data/lib/manageiq/floe/workflow/catcher.rb +19 -0
  13. data/lib/manageiq/floe/workflow/choice_rule/boolean.rb +21 -0
  14. data/lib/manageiq/floe/workflow/choice_rule/data.rb +96 -0
  15. data/lib/manageiq/floe/workflow/choice_rule.rb +43 -0
  16. data/lib/manageiq/floe/workflow/path.rb +36 -0
  17. data/lib/manageiq/floe/workflow/payload_template.rb +39 -0
  18. data/lib/manageiq/floe/workflow/reference_path.rb +46 -0
  19. data/lib/manageiq/floe/workflow/retrier.rb +24 -0
  20. data/lib/manageiq/floe/workflow/runner/docker.rb +45 -0
  21. data/lib/manageiq/floe/workflow/runner/kubernetes.rb +118 -0
  22. data/lib/manageiq/floe/workflow/runner/podman.rb +42 -0
  23. data/lib/manageiq/floe/workflow/runner.rb +33 -0
  24. data/lib/manageiq/floe/workflow/state.rb +78 -0
  25. data/lib/manageiq/floe/workflow/states/choice.rb +55 -0
  26. data/lib/manageiq/floe/workflow/states/fail.rb +39 -0
  27. data/lib/manageiq/floe/workflow/states/map.rb +15 -0
  28. data/lib/manageiq/floe/workflow/states/parallel.rb +15 -0
  29. data/lib/manageiq/floe/workflow/states/pass.rb +33 -0
  30. data/lib/manageiq/floe/workflow/states/succeed.rb +28 -0
  31. data/lib/manageiq/floe/workflow/states/task.rb +84 -0
  32. data/lib/manageiq/floe/workflow/states/wait.rb +27 -0
  33. data/lib/manageiq/floe/workflow.rb +84 -0
  34. data/lib/manageiq/floe.rb +46 -0
  35. data/lib/manageiq-floe.rb +3 -0
  36. data/manageiq-floe.gemspec +39 -0
  37. data/sig/manageiq/floe.rbs +6 -0
  38. metadata +166 -0
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "floe/version"
4
+
5
+ require_relative "floe/null_logger"
6
+ require_relative "floe/logging"
7
+
8
+ require_relative "floe/workflow"
9
+ require_relative "floe/workflow/catcher"
10
+ require_relative "floe/workflow/choice_rule"
11
+ require_relative "floe/workflow/choice_rule/boolean"
12
+ require_relative "floe/workflow/choice_rule/data"
13
+ require_relative "floe/workflow/path"
14
+ require_relative "floe/workflow/payload_template"
15
+ require_relative "floe/workflow/reference_path"
16
+ require_relative "floe/workflow/retrier"
17
+ require_relative "floe/workflow/runner"
18
+ require_relative "floe/workflow/runner/docker"
19
+ require_relative "floe/workflow/runner/kubernetes"
20
+ require_relative "floe/workflow/runner/podman"
21
+ require_relative "floe/workflow/state"
22
+ require_relative "floe/workflow/states/choice"
23
+ require_relative "floe/workflow/states/fail"
24
+ require_relative "floe/workflow/states/map"
25
+ require_relative "floe/workflow/states/parallel"
26
+ require_relative "floe/workflow/states/pass"
27
+ require_relative "floe/workflow/states/succeed"
28
+ require_relative "floe/workflow/states/task"
29
+ require_relative "floe/workflow/states/wait"
30
+
31
+ require "jsonpath"
32
+
33
+ module ManageIQ
34
+ module Floe
35
+ class Error < StandardError; end
36
+ class InvalidWorkflowError < Error; end
37
+
38
+ def self.logger
39
+ @logger ||= NullLogger.new
40
+ end
41
+
42
+ def self.logger=(logger)
43
+ @logger = logger
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "manageiq/floe"
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/manageiq/floe/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "manageiq-floe"
7
+ spec.version = ManageIQ::Floe::VERSION
8
+ spec.authors = ["ManageIQ Developers"]
9
+
10
+ spec.summary = "Simple Workflow Runner."
11
+ spec.description = "Simple Workflow Runner."
12
+ spec.homepage = "https://github.com/ManageIQ/manageiq-floe"
13
+ spec.required_ruby_version = ">= 2.7.0"
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = spec.homepage
19
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(__dir__) do
24
+ `git ls-files -z`.split("\x0").reject do |f|
25
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
26
+ end
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_dependency "awesome_spawn", "~>1.0"
33
+ spec.add_dependency "jsonpath", "~>1.1"
34
+ spec.add_dependency "optimist", "~>3.0"
35
+ spec.add_dependency "more_core_extensions"
36
+
37
+ spec.add_development_dependency "rubocop"
38
+ spec.add_development_dependency "rspec"
39
+ end
@@ -0,0 +1,6 @@
1
+ module ManageIQ
2
+ module Floe
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,166 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: manageiq-floe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - ManageIQ Developers
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: awesome_spawn
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jsonpath
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: optimist
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: more_core_extensions
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Simple Workflow Runner.
98
+ email:
99
+ executables:
100
+ - manageiq-floe
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".rspec"
105
+ - CHANGELOG.md
106
+ - Gemfile
107
+ - README.md
108
+ - Rakefile
109
+ - examples/workflow.json
110
+ - exe/manageiq-floe
111
+ - lib/manageiq-floe.rb
112
+ - lib/manageiq/floe.rb
113
+ - lib/manageiq/floe/logging.rb
114
+ - lib/manageiq/floe/null_logger.rb
115
+ - lib/manageiq/floe/version.rb
116
+ - lib/manageiq/floe/workflow.rb
117
+ - lib/manageiq/floe/workflow/catcher.rb
118
+ - lib/manageiq/floe/workflow/choice_rule.rb
119
+ - lib/manageiq/floe/workflow/choice_rule/boolean.rb
120
+ - lib/manageiq/floe/workflow/choice_rule/data.rb
121
+ - lib/manageiq/floe/workflow/path.rb
122
+ - lib/manageiq/floe/workflow/payload_template.rb
123
+ - lib/manageiq/floe/workflow/reference_path.rb
124
+ - lib/manageiq/floe/workflow/retrier.rb
125
+ - lib/manageiq/floe/workflow/runner.rb
126
+ - lib/manageiq/floe/workflow/runner/docker.rb
127
+ - lib/manageiq/floe/workflow/runner/kubernetes.rb
128
+ - lib/manageiq/floe/workflow/runner/podman.rb
129
+ - lib/manageiq/floe/workflow/state.rb
130
+ - lib/manageiq/floe/workflow/states/choice.rb
131
+ - lib/manageiq/floe/workflow/states/fail.rb
132
+ - lib/manageiq/floe/workflow/states/map.rb
133
+ - lib/manageiq/floe/workflow/states/parallel.rb
134
+ - lib/manageiq/floe/workflow/states/pass.rb
135
+ - lib/manageiq/floe/workflow/states/succeed.rb
136
+ - lib/manageiq/floe/workflow/states/task.rb
137
+ - lib/manageiq/floe/workflow/states/wait.rb
138
+ - manageiq-floe.gemspec
139
+ - sig/manageiq/floe.rbs
140
+ homepage: https://github.com/ManageIQ/manageiq-floe
141
+ licenses: []
142
+ metadata:
143
+ allowed_push_host: https://rubygems.org
144
+ homepage_uri: https://github.com/ManageIQ/manageiq-floe
145
+ source_code_uri: https://github.com/ManageIQ/manageiq-floe
146
+ changelog_uri: https://github.com/ManageIQ/manageiq-floe/blob/master/CHANGELOG.md
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 2.7.0
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubygems_version: 3.3.15
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: Simple Workflow Runner.
166
+ test_files: []