# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from heat_integrationtests.functional import functional_base class CancelUpdateTest(functional_base.FunctionalTestsBase): template = ''' heat_template_version: '2013-05-23' parameters: InstanceType: type: string ImageId: type: string network: type: string resources: port: type: OS::Neutron::Port properties: network: {get_param: network} Server: type: OS::Nova::Server properties: flavor_update_policy: REPLACE image: {get_param: ImageId} flavor: {get_param: InstanceType} networks: - port: {get_resource: port} ''' def setUp(self): super(CancelUpdateTest, self).setUp() if not self.conf.minimal_image_ref: raise self.skipException("No minimal image configured to test") if not self.conf.minimal_instance_type: raise self.skipException("No minimal flavor configured to test.") def test_cancel_update_server_with_port(self): parameters = {'InstanceType': self.conf.minimal_instance_type, 'ImageId': self.conf.minimal_image_ref, 'network': self.conf.fixed_network_name} stack_identifier = self.stack_create(template=self.template, parameters=parameters) parameters['InstanceType'] = self.conf.instance_type self.update_stack(stack_identifier, self.template, parameters=parameters, expected_status='UPDATE_IN_PROGRESS') # Ensure we start updating the server before rolling back self._wait_for_resource_status( stack_identifier, 'Server', 'CREATE_IN_PROGRESS') self.cancel_update_stack(stack_identifier)