aws-codedeploy-agent 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|