Пример #1
0
    def test_get_cinder_client_api_v2(self, patched1, patched2):
        self.override_config('cinder_api_version', 2)
        patched1.return_value = FakeCinderClient(1)
        patched2.return_value = FakeCinderClient(2)

        client = cinder.client()
        self.assertEqual(2, client.client.api_version)
Пример #2
0
def _create_attach_volume(ctx,
                          instance,
                          size,
                          volume_type,
                          name=None,
                          availability_zone=None):
    if CONF.cinder.api_version == 1:
        kwargs = {'size': size, 'display_name': name}
    else:
        kwargs = {'size': size, 'name': name}

    kwargs['volume_type'] = volume_type
    if availability_zone is not None:
        kwargs['availability_zone'] = availability_zone

    volume = cinder.client().volumes.create(**kwargs)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise ex.SystemError(_("Volume %s has error status") % volume.id)

        context.sleep(1)

    resp = nova.client().volumes.create_server_volume(instance.instance_id,
                                                      volume.id, None)
    return resp.device
Пример #3
0
    def test_get_cinder_client_api_v1(self, patched1, patched2, auth):
        self.override_config('api_version', 1, group='cinder')
        patched1.return_value = FakeCinderClient(1)
        patched2.return_value = FakeCinderClient(2)

        client = cinder.client()
        self.assertEqual(1, client.client.api_version)
Пример #4
0
def _create_attach_volume(ctx,
                          instance,
                          size,
                          volume_type,
                          volume_local_to_instance,
                          name=None,
                          availability_zone=None):
    if CONF.cinder.api_version == 1:
        kwargs = {'size': size, 'display_name': name}
    else:
        kwargs = {'size': size, 'name': name}

    kwargs['volume_type'] = volume_type
    if availability_zone is not None:
        kwargs['availability_zone'] = availability_zone

    if volume_local_to_instance:
        kwargs['scheduler_hints'] = {'local_to_instance': instance.instance_id}

    volume = b.execute_with_retries(cinder.client().volumes.create, **kwargs)
    conductor.append_volume(ctx, instance, volume.id)
    _await_available(volume)

    resp = b.execute_with_retries(nova.client().volumes.create_server_volume,
                                  instance.instance_id, volume.id, None)
    return resp.device
Пример #5
0
    def test_get_cinder_client_api_v3(self, patched2, patched3, auth):
        self.override_config('api_version', 3, group='cinder')
        patched2.return_value = FakeCinderClient(2)
        patched3.return_value = FakeCinderClient(3)

        client = cinder.client()
        self.assertEqual(3, client.client.api_version)
Пример #6
0
    def test_get_cinder_client_api_v3(self, patched2, patched3, auth):
        self.override_config('api_version', 3, group='cinder')
        patched2.return_value = FakeCinderClient(2)
        patched3.return_value = FakeCinderClient(3)

        client = cinder.client()
        self.assertEqual(3, client.client.api_version)
Пример #7
0
    def test_get_cinder_client_api_v1(self, patched1, patched2):
        self.override_config('cinder_api_version', 1)
        patched1.return_value = FakeCinderClient(1)
        patched2.return_value = FakeCinderClient(2)

        client = cinder.client()
        self.assertEqual(1, client.client.api_version)
Пример #8
0
    def test_get_cinder_client_api_v2(self, patched1, patched2, auth):
        self.override_config('api_version', 2, group='cinder')
        patched1.return_value = FakeCinderClient(1)
        patched2.return_value = FakeCinderClient(2)

        client = cinder.client()
        self.assertEqual(2, client.client.api_version)
Пример #9
0
def _get_cinder_limits():
    avail_limits = {}
    cinder = cinder_client.client()
    lim = {}
    for l in cinder.limits.get().absolute:
        lim[l.name] = l.value
    avail_limits['volumes'] = lim['maxTotalVolumes'] - lim['totalVolumesUsed']
    avail_limits['volume_gbs'] = (lim['maxTotalVolumeGigabytes'] -
                                  lim['totalGigabytesUsed'])
    return avail_limits
Пример #10
0
def _get_cinder_limits():
    avail_limits = {}
    cinder = cinder_client.client()
    lim = {}
    for l in cinder.limits.get().absolute:
        lim[l.name] = l.value
    avail_limits['volumes'] = lim['maxTotalVolumes'] - lim['totalVolumesUsed']
    avail_limits['volume_gbs'] = (
        lim['maxTotalVolumeGigabytes'] - lim['totalGigabytesUsed'])
    return avail_limits
Пример #11
0
def _get_cinder_limits():
    avail_limits = {}
    cinder = cinder_client.client()
    lim = {}
    for l in b.execute_with_retries(cinder.limits.get).absolute:
        lim[l.name] = l.value

    avail_limits['volumes'] = _sub_limit(lim['maxTotalVolumes'],
                                         lim['totalVolumesUsed'])

    avail_limits['volume_gbs'] = _sub_limit(lim['maxTotalVolumeGigabytes'],
                                            lim['totalGigabytesUsed'])

    return avail_limits
Пример #12
0
def _get_cinder_limits():
    avail_limits = {}
    cinder = cinder_client.client()
    lim = {}
    for l in b.execute_with_retries(cinder.limits.get).absolute:
        lim[l.name] = l.value

    avail_limits['volumes'] = _sub_limit(lim['maxTotalVolumes'],
                                         lim['totalVolumesUsed'])

    avail_limits['volume_gbs'] = _sub_limit(lim['maxTotalVolumeGigabytes'],
                                            lim['totalGigabytesUsed'])

    return avail_limits
Пример #13
0
def _create_attach_volume(ctx, instance, size, display_name=None):
    volume = cinder.client().volumes.create(size=size,
                                            display_name=display_name)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise ex.SystemError("Volume %s has error status" % volume.id)

        context.sleep(1)

    resp = nova.client().volumes.create_server_volume(
        instance.instance_id, volume.id, None)
    return resp.device
Пример #14
0
def _create_attach_volume(ctx, instance, size, display_name=None):
    volume = cinder.client().volumes.create(size=size,
                                            display_name=display_name)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise ex.SystemError(_("Volume %s has error status") % volume.id)

        context.sleep(1)

    resp = nova.client().volumes.create_server_volume(instance.instance_id,
                                                      volume.id, None)
    return resp.device
Пример #15
0
def _create_attach_volume(ctx, instance, size, display_name=None,
                          volume_type=None):
    volume = cinder.client().volumes.create(size=size,
                                            display_name=display_name,
                                            volume_type=volume_type,
                                            lvm_instance_id=instance.instance_id)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise RuntimeError("Volume %s has error status" % volume.id)

        context.sleep(1)

    nova.client().volumes.create_server_volume(instance.instance_id,
                                               volume.id, None)
Пример #16
0
def _create_attach_volume(ctx,
                          instance,
                          size,
                          display_name=None,
                          volume_type=None):
    volume = cinder.client().volumes.create(size=size,
                                            display_name=display_name,
                                            volume_type=volume_type)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise RuntimeError("Volume %s has error status" % volume.id)

        context.sleep(1)

    nova.client().volumes.create_server_volume(instance.instance_id, volume.id,
                                               None)
Пример #17
0
def _create_attach_volume(ctx, instance, size, volume_type,
                          volume_local_to_instance, name=None,
                          availability_zone=None):
    if CONF.cinder.api_version == 1:
        kwargs = {'size': size, 'display_name': name}
    else:
        kwargs = {'size': size, 'name': name}

    kwargs['volume_type'] = volume_type
    if availability_zone is not None:
        kwargs['availability_zone'] = availability_zone

    if volume_local_to_instance:
        kwargs['scheduler_hints'] = {'local_to_instance': instance.instance_id}

    volume = b.execute_with_retries(cinder.client().volumes.create, **kwargs)
    conductor.append_volume(ctx, instance, volume.id)
    _await_available(volume)

    resp = b.execute_with_retries(nova.client().volumes.create_server_volume,
                                  instance.instance_id, volume.id, None)
    return resp.device
Пример #18
0
def _create_attach_volume(ctx, instance, size, volume_type, name=None,
                          availability_zone=None):
    if CONF.cinder_api_version == 1:
        kwargs = {'size': size, 'display_name': name}
    else:
        kwargs = {'size': size, 'name': name}

    kwargs['volume_type'] = volume_type
    if availability_zone is not None:
        kwargs['availability_zone'] = availability_zone

    volume = cinder.client().volumes.create(**kwargs)
    conductor.append_volume(ctx, instance, volume.id)

    while volume.status != 'available':
        volume = cinder.get_volume(volume.id)
        if volume.status == 'error':
            raise ex.SystemError(_("Volume %s has error status") % volume.id)

        context.sleep(1)

    resp = nova.client().volumes.create_server_volume(
        instance.instance_id, volume.id, None)
    return resp.device
Пример #19
0
def check_volume_type_exists(volume_type):
    volume_types = cinder.client().volume_types.list()
    volume_types = list(filter(lambda x: x.name == volume_type, volume_types))
    if len(volume_types) == 1 and volume_types[0].name == volume_type:
        return
    raise ex.NotFoundException(volume_type, _("Volume type '%s' not found"))
Пример #20
0
def check_volume_availability_zone_exist(az):
    az_list = cinder.client().availability_zones.list()
    az_names = [a.zoneName for a in az_list]
    if az not in az_names:
        raise ex.NotFoundException(az, _("Cinder availability zone '%s' not found"))
Пример #21
0
def check_volume_type_exists(volume_type):
    volume_types = cinder.client().volume_types.list(search_opts={'name':
                                                                  volume_type})
    if len(volume_types) == 1 and volume_types[0].name == volume_type:
        return
    raise ex.NotFoundException(volume_type, _("Volume type '%s' not found"))
Пример #22
0
def check_volume_type_exists(volume_type):
    volume_types = cinder.client().volume_types.list(
        search_opts={'name': volume_type})
    if len(volume_types) == 1 and volume_types[0] == volume_type:
        return
    raise ex.NotFoundException(volume_type, _("Volume type '%s' not found"))
Пример #23
0
def check_volume_availability_zone_exist(az):
    az_list = cinder.client().availability_zones.list()
    az_names = [a.zoneName for a in az_list]
    if az not in az_names:
        raise ex.NotFoundException(
            az, _("Cinder availability zone '%s' not found"))
Пример #24
0
def check_volume_type_exists(volume_type):
    volume_types = cinder.client().volume_types.list()
    volume_types = list(filter(lambda x: x.name == volume_type, volume_types))
    if len(volume_types) == 1 and volume_types[0].name == volume_type:
        return
    raise ex.NotFoundException(volume_type, _("Volume type '%s' not found"))