Merge pull request #1768 from nimbis/ssm-backend-get-command-invocation-upstream
Ssm backend get command invocation upstream
This commit is contained in:
commit
f071a9cf4f
3 changed files with 218 additions and 7 deletions
|
|
@ -5,11 +5,12 @@ import botocore.exceptions
|
|||
import sure # noqa
|
||||
import datetime
|
||||
import uuid
|
||||
import json
|
||||
|
||||
from botocore.exceptions import ClientError
|
||||
from nose.tools import assert_raises
|
||||
|
||||
from moto import mock_ssm
|
||||
from moto import mock_ssm, mock_cloudformation
|
||||
|
||||
|
||||
@mock_ssm
|
||||
|
|
@ -668,3 +669,118 @@ def test_list_commands():
|
|||
with assert_raises(ClientError):
|
||||
response = client.list_commands(
|
||||
CommandId=str(uuid.uuid4()))
|
||||
|
||||
@mock_ssm
|
||||
def test_get_command_invocation():
|
||||
client = boto3.client('ssm', region_name='us-east-1')
|
||||
|
||||
ssm_document = 'AWS-RunShellScript'
|
||||
params = {'commands': ['#!/bin/bash\necho \'hello world\'']}
|
||||
|
||||
response = client.send_command(
|
||||
InstanceIds=['i-123456', 'i-234567', 'i-345678'],
|
||||
DocumentName=ssm_document,
|
||||
Parameters=params,
|
||||
OutputS3Region='us-east-2',
|
||||
OutputS3BucketName='the-bucket',
|
||||
OutputS3KeyPrefix='pref')
|
||||
|
||||
cmd = response['Command']
|
||||
cmd_id = cmd['CommandId']
|
||||
|
||||
instance_id = 'i-345678'
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id,
|
||||
InstanceId=instance_id,
|
||||
PluginName='aws:runShellScript')
|
||||
|
||||
invocation_response['CommandId'].should.equal(cmd_id)
|
||||
invocation_response['InstanceId'].should.equal(instance_id)
|
||||
|
||||
# test the error case for an invalid instance id
|
||||
with assert_raises(ClientError):
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id,
|
||||
InstanceId='i-FAKE')
|
||||
|
||||
# test the error case for an invalid plugin name
|
||||
with assert_raises(ClientError):
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id,
|
||||
InstanceId=instance_id,
|
||||
PluginName='FAKE')
|
||||
|
||||
@mock_ssm
|
||||
@mock_cloudformation
|
||||
def test_get_command_invocations_from_stack():
|
||||
stack_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Test Stack",
|
||||
"Resources": {
|
||||
"EC2Instance1": {
|
||||
"Type": "AWS::EC2::Instance",
|
||||
"Properties": {
|
||||
"ImageId": "ami-test-image-id",
|
||||
"KeyName": "test",
|
||||
"InstanceType": "t2.micro",
|
||||
"Tags": [
|
||||
{
|
||||
"Key": "Test Description",
|
||||
"Value": "Test tag"
|
||||
},
|
||||
{
|
||||
"Key": "Test Name",
|
||||
"Value": "Name tag for tests"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Outputs": {
|
||||
"test": {
|
||||
"Description": "Test Output",
|
||||
"Value": "Test output value",
|
||||
"Export": {
|
||||
"Name": "Test value to export"
|
||||
}
|
||||
},
|
||||
"PublicIP": {
|
||||
"Value": "Test public ip"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cloudformation_client = boto3.client(
|
||||
'cloudformation',
|
||||
region_name='us-east-1')
|
||||
|
||||
stack_template_str = json.dumps(stack_template)
|
||||
|
||||
response = cloudformation_client.create_stack(
|
||||
StackName='test_stack',
|
||||
TemplateBody=stack_template_str,
|
||||
Capabilities=('CAPABILITY_IAM', ))
|
||||
|
||||
client = boto3.client('ssm', region_name='us-east-1')
|
||||
|
||||
ssm_document = 'AWS-RunShellScript'
|
||||
params = {'commands': ['#!/bin/bash\necho \'hello world\'']}
|
||||
|
||||
response = client.send_command(
|
||||
Targets=[{
|
||||
'Key': 'tag:aws:cloudformation:stack-name',
|
||||
'Values': ('test_stack', )}],
|
||||
DocumentName=ssm_document,
|
||||
Parameters=params,
|
||||
OutputS3Region='us-east-2',
|
||||
OutputS3BucketName='the-bucket',
|
||||
OutputS3KeyPrefix='pref')
|
||||
|
||||
cmd = response['Command']
|
||||
cmd_id = cmd['CommandId']
|
||||
instance_ids = cmd['InstanceIds']
|
||||
|
||||
invocation_response = client.get_command_invocation(
|
||||
CommandId=cmd_id,
|
||||
InstanceId=instance_ids[0],
|
||||
PluginName='aws:runShellScript')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue