Beispiel #1
0
 def create_attachment(self, t, stack, resource_name):
     resource = vol.VolumeAttachment(resource_name,
                                     t['Resources'][resource_name], stack)
     self.assertEqual(None, resource.validate())
     self.assertEqual(None, resource.create())
     self.assertEqual(vol.VolumeAttachment.CREATE_COMPLETE, resource.state)
     return resource
Beispiel #2
0
    def test_volume_attachment_error(self):

        fv = FakeVolume('attaching', 'error')

        # create script
        vol.VolumeAttachment.nova().AndReturn(self.fc)
        self.fc.volumes.create_server_volume(
            device=u'/dev/vdc',
            server_id=u'WikiDatabase',
            volume_id=u'vol-123').AndReturn(fv)

        vol.VolumeAttachment.nova('volume').AndReturn(self.fc)
        self.fc.volumes.get('vol-123').AndReturn(fv)
        eventlet.sleep(1).AndReturn(None)

        self.m.ReplayAll()

        t = self.load_template()
        stack = self.parse_stack(t)

        resource = vol.VolumeAttachment('MountPoint',
                                        t['Resources']['MountPoint'], stack)
        self.assertEqual('error', resource.create())

        self.m.VerifyAll()
Beispiel #3
0
 def create_attachment(self, t, stack, resource_name):
     rsrc = vol.VolumeAttachment(resource_name,
                                 t['Resources'][resource_name], stack)
     self.assertEqual(rsrc.validate(), None)
     scheduler.TaskRunner(rsrc.create)()
     self.assertEqual(rsrc.state, (rsrc.CREATE, rsrc.COMPLETE))
     return rsrc
Beispiel #4
0
    def test_volume_attachment_error(self):
        fv = FakeVolume('creating', 'available')
        fva = FakeVolume('attaching', 'error')
        stack_name = 'test_volume_attach_error_stack'

        # volume create
        clients.OpenStackClients.cinder().MultipleTimes().AndReturn(
            self.cinder_fc)
        vol_name = utils.PhysName(stack_name, 'DataVolume')
        self.cinder_fc.volumes.create(size=u'1',
                                      availability_zone='nova',
                                      display_description=vol_name,
                                      display_name=vol_name).AndReturn(fv)

        # create script
        clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc)

        scheduler.TaskRunner._sleep(mox.IsA(int)).AndReturn(None)
        self.fc.volumes.create_server_volume(
            device=u'/dev/vdc',
            server_id=u'WikiDatabase',
            volume_id=u'vol-123').AndReturn(fva)

        self.cinder_fc.volumes.get('vol-123').AndReturn(fva)

        self.m.ReplayAll()

        t = template_format.parse(volume_template)
        t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova'
        stack = parse_stack(t, stack_name=stack_name)

        scheduler.TaskRunner(stack['DataVolume'].create)()
        self.assertEqual(fv.status, 'available')
        rsrc = vol.VolumeAttachment('MountPoint', t['Resources']['MountPoint'],
                                    stack)
        create = scheduler.TaskRunner(rsrc.create)
        self.assertRaises(exception.ResourceFailure, create)

        self.m.VerifyAll()
Beispiel #5
0
    def test_volume_attachment_error(self):
        fv = FakeVolume('creating', 'available')
        fva = FakeVolume('attaching', 'error')
        stack_name = 'test_volume_attach_error_stack'

        self._mock_create_volume(fv, stack_name)

        self._mock_create_server_volume_script(fva)

        self.m.ReplayAll()

        t = template_format.parse(volume_template)
        t['Resources']['DataVolume']['Properties']['AvailabilityZone'] = 'nova'
        stack = utils.parse_stack(t, stack_name=stack_name)

        scheduler.TaskRunner(stack['DataVolume'].create)()
        self.assertEqual(fv.status, 'available')
        rsrc = vol.VolumeAttachment('MountPoint', t['Resources']['MountPoint'],
                                    stack)
        create = scheduler.TaskRunner(rsrc.create)
        self.assertRaises(exception.ResourceFailure, create)

        self.m.VerifyAll()
Beispiel #6
0
    def test_volume_attachment_error(self):
        fv = FakeVolume('creating', 'available')
        fva = FakeVolume('attaching', 'error')
        stack_name = 'test_volume_attach_error_stack'

        # volume create
        clients.OpenStackClients.cinder().MultipleTimes().AndReturn(self.fc)
        self.fc.volumes.create(
            u'1', display_description='%s.DataVolume' % stack_name,
            display_name='%s.DataVolume' % stack_name).AndReturn(fv)

        # create script
        clients.OpenStackClients.nova().MultipleTimes().AndReturn(self.fc)
#        clients.OpenStackClients.cinder().MultipleTimes().AndReturn(self.fc)

        eventlet.sleep(1).MultipleTimes().AndReturn(None)
        self.fc.volumes.create_server_volume(
            device=u'/dev/vdc',
            server_id=u'WikiDatabase',
            volume_id=u'vol-123').AndReturn(fva)

        self.fc.volumes.get('vol-123').AndReturn(fva)

        self.m.ReplayAll()

        t = self.load_template()
        stack = self.parse_stack(t, stack_name)

        self.assertEqual(stack['DataVolume'].create(), None)
        self.assertEqual(fv.status, 'available')
        resource = vol.VolumeAttachment('MountPoint',
                                        t['Resources']['MountPoint'],
                                        stack)
        self.assertEqual(resource.create(), 'error')

        self.m.VerifyAll()