diff --git a/doc/source/configuration/settings.rst b/doc/source/configuration/settings.rst index edf8c037cd..0596f0d26d 100644 --- a/doc/source/configuration/settings.rst +++ b/doc/source/configuration/settings.rst @@ -134,38 +134,6 @@ the GUI. For example themes, see: /horizon/openstack_dashboard/themes/ Horizon ships with two themes configured. 'default' is the default theme, and 'material' is based on Google's Material Design. -.. _custom_theme_path: - -CUSTOM_THEME_PATH ------------------ - -.. versionadded:: 2015.1(Kilo) - -.. deprecated:: 9.0.0(Mitaka) - - Themes are now controlled by `AVAILABLE_THEMES`_. - -Default: ``"themes/default"`` - -This setting tells Horizon to use a directory as a custom theme. - -By default, this directory will serve as the static root of the theme -and the entire contents of the directory will be served up at -``/static/custom``. If you wish to include content other than static -files in a theme directory, but do not wish that content to be served up, -then you can create a sub directory named ``static``. If the theme folder -contains a sub-directory with the name ``static``, then -``static/custom/static`` will be used as the root for the content -served at ``/static/custom``. - -The static root of the theme folder must always contain a _variables.scss -file and a _styles.scss file. These must contain or import all the -bootstrap and horizon specific variables and styles which are used to style -the GUI. For example themes, see: /horizon/openstack_dashboard/themes/ - -Horizon ships with one alternate theme based on Google's Material Design. To -use the alternate theme, set your CUSTOM_THEME_PATH to ``themes/material``. - DEFAULT_THEME ------------- @@ -182,24 +150,6 @@ must be configured as part of `SELECTABLE_THEMES`_. If it is not, then your ``DEFAULT_THEME`` will default to the first theme in ``SELECTABLE_THEMES``. -DEFAULT_THEME_PATH ------------------- - -.. versionadded:: 8.0.0(Liberty) - -.. deprecated:: 9.0.0(Mitaka) - - Themes are now controlled by `AVAILABLE_THEMES`_. - -Default: ``"themes/default"`` - -This setting allows Horizon to collect an additional theme during static -collection and be served up via /static/themes/default. This is useful -if CUSTOM_THEME_PATH inherits from another theme (like 'default'). - -If DEFAULT_THEME_PATH is the same as CUSTOM_THEME_PATH, then collection -is skipped and /static/themes will not exist. - DISALLOW_IFRAME_EMBED --------------------- @@ -1022,33 +972,6 @@ Valid values are ``"public"`` and ``"private"``. By default, the visibility option is public on create image modal. If it's set to ``"private"``, the default visibility option is private. -HORIZON_IMAGES_ALLOW_UPLOAD -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. versionadded:: 2013.1(Grizzly) - -.. deprecated:: 10.0.0(Newton) - - Use `HORIZON_IMAGES_UPLOAD_MODE`_ instead. - -Default: ``True`` - -If set to ``False``, this setting disables **local** uploads to prevent filling -up the disk on the dashboard server since uploads to the Glance image store -service tend to be particularly large - in the order of hundreds of megabytes -to multiple gigabytes. - -The setting is marked as deprecated and will be removed in P or later release. -It is superseded by the setting HORIZON_IMAGES_UPLOAD_MODE. Until the removal -the ``False`` value of HORIZON_IMAGES_ALLOW_UPLOAD overrides the value of -HORIZON_IMAGES_UPLOAD_MODE. - -.. note:: - - This will not disable image creation altogether, as this setting does not - affect images created by specifying an image location (URL) as the image - source. - HORIZON_IMAGES_UPLOAD_MODE ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1056,12 +979,10 @@ HORIZON_IMAGES_UPLOAD_MODE Default: ``"legacy"`` -Valid values are ``"direct"``, ``"legacy"`` (default) and ``"off"``. ``"off"`` -disables the ability to upload images via Horizon. It is equivalent to setting -``False`` on the deprecated setting ``HORIZON_IMAGES_ALLOW_UPLOAD``. ``legacy`` -enables local file upload by piping the image file through the Horizon's -web-server. It is equivalent to setting ``True`` on the deprecated setting -``HORIZON_IMAGES_ALLOW_UPLOAD``. ``direct`` sends the image file directly from +Valid values are ``"direct"``, ``"legacy"`` (default) and ``"off"``. +``"off"`` disables the ability to upload images via Horizon. +``legacy`` enables local file upload by piping the image file through the +Horizon's web-server. ``direct`` sends the image file directly from the web browser to Glance. This bypasses Horizon web-server which both reduces network hops and prevents filling up Horizon web-server's filesystem. ``direct`` is the preferred mode, but due to the following requirements it is not the @@ -1076,15 +997,6 @@ restart glance-api process. .. _here: https://docs.openstack.org/oslo.middleware/latest/reference/cors.html#configuration-for-oslo-config -.. note:: - - To maintain the compatibility with the deprecated HORIZON_IMAGES_ALLOW_UPLOAD - setting, neither ``"direct"``, nor ``"legacy"`` modes will have an effect if - HORIZON_IMAGES_ALLOW_UPLOAD is set to ``False`` - as if HORIZON_IMAGES_UPLOAD_MODE - was set to ``"off"`` itself. When HORIZON_IMAGES_ALLOW_UPLOAD is set to ``True``, - all three modes are considered, as if HORIZON_IMAGES_ALLOW_UPLOAD setting - was removed. - IMAGE_CUSTOM_PROPERTY_TITLES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1441,23 +1353,6 @@ algorithm that the identity (Keystone) server and the auth_token middleware are using. Allowed values are the algorithms supported by Python's hashlib library. -OPENSTACK_TOKEN_HASH_ENABLED -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. versionadded:: 8.0.0(Liberty) - -.. deprecated:: 9.0.0(Mitaka) - - PKI tokens currently work with hashing, and Keystone will soon deprecate - usage of PKI tokens. - -Default: ``True`` - -Hashing tokens from Keystone keeps the Horizon session data smaller, but it -doesn't work in some cases when using PKI tokens. Uncomment this value and -set it to False if using PKI tokens and there are 401 errors due to token -hashing. - PASSWORD_EXPIRES_WARNING_THRESHOLD_DAYS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/openstack_auth/user.py b/openstack_auth/user.py index 23b6c4ced7..964c8a8f91 100644 --- a/openstack_auth/user.py +++ b/openstack_auth/user.py @@ -26,7 +26,6 @@ from openstack_auth import utils LOG = logging.getLogger(__name__) -_TOKEN_HASH_ENABLED = getattr(settings, 'OPENSTACK_TOKEN_HASH_ENABLED', True) def set_session_from_user(request, user): @@ -91,7 +90,7 @@ class Token(object): # Token-related attributes self.id = auth_ref.auth_token self.unscoped_token = unscoped_token - if _TOKEN_HASH_ENABLED and self._is_pki_token(self.id): + if self._is_pki_token(self.id): algorithm = getattr(settings, 'OPENSTACK_TOKEN_HASH_ALGORITHM', 'md5') hasher = hashlib.new(algorithm) diff --git a/openstack_auth/utils.py b/openstack_auth/utils.py index f55847b6ec..53008736f0 100644 --- a/openstack_auth/utils.py +++ b/openstack_auth/utils.py @@ -116,13 +116,6 @@ def is_safe_url(url, host=None): return not netloc or netloc == host -# DEPRECATED -- Mitaka -# This method definition is included to prevent breaking backward compatibility -# The original functionality was problematic and has been removed. -def remove_project_cache(token): - pass - - # Helper for figuring out keystone version # Implementation will change when API version discovery is available def get_keystone_version(): @@ -146,11 +139,6 @@ def get_keystone_client(): return client_v3 -def is_token_deletion_disabled(): - LOG.warning("Deprecated TOKEN_DELETION_DISABLED setting is no longer used") - return getattr(settings, 'TOKEN_DELETION_DISABLED', False) - - def is_websso_enabled(): """Websso is supported in Keystone version 3.""" websso_enabled = getattr(settings, 'WEBSSO_ENABLED', False) diff --git a/openstack_auth/views.py b/openstack_auth/views.py index 1998a1437d..57c0ae8d43 100644 --- a/openstack_auth/views.py +++ b/openstack_auth/views.py @@ -178,11 +178,6 @@ def logout(request, login_url=None, **kwargs): **kwargs) -def delete_token(endpoint, token_id): - """Delete a token.""" - LOG.warning("The delete_token method is deprecated and now does nothing") - - @login_required def switch(request, tenant_id, redirect_field_name=auth.REDIRECT_FIELD_NAME): """Switches an authenticated user from one project to another.""" diff --git a/openstack_dashboard/api/glance.py b/openstack_dashboard/api/glance.py index 16c72a9cbc..d5089dc6c3 100644 --- a/openstack_dashboard/api/glance.py +++ b/openstack_dashboard/api/glance.py @@ -377,8 +377,6 @@ def image_update(request, image_id, **kwargs): def get_image_upload_mode(): - if getattr(settings, 'HORIZON_IMAGES_ALLOW_UPLOAD', None) is False: - return 'off' mode = getattr(settings, 'HORIZON_IMAGES_UPLOAD_MODE', 'legacy') if mode not in ('off', 'legacy', 'direct'): LOG.warning('HORIZON_IMAGES_UPLOAD_MODE has an unrecognized value of ' diff --git a/openstack_dashboard/dashboards/project/images/images/tests.py b/openstack_dashboard/dashboards/project/images/images/tests.py index 845acbd527..a21d7ab90a 100644 --- a/openstack_dashboard/dashboards/project/images/images/tests.py +++ b/openstack_dashboard/dashboards/project/images/images/tests.py @@ -20,7 +20,6 @@ import tempfile from django.conf import settings from django.core.files.uploadedfile import InMemoryUploadedFile -from django.forms.widgets import HiddenInput from django.test.utils import override_settings from django.urls import reverse @@ -66,28 +65,6 @@ class CreateImageFormTests(test.ResetImageAPIVersionMixin, test.TestCase): self.assertFalse(form.is_valid()) mock_image_list.assert_has_calls(image_calls) - @override_settings(HORIZON_IMAGES_ALLOW_UPLOAD=False) - @override_settings(IMAGES_ALLOW_LOCATION=True) - @mock.patch.object(api.glance, 'image_list_detailed') - def test_image_upload_disabled(self, mock_image_list): - mock_image_list.side_effect = [ - [self.images.list(), False, False], - [self.images.list(), False, False] - ] - - image_calls = [ - mock.call(test.IsA(dict), filters={'disk_format': 'aki'}), - mock.call(test.IsA(dict), filters={'disk_format': 'ari'}) - ] - - form = forms.CreateImageForm({}) - - self.assertEqual( - isinstance(form.fields['image_file'].widget, HiddenInput), True) - source_type_dict = dict(form.fields['source_type'].choices) - self.assertNotIn('file', source_type_dict) - mock_image_list.assert_has_calls(image_calls) - @override_settings(OPENSTACK_API_VERSIONS={'image': 1}) def test_create_image_metadata_docker_v1(self): form_data = { diff --git a/openstack_dashboard/local/local_settings.py.example b/openstack_dashboard/local/local_settings.py.example index 8abf1417e0..4c36ec2053 100644 --- a/openstack_dashboard/local/local_settings.py.example +++ b/openstack_dashboard/local/local_settings.py.example @@ -266,11 +266,6 @@ OPENSTACK_KEYSTONE_BACKEND = { # allowing Admin session password retrieval/decryption. #OPENSTACK_ENABLE_PASSWORD_RETRIEVE = False -# This setting allows deployers to control whether a token is deleted on log -# out. This can be helpful when there are often long running processes being -# run in the Horizon environment. -#TOKEN_DELETION_DISABLED = False - # The Launch Instance user experience has been significantly enhanced. # You can choose whether to enable the new launch instance experience, # the legacy experience, or both. The legacy experience will be removed diff --git a/openstack_dashboard/settings.py b/openstack_dashboard/settings.py index 9213ab0e1f..0d9bedc1ed 100644 --- a/openstack_dashboard/settings.py +++ b/openstack_dashboard/settings.py @@ -309,10 +309,6 @@ USER_MENU_LINKS = [ } ] -# Deprecated Theme Settings -CUSTOM_THEME_PATH = None -DEFAULT_THEME_PATH = None - # 'key', 'label', 'path' AVAILABLE_THEMES = [ ( @@ -439,21 +435,11 @@ if STATIC_URL is None: AVAILABLE_THEMES, SELECTABLE_THEMES, DEFAULT_THEME = ( theme_settings.get_available_themes( AVAILABLE_THEMES, - CUSTOM_THEME_PATH, - DEFAULT_THEME_PATH, DEFAULT_THEME, SELECTABLE_THEMES ) ) -if CUSTOM_THEME_PATH is not None: - _LOG.warning("CUSTOM_THEME_PATH has been deprecated. Please convert " - "your settings to make use of AVAILABLE_THEMES.") - -if DEFAULT_THEME_PATH is not None: - _LOG.warning("DEFAULT_THEME_PATH has been deprecated. Please convert " - "your settings to make use of AVAILABLE_THEMES.") - # Discover all the directories that contain static files STATICFILES_DIRS = theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) @@ -516,11 +502,3 @@ if DEBUG: # Here comes the Django settings deprecation section. Being at the very end # of settings.py allows it to catch the settings defined in local_settings.py # or inside one of local_settings.d/ snippets. -if 'HORIZON_IMAGES_ALLOW_UPLOAD' in globals(): - message = 'The setting HORIZON_IMAGES_ALLOW_UPLOAD is deprecated in ' \ - 'Newton and will be removed in P release. Use the setting ' \ - 'HORIZON_IMAGES_UPLOAD_MODE instead.' - if not HORIZON_IMAGES_ALLOW_UPLOAD: - message += ' Keep in mind that HORIZON_IMAGES_ALLOW_UPLOAD set to ' \ - 'False overrides the value of HORIZON_IMAGES_UPLOAD_MODE.' - _LOG.warning(message) diff --git a/openstack_dashboard/test/settings.py b/openstack_dashboard/test/settings.py index 39a042f6b4..0253cced86 100644 --- a/openstack_dashboard/test/settings.py +++ b/openstack_dashboard/test/settings.py @@ -48,8 +48,6 @@ TEMPLATES[0]['OPTIONS']['context_processors'].append( 'openstack_dashboard.context_processors.openstack' ) -CUSTOM_THEME_PATH = 'themes/default' - # 'key', 'label', 'path' AVAILABLE_THEMES = [ ( diff --git a/openstack_dashboard/theme_settings.py b/openstack_dashboard/theme_settings.py index 5b5090b394..9f142641c7 100644 --- a/openstack_dashboard/theme_settings.py +++ b/openstack_dashboard/theme_settings.py @@ -17,8 +17,6 @@ import logging import os -from django.utils.translation import pgettext_lazy - def get_theme_static_dirs(available_themes, collection_dir, root): static_dirs = [] @@ -40,64 +38,21 @@ def get_theme_static_dirs(available_themes, collection_dir, root): return static_dirs -def get_available_themes(available_themes, custom_path, default_path, - default_theme, selectable_themes): +def get_available_themes(available_themes, default_theme, selectable_themes): new_theme_list = [] # We can only support one path at a time, because of static file # collection. - custom_ndx = -1 - default_ndx = -1 default_theme_ndx = -1 for ndx, each_theme in enumerate(available_themes): - - # Maintain Backward Compatibility for CUSTOM_THEME_PATH - if custom_path: - if each_theme[2] == custom_path: - custom_ndx = ndx - - # Maintain Backward Compatibility for DEFAULT_THEME_PATH - if default_path: - if each_theme[0] == 'default': - default_ndx = ndx - each_theme = ( - 'default', - pgettext_lazy('Default style theme', 'Default'), - default_path - ) - # Make sure that DEFAULT_THEME is configured for use if each_theme[0] == default_theme: default_theme_ndx = ndx new_theme_list.append(each_theme) - if custom_ndx != -1: - # If CUSTOM_THEME_PATH is set, then we should set that as the default - # theme to make sure that upgrading Horizon doesn't jostle anyone - default_theme = available_themes[custom_ndx][0] - logging.warning("Your AVAILABLE_THEMES already contains your " - "CUSTOM_THEME_PATH, therefore using configuration in " - "AVAILABLE_THEMES for %s.", custom_path) - - elif custom_path is not None: - new_theme_list.append( - ('custom', - pgettext_lazy('Custom style theme', 'Custom'), - custom_path) - ) - default_theme = 'custom' - - # If 'default' isn't present at all, add it with the default_path - if default_ndx == -1 and default_path is not None: - new_theme_list.append( - ('default', - pgettext_lazy('Default style theme', 'Default'), - default_path) - ) - # If default is not configured, we have to set one, # just grab the first theme - if default_theme_ndx == -1 and custom_ndx == -1: + if default_theme_ndx == -1: default_theme = available_themes[0][0] if selectable_themes is None: diff --git a/releasenotes/notes/drop-deprecated-settings-rocky-dd8c853d979d6990.yaml b/releasenotes/notes/drop-deprecated-settings-rocky-dd8c853d979d6990.yaml new file mode 100644 index 0000000000..36e54fc30b --- /dev/null +++ b/releasenotes/notes/drop-deprecated-settings-rocky-dd8c853d979d6990.yaml @@ -0,0 +1,15 @@ +--- +upgrade: + - | + The following deprecated settings have been dropped. + + * ``HORIZON_IMAGES_ALLOW_UPLOAD`` (deprecated in Newton): + Use ``HORIZON_IMAGES_UPLOAD_MODE`` instead. + * ``CUSTOM_THEME_PATH`` and ``DEFAULT_THEME_PATH`` + (both deprecated in Mitaka): Use AVAILABLE_THEMES instead. + * ``OPENSTACK_TOKEN_HASH_ENABLED`` (deprecated in Mitaka): + PKI tokens currently work with hashing (before Ocata) and + Keystone already dropped PKI token support in Ocata. + * ``TOKEN_DELETION_DISABLED`` (deprecated in Ocata): + It was not marked as deprecated in the horizon documentation, + but this had no effect since Ocata release.