summaryrefslogtreecommitdiff
path: root/heat/tests/test_volume.py
diff options
context:
space:
mode:
authorPavlo Shchelokovskyy <pshchelokovskyy@mirantis.com>2014-08-12 19:12:48 +0300
committerPavlo Shchelokovskyy <pshchelokovskyy@mirantis.com>2014-08-27 16:29:28 +0300
commit40f168cf58bb8ca244d8a2567ea77372e62dfa2e (patch)
treec3168643999e5dc847bc3e49a5c64221dda7409e /heat/tests/test_volume.py
parent1f72cf8e24777322ca46312c6e3f7f045d9df4bb (diff)
downloadheat-40f168cf58bb8ca244d8a2567ea77372e62dfa2e.tar.gz
Deny updates to AWS::EC2::VolumeAttachment
In accordance with AWS docs [1] AWS VolumeAttachment does not support updates of any of its properties. [1] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html Change-Id: I6d79536c68bed60d9b86c662147e35a9b2da6c1c Closes-Bug: #1340096
Diffstat (limited to 'heat/tests/test_volume.py')
-rw-r--r--heat/tests/test_volume.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py
index 596decc52..57a53cd32 100644
--- a/heat/tests/test_volume.py
+++ b/heat/tests/test_volume.py
@@ -662,6 +662,36 @@ class VolumeTest(BaseVolumeTest):
"Property error : DataVolume: Size 0 is out of "
"range (min: 1, max: None)", six.text_type(error))
+ def test_volume_attachment_updates_not_supported(self):
+ fv = FakeVolume('creating', 'available')
+ fva = FakeVolume('attaching', 'in-use')
+ stack_name = 'test_volume_attach_stack'
+
+ self._mock_create_volume(fv, stack_name)
+ self._mock_create_server_volume_script(fva)
+
+ self.m.ReplayAll()
+
+ stack = utils.parse_stack(self.t, stack_name=stack_name)
+
+ self.create_volume(self.t, stack, 'DataVolume')
+ self.assertEqual('available', fv.status)
+ rsrc = self.create_attachment(self.t, stack, 'MountPoint')
+
+ props = copy.deepcopy(rsrc.properties.data)
+ props['InstanceId'] = 'some_other_instance_id'
+ props['VolumeId'] = 'some_other_volume_id'
+ props['Device'] = '/dev/vdz'
+ after = rsrc_defn.ResourceDefinition(rsrc.name, rsrc.type(), props)
+
+ update_task = scheduler.TaskRunner(rsrc.update, after)
+ ex = self.assertRaises(exception.ResourceFailure, update_task)
+ self.assertIn('NotSupported: Update to properties Device, InstanceId, '
+ 'VolumeId of MountPoint (AWS::EC2::VolumeAttachment)',
+ six.text_type(ex))
+ self.assertEqual((rsrc.UPDATE, rsrc.FAILED), rsrc.state)
+ self.m.VerifyAll()
+
class CinderVolumeTest(BaseVolumeTest):