aws-codedeploy-agent 0.0.2 → 0.0.3
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/aws-codedeploy-agent.gemspec +5 -5
- data/certs/host-agent-deployment-signer-ca-chain.pem +30 -0
- data/conf/codedeployagent.yml +0 -1
- data/lib/instance_agent.rb +1 -13
- data/lib/instance_agent/agent/base.rb +38 -12
- data/lib/instance_agent/agent/plugin.rb +21 -0
- data/lib/instance_agent/config.rb +2 -1
- data/lib/instance_agent/platform/linux_util.rb +4 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/ace_info.rb +133 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/acl_info.rb +163 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/application_specification.rb +143 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/context_info.rb +23 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/file_info.rb +23 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/linux_permission_info.rb +121 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/mode_info.rb +66 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/range_info.rb +134 -0
- data/lib/instance_agent/plugins/codedeploy/application_specification/script_info.rb +27 -0
- data/lib/instance_agent/plugins/codedeploy/codedeploy_control.rb +100 -0
- data/lib/instance_agent/plugins/codedeploy/command_executor.rb +359 -0
- data/lib/instance_agent/plugins/codedeploy/command_poller.rb +178 -0
- data/lib/instance_agent/plugins/codedeploy/deployment_specification.rb +161 -0
- data/lib/instance_agent/plugins/codedeploy/hook_executor.rb +226 -0
- data/lib/instance_agent/plugins/codedeploy/install_instruction.rb +389 -0
- data/lib/instance_agent/plugins/codedeploy/installer.rb +147 -0
- data/lib/instance_agent/plugins/codedeploy/onpremise_config.rb +42 -0
- data/lib/instance_agent/plugins/codedeploy/register_plugin.rb +17 -0
- data/lib/instance_agent/runner/child.rb +20 -5
- data/lib/instance_agent/runner/master.rb +2 -15
- data/lib/instance_metadata.rb +2 -2
- data/test/certificate_helper.rb +1 -1
- data/test/helpers/instance_agent_helper.rb +1 -0
- data/test/instance_agent/agent/base_test.rb +16 -3
- data/test/instance_agent/config_test.rb +2 -1
- data/test/instance_agent/plugins/codedeploy/application_specification_test.rb +1713 -0
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/codedeploy_control_test.rb +1 -1
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/command_executor_test.rb +32 -9
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/command_poller_test.rb +13 -14
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/deployment_specification_test.rb +98 -25
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/hook_executor_test.rb +83 -15
- data/test/instance_agent/plugins/codedeploy/install_instruction_test.rb +568 -0
- data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/installer_test.rb +12 -9
- data/test/instance_agent/plugins/codedeploy/onpremise_config_test.rb +72 -0
- data/test/instance_agent/runner/child_test.rb +1 -1
- data/vendor/gems/.codedeploy-commands-1.0.0.created.rid +1 -1
- data/vendor/gems/codedeploy-commands/lib/aws/plugins/deploy_control_endpoint.rb +4 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath.rb +41 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/caching_parser.rb +30 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/errors.rb +17 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/expr_node.rb +15 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/lexer.rb +116 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/parser.rb +347 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/runtime.rb +71 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/token.rb +41 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/token_stream.rb +60 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/tree_interpreter.rb +523 -0
- data/vendor/gems/jmespath-1.0.1/lib/jmespath/version.rb +3 -0
- data/vendor/gems/process_manager/lib/process_manager/master.rb +16 -5
- data/vendor/specifications/{aws-sdk-core-2.0.5.gemspec → aws-sdk-core-2.0.42.gemspec} +9 -11
- data/vendor/specifications/builder-3.2.2.gemspec +1 -1
- data/vendor/specifications/codedeploy-commands-1.0.0.gemspec +7 -6
- data/vendor/specifications/gli-2.5.6.gemspec +1 -1
- data/vendor/specifications/jmespath-1.0.1.gemspec +29 -0
- data/vendor/specifications/little-plugger-1.1.3.gemspec +1 -1
- data/vendor/specifications/logging-1.8.1.gemspec +1 -1
- data/vendor/specifications/multi_json-1.7.7.gemspec +1 -1
- data/vendor/specifications/multi_json-1.8.4.gemspec +1 -1
- data/vendor/specifications/multi_xml-0.5.5.gemspec +1 -1
- data/vendor/specifications/process_manager-0.0.13.gemspec +1 -1
- data/vendor/specifications/simple_pid-0.2.1.gemspec +1 -1
- metadata +76 -63
- data/lib/instance_agent/codedeploy_plugin/application_specification/ace_info.rb +0 -133
- data/lib/instance_agent/codedeploy_plugin/application_specification/acl_info.rb +0 -163
- data/lib/instance_agent/codedeploy_plugin/application_specification/application_specification.rb +0 -142
- data/lib/instance_agent/codedeploy_plugin/application_specification/context_info.rb +0 -23
- data/lib/instance_agent/codedeploy_plugin/application_specification/file_info.rb +0 -23
- data/lib/instance_agent/codedeploy_plugin/application_specification/linux_permission_info.rb +0 -121
- data/lib/instance_agent/codedeploy_plugin/application_specification/mode_info.rb +0 -66
- data/lib/instance_agent/codedeploy_plugin/application_specification/range_info.rb +0 -134
- data/lib/instance_agent/codedeploy_plugin/application_specification/script_info.rb +0 -27
- data/lib/instance_agent/codedeploy_plugin/codedeploy_control.rb +0 -72
- data/lib/instance_agent/codedeploy_plugin/command_executor.rb +0 -357
- data/lib/instance_agent/codedeploy_plugin/command_poller.rb +0 -170
- data/lib/instance_agent/codedeploy_plugin/deployment_specification.rb +0 -150
- data/lib/instance_agent/codedeploy_plugin/hook_executor.rb +0 -206
- data/lib/instance_agent/codedeploy_plugin/install_instruction.rb +0 -374
- data/lib/instance_agent/codedeploy_plugin/installer.rb +0 -143
- data/lib/instance_agent/codedeploy_plugin/request_helper.rb +0 -28
- data/test/instance_agent/codedeploy_plugin/application_specification_test.rb +0 -1710
- data/test/instance_agent/codedeploy_plugin/install_instruction_test.rb +0 -566
- data/test/instance_agent/codedeploy_plugin/request_helper_test.rb +0 -37
- data/vendor/specifications/jamespath-0.5.1.gemspec +0 -35
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
require 'test_helper'
|
|
2
2
|
require 'stringio'
|
|
3
|
-
require 'instance_agent/codedeploy_plugin/installer'
|
|
4
3
|
require 'com/amazon/codedeploy/command/v20141006/host_command_instance'
|
|
5
4
|
require 'aws-sdk-core/s3'
|
|
6
5
|
|
|
7
6
|
class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
8
7
|
|
|
9
|
-
include InstanceAgent::CodeDeployPlugin
|
|
8
|
+
include InstanceAgent::Plugins::CodeDeployPlugin
|
|
10
9
|
|
|
11
10
|
context 'The CodeDeploy Plugin Command Executor' do
|
|
12
11
|
setup do
|
|
@@ -20,7 +19,7 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
20
19
|
"AfterELBAdd"=>["AfterELBAdd"],
|
|
21
20
|
"ValidateService"=>["ValidateService"]}
|
|
22
21
|
@deploy_control_client = mock
|
|
23
|
-
@command_executor = InstanceAgent::CodeDeployPlugin::CommandExecutor.new({
|
|
22
|
+
@command_executor = InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor.new({
|
|
24
23
|
:deploy_control_client => @deploy_control_client,
|
|
25
24
|
:hook_mapping => @test_hook_mapping})
|
|
26
25
|
@aws_region = 'us-east-1'
|
|
@@ -45,6 +44,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
45
44
|
setup do
|
|
46
45
|
@cert_helper = CertificateHelper.new
|
|
47
46
|
@deployment_id = SecureRandom.uuid
|
|
47
|
+
@deployment_group_name = "TestDeploymentGroup"
|
|
48
|
+
@application_name = "TestApplicationName"
|
|
48
49
|
@deployment_group_id = "foo"
|
|
49
50
|
@s3Revision = {
|
|
50
51
|
"Bucket" => "mybucket",
|
|
@@ -54,6 +55,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
54
55
|
@deployment_spec = generate_signed_message_for({
|
|
55
56
|
"DeploymentId" => @deployment_id.to_s,
|
|
56
57
|
"DeploymentGroupId" => @deployment_group_id,
|
|
58
|
+
"ApplicationName" => @application_name,
|
|
59
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
57
60
|
"Revision" => {
|
|
58
61
|
"RevisionType" => "S3",
|
|
59
62
|
"S3Revision" => @s3Revision
|
|
@@ -83,13 +86,13 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
83
86
|
FileUtils.unstub(:mkdir_p)
|
|
84
87
|
FileUtils.expects(:mkdir_p).never
|
|
85
88
|
|
|
86
|
-
assert_raised_with_message('Unsupported command type: unknown-command.', InstanceAgent::CodeDeployPlugin::CommandExecutor::InvalidCommandNameFailure) do
|
|
89
|
+
assert_raised_with_message('Unsupported command type: unknown-command.', InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor::InvalidCommandNameFailure) do
|
|
87
90
|
@command_executor.execute_command(@command, @deployment_spec)
|
|
88
91
|
end
|
|
89
92
|
end
|
|
90
93
|
|
|
91
94
|
should "throw an exception" do
|
|
92
|
-
assert_raised_with_message('Unsupported command type: unknown-command.', InstanceAgent::CodeDeployPlugin::CommandExecutor::InvalidCommandNameFailure) do
|
|
95
|
+
assert_raised_with_message('Unsupported command type: unknown-command.', InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor::InvalidCommandNameFailure) do
|
|
93
96
|
@command_executor.execute_command(@command, @deployment_spec)
|
|
94
97
|
end
|
|
95
98
|
end
|
|
@@ -124,7 +127,7 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
124
127
|
|
|
125
128
|
setup do
|
|
126
129
|
@command.command_name = "Install"
|
|
127
|
-
InstanceAgent::CodeDeployPlugin::ApplicationSpecification::ApplicationSpecification.stubs(:parse).returns(@app_spec)
|
|
130
|
+
InstanceAgent::Plugins::CodeDeployPlugin::ApplicationSpecification::ApplicationSpecification.stubs(:parse).returns(@app_spec)
|
|
128
131
|
@installer = stub("installer", :install => nil)
|
|
129
132
|
Installer.stubs(:new).returns(@installer)
|
|
130
133
|
File.stubs(:exist?).with(@previous_install_file_location).returns(true)
|
|
@@ -197,6 +200,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
197
200
|
@deployment_spec = generate_signed_message_for({
|
|
198
201
|
"DeploymentId" => @deployment_id.to_s,
|
|
199
202
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
203
|
+
"ApplicationName" => @application_name,
|
|
204
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
200
205
|
"Revision" => {
|
|
201
206
|
"RevisionType" => "S3",
|
|
202
207
|
"S3Revision" => {
|
|
@@ -224,6 +229,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
224
229
|
@deployment_spec = generate_signed_message_for({
|
|
225
230
|
"DeploymentId" => @deployment_id.to_s,
|
|
226
231
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
232
|
+
"ApplicationName" => @application_name,
|
|
233
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
227
234
|
"Revision" => {
|
|
228
235
|
"RevisionType" => "S3",
|
|
229
236
|
"S3Revision" => {
|
|
@@ -242,6 +249,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
242
249
|
@deployment_spec = generate_signed_message_for({
|
|
243
250
|
"DeploymentId" => @deployment_id.to_s,
|
|
244
251
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
252
|
+
"ApplicationName" => @application_name,
|
|
253
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
245
254
|
"Revision" => {
|
|
246
255
|
"RevisionType" => "S3",
|
|
247
256
|
"S3Revision" => {
|
|
@@ -260,6 +269,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
260
269
|
@deployment_spec = generate_signed_message_for({
|
|
261
270
|
"DeploymentId" => @deployment_id.to_s,
|
|
262
271
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
272
|
+
"ApplicationName" => @application_name,
|
|
273
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
263
274
|
"Revision" => {
|
|
264
275
|
"RevisionType" => "S3",
|
|
265
276
|
"S3Revision" => {
|
|
@@ -277,6 +288,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
277
288
|
@deployment_spec = generate_signed_message_for({
|
|
278
289
|
"DeploymentId" => @deployment_id.to_s,
|
|
279
290
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
291
|
+
"ApplicationName" => @application_name,
|
|
292
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
280
293
|
"Revision" => {
|
|
281
294
|
"RevisionType" => "S3",
|
|
282
295
|
"S3Revision" => {
|
|
@@ -294,6 +307,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
294
307
|
@deployment_spec = generate_signed_message_for({
|
|
295
308
|
"DeploymentId" => @deployment_id.to_s,
|
|
296
309
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
310
|
+
"ApplicationName" => @application_name,
|
|
311
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
297
312
|
"Revision" => {
|
|
298
313
|
"RevisionType" => "S3",
|
|
299
314
|
"S3Revision" => {
|
|
@@ -311,6 +326,8 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
311
326
|
@deployment_spec = generate_signed_message_for({
|
|
312
327
|
"DeploymentId" => @deployment_id.to_s,
|
|
313
328
|
"DeploymentGroupId" => @deployment_group_id.to_s,
|
|
329
|
+
"ApplicationName" => @application_name,
|
|
330
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
314
331
|
"Revision" => {
|
|
315
332
|
"RevisionType" => "S3",
|
|
316
333
|
"S3Revision" => {
|
|
@@ -342,9 +359,12 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
342
359
|
context "I have an empty app spec (for script mapping)" do
|
|
343
360
|
setup do
|
|
344
361
|
File.stubs(:read).with(File.join(@archive_root_dir, 'appspec.yml')).returns(nil)
|
|
345
|
-
InstanceAgent::CodeDeployPlugin::ApplicationSpecification::ApplicationSpecification.stubs(:parse).returns(nil)
|
|
362
|
+
InstanceAgent::Plugins::CodeDeployPlugin::ApplicationSpecification::ApplicationSpecification.stubs(:parse).returns(nil)
|
|
346
363
|
@hook_executor_constructor_hash = {
|
|
347
|
-
:
|
|
364
|
+
:application_name => @application_name,
|
|
365
|
+
:deployment_id => @deployment_id,
|
|
366
|
+
:deployment_group_name => @deployment_group_name,
|
|
367
|
+
:deployment_root_dir => @deployment_root_dir,
|
|
348
368
|
:last_successful_deployment_dir => nil,
|
|
349
369
|
:app_spec_path => 'appspec.yml'}
|
|
350
370
|
@mock_hook_executor = mock
|
|
@@ -474,11 +494,14 @@ class CodeDeployPluginCommandExecutorTest < InstanceAgentTestCase
|
|
|
474
494
|
@command.command_name = "test_command"
|
|
475
495
|
@test_hook_mapping = { "test_command" => ["lifecycle_event_1","lifecycle_event_2"]}
|
|
476
496
|
@deploy_control_client = mock
|
|
477
|
-
@command_executor = InstanceAgent::CodeDeployPlugin::CommandExecutor.new({
|
|
497
|
+
@command_executor = InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor.new({
|
|
478
498
|
:deploy_control_client => @deploy_control_client,
|
|
479
499
|
:hook_mapping => @test_hook_mapping})
|
|
480
500
|
hook_executor_constructor_hash = {
|
|
481
501
|
:deployment_root_dir => @deployment_root_dir,
|
|
502
|
+
:application_name => @application_name,
|
|
503
|
+
:deployment_id => @deployment_id,
|
|
504
|
+
:deployment_group_name => @deployment_group_name,
|
|
482
505
|
:last_successful_deployment_dir => nil,
|
|
483
506
|
:app_spec_path => 'appspec.yml'}
|
|
484
507
|
@hook_executor_constructor_hash_1 = hook_executor_constructor_hash.merge({:lifecycle_event => "lifecycle_event_1"})
|
|
@@ -4,12 +4,12 @@ require 'json'
|
|
|
4
4
|
class CommandPollerTest < InstanceAgentTestCase
|
|
5
5
|
|
|
6
6
|
def gather_diagnostics_from_error(error)
|
|
7
|
-
{'error_code' => InstanceAgent::CodeDeployPlugin::ScriptError::UNKNOWN_ERROR_CODE, 'script_name' => "", 'message' => error.message, 'log' => ""}.to_json
|
|
7
|
+
{'error_code' => InstanceAgent::Plugins::CodeDeployPlugin::ScriptError::UNKNOWN_ERROR_CODE, 'script_name' => "", 'message' => error.message, 'log' => ""}.to_json
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def gather_diagnostics(script_output)
|
|
11
11
|
script_output ||= ""
|
|
12
|
-
{'error_code' => InstanceAgent::CodeDeployPlugin::ScriptError::SUCCEEDED_CODE, 'script_name' => "", 'message' => "Succeeded", 'log' => script_output}.to_json
|
|
12
|
+
{'error_code' => InstanceAgent::Plugins::CodeDeployPlugin::ScriptError::SUCCEEDED_CODE, 'script_name' => "", 'message' => "Succeeded", 'log' => script_output}.to_json
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
context 'The command poller' do
|
|
@@ -27,25 +27,25 @@ class CommandPollerTest < InstanceAgentTestCase
|
|
|
27
27
|
InstanceMetadata.stubs(:region).returns(@aws_region)
|
|
28
28
|
InstanceMetadata.stubs(:host_identifier).returns(@host_identifier)
|
|
29
29
|
|
|
30
|
-
InstanceAgent::CodeDeployPlugin::CodeDeployControl.stubs(:new).
|
|
30
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CodeDeployControl.stubs(:new).
|
|
31
31
|
returns(@deploy_control_api)
|
|
32
32
|
@deploy_control_api.stubs(:get_client).
|
|
33
33
|
returns(@deploy_control_client)
|
|
34
34
|
|
|
35
|
-
InstanceAgent::CodeDeployPlugin::CommandExecutor.stubs(:new).
|
|
35
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor.stubs(:new).
|
|
36
36
|
returns(@executor)
|
|
37
37
|
|
|
38
|
-
@poller = InstanceAgent::CodeDeployPlugin::CommandPoller.new
|
|
38
|
+
@poller = InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller.new
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
context 'on initializing' do
|
|
42
42
|
|
|
43
43
|
should 'construct a client using the configured region' do
|
|
44
|
-
InstanceAgent::CodeDeployPlugin::CodeDeployControl.expects(:new).
|
|
44
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CodeDeployControl.expects(:new).
|
|
45
45
|
with(has_entries(:region => @aws_region)).
|
|
46
46
|
returns(@deploy_control_api)
|
|
47
47
|
|
|
48
|
-
InstanceAgent::CodeDeployPlugin::CommandPoller.new
|
|
48
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller.new
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
should 'construct an CodeDeploy command executor' do
|
|
@@ -58,12 +58,11 @@ class CommandPollerTest < InstanceAgentTestCase
|
|
|
58
58
|
"BeforeELBAdd"=>["BeforeELBAdd"],
|
|
59
59
|
"AfterELBAdd"=>["AfterELBAdd"],
|
|
60
60
|
"ValidateService"=>["ValidateService"]}
|
|
61
|
-
InstanceAgent::CodeDeployPlugin::CommandExecutor.expects(:new).
|
|
62
|
-
with(:
|
|
63
|
-
:hook_mapping => test_hook_mapping).
|
|
61
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CommandExecutor.expects(:new).
|
|
62
|
+
with(:hook_mapping => test_hook_mapping).
|
|
64
63
|
returns(@executor)
|
|
65
64
|
|
|
66
|
-
InstanceAgent::CodeDeployPlugin::CommandPoller.new
|
|
65
|
+
InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller.new
|
|
67
66
|
end
|
|
68
67
|
|
|
69
68
|
end
|
|
@@ -420,10 +419,10 @@ class CommandPollerTest < InstanceAgentTestCase
|
|
|
420
419
|
|
|
421
420
|
should 'allow script errors from execute_command to propagate diagnostic information to caller' do
|
|
422
421
|
begin
|
|
423
|
-
script_log = InstanceAgent::CodeDeployPlugin::ScriptLog.new
|
|
422
|
+
script_log = InstanceAgent::Plugins::CodeDeployPlugin::ScriptLog.new
|
|
424
423
|
script_log.append_to_log("log entries")
|
|
425
|
-
raise InstanceAgent::CodeDeployPlugin::ScriptError.new(InstanceAgent::CodeDeployPlugin::ScriptError::SCRIPT_FAILED_CODE, "file_location", script_log), 'message'
|
|
426
|
-
rescue InstanceAgent::CodeDeployPlugin::ScriptError => e
|
|
424
|
+
raise InstanceAgent::Plugins::CodeDeployPlugin::ScriptError.new(InstanceAgent::Plugins::CodeDeployPlugin::ScriptError::SCRIPT_FAILED_CODE, "file_location", script_log), 'message'
|
|
425
|
+
rescue InstanceAgent::Plugins::CodeDeployPlugin::ScriptError => e
|
|
427
426
|
script_error = e
|
|
428
427
|
end
|
|
429
428
|
|
data/test/instance_agent/{codedeploy_plugin → plugins/codedeploy}/deployment_specification_test.rb
RENAMED
|
@@ -16,6 +16,8 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
16
16
|
@cert_helper = CertificateHelper.new
|
|
17
17
|
@deployment_id = SecureRandom.uuid.to_s
|
|
18
18
|
@deployment_group_id = SecureRandom.uuid.to_s
|
|
19
|
+
@deployment_group_name = "TestDeploymentGroup"
|
|
20
|
+
@application_name = "TestApplication"
|
|
19
21
|
@s3Revision = {
|
|
20
22
|
"Bucket" => "mybucket",
|
|
21
23
|
"Key" => "mykey",
|
|
@@ -26,37 +28,46 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
26
28
|
"S3Revision" => @s3Revision
|
|
27
29
|
}
|
|
28
30
|
@deployment_spec = {
|
|
31
|
+
"ApplicationName" => @application_name,
|
|
29
32
|
"DeploymentId" => @deployment_id,
|
|
33
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
30
34
|
"DeploymentGroupId" => @deployment_group_id,
|
|
31
35
|
"Revision" => @revision
|
|
32
36
|
}
|
|
37
|
+
|
|
33
38
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
34
39
|
InstanceAgent::Config.init
|
|
35
40
|
end
|
|
36
41
|
|
|
37
42
|
context "with JSON format" do
|
|
38
43
|
should "populate the deployment id" do
|
|
39
|
-
parsed_deployment_spec = InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
44
|
+
parsed_deployment_spec = InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
40
45
|
assert_equal @deployment_id, parsed_deployment_spec.deployment_id
|
|
41
46
|
assert_equal @s3Revision, parsed_deployment_spec.revision
|
|
47
|
+
assert_equal @deployment_group_name, parsed_deployment_spec.deployment_group_name
|
|
48
|
+
assert_equal @application_name, parsed_deployment_spec.application_name
|
|
42
49
|
end
|
|
43
50
|
end
|
|
44
51
|
|
|
45
52
|
context "with arn deployment id" do
|
|
46
53
|
setup do
|
|
47
54
|
@deployment_spec = {
|
|
55
|
+
"ApplicationName" => @application_name,
|
|
48
56
|
"DeploymentId" => "arn:aws:codedeploy:region:account:deployment/#{@deployment_id}",
|
|
49
57
|
"DeploymentGroupId" => @deployment_group_id,
|
|
58
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
50
59
|
"Revision" => @revision
|
|
51
60
|
}
|
|
52
61
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
53
62
|
end
|
|
54
63
|
|
|
55
64
|
should "populate the Bundle" do
|
|
56
|
-
parsed_deployment_spec = InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
65
|
+
parsed_deployment_spec = InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
57
66
|
assert_equal @deployment_id, parsed_deployment_spec.deployment_id
|
|
58
67
|
assert_equal @deployment_group_id, parsed_deployment_spec.deployment_group_id
|
|
59
68
|
assert_equal @s3Revision, parsed_deployment_spec.revision
|
|
69
|
+
assert_equal @deployment_group_name, parsed_deployment_spec.deployment_group_name
|
|
70
|
+
assert_equal @application_name, parsed_deployment_spec.application_name
|
|
60
71
|
end
|
|
61
72
|
end
|
|
62
73
|
|
|
@@ -67,7 +78,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
67
78
|
|
|
68
79
|
should "raise an exception" do
|
|
69
80
|
assert_raised_with_message("Unsupported DeploymentSpecification format: XML") do
|
|
70
|
-
parsed_deployment_spec = InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
81
|
+
parsed_deployment_spec = InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
71
82
|
end
|
|
72
83
|
end
|
|
73
84
|
end
|
|
@@ -79,10 +90,12 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
79
90
|
end
|
|
80
91
|
|
|
81
92
|
should "populate the Bundle" do
|
|
82
|
-
parsed_deployment_spec = InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
93
|
+
parsed_deployment_spec = InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
83
94
|
assert_equal @deployment_id, parsed_deployment_spec.deployment_id
|
|
84
95
|
assert_equal @deployment_group_id, parsed_deployment_spec.deployment_group_id
|
|
85
96
|
assert_equal @s3Revision, parsed_deployment_spec.revision
|
|
97
|
+
assert_equal @deployment_group_name, parsed_deployment_spec.deployment_group_name
|
|
98
|
+
assert_equal @application_name, parsed_deployment_spec.application_name
|
|
86
99
|
end
|
|
87
100
|
end
|
|
88
101
|
|
|
@@ -93,7 +106,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
93
106
|
|
|
94
107
|
should "raise an exception" do
|
|
95
108
|
assert_raised_with_message("Unsupported DeploymentSpecification format: ") do
|
|
96
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
109
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
97
110
|
end
|
|
98
111
|
end
|
|
99
112
|
end
|
|
@@ -105,7 +118,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
105
118
|
|
|
106
119
|
should "raise a runtime exception" do
|
|
107
120
|
assert_raised_with_message("Provided deployment spec was nil") do
|
|
108
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
121
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
109
122
|
end
|
|
110
123
|
end
|
|
111
124
|
end
|
|
@@ -118,7 +131,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
118
131
|
|
|
119
132
|
should "raise a runtime exception" do
|
|
120
133
|
assert_raised_with_message("Deployment Spec has no DeploymentId") do
|
|
121
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
134
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
122
135
|
end
|
|
123
136
|
end
|
|
124
137
|
end
|
|
@@ -131,7 +144,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
131
144
|
|
|
132
145
|
should "raise a runtime exception" do
|
|
133
146
|
assert_raised_with_message("Deployment Spec has no DeploymentId") do
|
|
134
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
147
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
135
148
|
end
|
|
136
149
|
end
|
|
137
150
|
end
|
|
@@ -144,7 +157,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
144
157
|
|
|
145
158
|
should "raise a runtime exception" do
|
|
146
159
|
assert_raised_with_message("Deployment Spec has no DeploymentId") do
|
|
147
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
160
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
148
161
|
end
|
|
149
162
|
end
|
|
150
163
|
end
|
|
@@ -157,7 +170,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
157
170
|
|
|
158
171
|
should "raise a runtime exception" do
|
|
159
172
|
assert_raised_with_message("Deployment Spec has no DeploymentGroupId") do
|
|
160
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
173
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
161
174
|
end
|
|
162
175
|
end
|
|
163
176
|
end
|
|
@@ -170,7 +183,59 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
170
183
|
|
|
171
184
|
should "raise a runtime exception" do
|
|
172
185
|
assert_raised_with_message("Deployment Spec has no DeploymentGroupId") do
|
|
173
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
186
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
context "with no deployment group name" do
|
|
192
|
+
setup do
|
|
193
|
+
@deployment_spec.delete("DeploymentGroupName")
|
|
194
|
+
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
should "raise a runtime exception" do
|
|
198
|
+
assert_raised_with_message("Deployment Spec has no DeploymentGroupName") do
|
|
199
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
context "with null deployment group name" do
|
|
205
|
+
setup do
|
|
206
|
+
@deployment_spec["DeploymentGroupName"] = nil
|
|
207
|
+
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
should "raise a runtime exception" do
|
|
211
|
+
assert_raised_with_message("Deployment Spec has no DeploymentGroupName") do
|
|
212
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
context "with no application name" do
|
|
218
|
+
setup do
|
|
219
|
+
@deployment_spec.delete("ApplicationName")
|
|
220
|
+
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
should "raise a runtime exception" do
|
|
224
|
+
assert_raised_with_message("Deployment Spec has no ApplicationName") do
|
|
225
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
context "with null application name" do
|
|
231
|
+
setup do
|
|
232
|
+
@deployment_spec["ApplicationName"] = nil
|
|
233
|
+
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
should "raise a runtime exception" do
|
|
237
|
+
assert_raised_with_message("Deployment Spec has no ApplicationName") do
|
|
238
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
174
239
|
end
|
|
175
240
|
end
|
|
176
241
|
end
|
|
@@ -183,7 +248,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
183
248
|
|
|
184
249
|
should "raise a runtime exception" do
|
|
185
250
|
assert_raised_with_message("Deployment Spec has no DeploymentGroupId") do
|
|
186
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
251
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
187
252
|
end
|
|
188
253
|
end
|
|
189
254
|
end
|
|
@@ -196,7 +261,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
196
261
|
|
|
197
262
|
should "raise a runtime exception" do
|
|
198
263
|
assert_raised_with_message('Must specify a revison') do
|
|
199
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
264
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
200
265
|
end
|
|
201
266
|
end
|
|
202
267
|
end
|
|
@@ -209,7 +274,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
209
274
|
|
|
210
275
|
should "raise a runtime exception" do
|
|
211
276
|
assert_raised_with_message('Must specify a revison') do
|
|
212
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
277
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
213
278
|
end
|
|
214
279
|
end
|
|
215
280
|
end
|
|
@@ -222,14 +287,14 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
222
287
|
|
|
223
288
|
should "raise a runtime exception" do
|
|
224
289
|
assert_raised_with_message("Must specify a revision source") do
|
|
225
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
290
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
226
291
|
end
|
|
227
292
|
end
|
|
228
293
|
end
|
|
229
294
|
|
|
230
295
|
context "with S3 Revision" do
|
|
231
296
|
should "parse correctly" do
|
|
232
|
-
parsed_deployment_spec = InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
297
|
+
parsed_deployment_spec = InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
233
298
|
assert_equal @s3Revision, parsed_deployment_spec.revision
|
|
234
299
|
end
|
|
235
300
|
|
|
@@ -245,12 +310,14 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
245
310
|
@deployment_spec = {
|
|
246
311
|
"DeploymentId" => @deployment_id,
|
|
247
312
|
"DeploymentGroupId" => @deployment_group_id,
|
|
248
|
-
"Revision" => @revision
|
|
313
|
+
"Revision" => @revision,
|
|
314
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
315
|
+
"ApplicationName" => @application_name
|
|
249
316
|
}
|
|
250
317
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
251
318
|
|
|
252
319
|
assert_raised_with_message("S3Revision in Deployment Spec must specify Bucket, Key and BundleType") do
|
|
253
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
320
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
254
321
|
end
|
|
255
322
|
end
|
|
256
323
|
|
|
@@ -266,12 +333,14 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
266
333
|
@deployment_spec = {
|
|
267
334
|
"DeploymentId" => @deployment_id,
|
|
268
335
|
"DeploymentGroupId" => @deployment_group_id,
|
|
269
|
-
"Revision" => @revision
|
|
336
|
+
"Revision" => @revision,
|
|
337
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
338
|
+
"ApplicationName" => @application_name
|
|
270
339
|
}
|
|
271
340
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
272
341
|
|
|
273
342
|
assert_raised_with_message("S3Revision in Deployment Spec must specify Bucket, Key and BundleType") do
|
|
274
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
343
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
275
344
|
end
|
|
276
345
|
end
|
|
277
346
|
|
|
@@ -287,12 +356,14 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
287
356
|
@deployment_spec = {
|
|
288
357
|
"DeploymentId" => @deployment_id,
|
|
289
358
|
"DeploymentGroupId" => @deployment_group_id,
|
|
290
|
-
"Revision" => @revision
|
|
359
|
+
"Revision" => @revision,
|
|
360
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
361
|
+
"ApplicationName" => @application_name
|
|
291
362
|
}
|
|
292
363
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
293
364
|
|
|
294
365
|
assert_raised_with_message("S3Revision in Deployment Spec must specify Bucket, Key and BundleType") do
|
|
295
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
366
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
296
367
|
end
|
|
297
368
|
end
|
|
298
369
|
|
|
@@ -309,12 +380,14 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
309
380
|
@deployment_spec = {
|
|
310
381
|
"DeploymentId" => @deployment_id,
|
|
311
382
|
"DeploymentGroupId" => @deployment_group_id,
|
|
312
|
-
"Revision" => @revision
|
|
383
|
+
"Revision" => @revision,
|
|
384
|
+
"DeploymentGroupName" => @deployment_group_name,
|
|
385
|
+
"ApplicationName" => @application_name
|
|
313
386
|
}
|
|
314
387
|
@packed_message = generate_signed_message_for(@deployment_spec)
|
|
315
388
|
|
|
316
389
|
assert_raised_with_message("BundleType in S3Revision must be tar, tgz or zip") do
|
|
317
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
390
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
318
391
|
end
|
|
319
392
|
end
|
|
320
393
|
|
|
@@ -323,7 +396,7 @@ class DeploymentSpecificationTest < InstanceAgentTestCase
|
|
|
323
396
|
|
|
324
397
|
assert_raised_with_message("Could not parse the PKCS7: nested asn1 error") do
|
|
325
398
|
begin
|
|
326
|
-
InstanceAgent::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
399
|
+
InstanceAgent::Plugins::CodeDeployPlugin::DeploymentSpecification.parse(@packed_message)
|
|
327
400
|
rescue ArgumentError => e
|
|
328
401
|
raise e.message
|
|
329
402
|
end
|