kitchen-propeller 2.0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9c7da886ebae70a00d1640c277be0a93d94d9f5d
4
+ data.tar.gz: 1413f31fe7262b206b48bbcc4c66f43e0bffc535
5
+ SHA512:
6
+ metadata.gz: 6548e4d0ac58d28a98f4460a5bb2c636411d0cda07dbc2c3e62963cdf050a165825877431f0cfe97b118ab944e0e7f819233dc7998fe1b72bdd69e274369022e
7
+ data.tar.gz: 1ee5f6abc26129d24029d8f4677afe30d8a23cba6ebb75076de9f4fbd67a7055ce526f47cd0147741abd9cb96ec3db0ad6b4d54a93e9a56761de81ec4d4d8d72
data/.cane ADDED
@@ -0,0 +1,3 @@
1
+ --max-violations 30
2
+ --abc-max 35
3
+ --style-measure 100
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.idea/.rakeTasks ADDED
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Remove rake task
5
+ 2. Add existing rake tasks
6
+ To add existing rake tasks automatically delete this file and reload the project.
7
+ --><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build kitchen-propeller-2.0.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Run cane to check quality metrics" fullCmd="cane" taksId="cane" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install kitchen-propeller-2.0.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install kitchen-propeller-2.0.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Run all quality tasks" fullCmd="quality" taksId="quality" /><RakeTask description="Create tag v2.0.0 and build and push kitchen-propeller-2.0.0.gem to Rubygems" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Display LOC stats" fullCmd="stats" taksId="stats" /><RakeTask description="Check style" fullCmd="tailor" taksId="tailor" /><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="release" taksId="release" /><RakeGroup description="" fullCmd="" taksId="release"><RakeTask description="" fullCmd="release:guard_clean" taksId="guard_clean" /><RakeTask description="" fullCmd="release:rubygem_push" taksId="rubygem_push" /><RakeTask description="" fullCmd="release:source_control_push" taksId="source_control_push" /></RakeGroup></RakeGroup></Settings>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ <local />
6
+ </component>
7
+ <component name="NewModuleRootManager">
8
+ <content url="file://$MODULE_DIR$" />
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ <orderEntry type="library" scope="PROVIDED" name="artifactory (v2.8.1, RVM: ruby-2.2.0) [gem]" level="application" />
12
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.14.6, RVM: ruby-2.2.0) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="cane (v3.0.0, RVM: ruby-2.2.0) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="countloc (v0.4.0, RVM: ruby-2.2.0) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="log_switch (v0.3.0, RVM: ruby-2.2.0) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="mini_portile2 (v2.1.0, RVM: ruby-2.2.0) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="mixlib-install (v2.1.12, RVM: ruby-2.2.0) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="mixlib-shellout (v2.2.7, RVM: ruby-2.2.0) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="mixlib-versioning (v1.1.0, RVM: ruby-2.2.0) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="net-scp (v1.2.1, RVM: ruby-2.2.0) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="net-ssh (v4.1.0, RVM: ruby-2.2.0) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="net-ssh-gateway (v1.3.0, RVM: ruby-2.2.0) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.7.1, RVM: ruby-2.2.0) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="parallel (v1.11.1, RVM: ruby-2.2.0) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="rake (v12.0.0, RVM: ruby-2.2.0) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="safe_yaml (v1.0.4, RVM: ruby-2.2.0) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="tailor (v1.4.1, RVM: ruby-2.2.0) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="term-ansicolor (v1.6.0, RVM: ruby-2.2.0) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="test-kitchen (v1.16.0, RVM: ruby-2.2.0) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="text-table (v1.2.4, RVM: ruby-2.2.0) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="thor (v0.19.1, RVM: ruby-2.2.0) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="tins (v1.13.2, RVM: ruby-2.2.0) [gem]" level="application" />
33
+ </component>
34
+ </module>
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.2.0" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/kitchen-propeller.iml" filepath="$PROJECT_DIR$/.idea/kitchen-propeller.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,392 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="73e5dce0-b421-44cc-9fd9-fe5db9d2f72e" name="Default" comment="">
5
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/kitchen/driver/propeller.rb" afterPath="$PROJECT_DIR$/lib/kitchen/driver/propeller.rb" />
6
+ </list>
7
+ <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
8
+ <option name="TRACKING_ENABLED" value="true" />
9
+ <option name="SHOW_DIALOG" value="false" />
10
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
11
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
12
+ <option name="LAST_RESOLUTION" value="IGNORE" />
13
+ </component>
14
+ <component name="FileEditorManager">
15
+ <leaf>
16
+ <file leaf-file-name="Gemfile" pinned="false" current-in-tab="false">
17
+ <entry file="file://$PROJECT_DIR$/Gemfile">
18
+ <provider selected="true" editor-type-id="text-editor">
19
+ <state relative-caret-position="0">
20
+ <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
21
+ <folding />
22
+ </state>
23
+ </provider>
24
+ </entry>
25
+ </file>
26
+ <file leaf-file-name="propeller.rb" pinned="false" current-in-tab="true">
27
+ <entry file="file://$PROJECT_DIR$/lib/kitchen/driver/propeller.rb">
28
+ <provider selected="true" editor-type-id="text-editor">
29
+ <state relative-caret-position="497">
30
+ <caret line="133" column="0" lean-forward="true" selection-start-line="133" selection-start-column="0" selection-end-line="133" selection-end-column="0" />
31
+ <folding />
32
+ </state>
33
+ </provider>
34
+ </entry>
35
+ </file>
36
+ </leaf>
37
+ </component>
38
+ <component name="Git.Settings">
39
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
40
+ </component>
41
+ <component name="IdeDocumentHistory">
42
+ <option name="CHANGED_PATHS">
43
+ <list>
44
+ <option value="$PROJECT_DIR$/lib/kitchen/driver/propeller.rb" />
45
+ </list>
46
+ </option>
47
+ </component>
48
+ <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
49
+ <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
50
+ <component name="JsGulpfileManager">
51
+ <detection-done>true</detection-done>
52
+ <sorting>DEFINITION_ORDER</sorting>
53
+ </component>
54
+ <component name="ProjectFrameBounds">
55
+ <option name="x" value="20" />
56
+ <option name="y" value="43" />
57
+ <option name="width" value="1400" />
58
+ <option name="height" value="805" />
59
+ </component>
60
+ <component name="ProjectView">
61
+ <navigator currentView="ProjectPane" proportions="" version="1">
62
+ <flattenPackages />
63
+ <showMembers />
64
+ <showModules />
65
+ <showLibraryContents />
66
+ <hideEmptyPackages />
67
+ <abbreviatePackageNames />
68
+ <autoscrollToSource />
69
+ <autoscrollFromSource />
70
+ <sortByType />
71
+ <manualOrder />
72
+ <foldersAlwaysOnTop value="true" />
73
+ </navigator>
74
+ <panes>
75
+ <pane id="Scope" />
76
+ <pane id="Scratches" />
77
+ <pane id="ProjectPane">
78
+ <subPane>
79
+ <PATH>
80
+ <PATH_ELEMENT>
81
+ <option name="myItemId" value="kitchen-propeller" />
82
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
83
+ </PATH_ELEMENT>
84
+ <PATH_ELEMENT>
85
+ <option name="myItemId" value="kitchen-propeller" />
86
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
87
+ </PATH_ELEMENT>
88
+ </PATH>
89
+ <PATH>
90
+ <PATH_ELEMENT>
91
+ <option name="myItemId" value="kitchen-propeller" />
92
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
93
+ </PATH_ELEMENT>
94
+ <PATH_ELEMENT>
95
+ <option name="myItemId" value="kitchen-propeller" />
96
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
97
+ </PATH_ELEMENT>
98
+ <PATH_ELEMENT>
99
+ <option name="myItemId" value="lib" />
100
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
101
+ </PATH_ELEMENT>
102
+ <PATH_ELEMENT>
103
+ <option name="myItemId" value="kitchen" />
104
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
105
+ </PATH_ELEMENT>
106
+ <PATH_ELEMENT>
107
+ <option name="myItemId" value="driver" />
108
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
109
+ </PATH_ELEMENT>
110
+ </PATH>
111
+ </subPane>
112
+ </pane>
113
+ </panes>
114
+ </component>
115
+ <component name="PropertiesComponent">
116
+ <property name="WebServerToolWindowFactoryState" value="false" />
117
+ <property name="last_opened_file_path" value="$PROJECT_DIR$" />
118
+ </component>
119
+ <component name="RunDashboard">
120
+ <option name="ruleStates">
121
+ <list>
122
+ <RuleState>
123
+ <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
124
+ </RuleState>
125
+ <RuleState>
126
+ <option name="name" value="StatusDashboardGroupingRule" />
127
+ </RuleState>
128
+ </list>
129
+ </option>
130
+ </component>
131
+ <component name="RunManager">
132
+ <configuration default="true" type="CucumberRunConfigurationType" factoryName="Cucumber">
133
+ <predefined_log_file id="RUBY_CUCUMBER" enabled="true" />
134
+ <module name="" />
135
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
136
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
137
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
138
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
139
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
140
+ <envs />
141
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
142
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
143
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
144
+ <COVERAGE_PATTERN ENABLED="true">
145
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
146
+ </COVERAGE_PATTERN>
147
+ </EXTENSION>
148
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*.feature" />
149
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
150
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
151
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
152
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_TAGS_FILTER" VALUE="" />
153
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="TEST_NAME_FILTER" VALUE="" />
154
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_ARGS" VALUE="--color -r features" />
155
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
156
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
157
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="VERBOSE_OPTION" VALUE="false" />
158
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
159
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
160
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
161
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="CUCUMBER_RUNNER_PATH" VALUE="" />
162
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_RUNNER" VALUE="false" />
163
+ <CUCUMBER_RUN_CONFIG_SETTINGS_ID NAME="SETTINGS_VERSION" VALUE="2" />
164
+ <method />
165
+ </configuration>
166
+ <configuration default="true" type="GoApplicationRunConfiguration" factoryName="Go Application">
167
+ <module name="" />
168
+ <working_directory value="$PROJECT_DIR$" />
169
+ <go_parameters value="-i" />
170
+ <filePath value="$PROJECT_DIR$" />
171
+ <kind value="FILE" />
172
+ <method />
173
+ </configuration>
174
+ <configuration default="true" type="GoRunFileConfiguration" factoryName="Go Single File">
175
+ <module name="" />
176
+ <working_directory value="$PROJECT_DIR$" />
177
+ <filePath value="$PROJECT_DIR$" />
178
+ <method />
179
+ </configuration>
180
+ <configuration default="true" type="GoTestRunConfiguration" factoryName="Go Test">
181
+ <module name="" />
182
+ <working_directory value="$PROJECT_DIR$" />
183
+ <go_parameters value="-i" />
184
+ <framework value="gotest" />
185
+ <kind value="DIRECTORY" />
186
+ <method />
187
+ </configuration>
188
+ <configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest">
189
+ <node-interpreter value="project" />
190
+ <working-dir value="" />
191
+ <envs />
192
+ <scope-kind value="ALL" />
193
+ <method />
194
+ </configuration>
195
+ <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
196
+ <config-file value="" />
197
+ <node-interpreter value="project" />
198
+ <envs />
199
+ <method />
200
+ </configuration>
201
+ <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
202
+ <method />
203
+ </configuration>
204
+ <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir="">
205
+ <method />
206
+ </configuration>
207
+ <configuration default="true" type="RSpecRunConfigurationType" factoryName="RSpec">
208
+ <predefined_log_file id="RUBY_RSPEC" enabled="true" />
209
+ <module name="" />
210
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
211
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
212
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
213
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
214
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
215
+ <envs />
216
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
217
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
218
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
219
+ <COVERAGE_PATTERN ENABLED="true">
220
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
221
+ </COVERAGE_PATTERN>
222
+ </EXTENSION>
223
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
224
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
225
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_RUNNER_PATH" VALUE="" />
226
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="**/*_spec.rb" />
227
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_EXAMPLE_NAME" VALUE="" />
228
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
229
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPEC_ARGS" VALUE="" />
230
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_VERSION" VALUE="" />
231
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="USE_CUSTOM_SPEC_RUNNER" VALUE="false" />
232
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
233
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
234
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
235
+ <RSPEC_RUN_CONFIG_SETTINGS_ID NAME="FULL_BACKTRACE" VALUE="false" />
236
+ <method />
237
+ </configuration>
238
+ <configuration default="true" type="RubyRunConfigurationType" factoryName="Ruby">
239
+ <module name="" />
240
+ <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
241
+ <RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="" />
242
+ <RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
243
+ <RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
244
+ <RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
245
+ <envs />
246
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
247
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
248
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
249
+ <COVERAGE_PATTERN ENABLED="true">
250
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
251
+ </COVERAGE_PATTERN>
252
+ </EXTENSION>
253
+ <RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="" />
254
+ <RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
255
+ <method />
256
+ </configuration>
257
+ <configuration default="true" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest">
258
+ <predefined_log_file id="RUBY_TESTUNIT" enabled="true" />
259
+ <module name="" />
260
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
261
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="" />
262
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
263
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
264
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
265
+ <envs />
266
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="false" />
267
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
268
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov">
269
+ <COVERAGE_PATTERN ENABLED="true">
270
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
271
+ </COVERAGE_PATTERN>
272
+ </EXTENSION>
273
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
274
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="" />
275
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
276
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="" />
277
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_SCRIPT" />
278
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
279
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
280
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
281
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
282
+ <method />
283
+ </configuration>
284
+ <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
285
+ <method />
286
+ </configuration>
287
+ <configuration default="true" type="js.build_tools.npm" factoryName="npm">
288
+ <command value="run" />
289
+ <scripts />
290
+ <node-interpreter value="project" />
291
+ <envs />
292
+ <method />
293
+ </configuration>
294
+ <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
295
+ <node-interpreter>project</node-interpreter>
296
+ <node-options />
297
+ <working-directory />
298
+ <pass-parent-env>true</pass-parent-env>
299
+ <envs />
300
+ <ui />
301
+ <extra-mocha-options />
302
+ <test-kind>DIRECTORY</test-kind>
303
+ <test-directory />
304
+ <recursive>false</recursive>
305
+ <method />
306
+ </configuration>
307
+ </component>
308
+ <component name="ShelveChangesManager" show_recycled="false">
309
+ <option name="remove_strategy" value="false" />
310
+ </component>
311
+ <component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" />
312
+ <component name="TaskManager">
313
+ <task active="true" id="Default" summary="Default task">
314
+ <changelist id="73e5dce0-b421-44cc-9fd9-fe5db9d2f72e" name="Default" comment="" />
315
+ <created>1495667893617</created>
316
+ <option name="number" value="Default" />
317
+ <option name="presentableId" value="Default" />
318
+ <updated>1495667893617</updated>
319
+ <workItem from="1495667895232" duration="317000" />
320
+ </task>
321
+ <servers />
322
+ </component>
323
+ <component name="TimeTrackingManager">
324
+ <option name="totallyTimeSpent" value="317000" />
325
+ </component>
326
+ <component name="ToolWindowManager">
327
+ <frame x="20" y="43" width="1400" height="805" extended-state="0" />
328
+ <layout>
329
+ <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
330
+ <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
331
+ <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
332
+ <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
333
+ <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
334
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
335
+ <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
336
+ <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
337
+ <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
338
+ <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
339
+ <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
340
+ <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
341
+ <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
342
+ <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
343
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
344
+ <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
345
+ <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
346
+ </layout>
347
+ </component>
348
+ <component name="TypeScriptGeneratedFilesManager">
349
+ <option name="processedProjectFiles" value="true" />
350
+ </component>
351
+ <component name="VcsContentAnnotationSettings">
352
+ <option name="myLimit" value="2678400000" />
353
+ </component>
354
+ <component name="XDebuggerManager">
355
+ <breakpoint-manager />
356
+ <watches-manager />
357
+ </component>
358
+ <component name="editorHistoryManager">
359
+ <entry file="file://$USER_HOME$/.rvm/gems/ruby-2.2.0/gems/log_switch-0.3.0/lib/log_switch.rb">
360
+ <provider selected="true" editor-type-id="text-editor">
361
+ <state relative-caret-position="0">
362
+ <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
363
+ <folding />
364
+ </state>
365
+ </provider>
366
+ </entry>
367
+ <entry file="file://$PROJECT_DIR$/Gemfile">
368
+ <provider selected="true" editor-type-id="text-editor">
369
+ <state relative-caret-position="0">
370
+ <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
371
+ <folding />
372
+ </state>
373
+ </provider>
374
+ </entry>
375
+ <entry file="file://$USER_HOME$/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/driver/base.rb">
376
+ <provider selected="true" editor-type-id="text-editor">
377
+ <state relative-caret-position="720">
378
+ <caret line="48" column="10" lean-forward="false" selection-start-line="48" selection-start-column="10" selection-end-line="48" selection-end-column="10" />
379
+ <folding />
380
+ </state>
381
+ </provider>
382
+ </entry>
383
+ <entry file="file://$PROJECT_DIR$/lib/kitchen/driver/propeller.rb">
384
+ <provider selected="true" editor-type-id="text-editor">
385
+ <state relative-caret-position="497">
386
+ <caret line="133" column="0" lean-forward="true" selection-start-line="133" selection-start-column="0" selection-end-line="133" selection-end-column="0" />
387
+ <folding />
388
+ </state>
389
+ </provider>
390
+ </entry>
391
+ </component>
392
+ </project>
@@ -0,0 +1,29 @@
1
+ E, [2017-04-15T10:35:18.330879 #71996] ERROR -- Kitchen: ------Exception-------
2
+ E, [2017-04-15T10:35:18.330956 #71996] ERROR -- Kitchen: Class: Kitchen::UserError
3
+ E, [2017-04-15T10:35:18.330972 #71996] ERROR -- Kitchen: Message: Kitchen YAML file /Users/robert_reilly/rdev/kitchen-propeller/.kitchen.yml does not exist.
4
+ E, [2017-04-15T10:35:18.330983 #71996] ERROR -- Kitchen: ----------------------
5
+ E, [2017-04-15T10:35:18.330993 #71996] ERROR -- Kitchen: ------Backtrace-------
6
+ E, [2017-04-15T10:35:18.331012 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/loader/yaml.rb:71:in `read'
7
+ E, [2017-04-15T10:35:18.331022 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:152:in `data'
8
+ E, [2017-04-15T10:35:18.331031 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:131:in `suites'
9
+ E, [2017-04-15T10:35:18.331041 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:182:in `filter_instances'
10
+ E, [2017-04-15T10:35:18.331060 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:141:in `build_instances'
11
+ E, [2017-04-15T10:35:18.331078 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:117:in `instances'
12
+ E, [2017-04-15T10:35:18.331087 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:112:in `filtered_instances'
13
+ E, [2017-04-15T10:35:18.331096 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:142:in `parse_subcommand'
14
+ E, [2017-04-15T10:35:18.331104 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/command/list.rb:30:in `call'
15
+ E, [2017-04-15T10:35:18.331113 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:53:in `perform'
16
+ E, [2017-04-15T10:35:18.331122 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:121:in `list'
17
+ E, [2017-04-15T10:35:18.331130 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
18
+ E, [2017-04-15T10:35:18.331139 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
19
+ E, [2017-04-15T10:35:18.331148 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:334:in `invoke_task'
20
+ E, [2017-04-15T10:35:18.331157 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
21
+ E, [2017-04-15T10:35:18.331182 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
22
+ E, [2017-04-15T10:35:18.331191 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in `block in <top (required)>'
23
+ E, [2017-04-15T10:35:18.331199 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/lib/kitchen/errors.rb:171:in `with_friendly_errors'
24
+ E, [2017-04-15T10:35:18.331208 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in `<top (required)>'
25
+ E, [2017-04-15T10:35:18.331217 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/bin/kitchen:23:in `load'
26
+ E, [2017-04-15T10:35:18.331226 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/bin/kitchen:23:in `<main>'
27
+ E, [2017-04-15T10:35:18.331234 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/bin/ruby_executable_hooks:15:in `eval'
28
+ E, [2017-04-15T10:35:18.331243 #71996] ERROR -- Kitchen: /Users/robert_reilly/.rvm/gems/ruby-2.2.0/bin/ruby_executable_hooks:15:in `<main>'
29
+ E, [2017-04-15T10:35:18.331257 #71996] ERROR -- Kitchen: ----End Backtrace-----
data/.tailor ADDED
@@ -0,0 +1,4 @@
1
+ Tailor.config do |config|
2
+ config.formatters "text"
3
+ config.file_set 'lib/**/*.rb'
4
+ end
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - 1.9.2
7
+ - ruby-head
8
+
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## 0.1.0 / Unreleased
2
+
3
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ Author:: Robert Reilly (<robert_reilly@surveysampling.com>)
2
+
3
+ Copyright (C) 2017, Robert Reilly
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,85 @@
1
+ # <a name="title"></a> Kitchen::Propeller
2
+
3
+ A Test Kitchen Driver for Propeller.
4
+
5
+ ## <a name="requirements"></a> Requirements
6
+
7
+ **TODO:** document any software or library prerequisites that are required to
8
+ use this driver. Implement the `#verify_dependencies` method in your Driver
9
+ class to enforce these requirements in code, if possible.
10
+
11
+ ## <a name="installation"></a> Installation and Setup
12
+ create a Gemfile with the Following:
13
+ ```
14
+ source "https://rubygems.org"
15
+
16
+ gem 'inspec'
17
+
18
+ group :test do
19
+ gem 'bundler', '~> 1.5'
20
+ gem 'minitest', '~> 5.5'
21
+ gem 'rake', '~> 10'
22
+ gem 'rubocop', '~> 0.33.0'
23
+ gem 'simplecov', '~> 0.10'
24
+ end
25
+
26
+ group :integration do
27
+ gem 'test-kitchen', '~> 1.4'
28
+ gem 'kitchen-ansible'
29
+ gem 'kitchen-vagrant'
30
+ gem 'kitchen-inspec'
31
+ gem 'concurrent-ruby', '~> 0.9'
32
+ gem 'kitchen-propeller'
33
+ end
34
+ ```
35
+ To use this driver the following minimal config is required.
36
+
37
+ ```
38
+ ---
39
+ driver:
40
+ name: propeller
41
+ driver_options:
42
+ tenantName: ''
43
+ emailAddress: 'robert_reilly@surveysampling.com'
44
+ vmName: 'testkitchen.utl'
45
+ endpoint: http://endpoint:8080/v2/api/server
46
+ ```
47
+
48
+ ## <a name="config"></a> Configuration
49
+
50
+
51
+ * emailAddress: required
52
+
53
+ * vmName: 'name' + we will append a random 4 digit hex code
54
+
55
+
56
+ ## <a name="development"></a> Development
57
+
58
+ * Source hosted at [GitHub][repo]
59
+ * Report issues/questions/feature requests on [GitHub Issues][issues]
60
+
61
+ Pull requests are very welcome! Make sure your patches are well tested.
62
+ Ideally create a topic branch for every separate change you make. For
63
+ example:
64
+
65
+ 1. Fork the repo
66
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
67
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
68
+ 4. Push to the branch (`git push origin my-new-feature`)
69
+ 5. Create new Pull Request
70
+
71
+ ## <a name="authors"></a> Authors
72
+
73
+ Created and maintained by [Robert Reilly][author] (<robert_reilly@surveysampling.com>)
74
+
75
+ ## <a name="license"></a> License
76
+
77
+ Apache 2.0 (see [LICENSE][license])
78
+
79
+
80
+ [author]: https://github.com/enter-github-user
81
+ [issues]: https://github.com/enter-github-user/kitchen-propeller/issues
82
+ [license]: https://github.com/enter-github-user/kitchen-propeller/blob/master/LICENSE
83
+ [repo]: https://github.com/enter-github-user/kitchen-propeller
84
+ [driver_usage]: http://docs.kitchen-ci.org/drivers/usage
85
+ [chef_omnibus_dl]: http://www.chef.io/chef/install/
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require "bundler/gem_tasks"
2
+ require 'cane/rake_task'
3
+ require 'tailor/rake_task'
4
+
5
+ desc "Run cane to check quality metrics"
6
+ Cane::RakeTask.new do |cane|
7
+
8
+ cane.max_violations = 30
9
+ cane.abc_max = 40
10
+ cane.style_measure = 100
11
+ end
12
+
13
+ Tailor::RakeTask.new
14
+
15
+ desc "Display LOC stats"
16
+ task :stats do
17
+ puts "\n## Production Code Stats"
18
+ sh "countloc -r lib"
19
+ end
20
+
21
+ desc "Run all quality tasks"
22
+ task :quality => [:cane, :tailor, :stats]
23
+
24
+ task :default => [:quality]
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kitchen/driver/propeller_version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'kitchen-propeller'
8
+ spec.version = Kitchen::Driver::PROPELLER_VERSION
9
+ spec.authors = ['Robert Reilly']
10
+ spec.email = ['robert_reilly@surveysampling.com']
11
+ spec.description = %q{A Test Kitchen Driver for Propeller}
12
+ spec.summary = spec.description
13
+ spec.homepage = ''
14
+ spec.license = 'Apache 2.0'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = []
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'test-kitchen', '~> 1.16.0'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'rake'
25
+
26
+ spec.add_development_dependency 'cane'
27
+ spec.add_development_dependency 'tailor'
28
+ spec.add_development_dependency 'countloc'
29
+ end
@@ -0,0 +1,159 @@
1
+ #
2
+ # Author:: Robert Reilly (<robert_reilly@surveysampling.com>)
3
+ #
4
+ # Copyright (C) 2017, Robert Reilly
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ require 'json'
18
+ require 'net/http'
19
+ require 'rubygems'
20
+ require 'net/ping'
21
+ require 'kitchen'
22
+ require 'kitchen/driver/propeller_version'
23
+ # Test Kitchen
24
+ module Kitchen
25
+ # Driver for Propeller
26
+ module Driver
27
+ # inherit base
28
+ class Propeller < Kitchen::Driver::Base
29
+
30
+ kitchen_driver_api_version 2
31
+
32
+ plugin_version Kitchen::Driver::PROPELLER_VERSION
33
+ default_config :driver_options,
34
+ :tenantName => 'CTQ-PLATFORM',
35
+ :vmName => 'test-kitchen.utl',
36
+ :keyPair => '/etc/test-kitchen2',
37
+ :user => 'test.kitchen',
38
+ :ssh_key => '/home/teamcity/.ssh/id_rsa',
39
+ :networkName => 'DRT072.CI.PRIV',
40
+ :serverType => 'BARE'
41
+
42
+ def up?(host)
43
+
44
+ spinner = Enumerator.new do |e|
45
+ loop do
46
+ e.yield '|'
47
+ e.yield '/'
48
+ e.yield '-'
49
+ e.yield '\\'
50
+ end
51
+ end
52
+ until Net::Ping::External.new(host).ping? do
53
+ if $stdout.tty?
54
+ printf("\r %s", spinner.next)
55
+ sleep 0.1
56
+ else
57
+ printf "."
58
+ sleep 0.1
59
+ end
60
+ end
61
+ end
62
+
63
+ def create(state)
64
+ puts "End Point: #{config[:driver_options][:endpoint]}"
65
+ data = config[:driver_options][:vmName].split(".")
66
+ hn = SecureRandom.hex(4)
67
+ finalVmName = data[0] + '-' + hn + '.' + data[1]
68
+ puts "Building Machine: #{finalVmName}"
69
+ kitchenData = {
70
+ :tenantName => config[:driver_options][:tenantName],
71
+ :request =>
72
+ [{
73
+ :vmName => finalVmName,
74
+ :keyPair => config[:driver_options][:keyPair],
75
+ :serverType => config[:driver_options][:serverType]
76
+ }] }
77
+ @state = state
78
+ info("Creating virtual machine for #{instance.name}.")
79
+ uri = URI(config[:driver_options][:endpoint])
80
+ req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json', 'user' => config[:driver_options][:user])
81
+ req.body = kitchenData.to_json
82
+ res = Net::HTTP.start(uri.hostname, uri.port, :read_timeout => 300) do |http|
83
+ res = http.request(req)
84
+ vmo = JSON.parse(res.body)
85
+ puts vmo
86
+ sdat = vmo[0]
87
+ @state[:username] = 'centos'
88
+ @state[:id] = sdat['serverId']
89
+ @state[:hostname] = sdat['vmName']
90
+ @state[:ssh_key] = config[:driver_options][:ssh_key]
91
+ @state[:networkName] = config[:driver_options][:networkName]
92
+ info("Propeller instance #{instance.to_str} created ID: #{sdat['serverId']}.")
93
+ info("Waiting for instance #{instance.to_str} to resolv.")
94
+ up?(sdat['vmName'])
95
+ end
96
+ end
97
+
98
+ def destroy(state)
99
+ @state = state
100
+ #return unless vm_exists
101
+
102
+ instance.transport.connection(state).close
103
+ info("Destroying virtual machine for #{instance.name}.")
104
+
105
+ puts state[:id]
106
+
107
+ uri = URI("#{config[:driver_options][:endpoint]}/#{state[:id]}")
108
+ req = Net::HTTP::Delete.new(uri, 'Content-Type' => 'application/json',
109
+ 'user' => config[:driver_options][:user])
110
+
111
+ req.body = 'user:robert_reilly@surveysampling.com'
112
+
113
+ res = Net::HTTP.start(uri.hostname, uri.port) do |http|
114
+ res = http.request(req)
115
+ puts "response #{res.body}"
116
+ end
117
+ info("The Propeller instance #{instance.to_str} has been removed.")
118
+
119
+ state.delete(:id)
120
+ end
121
+
122
+ private
123
+
124
+ def validate_vm_settings(config)
125
+ # raise 'Missing tenantName' unless config[:tenantName?]
126
+ # raise 'Missing tenantName' unless config[:vmName?]
127
+ end
128
+
129
+ def update_state
130
+ vm_details
131
+ @state[:id] = @vm['Id']
132
+ @state[:hostname] = @vm['hostname']
133
+ @state[:vm_name] = @vm['Name']
134
+ end
135
+
136
+ def vm_details
137
+ #run_ps set_vm_ipaddress_ps if config[:ip_address]
138
+ #@vm = run_ps vm_details_ps
139
+ end
140
+
141
+ def vm_exists
142
+ #/status/serverid will report if it exists
143
+ info('Checking for existing virtual machine.')
144
+ return false unless @state.key?(:id) && !@state[:id].nil?
145
+ existing_vm = ""
146
+ return false if existing_vm.nil? || existing_vm['Id'].nil?
147
+ info("Found an exising VM with an ID: #{existing_vm['Id']}")
148
+ true
149
+ end
150
+
151
+ def kitchen_vm_path
152
+ @kitchen_vm_path ||= File.join(
153
+ config[:kitchen_root],
154
+ ".kitchen/#{instance.name}"
155
+ )
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Robert Reilly (<robert_reilly@surveysampling.com>)
4
+ #
5
+ # Copyright (C) 2017, Robert Reilly
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ module Kitchen
20
+
21
+ module Driver
22
+
23
+ # Version string for Propeller Kitchen driver
24
+ PROPELLER_VERSION = '2.0.4'
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kitchen-propeller
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Robert Reilly
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-08-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-kitchen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.16.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.16.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: cane
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
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: tailor
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: countloc
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: A Test Kitchen Driver for Propeller
98
+ email:
99
+ - robert_reilly@surveysampling.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".cane"
105
+ - ".gitignore"
106
+ - ".idea/.rakeTasks"
107
+ - ".idea/kitchen-propeller.iml"
108
+ - ".idea/misc.xml"
109
+ - ".idea/modules.xml"
110
+ - ".idea/vcs.xml"
111
+ - ".idea/workspace.xml"
112
+ - ".kitchen/logs/kitchen.log"
113
+ - ".tailor"
114
+ - ".travis.yml"
115
+ - CHANGELOG.md
116
+ - Gemfile
117
+ - LICENSE
118
+ - README.md
119
+ - Rakefile
120
+ - kitchen-propeller.gemspec
121
+ - lib/kitchen/driver/propeller.rb
122
+ - lib/kitchen/driver/propeller_version.rb
123
+ homepage: ''
124
+ licenses:
125
+ - Apache 2.0
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubyforge_project:
143
+ rubygems_version: 2.4.6
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: A Test Kitchen Driver for Propeller
147
+ test_files: []