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:
Ovidiu Poncea 2019-03-18 12:09:36 +02:00 committed by Tee Ngo
parent 56275fb5b0
commit 14cfe576c2
13 changed files with 76 additions and 360 deletions

View File

@ -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 = \

View File

@ -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 {

View File

@ -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,

View File

@ -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[

View File

@ -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

View File

@ -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 = [

View File

@ -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):

View File

@ -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):

View File

@ -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.
""" """

View File

@ -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

View File

@ -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'},

View File

@ -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)

View File

@ -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',
} }