Remove img-conversions and gnocchi platform logical volumes
These two partitions are no longer needed in a k8s deployment. Both of them are now managed by the openstack application. Change-Id: Id342c3eafc839a268683ff369353cf4a5f23027d Story: 2004695 Task: 30052 Depends-On: https://review.openstack.org/#/c/639246/ Signed-off-by: Ovidiu Poncea <ovidiu.poncea@windriver.com>
This commit is contained in:
parent
56275fb5b0
commit
14cfe576c2
|
@ -35,26 +35,18 @@ LINK_MTU_DEFAULT = "1500"
|
||||||
CINDER_LVM_THIN = "thin"
|
CINDER_LVM_THIN = "thin"
|
||||||
CINDER_LVM_THICK = "thick"
|
CINDER_LVM_THICK = "thick"
|
||||||
|
|
||||||
DEFAULT_IMAGE_STOR_SIZE = \
|
DEFAULT_CGCS_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_IMAGE_STOR_SIZE
|
sysinv_constants.DEFAULT_CGCS_STOR_SIZE
|
||||||
DEFAULT_DATABASE_STOR_SIZE = \
|
DEFAULT_DATABASE_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_DATABASE_STOR_SIZE
|
sysinv_constants.DEFAULT_DATABASE_STOR_SIZE
|
||||||
DEFAULT_IMG_CONVERSION_STOR_SIZE = \
|
DEFAULT_SMALL_CGCS_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_IMG_CONVERSION_STOR_SIZE
|
sysinv_constants.DEFAULT_SMALL_CGCS_STOR_SIZE
|
||||||
DEFAULT_SMALL_IMAGE_STOR_SIZE = \
|
|
||||||
sysinv_constants.DEFAULT_SMALL_IMAGE_STOR_SIZE
|
|
||||||
DEFAULT_SMALL_DATABASE_STOR_SIZE = \
|
DEFAULT_SMALL_DATABASE_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_SMALL_DATABASE_STOR_SIZE
|
sysinv_constants.DEFAULT_SMALL_DATABASE_STOR_SIZE
|
||||||
DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE = \
|
|
||||||
sysinv_constants.DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE
|
|
||||||
DEFAULT_SMALL_BACKUP_STOR_SIZE = \
|
DEFAULT_SMALL_BACKUP_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_SMALL_BACKUP_STOR_SIZE
|
sysinv_constants.DEFAULT_SMALL_BACKUP_STOR_SIZE
|
||||||
DEFAULT_VIRTUAL_IMAGE_STOR_SIZE = \
|
|
||||||
sysinv_constants.DEFAULT_VIRTUAL_IMAGE_STOR_SIZE
|
|
||||||
DEFAULT_VIRTUAL_DATABASE_STOR_SIZE = \
|
DEFAULT_VIRTUAL_DATABASE_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_VIRTUAL_DATABASE_STOR_SIZE
|
sysinv_constants.DEFAULT_VIRTUAL_DATABASE_STOR_SIZE
|
||||||
DEFAULT_VIRTUAL_IMG_CONVERSION_STOR_SIZE = \
|
|
||||||
sysinv_constants.DEFAULT_VIRTUAL_IMG_CONVERSION_STOR_SIZE
|
|
||||||
DEFAULT_VIRTUAL_BACKUP_STOR_SIZE = \
|
DEFAULT_VIRTUAL_BACKUP_STOR_SIZE = \
|
||||||
sysinv_constants.DEFAULT_VIRTUAL_BACKUP_STOR_SIZE
|
sysinv_constants.DEFAULT_VIRTUAL_BACKUP_STOR_SIZE
|
||||||
DEFAULT_EXTENSION_STOR_SIZE = \
|
DEFAULT_EXTENSION_STOR_SIZE = \
|
||||||
|
|
|
@ -144,26 +144,6 @@ class platform::filesystem::scratch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class platform::filesystem::gnocchi::params (
|
|
||||||
$lv_size = '5',
|
|
||||||
$lv_name = 'gnocchi-lv',
|
|
||||||
$mountpoint = '/opt/gnocchi',
|
|
||||||
$devmapper = '/dev/mapper/cgts--vg-gnocchi--lv',
|
|
||||||
$fs_type = 'ext4',
|
|
||||||
$fs_options = '-i 8192'
|
|
||||||
) { }
|
|
||||||
|
|
||||||
class platform::filesystem::gnocchi
|
|
||||||
inherits ::platform::filesystem::gnocchi::params {
|
|
||||||
|
|
||||||
platform::filesystem { $lv_name:
|
|
||||||
lv_name => $lv_name,
|
|
||||||
lv_size => $lv_size,
|
|
||||||
mountpoint => $mountpoint,
|
|
||||||
fs_type => $fs_type,
|
|
||||||
fs_options => $fs_options
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class platform::filesystem::docker::params (
|
class platform::filesystem::docker::params (
|
||||||
$lv_size = '1',
|
$lv_size = '1',
|
||||||
|
@ -189,27 +169,6 @@ class platform::filesystem::docker
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class platform::filesystem::img_conversions::params (
|
|
||||||
$lv_size = '8',
|
|
||||||
$lv_name = 'img-conversions-lv',
|
|
||||||
$mountpoint = '/opt/img-conversions',
|
|
||||||
$devmapper = '/dev/mapper/cgts--vg-img--conversions--lv',
|
|
||||||
$fs_type = 'ext4',
|
|
||||||
$fs_options = ' '
|
|
||||||
) {}
|
|
||||||
|
|
||||||
class platform::filesystem::img_conversions
|
|
||||||
inherits ::platform::filesystem::img_conversions::params {
|
|
||||||
|
|
||||||
platform::filesystem { $lv_name:
|
|
||||||
lv_name => $lv_name,
|
|
||||||
lv_size => $lv_size,
|
|
||||||
mountpoint => $mountpoint,
|
|
||||||
fs_type => $fs_type,
|
|
||||||
fs_options => $fs_options
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class platform::filesystem::storage {
|
class platform::filesystem::storage {
|
||||||
|
|
||||||
|
@ -238,8 +197,6 @@ class platform::filesystem::controller {
|
||||||
include ::platform::filesystem::backup
|
include ::platform::filesystem::backup
|
||||||
include ::platform::filesystem::scratch
|
include ::platform::filesystem::scratch
|
||||||
include ::platform::filesystem::docker
|
include ::platform::filesystem::docker
|
||||||
include ::platform::filesystem::img_conversions
|
|
||||||
include ::platform::filesystem::gnocchi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -273,21 +230,6 @@ class platform::filesystem::scratch::runtime {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class platform::filesystem::gnocchi::runtime {
|
|
||||||
|
|
||||||
include ::platform::filesystem::gnocchi::params
|
|
||||||
$lv_name = $::platform::filesystem::gnocchi::params::lv_name
|
|
||||||
$lv_size = $::platform::filesystem::gnocchi::params::lv_size
|
|
||||||
$devmapper = $::platform::filesystem::gnocchi::params::devmapper
|
|
||||||
|
|
||||||
platform::filesystem::resize { $lv_name:
|
|
||||||
lv_name => $lv_name,
|
|
||||||
lv_size => $lv_size,
|
|
||||||
devmapper => $devmapper,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class platform::filesystem::docker::runtime {
|
class platform::filesystem::docker::runtime {
|
||||||
|
|
||||||
include ::platform::filesystem::docker::params
|
include ::platform::filesystem::docker::params
|
||||||
|
@ -303,20 +245,6 @@ class platform::filesystem::docker::runtime {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class platform::filesystem::img_conversions::runtime {
|
|
||||||
|
|
||||||
include ::platform::filesystem::img_conversions::params
|
|
||||||
$lv_name = $::platform::filesystem::img_conversions::params::lv_name
|
|
||||||
$lv_size = $::platform::filesystem::img_conversions::params::lv_size
|
|
||||||
$devmapper = $::platform::filesystem::img_conversions::params::devmapper
|
|
||||||
|
|
||||||
platform::filesystem::resize { $lv_name:
|
|
||||||
lv_name => $lv_name,
|
|
||||||
lv_size => $lv_size,
|
|
||||||
devmapper => $devmapper,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class platform::filesystem::docker::params::bootstrap (
|
class platform::filesystem::docker::params::bootstrap (
|
||||||
$lv_size = '30',
|
$lv_size = '30',
|
||||||
$lv_name = 'docker-lv',
|
$lv_name = 'docker-lv',
|
||||||
|
@ -327,6 +255,7 @@ class platform::filesystem::docker::params::bootstrap (
|
||||||
$fs_use_all = false
|
$fs_use_all = false
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
|
|
||||||
class platform::filesystem::docker::bootstrap
|
class platform::filesystem::docker::bootstrap
|
||||||
inherits ::platform::filesystem::docker::params::bootstrap {
|
inherits ::platform::filesystem::docker::params::bootstrap {
|
||||||
|
|
||||||
|
|
|
@ -65,16 +65,12 @@ class ControllerFs(base.APIBase):
|
||||||
/var/lib/postgresql (pgsql-lv)
|
/var/lib/postgresql (pgsql-lv)
|
||||||
The image GiB of controller_fs - maps to
|
The image GiB of controller_fs - maps to
|
||||||
/opt/cgcs (cgcs-lv)
|
/opt/cgcs (cgcs-lv)
|
||||||
The image conversion GiB of controller_fs - maps to
|
|
||||||
/opt/img-conversions (img-conversions-lv)
|
|
||||||
The backup GiB of controller_fs - maps to
|
The backup GiB of controller_fs - maps to
|
||||||
/opt/backups (backup-lv)
|
/opt/backups (backup-lv)
|
||||||
The scratch GiB of controller_fs - maps to
|
The scratch GiB of controller_fs - maps to
|
||||||
/scratch (scratch-lv)
|
/scratch (scratch-lv)
|
||||||
The extension GiB of controller_fs - maps to
|
The extension GiB of controller_fs - maps to
|
||||||
/opt/extension (extension-lv)
|
/opt/extension (extension-lv)
|
||||||
The gnocchi GiB of controller_fs - maps to
|
|
||||||
/opt/gnocchi (gnocchi-lv)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
uuid = types.uuid
|
uuid = types.uuid
|
||||||
|
@ -272,7 +268,7 @@ def _check_controller_multi_fs(controller_fs_new_list,
|
||||||
if ceph_mon_gib_new:
|
if ceph_mon_gib_new:
|
||||||
msg = _(
|
msg = _(
|
||||||
"Total target growth size %s GiB for database "
|
"Total target growth size %s GiB for database "
|
||||||
"(doubled for upgrades), glance, img-conversions, "
|
"(doubled for upgrades), glance, "
|
||||||
"scratch, backup, extension and ceph-mon exceeds "
|
"scratch, backup, extension and ceph-mon exceeds "
|
||||||
"growth limit of %s GiB." %
|
"growth limit of %s GiB." %
|
||||||
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
||||||
|
@ -280,7 +276,7 @@ def _check_controller_multi_fs(controller_fs_new_list,
|
||||||
else:
|
else:
|
||||||
msg = _(
|
msg = _(
|
||||||
"Total target growth size %s GiB for database "
|
"Total target growth size %s GiB for database "
|
||||||
"(doubled for upgrades), glance, img-conversions, scratch, "
|
"(doubled for upgrades), glance, scratch, "
|
||||||
"backup and extension exceeds growth limit of %s GiB." %
|
"backup and extension exceeds growth limit of %s GiB." %
|
||||||
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
||||||
)
|
)
|
||||||
|
@ -488,7 +484,7 @@ def _check_controller_fs(controller_fs_new=None,
|
||||||
if ceph_mon_gib_new:
|
if ceph_mon_gib_new:
|
||||||
msg = _(
|
msg = _(
|
||||||
"Total target growth size %s GiB for database "
|
"Total target growth size %s GiB for database "
|
||||||
"(doubled for upgrades), glance, img-conversions, "
|
"(doubled for upgrades), glance, "
|
||||||
"scratch, backup, extension and ceph-mon exceeds "
|
"scratch, backup, extension and ceph-mon exceeds "
|
||||||
"growth limit of %s GiB." %
|
"growth limit of %s GiB." %
|
||||||
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
||||||
|
@ -496,43 +492,24 @@ def _check_controller_fs(controller_fs_new=None,
|
||||||
else:
|
else:
|
||||||
msg = _(
|
msg = _(
|
||||||
"Total target growth size %s GiB for database "
|
"Total target growth size %s GiB for database "
|
||||||
"(doubled for upgrades), glance, img-conversions, scratch, "
|
"(doubled for upgrades), glance, scratch, "
|
||||||
"backup and extension exceeds growth limit of %s GiB." %
|
"backup and extension exceeds growth limit of %s GiB." %
|
||||||
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
(cgtsvg_growth_gib, cgtsvg_max_free_GiB)
|
||||||
)
|
)
|
||||||
raise wsme.exc.ClientSideError(msg)
|
raise wsme.exc.ClientSideError(msg)
|
||||||
|
|
||||||
|
|
||||||
def _check_controller_multi_fs_data(context, controller_fs_list_new,
|
def _check_controller_multi_fs_data(context, controller_fs_list_new):
|
||||||
modified_fs):
|
|
||||||
""" Check controller filesystem data and return growth
|
""" Check controller filesystem data and return growth
|
||||||
returns: cgtsvg_growth_gib
|
returns: cgtsvg_growth_gib
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cgtsvg_growth_gib = 0
|
cgtsvg_growth_gib = 0
|
||||||
|
|
||||||
# Check if we need img_conversions
|
|
||||||
img_conversion_required = False
|
|
||||||
lvdisplay_keys = [constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_DATABASE],
|
lvdisplay_keys = [constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_DATABASE],
|
||||||
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_CGCS],
|
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_CGCS],
|
||||||
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_BACKUP],
|
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_BACKUP],
|
||||||
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_SCRATCH],
|
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_SCRATCH]]
|
||||||
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_GNOCCHI]]
|
|
||||||
|
|
||||||
# On primary region, img-conversions always exists in controller_fs DB table.
|
|
||||||
# On secondary region, if both glance and cinder are sharing from the primary
|
|
||||||
# region, img-conversions won't exist in controller_fs DB table. We already
|
|
||||||
# have semantic check not to allow img-conversions resizing.
|
|
||||||
if (StorageBackendConfig.has_backend(pecan.request.dbapi, constants.SB_TYPE_LVM) or
|
|
||||||
StorageBackendConfig.has_backend(pecan.request.dbapi, constants.SB_TYPE_CEPH)):
|
|
||||||
img_conversion_required = True
|
|
||||||
lvdisplay_keys.append(constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_IMG_CONVERSIONS])
|
|
||||||
|
|
||||||
if (constants.FILESYSTEM_NAME_IMG_CONVERSIONS in modified_fs and
|
|
||||||
not img_conversion_required):
|
|
||||||
raise wsme.exc.ClientSideError(
|
|
||||||
_("%s is not modifiable: no cinder backend is "
|
|
||||||
"currently configured.") % constants.FILESYSTEM_NAME_IMG_CONVERSIONS)
|
|
||||||
|
|
||||||
lvdisplay_dict = pecan.request.rpcapi.get_controllerfs_lv_sizes(context)
|
lvdisplay_dict = pecan.request.rpcapi.get_controllerfs_lv_sizes(context)
|
||||||
|
|
||||||
|
@ -760,8 +737,7 @@ class ControllerFsController(rest.RestController):
|
||||||
|
|
||||||
cgtsvg_growth_gib = _check_controller_multi_fs_data(
|
cgtsvg_growth_gib = _check_controller_multi_fs_data(
|
||||||
pecan.request.context,
|
pecan.request.context,
|
||||||
controller_fs_list_new,
|
controller_fs_list_new)
|
||||||
modified_fs)
|
|
||||||
|
|
||||||
if _check_controller_state():
|
if _check_controller_state():
|
||||||
_check_controller_multi_fs(controller_fs_list_new,
|
_check_controller_multi_fs(controller_fs_list_new,
|
||||||
|
|
|
@ -36,7 +36,6 @@ import wsmeext.pecan as wsme_pecan
|
||||||
|
|
||||||
from sysinv.api.controllers.v1 import base
|
from sysinv.api.controllers.v1 import base
|
||||||
from sysinv.api.controllers.v1 import collection
|
from sysinv.api.controllers.v1 import collection
|
||||||
from sysinv.api.controllers.v1 import controller_fs as controller_fs_api
|
|
||||||
from sysinv.api.controllers.v1 import link
|
from sysinv.api.controllers.v1 import link
|
||||||
from sysinv.api.controllers.v1 import types
|
from sysinv.api.controllers.v1 import types
|
||||||
from sysinv.api.controllers.v1 import utils
|
from sysinv.api.controllers.v1 import utils
|
||||||
|
@ -695,11 +694,6 @@ def _check_and_update_rbd_provisioner(new_storceph, remove=False):
|
||||||
|
|
||||||
def _apply_backend_changes(op, sb_obj):
|
def _apply_backend_changes(op, sb_obj):
|
||||||
services = api_helper.getListFromServices(sb_obj.as_dict())
|
services = api_helper.getListFromServices(sb_obj.as_dict())
|
||||||
# Make sure img_conversion partition is present
|
|
||||||
if (constants.SB_SVC_CINDER in services or
|
|
||||||
constants.SB_SVC_GLANCE in services):
|
|
||||||
StorageBackendConfig.set_img_conversions_defaults(
|
|
||||||
pecan.request.dbapi, controller_fs_api)
|
|
||||||
|
|
||||||
if op == constants.SB_API_OP_CREATE:
|
if op == constants.SB_API_OP_CREATE:
|
||||||
if sb_obj.name == constants.SB_DEFAULT_NAMES[
|
if sb_obj.name == constants.SB_DEFAULT_NAMES[
|
||||||
|
|
|
@ -35,7 +35,6 @@ import wsmeext.pecan as wsme_pecan
|
||||||
|
|
||||||
from sysinv.api.controllers.v1 import base
|
from sysinv.api.controllers.v1 import base
|
||||||
from sysinv.api.controllers.v1 import collection
|
from sysinv.api.controllers.v1 import collection
|
||||||
from sysinv.api.controllers.v1 import controller_fs as controller_fs_api
|
|
||||||
from sysinv.api.controllers.v1 import link
|
from sysinv.api.controllers.v1 import link
|
||||||
from sysinv.api.controllers.v1 import types
|
from sysinv.api.controllers.v1 import types
|
||||||
from sysinv.api.controllers.v1 import utils
|
from sysinv.api.controllers.v1 import utils
|
||||||
|
@ -43,7 +42,6 @@ from sysinv.api.controllers.v1.utils import SBApiHelper as api_helper
|
||||||
from sysinv.common import constants
|
from sysinv.common import constants
|
||||||
from sysinv.common import exception
|
from sysinv.common import exception
|
||||||
from sysinv.common import utils as cutils
|
from sysinv.common import utils as cutils
|
||||||
from sysinv.common.storage_backend_conf import StorageBackendConfig
|
|
||||||
from sysinv import objects
|
from sysinv import objects
|
||||||
from sysinv.openstack.common import log
|
from sysinv.openstack.common import log
|
||||||
from sysinv.openstack.common import uuidutils
|
from sysinv.openstack.common import uuidutils
|
||||||
|
@ -515,9 +513,6 @@ def _create(storage_lvm):
|
||||||
storage_lvm,
|
storage_lvm,
|
||||||
storage_lvm.pop('confirmed', False))
|
storage_lvm.pop('confirmed', False))
|
||||||
|
|
||||||
StorageBackendConfig.set_img_conversions_defaults(pecan.request.dbapi,
|
|
||||||
controller_fs_api)
|
|
||||||
|
|
||||||
# We have a valid configuration. create it.
|
# We have a valid configuration. create it.
|
||||||
system = pecan.request.dbapi.isystem_get_one()
|
system = pecan.request.dbapi.isystem_get_one()
|
||||||
storage_lvm['forisystemid'] = system.id
|
storage_lvm['forisystemid'] = system.id
|
||||||
|
|
|
@ -283,31 +283,25 @@ VSWITCH_TYPE_NUAGE_VRS = "nuage_vrs"
|
||||||
VSWITCH_TYPE_NONE = "none"
|
VSWITCH_TYPE_NONE = "none"
|
||||||
|
|
||||||
# Partition default sizes
|
# Partition default sizes
|
||||||
DEFAULT_IMAGE_STOR_SIZE = 10
|
DEFAULT_CGCS_STOR_SIZE = 20
|
||||||
DEFAULT_DOCKER_STOR_SIZE = 1
|
DEFAULT_DOCKER_STOR_SIZE = 1
|
||||||
DEFAULT_DOCKER_DISTRIBUTION_STOR_SIZE = 1
|
DEFAULT_DOCKER_DISTRIBUTION_STOR_SIZE = 1
|
||||||
DEFAULT_DATABASE_STOR_SIZE = 20
|
DEFAULT_DATABASE_STOR_SIZE = 20
|
||||||
DEFAULT_IMG_CONVERSION_STOR_SIZE = 20
|
DEFAULT_SMALL_CGCS_STOR_SIZE = 10
|
||||||
DEFAULT_SMALL_IMAGE_STOR_SIZE = 10
|
|
||||||
DEFAULT_SMALL_DATABASE_STOR_SIZE = 10
|
DEFAULT_SMALL_DATABASE_STOR_SIZE = 10
|
||||||
DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE = 10
|
|
||||||
DEFAULT_SMALL_BACKUP_STOR_SIZE = 40
|
DEFAULT_SMALL_BACKUP_STOR_SIZE = 40
|
||||||
DEFAULT_VIRTUAL_IMAGE_STOR_SIZE = 8
|
|
||||||
DEFAULT_VIRTUAL_DATABASE_STOR_SIZE = 5
|
DEFAULT_VIRTUAL_DATABASE_STOR_SIZE = 5
|
||||||
DEFAULT_VIRTUAL_IMG_CONVERSION_STOR_SIZE = 8
|
|
||||||
DEFAULT_VIRTUAL_BACKUP_STOR_SIZE = 5
|
DEFAULT_VIRTUAL_BACKUP_STOR_SIZE = 5
|
||||||
DEFAULT_EXTENSION_STOR_SIZE = 1
|
DEFAULT_EXTENSION_STOR_SIZE = 1
|
||||||
DEFAULT_PATCH_VAULT_STOR_SIZE = 8
|
DEFAULT_PATCH_VAULT_STOR_SIZE = 8
|
||||||
DEFAULT_ETCD_STORE_SIZE = 1
|
DEFAULT_ETCD_STORE_SIZE = 1
|
||||||
DEFAULT_GNOCCHI_STOR_SIZE = 5
|
|
||||||
|
|
||||||
# The threshold between small and large disks is 240GiB
|
# The threshold between small and large disks is 240GiB
|
||||||
DEFAULT_SMALL_DISK_SIZE = 240
|
DEFAULT_SMALL_DISK_SIZE = 240
|
||||||
# The minimum disk size needed to create all partitions
|
# The minimum disk size needed to create all partitions
|
||||||
# Value based on the following calculation:
|
# Value based on the following calculation:
|
||||||
# DEFAULT_SMALL_IMAGE_STOR_SIZE 10
|
# DEFAULT_SMALL_CGCS_STOR_SIZE 10
|
||||||
# 2*DEFAULT_SMALL_DATABASE_STOR_SIZE 20 (2*10)
|
# 2*DEFAULT_SMALL_DATABASE_STOR_SIZE 20 (2*10)
|
||||||
# DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE 10
|
|
||||||
# DEFAULT_SMALL_BACKUP_STOR_SIZE 40
|
# DEFAULT_SMALL_BACKUP_STOR_SIZE 40
|
||||||
# LOG_VOL_SIZE (reserved in kickstarts) 8
|
# LOG_VOL_SIZE (reserved in kickstarts) 8
|
||||||
# SCRATCH_VOL_SIZE (reserved in kickstarts) 8
|
# SCRATCH_VOL_SIZE (reserved in kickstarts) 8
|
||||||
|
@ -315,7 +309,6 @@ DEFAULT_SMALL_DISK_SIZE = 240
|
||||||
# PLATFORM_LV 2
|
# PLATFORM_LV 2
|
||||||
# ANCHOR_LV 1
|
# ANCHOR_LV 1
|
||||||
# DEFAULT_EXTENSION_STOR_SIZE 1
|
# DEFAULT_EXTENSION_STOR_SIZE 1
|
||||||
# DEFAULT_GNOCCHI_STOR_SIZE 5
|
|
||||||
# KUBERNETES_DOCKER_STOR_SIZE (--kubernetes) 30
|
# KUBERNETES_DOCKER_STOR_SIZE (--kubernetes) 30
|
||||||
# DOCKER_DISTRIBUTION_STOR_SIZE (--kubernetes) 16
|
# DOCKER_DISTRIBUTION_STOR_SIZE (--kubernetes) 16
|
||||||
# ETCD_STOR_SIZE (--kubernetes) 5
|
# ETCD_STOR_SIZE (--kubernetes) 5
|
||||||
|
@ -325,8 +318,8 @@ DEFAULT_SMALL_DISK_SIZE = 240
|
||||||
# boot partition (created in kickstarts) 1
|
# boot partition (created in kickstarts) 1
|
||||||
# buffer for partition creation 1
|
# buffer for partition creation 1
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
# 201
|
# 186
|
||||||
MINIMUM_DISK_SIZE = 201
|
MINIMUM_DISK_SIZE = 186
|
||||||
|
|
||||||
# Docker lv size when Kubernetes is configured
|
# Docker lv size when Kubernetes is configured
|
||||||
KUBERNETES_DOCKER_STOR_SIZE = 30
|
KUBERNETES_DOCKER_STOR_SIZE = 30
|
||||||
|
@ -510,14 +503,12 @@ FILESYSTEM_NAME_CGCS = 'cgcs'
|
||||||
FILESYSTEM_DISPLAY_NAME_CGCS = 'glance'
|
FILESYSTEM_DISPLAY_NAME_CGCS = 'glance'
|
||||||
FILESYSTEM_NAME_CINDER = 'cinder'
|
FILESYSTEM_NAME_CINDER = 'cinder'
|
||||||
FILESYSTEM_NAME_DATABASE = 'database'
|
FILESYSTEM_NAME_DATABASE = 'database'
|
||||||
FILESYSTEM_NAME_IMG_CONVERSIONS = 'img-conversions'
|
|
||||||
FILESYSTEM_NAME_SCRATCH = 'scratch'
|
FILESYSTEM_NAME_SCRATCH = 'scratch'
|
||||||
FILESYSTEM_NAME_DOCKER = 'docker'
|
FILESYSTEM_NAME_DOCKER = 'docker'
|
||||||
FILESYSTEM_NAME_DOCKER_DISTRIBUTION = 'docker-distribution'
|
FILESYSTEM_NAME_DOCKER_DISTRIBUTION = 'docker-distribution'
|
||||||
FILESYSTEM_NAME_EXTENSION = 'extension'
|
FILESYSTEM_NAME_EXTENSION = 'extension'
|
||||||
FILESYSTEM_NAME_ETCD = 'etcd'
|
FILESYSTEM_NAME_ETCD = 'etcd'
|
||||||
FILESYSTEM_NAME_PATCH_VAULT = 'patch-vault'
|
FILESYSTEM_NAME_PATCH_VAULT = 'patch-vault'
|
||||||
FILESYSTEM_NAME_GNOCCHI = 'gnocchi'
|
|
||||||
|
|
||||||
FILESYSTEM_LV_DICT = {
|
FILESYSTEM_LV_DICT = {
|
||||||
FILESYSTEM_NAME_CGCS: 'cgcs-lv',
|
FILESYSTEM_NAME_CGCS: 'cgcs-lv',
|
||||||
|
@ -525,12 +516,10 @@ FILESYSTEM_LV_DICT = {
|
||||||
FILESYSTEM_NAME_SCRATCH: 'scratch-lv',
|
FILESYSTEM_NAME_SCRATCH: 'scratch-lv',
|
||||||
FILESYSTEM_NAME_DOCKER: 'docker-lv',
|
FILESYSTEM_NAME_DOCKER: 'docker-lv',
|
||||||
FILESYSTEM_NAME_DOCKER_DISTRIBUTION: 'dockerdistribution-lv',
|
FILESYSTEM_NAME_DOCKER_DISTRIBUTION: 'dockerdistribution-lv',
|
||||||
FILESYSTEM_NAME_IMG_CONVERSIONS: 'img-conversions-lv',
|
|
||||||
FILESYSTEM_NAME_DATABASE: 'pgsql-lv',
|
FILESYSTEM_NAME_DATABASE: 'pgsql-lv',
|
||||||
FILESYSTEM_NAME_EXTENSION: 'extension-lv',
|
FILESYSTEM_NAME_EXTENSION: 'extension-lv',
|
||||||
FILESYSTEM_NAME_ETCD: 'etcd-lv',
|
FILESYSTEM_NAME_ETCD: 'etcd-lv',
|
||||||
FILESYSTEM_NAME_PATCH_VAULT: 'patch-vault-lv',
|
FILESYSTEM_NAME_PATCH_VAULT: 'patch-vault-lv',
|
||||||
FILESYSTEM_NAME_GNOCCHI: 'gnocchi-lv'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SUPPORTED_LOGICAL_VOLUME_LIST = FILESYSTEM_LV_DICT.values()
|
SUPPORTED_LOGICAL_VOLUME_LIST = FILESYSTEM_LV_DICT.values()
|
||||||
|
@ -541,13 +530,11 @@ SUPPORTED_FILEYSTEM_LIST = [
|
||||||
FILESYSTEM_NAME_CINDER,
|
FILESYSTEM_NAME_CINDER,
|
||||||
FILESYSTEM_NAME_DATABASE,
|
FILESYSTEM_NAME_DATABASE,
|
||||||
FILESYSTEM_NAME_EXTENSION,
|
FILESYSTEM_NAME_EXTENSION,
|
||||||
FILESYSTEM_NAME_IMG_CONVERSIONS,
|
|
||||||
FILESYSTEM_NAME_SCRATCH,
|
FILESYSTEM_NAME_SCRATCH,
|
||||||
FILESYSTEM_NAME_DOCKER,
|
FILESYSTEM_NAME_DOCKER,
|
||||||
FILESYSTEM_NAME_DOCKER_DISTRIBUTION,
|
FILESYSTEM_NAME_DOCKER_DISTRIBUTION,
|
||||||
FILESYSTEM_NAME_PATCH_VAULT,
|
FILESYSTEM_NAME_PATCH_VAULT,
|
||||||
FILESYSTEM_NAME_ETCD,
|
FILESYSTEM_NAME_ETCD,
|
||||||
FILESYSTEM_NAME_GNOCCHI
|
|
||||||
]
|
]
|
||||||
|
|
||||||
SUPPORTED_REPLICATED_FILEYSTEM_LIST = [
|
SUPPORTED_REPLICATED_FILEYSTEM_LIST = [
|
||||||
|
|
|
@ -12,13 +12,11 @@
|
||||||
|
|
||||||
|
|
||||||
import pecan
|
import pecan
|
||||||
import wsme
|
|
||||||
import ast
|
import ast
|
||||||
|
|
||||||
from sysinv.common import constants
|
from sysinv.common import constants
|
||||||
from sysinv.common import exception
|
from sysinv.common import exception
|
||||||
from sysinv.common import utils as cutils
|
from sysinv.common import utils as cutils
|
||||||
from sysinv.openstack.common.gettextutils import _
|
|
||||||
from sysinv.openstack.common import log
|
from sysinv.openstack.common import log
|
||||||
|
|
||||||
|
|
||||||
|
@ -380,51 +378,6 @@ class StorageBackendConfig(object):
|
||||||
constants.SB_TYPE_CEPH]:
|
constants.SB_TYPE_CEPH]:
|
||||||
return backend.task == constants.SB_TASK_RESTORE
|
return backend.task == constants.SB_TASK_RESTORE
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def set_img_conversions_defaults(dbapi, controller_fs_api):
|
|
||||||
"""
|
|
||||||
initialize img_conversion partitions with default values if not
|
|
||||||
already done
|
|
||||||
:param dbapi
|
|
||||||
:param controller_fs_api
|
|
||||||
"""
|
|
||||||
# Img conversions identification
|
|
||||||
values = {'name': constants.FILESYSTEM_NAME_IMG_CONVERSIONS,
|
|
||||||
'logical_volume': constants.FILESYSTEM_LV_DICT[
|
|
||||||
constants.FILESYSTEM_NAME_IMG_CONVERSIONS],
|
|
||||||
'replicated': False}
|
|
||||||
|
|
||||||
# Abort if is already defined
|
|
||||||
controller_fs_list = dbapi.controller_fs_get_list()
|
|
||||||
for fs in controller_fs_list:
|
|
||||||
if values['name'] == fs.name:
|
|
||||||
LOG.info("Image conversions already defined, "
|
|
||||||
"avoiding reseting values")
|
|
||||||
return
|
|
||||||
|
|
||||||
# Check if there is enough space available
|
|
||||||
cgtsvg_max_free_GiB = controller_fs_api._get_controller_cgtsvg_limit()
|
|
||||||
args = {'avail': cgtsvg_max_free_GiB,
|
|
||||||
'min': constants.DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE,
|
|
||||||
'lvg': constants.LVG_CGTS_VG}
|
|
||||||
if cgtsvg_max_free_GiB >= constants.DEFAULT_IMG_CONVERSION_STOR_SIZE:
|
|
||||||
img_conversions_gib = constants.DEFAULT_IMG_CONVERSION_STOR_SIZE
|
|
||||||
elif cgtsvg_max_free_GiB >= constants.DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE:
|
|
||||||
img_conversions_gib = constants.DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE
|
|
||||||
else:
|
|
||||||
msg = _("Not enough space for image conversion partition. "
|
|
||||||
"Please ensure that '%(lvg)s' VG has at least %(min)s GiB free space."
|
|
||||||
"Currently available: %(avail)s GiB." % args)
|
|
||||||
raise wsme.exc.ClientSideError(msg)
|
|
||||||
|
|
||||||
args['size'] = img_conversions_gib
|
|
||||||
LOG.info("Available space in '%(lvg)s' is %(avail)s GiB "
|
|
||||||
"from which img_conversions will use %(size)s GiB." % args)
|
|
||||||
|
|
||||||
# Create entry
|
|
||||||
values['size'] = img_conversions_gib
|
|
||||||
dbapi.controller_fs_create(values)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_enabled_services(dbapi, filter_unconfigured=True,
|
def get_enabled_services(dbapi, filter_unconfigured=True,
|
||||||
filter_shared=False):
|
filter_shared=False):
|
||||||
|
|
|
@ -5575,8 +5575,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
classmap = {
|
classmap = {
|
||||||
constants.FILESYSTEM_NAME_BACKUP:
|
constants.FILESYSTEM_NAME_BACKUP:
|
||||||
'platform::filesystem::backup::runtime',
|
'platform::filesystem::backup::runtime',
|
||||||
constants.FILESYSTEM_NAME_IMG_CONVERSIONS:
|
|
||||||
'platform::filesystem::img_conversions::runtime',
|
|
||||||
constants.FILESYSTEM_NAME_SCRATCH:
|
constants.FILESYSTEM_NAME_SCRATCH:
|
||||||
'platform::filesystem::scratch::runtime',
|
'platform::filesystem::scratch::runtime',
|
||||||
constants.FILESYSTEM_NAME_DOCKER:
|
constants.FILESYSTEM_NAME_DOCKER:
|
||||||
|
@ -5593,8 +5591,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
'platform::drbd::patch_vault::runtime',
|
'platform::drbd::patch_vault::runtime',
|
||||||
constants.FILESYSTEM_NAME_ETCD:
|
constants.FILESYSTEM_NAME_ETCD:
|
||||||
'platform::drbd::etcd::runtime',
|
'platform::drbd::etcd::runtime',
|
||||||
constants.FILESYSTEM_NAME_GNOCCHI:
|
|
||||||
'platform::filesystem::gnocchi::runtime',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
puppet_class = None
|
puppet_class = None
|
||||||
|
@ -5688,7 +5684,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
classes = ['platform::partitions::runtime',
|
classes = ['platform::partitions::runtime',
|
||||||
'platform::lvm::controller::runtime',
|
'platform::lvm::controller::runtime',
|
||||||
'platform::haproxy::runtime',
|
'platform::haproxy::runtime',
|
||||||
'platform::filesystem::img_conversions::runtime',
|
|
||||||
'platform::drbd::runtime',
|
'platform::drbd::runtime',
|
||||||
'openstack::cinder::runtime',
|
'openstack::cinder::runtime',
|
||||||
'platform::sm::norestart::runtime']
|
'platform::sm::norestart::runtime']
|
||||||
|
@ -5796,7 +5791,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
'platform::lvm::controller::runtime',
|
'platform::lvm::controller::runtime',
|
||||||
'platform::haproxy::runtime',
|
'platform::haproxy::runtime',
|
||||||
'openstack::keystone::endpoint::runtime',
|
'openstack::keystone::endpoint::runtime',
|
||||||
'platform::filesystem::img_conversions::runtime',
|
|
||||||
'platform::ceph::runtime_base',
|
'platform::ceph::runtime_base',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -5937,7 +5931,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
'platform::lvm::controller::runtime',
|
'platform::lvm::controller::runtime',
|
||||||
'platform::haproxy::runtime',
|
'platform::haproxy::runtime',
|
||||||
'openstack::keystone::endpoint::runtime',
|
'openstack::keystone::endpoint::runtime',
|
||||||
'platform::filesystem::img_conversions::runtime',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if constants.SB_SVC_GLANCE in services:
|
if constants.SB_SVC_GLANCE in services:
|
||||||
|
@ -6811,21 +6804,12 @@ class ConductorManager(service.PeriodicService):
|
||||||
# Add the extension storage
|
# Add the extension storage
|
||||||
extension_lv_size = constants.DEFAULT_EXTENSION_STOR_SIZE
|
extension_lv_size = constants.DEFAULT_EXTENSION_STOR_SIZE
|
||||||
scratch_lv_size = cutils.get_controller_fs_scratch_size()
|
scratch_lv_size = cutils.get_controller_fs_scratch_size()
|
||||||
gnocchi_lv_size = constants.DEFAULT_GNOCCHI_STOR_SIZE
|
|
||||||
|
|
||||||
# Assume Non-region mode where glance is local as default
|
|
||||||
glance_local = True
|
|
||||||
img_conversions_lv_size = 0
|
|
||||||
|
|
||||||
system = self.dbapi.isystem_get_one()
|
system = self.dbapi.isystem_get_one()
|
||||||
system_dc_role = system.get('distributed_cloud_role', None)
|
system_dc_role = system.get('distributed_cloud_role', None)
|
||||||
region_config = system.capabilities.get('region_config', False)
|
|
||||||
kubernetes_config = system.capabilities.get('kubernetes_enabled', False)
|
kubernetes_config = system.capabilities.get('kubernetes_enabled', False)
|
||||||
|
|
||||||
LOG.info("Local Region Name: %s" % system.region_name)
|
LOG.info("Local Region Name: %s" % system.region_name)
|
||||||
# TODO: handle region mode case
|
|
||||||
if region_config:
|
|
||||||
glance_local = False
|
|
||||||
|
|
||||||
disk_size = cutils.get_disk_capacity_mib(rootfs_device)
|
disk_size = cutils.get_disk_capacity_mib(rootfs_device)
|
||||||
disk_size = int(disk_size / 1024)
|
disk_size = int(disk_size / 1024)
|
||||||
|
@ -6837,9 +6821,9 @@ class ConductorManager(service.PeriodicService):
|
||||||
# Defaults: 500G root disk
|
# Defaults: 500G root disk
|
||||||
#
|
#
|
||||||
# Min size of the cgts-vg PV is:
|
# Min size of the cgts-vg PV is:
|
||||||
# 218.0 G - PV for cgts-vg (specified in the kickstart)
|
# 202.0 G - PV for cgts-vg (specified in the kickstart)
|
||||||
# or
|
# or
|
||||||
# 226.0 G - (for DCSC non-AIO)
|
# 210.0 G - (for DCSC non-AIO)
|
||||||
# 8 G - /var/log (reserved in kickstart)
|
# 8 G - /var/log (reserved in kickstart)
|
||||||
# 8 G - /scratch (reserved in kickstart)
|
# 8 G - /scratch (reserved in kickstart)
|
||||||
# 2 G - cgcs_lv (DRBD bootstrap manifest)
|
# 2 G - cgcs_lv (DRBD bootstrap manifest)
|
||||||
|
@ -6854,15 +6838,12 @@ class ConductorManager(service.PeriodicService):
|
||||||
# Final defaults view after controller manifests
|
# Final defaults view after controller manifests
|
||||||
# 8 G - /var/log (reserved in kickstart)
|
# 8 G - /var/log (reserved in kickstart)
|
||||||
# 8 G - /scratch (reserved in kickstart)
|
# 8 G - /scratch (reserved in kickstart)
|
||||||
# 10 G - /opt/cgcs
|
# 20 G - /opt/cgcs
|
||||||
# 40 G - /var/lib/postgresql
|
# 40 G - /var/lib/postgresql
|
||||||
# 2 G - /var/lib/rabbitmq
|
# 2 G - /var/lib/rabbitmq
|
||||||
# 2 G - /opt/platform
|
# 2 G - /opt/platform
|
||||||
# 1 G - /opt/extension
|
# 1 G - /opt/extension
|
||||||
# 20 G - /opt/img_conversions
|
|
||||||
# 50 G - /opt/backup
|
# 50 G - /opt/backup
|
||||||
# 5 G - /opt/gnocchi
|
|
||||||
# 1 G - anchor_lv
|
|
||||||
# 30 G - /var/lib/docker (--kubernetes)
|
# 30 G - /var/lib/docker (--kubernetes)
|
||||||
# 16 G - /var/lib/docker-distribution (--kubernetes)
|
# 16 G - /var/lib/docker-distribution (--kubernetes)
|
||||||
# 5 G - /opt/etcd (--kubernetes)
|
# 5 G - /opt/etcd (--kubernetes)
|
||||||
|
@ -6870,17 +6851,17 @@ class ConductorManager(service.PeriodicService):
|
||||||
# 8 G - /opt/patch-vault (DRBD ctlr manifest for
|
# 8 G - /opt/patch-vault (DRBD ctlr manifest for
|
||||||
# Distributed Cloud System Controller non-AIO only)
|
# Distributed Cloud System Controller non-AIO only)
|
||||||
# -----
|
# -----
|
||||||
# 226 G (for DCSC non-AIO) or 218 G
|
# 210 G (for DCSC non-AIO) or 202
|
||||||
#
|
#
|
||||||
# The absolute minimum disk size for these default settings:
|
# The absolute minimum disk size for these default settings:
|
||||||
# 0.5 G - /boot
|
# 0.5 G - /boot
|
||||||
# 20.0 G - /
|
# 20.0 G - /
|
||||||
# 218.0 G - cgts-vg PV
|
# 202.0 G - cgts-vg PV
|
||||||
# or 226.0 G - (DCSC non-AIO)
|
# or 210.0 G - (DCSC non-AIO)
|
||||||
# -------
|
# -------
|
||||||
# 238.5 G => ~239G min size disk
|
# 222.5 G => ~223G min size disk
|
||||||
# or
|
# or
|
||||||
# 246.5 G => ~247G min size disk
|
# 230.5 G => ~231G min size disk
|
||||||
#
|
#
|
||||||
# If required disk is size 500G:
|
# If required disk is size 500G:
|
||||||
# 1) Standard controller - will use all free space for the PV
|
# 1) Standard controller - will use all free space for the PV
|
||||||
|
@ -6891,20 +6872,12 @@ class ConductorManager(service.PeriodicService):
|
||||||
# 2) AIO - will leave unused space for further partitioning
|
# 2) AIO - will leave unused space for further partitioning
|
||||||
# 0.5 G - /boot
|
# 0.5 G - /boot
|
||||||
# 20.0 G - /
|
# 20.0 G - /
|
||||||
# 218.0 G - cgts-vg PV
|
# 202.0 G - cgts-vg PV
|
||||||
# 261.5 G - unpartitioned free space
|
# 277.5 G - unpartitioned free space
|
||||||
#
|
#
|
||||||
database_storage = constants.DEFAULT_DATABASE_STOR_SIZE
|
database_storage = constants.DEFAULT_DATABASE_STOR_SIZE
|
||||||
if glance_local:
|
|
||||||
# When glance is local we need to set the
|
|
||||||
# img_conversion-lv size. Conversely in region
|
|
||||||
# mode conversions are done in the other region
|
|
||||||
# so there is no need to create the conversions
|
|
||||||
# volume or set lize.
|
|
||||||
img_conversions_lv_size = \
|
|
||||||
constants.DEFAULT_IMG_CONVERSION_STOR_SIZE
|
|
||||||
|
|
||||||
cgcs_lv_size = constants.DEFAULT_IMAGE_STOR_SIZE
|
cgcs_lv_size = constants.DEFAULT_CGCS_STOR_SIZE
|
||||||
backup_lv_size = database_storage + \
|
backup_lv_size = database_storage + \
|
||||||
cgcs_lv_size + constants.BACKUP_OVERHEAD
|
cgcs_lv_size + constants.BACKUP_OVERHEAD
|
||||||
|
|
||||||
|
@ -6915,9 +6888,9 @@ class ConductorManager(service.PeriodicService):
|
||||||
# Small disk: under 240G root disk
|
# Small disk: under 240G root disk
|
||||||
#
|
#
|
||||||
# Min size of the cgts-vg PV is:
|
# Min size of the cgts-vg PV is:
|
||||||
# 178.0 G - PV for cgts-vg (specified in the kickstart)
|
# 170.0 G - PV for cgts-vg (specified in the kickstart)
|
||||||
# or
|
# or
|
||||||
# 186.0 G - (for DCSC non-AIO)
|
# 162.0 G - (for DCSC non-AIO)
|
||||||
# 8 G - /var/log (reserved in kickstart)
|
# 8 G - /var/log (reserved in kickstart)
|
||||||
# 8 G - /scratch (reserved in kickstart)
|
# 8 G - /scratch (reserved in kickstart)
|
||||||
# 2 G - cgcs_lv (DRBD bootstrap manifest)
|
# 2 G - cgcs_lv (DRBD bootstrap manifest)
|
||||||
|
@ -6937,28 +6910,25 @@ class ConductorManager(service.PeriodicService):
|
||||||
# 2 G - /var/lib/rabbitmq
|
# 2 G - /var/lib/rabbitmq
|
||||||
# 2 G - /opt/platform
|
# 2 G - /opt/platform
|
||||||
# 1 G - /opt/extension
|
# 1 G - /opt/extension
|
||||||
# 10 G - /opt/img_conversions
|
|
||||||
# 40 G - /opt/backup
|
# 40 G - /opt/backup
|
||||||
# 5 G - /opt/gnocchi
|
|
||||||
# 1 G - anchor_lv
|
|
||||||
# 30 G - /var/lib/docker (--kubernetes)
|
# 30 G - /var/lib/docker (--kubernetes)
|
||||||
# 16 G - /var/lib/docker-distribution (--kubernetes)
|
# 16 G - /var/lib/docker-distribution (--kubernetes)
|
||||||
# 20 G - /var/lib/ceph/mon (--kubernetes)
|
# 20 G - /var/lib/ceph/mon (--kubernetes)
|
||||||
# 5 G - /opt/etcd (--kubernetes)
|
# 5 G - /opt/etcd (--kubernetes)
|
||||||
# 8 G - /opt/patch-vault (DRBD ctlr manifest for DCSC non-AIO only)
|
# 8 G - /opt/patch-vault (DRBD ctlr manifest for DCSC non-AIO only)
|
||||||
# -----
|
# -----
|
||||||
# 186 G (for DCSC non-AIO) or 178 G
|
# 170 G (for DCSC non-AIO) or 162 G
|
||||||
#
|
#
|
||||||
# The absolute minimum disk size for these default settings:
|
# The absolute minimum disk size for these default settings:
|
||||||
# 0.5 G - /boot
|
# 0.5 G - /boot
|
||||||
# 20.0 G - /
|
# 20.0 G - /
|
||||||
# 178.0 G - cgts-vg PV
|
# 162.0 G - cgts-vg PV
|
||||||
# or
|
# or
|
||||||
# 186.0 G - (for DCSC non-AIO)
|
# 170.0 G - (for DCSC non-AIO)
|
||||||
# -------
|
# -------
|
||||||
# 198.5 G => ~199G min size disk
|
# 182.5 G => ~183G min size disk
|
||||||
# or
|
# or
|
||||||
# 206.5 G => ~207G min size disk
|
# 190.5 G => ~191G min size disk
|
||||||
#
|
#
|
||||||
# If required disk is size 240G:
|
# If required disk is size 240G:
|
||||||
# 1) Standard controller - will use all free space for the PV
|
# 1) Standard controller - will use all free space for the PV
|
||||||
|
@ -6968,16 +6938,13 @@ class ConductorManager(service.PeriodicService):
|
||||||
# 2) AIO - will leave unused space for further partitioning
|
# 2) AIO - will leave unused space for further partitioning
|
||||||
# 0.5 G - /boot
|
# 0.5 G - /boot
|
||||||
# 20.0 G - /
|
# 20.0 G - /
|
||||||
# 178.0 G - cgts-vg PV
|
# 162.0 G - cgts-vg PV
|
||||||
# 41.5 G - unpartitioned free space
|
# 57.5 G - unpartitioned free space
|
||||||
#
|
#
|
||||||
database_storage = \
|
database_storage = \
|
||||||
constants.DEFAULT_SMALL_DATABASE_STOR_SIZE
|
constants.DEFAULT_SMALL_DATABASE_STOR_SIZE
|
||||||
if glance_local:
|
|
||||||
img_conversions_lv_size = \
|
|
||||||
constants.DEFAULT_SMALL_IMG_CONVERSION_STOR_SIZE
|
|
||||||
|
|
||||||
cgcs_lv_size = constants.DEFAULT_SMALL_IMAGE_STOR_SIZE
|
cgcs_lv_size = constants.DEFAULT_SMALL_CGCS_STOR_SIZE
|
||||||
# Due to the small size of the disk we can't provide the
|
# Due to the small size of the disk we can't provide the
|
||||||
# proper amount of backup space which is (database + cgcs_lv
|
# proper amount of backup space which is (database + cgcs_lv
|
||||||
# + BACKUP_OVERHEAD) so we are using a smaller default.
|
# + BACKUP_OVERHEAD) so we are using a smaller default.
|
||||||
|
@ -7030,29 +6997,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
data['name'], data['logical_volume'], data['size']))
|
data['name'], data['logical_volume'], data['size']))
|
||||||
self.dbapi.controller_fs_create(data)
|
self.dbapi.controller_fs_create(data)
|
||||||
|
|
||||||
data = {
|
|
||||||
'name': constants.FILESYSTEM_NAME_GNOCCHI,
|
|
||||||
'size': gnocchi_lv_size,
|
|
||||||
'logical_volume': constants.FILESYSTEM_LV_DICT[
|
|
||||||
constants.FILESYSTEM_NAME_GNOCCHI],
|
|
||||||
'replicated': False,
|
|
||||||
}
|
|
||||||
LOG.info("Creating FS:%s:%s %d" % (
|
|
||||||
data['name'], data['logical_volume'], data['size']))
|
|
||||||
self.dbapi.controller_fs_create(data)
|
|
||||||
|
|
||||||
if glance_local:
|
|
||||||
data = {
|
|
||||||
'name': constants.FILESYSTEM_NAME_IMG_CONVERSIONS,
|
|
||||||
'size': img_conversions_lv_size,
|
|
||||||
'logical_volume': constants.FILESYSTEM_LV_DICT[
|
|
||||||
constants.FILESYSTEM_NAME_IMG_CONVERSIONS],
|
|
||||||
'replicated': False,
|
|
||||||
}
|
|
||||||
LOG.info("Creating FS:%s:%s %d" % (
|
|
||||||
data['name'], data['logical_volume'], data['size']))
|
|
||||||
self.dbapi.controller_fs_create(data)
|
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'name': constants.FILESYSTEM_NAME_EXTENSION,
|
'name': constants.FILESYSTEM_NAME_EXTENSION,
|
||||||
'size': extension_lv_size,
|
'size': extension_lv_size,
|
||||||
|
@ -7116,16 +7060,6 @@ class ConductorManager(service.PeriodicService):
|
||||||
data['name'], data['logical_volume'], data['size']))
|
data['name'], data['logical_volume'], data['size']))
|
||||||
self.dbapi.controller_fs_create(data)
|
self.dbapi.controller_fs_create(data)
|
||||||
|
|
||||||
if glance_local:
|
|
||||||
backends = self.dbapi.storage_backend_get_list()
|
|
||||||
for b in backends:
|
|
||||||
if b.backend == constants.SB_TYPE_FILE:
|
|
||||||
values = {
|
|
||||||
'services': constants.SB_SVC_GLANCE,
|
|
||||||
'state': constants.SB_STATE_CONFIGURED
|
|
||||||
}
|
|
||||||
self.dbapi.storage_backend_update(b.uuid, values)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
values = {
|
values = {
|
||||||
'services': constants.SB_SVC_GLANCE,
|
'services': constants.SB_SVC_GLANCE,
|
||||||
|
@ -9600,21 +9534,16 @@ class ConductorManager(service.PeriodicService):
|
||||||
def get_controllerfs_lv_sizes(self, context):
|
def get_controllerfs_lv_sizes(self, context):
|
||||||
system = self.dbapi.isystem_get_one()
|
system = self.dbapi.isystem_get_one()
|
||||||
system_dc_role = system.get('distributed_cloud_role', None)
|
system_dc_role = system.get('distributed_cloud_role', None)
|
||||||
kubernetes_config = system.capabilities.get('kubernetes_enabled', False)
|
|
||||||
|
|
||||||
lvdisplay_command = 'lvdisplay --columns --options lv_size,lv_name ' \
|
lvdisplay_command = 'lvdisplay --columns --options lv_size,lv_name ' \
|
||||||
'--units g --noheading --nosuffix ' \
|
'--units g --noheading --nosuffix ' \
|
||||||
'/dev/cgts-vg/pgsql-lv /dev/cgts-vg/backup-lv ' \
|
'/dev/cgts-vg/pgsql-lv /dev/cgts-vg/backup-lv ' \
|
||||||
'/dev/cgts-vg/cgcs-lv ' \
|
'/dev/cgts-vg/cgcs-lv ' \
|
||||||
'/dev/cgts-vg/img-conversions-lv ' \
|
|
||||||
'/dev/cgts-vg/scratch-lv ' \
|
'/dev/cgts-vg/scratch-lv ' \
|
||||||
'/dev/cgts-vg/extension-lv ' \
|
'/dev/cgts-vg/extension-lv ' \
|
||||||
'/dev/cgts-vg/gnocchi-lv '
|
'/dev/cgts-vg/docker-lv ' \
|
||||||
|
'/dev/cgts-vg/etcd-lv ' \
|
||||||
if kubernetes_config:
|
'/dev/cgts-vg/dockerdistribution-lv '
|
||||||
lvdisplay_command = lvdisplay_command + '/dev/cgts-vg/docker-lv '
|
|
||||||
lvdisplay_command = lvdisplay_command + '/dev/cgts-vg/etcd-lv '
|
|
||||||
lvdisplay_command = lvdisplay_command + '/dev/cgts-vg/dockerdistribution-lv '
|
|
||||||
|
|
||||||
if (system_dc_role == constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER and
|
if (system_dc_role == constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER and
|
||||||
tsc.system_type != constants.TIS_AIO_BUILD):
|
tsc.system_type != constants.TIS_AIO_BUILD):
|
||||||
|
|
|
@ -2220,8 +2220,8 @@ class Connection(object):
|
||||||
:param values: A dict containing several items used to identify
|
:param values: A dict containing several items used to identify
|
||||||
and track the controller_fs.
|
and track the controller_fs.
|
||||||
Example:
|
Example:
|
||||||
values = {'name': constants.FILESYSTEM_NAME_IMG_CONVERSIONS,
|
values = {'name': constants.DEFAULT_DOCKER_STOR_SIZE,
|
||||||
'size': img_conversions_gib,
|
'size': 30,
|
||||||
'logical_volume': constants.FILESYSTEM_NAME_LV_DICT,
|
'logical_volume': constants.FILESYSTEM_NAME_LV_DICT,
|
||||||
'replicated': False}
|
'replicated': False}
|
||||||
:returns: A controller_fs.
|
:returns: A controller_fs.
|
||||||
|
@ -2271,10 +2271,10 @@ class Connection(object):
|
||||||
:param controller_fs_id: The id or uuid of a controller_fs.
|
:param controller_fs_id: The id or uuid of a controller_fs.
|
||||||
:param values: Dict of values to update. May be a partial list.
|
:param values: Dict of values to update. May be a partial list.
|
||||||
Example:
|
Example:
|
||||||
values = {'name': constants.FILESYSTEM_NAME_IMG_CONVERSIONS,
|
values = {'name': constants.DEFAULT_DOCKER_STOR_SIZE,
|
||||||
'size': img_conversions_gib,
|
'size': 30,
|
||||||
'logical_volume': constants.FILESYSTEM_LV_DICT[
|
'logical_volume': constants.FILESYSTEM_LV_DICT[
|
||||||
constants.FILESYSTEM_NAME_IMG_CONVERSIONS],
|
constants.DEFAULT_DOCKER_STOR_SIZE],
|
||||||
'replicated': False}
|
'replicated': False}
|
||||||
:returns: A controller_fs.
|
:returns: A controller_fs.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -54,11 +54,6 @@ class StoragePuppet(base.BasePuppet):
|
||||||
'platform::drbd::extension::params::lv_size':
|
'platform::drbd::extension::params::lv_size':
|
||||||
controller_fs.size
|
controller_fs.size
|
||||||
})
|
})
|
||||||
elif controller_fs.name == constants.FILESYSTEM_NAME_IMG_CONVERSIONS:
|
|
||||||
config.update({
|
|
||||||
'platform::filesystem::img_conversions::params::lv_size':
|
|
||||||
controller_fs.size
|
|
||||||
})
|
|
||||||
elif controller_fs.name == constants.FILESYSTEM_NAME_PATCH_VAULT:
|
elif controller_fs.name == constants.FILESYSTEM_NAME_PATCH_VAULT:
|
||||||
config.update({
|
config.update({
|
||||||
'platform::drbd::patch_vault::params::service_enabled':
|
'platform::drbd::patch_vault::params::service_enabled':
|
||||||
|
@ -81,11 +76,6 @@ class StoragePuppet(base.BasePuppet):
|
||||||
'platform::drbd::dockerdistribution::params::lv_size':
|
'platform::drbd::dockerdistribution::params::lv_size':
|
||||||
controller_fs.size
|
controller_fs.size
|
||||||
})
|
})
|
||||||
elif controller_fs.name == constants.FILESYSTEM_NAME_GNOCCHI:
|
|
||||||
config.update({
|
|
||||||
'platform::filesystem::gnocchi::params::lv_size':
|
|
||||||
controller_fs.size
|
|
||||||
})
|
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
|
@ -329,8 +329,7 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertIn('WARNING : THIS OPERATION IS NOT REVERSIBLE AND CANNOT BE CANCELLED',
|
self.assertIn('WARNING : THIS OPERATION IS NOT REVERSIBLE AND CANNOT BE CANCELLED',
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_lvm_without_svc_and_confirm(self):
|
||||||
def test_post_lvm_without_svc_and_confirm(self, mock_img_conv):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'confirmed': True
|
'confirmed': True
|
||||||
|
@ -342,10 +341,9 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertIn('Service cinder is mandatory for the lvm backend.',
|
self.assertIn('Service cinder is mandatory for the lvm backend.',
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_lvm_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_lvm_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -406,10 +404,9 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertIn('Missing required cinder service parameter',
|
self.assertIn('Missing required cinder service parameter',
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_lvm_and_remove_svc(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_lvm_and_remove_svc(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -431,13 +428,12 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertTrue(patch_response.json['error_message'])
|
self.assertTrue(patch_response.json['error_message'])
|
||||||
self.assertIn('Removing cinder is not supported', patch_response.json['error_message'])
|
self.assertIn('Removing cinder is not supported', patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_lvm_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data, mock_apply,
|
def test_post_lvm_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data, mock_apply,
|
||||||
mock_validate, mock_img_conv):
|
mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -460,10 +456,9 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertTrue(patch_response.json['error_message'])
|
self.assertTrue(patch_response.json['error_message'])
|
||||||
self.assertIn('Service glance is not supported', patch_response.json['error_message'])
|
self.assertIn('Service glance is not supported', patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_lvm_and_confirm_modify_with_no_changes(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_lvm_and_confirm_modify_with_no_changes(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -486,13 +481,12 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.assertIn('No changes to the existing backend settings were detected',
|
self.assertIn('No changes to the existing backend settings were detected',
|
||||||
patch_response.json['error_message'])
|
patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_lvm_and_confirm_modify_with_svc_with_params(self, mock_set_backend_data,
|
def test_post_lvm_and_confirm_modify_with_svc_with_params(self, mock_set_backend_data,
|
||||||
mock_apply, mock_validate, mock_img_conv):
|
mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -518,10 +512,9 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
'test_cparam2': 'far2'}, # Expected
|
'test_cparam2': 'far2'}, # Expected
|
||||||
self.get_json('/storage_backend/%s/' % response.json['uuid'])['capabilities']) # Result
|
self.get_json('/storage_backend/%s/' % response.json['uuid'])['capabilities']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_lvm_and_list(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_lvm_and_list(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -569,8 +562,7 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_ceph_and_confirm(self, mock_mon_ip):
|
||||||
def test_post_ceph_and_confirm(self, mock_img_conv, mock_mon_ip):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -636,10 +628,9 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
||||||
def test_post_ceph_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate, mock_img_conv, mock_mon_ip):
|
def test_post_ceph_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate, mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'services': (',').join([constants.SB_SVC_CINDER, constants.SB_SVC_GLANCE]),
|
'services': (',').join([constants.SB_SVC_CINDER, constants.SB_SVC_GLANCE]),
|
||||||
|
@ -654,11 +645,10 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.get_json('/storage_backend/%s/' % response.json['uuid'])['backend']) # Result
|
self.get_json('/storage_backend/%s/' % response.json['uuid'])['backend']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_ceph_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data,
|
def test_post_ceph_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data,
|
||||||
mock_img_conv, mock_mon_ip):
|
mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -680,14 +670,13 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
patch_response.json['error_message'])
|
patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_ceph_and_confirm_modify_with_svc_missing_params(self, mock_set_backend_data,
|
def test_post_ceph_and_confirm_modify_with_svc_missing_params(self, mock_set_backend_data,
|
||||||
mock_apply, mock_validate,
|
mock_apply, mock_validate,
|
||||||
mock_img_conv, mock_mon_ip):
|
mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -709,13 +698,12 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
patch_response.json['error_message'])
|
patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_ceph_and_confirm_modify_with_svc_missing_some_params(self, mock_set_backend_data, mock_apply,
|
def test_post_ceph_and_confirm_modify_with_svc_missing_some_params(self, mock_set_backend_data, mock_apply,
|
||||||
mock_validate, mock_img_conv, mock_mon_ip):
|
mock_validate, mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -739,14 +727,13 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
patch_response.json['error_message'])
|
patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._discover_and_validate_cinder_capabilities')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_ceph._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_ceph_and_confirm_modify_with_svc_with_params(self, mock_set_backend_data,
|
def test_post_ceph_and_confirm_modify_with_svc_with_params(self, mock_set_backend_data,
|
||||||
mock_apply, mock_validate,
|
mock_apply, mock_validate,
|
||||||
mock_img_conv, mock_mon_ip):
|
mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -774,8 +761,7 @@ class StorageBackendTestCases(base.FunctionalTest):
|
||||||
self.get_json('/storage_backend/%s/' % response.json['uuid'])['capabilities']) # Result
|
self.get_json('/storage_backend/%s/' % response.json['uuid'])['capabilities']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_ceph_and_list(self, mock_mon_ip):
|
||||||
def test_post_ceph_and_list(self, mock_img_conv, mock_mon_ip):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -1052,10 +1038,9 @@ class StorageLvmTestCases(base.FunctionalTest):
|
||||||
self.assertIn('WARNING : THIS OPERATION IS NOT REVERSIBLE AND CANNOT BE CANCELLED',
|
self.assertIn('WARNING : THIS OPERATION IS NOT REVERSIBLE AND CANNOT BE CANCELLED',
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_and_confirm(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_and_confirm(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -1116,10 +1101,9 @@ class StorageLvmTestCases(base.FunctionalTest):
|
||||||
self.assertIn('Missing required cinder service parameter',
|
self.assertIn('Missing required cinder service parameter',
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_with_valid_svc_all_svc_param_and_confirm(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -1132,13 +1116,12 @@ class StorageLvmTestCases(base.FunctionalTest):
|
||||||
self.assertEqual(constants.SB_TYPE_LVM, # Expected
|
self.assertEqual(constants.SB_TYPE_LVM, # Expected
|
||||||
self.get_json('/storage_lvm/%s/' % response.json['uuid'])['backend']) # Result
|
self.get_json('/storage_lvm/%s/' % response.json['uuid'])['backend']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data,
|
def test_post_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data,
|
||||||
mock_apply, mock_validate, mock_img_conv):
|
mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -1161,10 +1144,9 @@ class StorageLvmTestCases(base.FunctionalTest):
|
||||||
self.assertTrue(patch_response.json['error_message'])
|
self.assertTrue(patch_response.json['error_message'])
|
||||||
self.assertIn('Service glance is not supported', patch_response.json['error_message'])
|
self.assertIn('Service glance is not supported', patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._discover_and_validate_cinder_hiera_data')
|
||||||
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
@mock.patch('sysinv.api.controllers.v1.storage_lvm._apply_backend_changes')
|
||||||
def test_post_and_list(self, mock_apply, mock_validate, mock_img_conv):
|
def test_post_and_list(self, mock_apply, mock_validate):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_LVM,
|
'backend': constants.SB_TYPE_LVM,
|
||||||
'services': constants.SB_SVC_CINDER,
|
'services': constants.SB_SVC_CINDER,
|
||||||
|
@ -1212,8 +1194,7 @@ class StorageCephTestCases(base.FunctionalTest):
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_and_confirm(self, mock_mon_ip):
|
||||||
def test_post_and_confirm(self, mock_img_conv, mock_mon_ip):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -1240,8 +1221,7 @@ class StorageCephTestCases(base.FunctionalTest):
|
||||||
response.json['error_message'])
|
response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_with_valid_svc_all_svc_param_and_confirm(self, mock_mon_ip):
|
||||||
def test_post_with_valid_svc_all_svc_param_and_confirm(self, mock_img_conv, mock_mon_ip):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'services': constants.SB_SVC_SWIFT,
|
'services': constants.SB_SVC_SWIFT,
|
||||||
|
@ -1255,10 +1235,9 @@ class StorageCephTestCases(base.FunctionalTest):
|
||||||
self.get_json('/storage_ceph/%s/' % response.json['uuid'])['backend']) # Result
|
self.get_json('/storage_ceph/%s/' % response.json['uuid'])['backend']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
|
||||||
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
@mock.patch.object(SBApiHelper, 'set_backend_data',
|
||||||
side_effect=set_backend_state_configured)
|
side_effect=set_backend_state_configured)
|
||||||
def test_post_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data, mock_img_conv, mock_mon_ip):
|
def test_post_and_confirm_modify_with_invalid_svc(self, mock_set_backend_data, mock_mon_ip):
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
@ -1279,8 +1258,7 @@ class StorageCephTestCases(base.FunctionalTest):
|
||||||
self.assertIn('Service invalid_svc is not supported', patch_response.json['error_message'])
|
self.assertIn('Service invalid_svc is not supported', patch_response.json['error_message'])
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_and_confirm_modify_with_svc_with_params(self, mock_mon_ip):
|
||||||
def test_post_and_confirm_modify_with_svc_with_params(self, mock_img_conv, mock_mon_ip):
|
|
||||||
# Test skipped. Fix later.
|
# Test skipped. Fix later.
|
||||||
self.skipTest("Skipping to prevent failure notification on Jenkins")
|
self.skipTest("Skipping to prevent failure notification on Jenkins")
|
||||||
vals = {
|
vals = {
|
||||||
|
@ -1306,8 +1284,7 @@ class StorageCephTestCases(base.FunctionalTest):
|
||||||
self.get_json('/storage_ceph/%s/' % response.json['uuid'])['capabilities']) # Result
|
self.get_json('/storage_ceph/%s/' % response.json['uuid'])['capabilities']) # Result
|
||||||
|
|
||||||
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
@mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')
|
||||||
@mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')
|
def test_post_and_list(self, mock_mon_ip):
|
||||||
def test_post_and_list(self, mock_img_conv, mock_mon_ip):
|
|
||||||
vals = {
|
vals = {
|
||||||
'backend': constants.SB_TYPE_CEPH,
|
'backend': constants.SB_TYPE_CEPH,
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
|
|
|
@ -639,9 +639,8 @@ class StorageTierDependentTCs(base.FunctionalTest):
|
||||||
'services': "%s,%s" % (constants.SB_SVC_CINDER, constants.SB_SVC_GLANCE),
|
'services': "%s,%s" % (constants.SB_SVC_CINDER, constants.SB_SVC_GLANCE),
|
||||||
'confirmed': True
|
'confirmed': True
|
||||||
}
|
}
|
||||||
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses'),
|
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')) as (
|
||||||
mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')) as (
|
mock_ceph_mon):
|
||||||
mock_ceph_mon, mock_conv):
|
|
||||||
response = self.post_json('/storage_backend', values, expect_errors=False)
|
response = self.post_json('/storage_backend', values, expect_errors=False)
|
||||||
self.assertEqual(http_client.OK, response.status_int)
|
self.assertEqual(http_client.OK, response.status_int)
|
||||||
self.assertEqual('ceph', # Expected
|
self.assertEqual('ceph', # Expected
|
||||||
|
@ -811,9 +810,8 @@ class StorageTierDependentTCs(base.FunctionalTest):
|
||||||
'capabilities': {'test_bparam3': 'foo'},
|
'capabilities': {'test_bparam3': 'foo'},
|
||||||
'confirmed': True
|
'confirmed': True
|
||||||
}
|
}
|
||||||
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses'),
|
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')) as (
|
||||||
mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')) as (
|
mock_ceph_mon):
|
||||||
mock_ceph_mon, mock_conv):
|
|
||||||
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
||||||
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
|
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
|
||||||
self.assertEqual('application/json', response.content_type)
|
self.assertEqual('application/json', response.content_type)
|
||||||
|
@ -830,9 +828,8 @@ class StorageTierDependentTCs(base.FunctionalTest):
|
||||||
'name': 'ceph-gold',
|
'name': 'ceph-gold',
|
||||||
'confirmed': True
|
'confirmed': True
|
||||||
}
|
}
|
||||||
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses'),
|
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses')) as (
|
||||||
mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults')) as (
|
mock_ceph_mon):
|
||||||
mock_ceph_mon, mock_conv):
|
|
||||||
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
||||||
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
|
self.assertEqual(http_client.BAD_REQUEST, response.status_int)
|
||||||
self.assertEqual('application/json', response.content_type)
|
self.assertEqual('application/json', response.content_type)
|
||||||
|
@ -851,9 +848,8 @@ class StorageTierDependentTCs(base.FunctionalTest):
|
||||||
'confirmed': True
|
'confirmed': True
|
||||||
}
|
}
|
||||||
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses'),
|
with nested(mock.patch.object(StorageBackendConfig, 'get_ceph_mon_ip_addresses'),
|
||||||
mock.patch.object(StorageBackendConfig, 'set_img_conversions_defaults'),
|
|
||||||
mock.patch.object(StorageBackendConfig, 'get_ceph_tier_size')) as (
|
mock.patch.object(StorageBackendConfig, 'get_ceph_tier_size')) as (
|
||||||
mock_ceph_mon, mock_conv, mock_space):
|
mock_ceph_mon, mock_space):
|
||||||
mock_space.return_value = 0
|
mock_space.return_value = 0
|
||||||
|
|
||||||
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
response = self.post_json('/storage_ceph', values, expect_errors=True)
|
||||||
|
|
|
@ -1317,7 +1317,6 @@ class TestMigrations(BaseMigrationTestCase, WalkVersionsMixin):
|
||||||
storconfigs = db_utils.get_table(engine, 'i_storconfig')
|
storconfigs = db_utils.get_table(engine, 'i_storconfig')
|
||||||
storconfigs_col = {
|
storconfigs_col = {
|
||||||
'glance_backend': 'String', 'glance_gib': 'Integer',
|
'glance_backend': 'String', 'glance_gib': 'Integer',
|
||||||
'img_conversions_gib': 'String',
|
|
||||||
}
|
}
|
||||||
for col, coltype in storconfigs_col.items():
|
for col, coltype in storconfigs_col.items():
|
||||||
self.assertTrue(isinstance(storconfigs.c[col].type,
|
self.assertTrue(isinstance(storconfigs.c[col].type,
|
||||||
|
@ -1571,7 +1570,6 @@ class TestMigrations(BaseMigrationTestCase, WalkVersionsMixin):
|
||||||
'uuid': 'String',
|
'uuid': 'String',
|
||||||
'database_gib': 'Integer',
|
'database_gib': 'Integer',
|
||||||
'cgcs_gib': 'Integer',
|
'cgcs_gib': 'Integer',
|
||||||
'img_conversions_gib': 'Integer',
|
|
||||||
'backup_gib': 'Integer',
|
'backup_gib': 'Integer',
|
||||||
'forisystemid': 'Integer',
|
'forisystemid': 'Integer',
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue