Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arrangement 6: add deprecation warnings to conf.get_* #765

Merged
merged 1 commit into from
May 22, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
149 changes: 78 additions & 71 deletions osbs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from osbs.constants import (DEFAULT_CONFIGURATION_FILE, DEFAULT_CONFIGURATION_SECTION,
GENERAL_CONFIGURATION_SECTION, DEFAULT_NAMESPACE,
DEFAULT_ARRANGEMENT_VERSION)
DEFAULT_ARRANGEMENT_VERSION, REACTOR_CONFIG_ARRANGEMENT_VERSION)
from osbs.exceptions import OsbsValidationException
from osbs import utils

Expand Down Expand Up @@ -102,6 +102,12 @@ def get_value_from_conf():
else:
return value

def _get_deprecated(self, args_key, conf_section, conf_key, default=None, is_bool_val=False):
logger.warning("user configuration %s in section %s is ignored in arrangement %s and later",
args_key, conf_section, REACTOR_CONFIG_ARRANGEMENT_VERSION)
logger.warning("it has been deprecated in favor of the value in the reactor_config_map")
return self._get_value(args_key, conf_section, conf_key, default, is_bool_val)

def get_openshift_required_version(self):
"""
Get minimum version of openshift we require
Expand Down Expand Up @@ -202,50 +208,52 @@ def get_flatpak_base_image(self):
return self._get_value("flatpak_base_image", self.conf_section, "flatpak_base_image")

def get_odcs_url(self):
return self._get_value("odcs_url", self.conf_section, "odcs_url")
return self._get_deprecated("odcs_url", self.conf_section, "odcs_url")

def get_odcs_insecure(self):
return self._get_value("odcs_insecure", self.conf_section, "odcs_insecure",
default=False, is_bool_val=True)
return self._get_deprecated("odcs_insecure", self.conf_section, "odcs_insecure",
default=False, is_bool_val=True)

def get_odcs_openidc_secret(self):
return self._get_value("odcs_openidc_secret", self.conf_section, "odcs_openidc_secret")
return self._get_deprecated("odcs_openidc_secret", self.conf_section,
"odcs_openidc_secret")

def get_odcs_ssl_secret(self):
return self._get_value("odcs_ssl_secret", self.conf_section, "odcs_ssl_secret")
return self._get_deprecated("odcs_ssl_secret", self.conf_section, "odcs_ssl_secret")

def get_pdc_url(self):
return self._get_value("pdc_url", self.conf_section, "pdc_url")
return self._get_deprecated("pdc_url", self.conf_section, "pdc_url")

def get_pdc_insecure(self):
return self._get_value("pdc_insecure", self.conf_section, "pdc_insecure",
default=False, is_bool_val=True)
return self._get_deprecated("pdc_insecure", self.conf_section, "pdc_insecure",
default=False, is_bool_val=True)

def get_kojiroot(self):
return self._get_value("koji_root", self.conf_section, "koji_root")
return self._get_deprecated("koji_root", self.conf_section, "koji_root")

def get_kojihub(self):
return self._get_value("koji_hub", self.conf_section, "koji_hub")
return self._get_deprecated("koji_hub", self.conf_section, "koji_hub")

def get_koji_target(self):
return self._get_value("target", self.conf_section, "target")

def get_koji_certs_secret(self):
return self._get_value("koji_certs_secret", self.conf_section, "koji_certs_secret")
return self._get_deprecated("koji_certs_secret", self.conf_section, "koji_certs_secret")

def get_koji_use_kerberos(self):
return self._get_value("koji_use_kerberos", self.conf_section, "koji_use_kerberos",
is_bool_val=True)
return self._get_deprecated("koji_use_kerberos", self.conf_section, "koji_use_kerberos",
is_bool_val=True)

def get_koji_kerberos_keytab(self):
return self._get_value("koji_kerberos_keytab", self.conf_section, "koji_kerberos_keytab")
return self._get_deprecated("koji_kerberos_keytab", self.conf_section,
"koji_kerberos_keytab")

def get_koji_kerberos_principal(self):
return self._get_value("koji_kerberos_principal", self.conf_section,
"koji_kerberos_principal")
return self._get_deprecated("koji_kerberos_principal", self.conf_section,
"koji_kerberos_principal")

def get_sources_command(self):
return self._get_value("sources_command", self.conf_section, "sources_command")
return self._get_deprecated("sources_command", self.conf_section, "sources_command")

def get_username(self):
return self._get_value("username", self.conf_section, "username")
Expand All @@ -272,33 +280,29 @@ def get_kerberos_ccache(self):
return self._get_value("kerberos_ccache", self.conf_section, "kerberos_ccache")

def get_registry_uris(self):
value = self._get_value("registry_uri",
self.conf_section,
"registry_uri")
value = self._get_deprecated("registry_uri", self.conf_section, "registry_uri")
if value:
return [x.strip() for x in value.split(',')]
else:
return []

def get_registry_secrets(self):
value = self._get_value("registry_secret", self.conf_section, "registry_secret")
value = self._get_deprecated("registry_secret", self.conf_section, "registry_secret")
if value:
return [x.strip() for x in value.split(',')]
else:
return []

def get_registry_api_versions(self, platform=None):
value = self._get_value("registry_api_versions",
self.conf_section,
"registry_api_versions",
default='v1,v2')
value = self._get_deprecated("registry_api_versions", self.conf_section,
"registry_api_versions", default='v1,v2')
versions = [x.strip() for x in value.split(',')]
if platform is None:
return versions

section = 'platform:{0}'.format(platform)
enable_v1 = self._get_value("enable_v1", section, "enable_v1",
default=False, is_bool_val=True)
enable_v1 = self._get_deprecated("enable_v1", section, "enable_v1",
default=False, is_bool_val=True)
if enable_v1:
return versions
else:
Expand All @@ -308,18 +312,19 @@ def get_registry_api_versions(self, platform=None):
raise OsbsValidationException('v2 only platform in v1 only instance')

def get_source_registry_uri(self):
return self._get_value("source_registry_uri", self.conf_section, "source_registry_uri")
return self._get_deprecated("source_registry_uri", self.conf_section,
"source_registry_uri")

def get_pulp_registry(self):
return self._get_value("pulp_registry_name", self.conf_section, "pulp_registry_name")
return self._get_deprecated("pulp_registry_name", self.conf_section, "pulp_registry_name")

def get_prefer_schema1_digest(self):
return self._get_value("prefer_schema1_digest", self.conf_section, "prefer_schema1_digest",
is_bool_val=True)
return self._get_deprecated("prefer_schema1_digest", self.conf_section,
"prefer_schema1_digest", is_bool_val=True)

def get_group_manifests(self):
return self._get_value("group_manifests", self.conf_section,
"group_manifests", is_bool_val=True)
return self._get_deprecated("group_manifests", self.conf_section,
"group_manifests", is_bool_val=True)

def get_build_json_store(self):
return self._get_value("build_json_dir", GENERAL_CONFIGURATION_SECTION, "build_json_dir")
Expand All @@ -329,51 +334,50 @@ def get_verify_ssl(self):
default=True, is_bool_val=True)

def get_vendor(self):
return self._get_value("vendor", self.conf_section, "vendor")
return self._get_deprecated("vendor", self.conf_section, "vendor")

def get_build_host(self):
return self._get_value("build_host", self.conf_section, "build_host")
return self._get_deprecated("build_host", self.conf_section, "build_host")

def get_authoritative_registry(self):
return self._get_value("authoritative_registry", self.conf_section,
"authoritative_registry")
return self._get_deprecated("authoritative_registry", self.conf_section,
"authoritative_registry")

def get_distribution_scope(self):
return self._get_value("distribution_scope", self.conf_section, "distribution_scope")
return self._get_deprecated("distribution_scope", self.conf_section, "distribution_scope")

def get_architecture(self):
return self._get_value("arch", self.conf_section, "architecture")
return self._get_deprecated("arch", self.conf_section, "architecture")

def get_use_auth(self):
return self._get_value("use_auth", self.conf_section, "use_auth", is_bool_val=True)

def get_builder_use_auth(self):
return self._get_value("builder_use_auth", self.conf_section,
"builder_use_auth",
default=self.get_use_auth(),
is_bool_val=True)
return self._get_deprecated("builder_use_auth", self.conf_section,
"builder_use_auth", default=self.get_use_auth(),
is_bool_val=True)

def get_builder_openshift_url(self):
""" url of OpenShift where builder will connect """
key = "builder_openshift_url"
url = self._get_value(key, self.conf_section, key)
url = self._get_deprecated(key, self.conf_section, key)
if url is None:
logger.warning("%r not found, falling back to get_openshift_base_uri()", key)
url = self.get_openshift_base_uri()
return url

def get_builder_build_json_store(self):
key = "builder_build_json_dir"
builder_build_json_dir = self._get_value(key, self.conf_section, key)
builder_build_json_dir = self._get_deprecated(key, self.conf_section, key)
if builder_build_json_dir is None:
logger.warning("%r not found, falling back to build_json_dir", key)
builder_build_json_dir = self.get_build_json_store()
return builder_build_json_dir

def get_pulp_secret(self):
secret = self._get_value("pulp_secret", self.conf_section, "pulp_secret")
secret = self._get_deprecated("pulp_secret", self.conf_section, "pulp_secret")
if not secret:
secret = self._get_value("source_secret", self.conf_section, "pulp_secret")
secret = self._get_deprecated("source_secret", self.conf_section, "pulp_secret")
return secret

def get_source_secret(self):
Expand All @@ -383,37 +387,38 @@ def get_source_secret(self):
return self.get_pulp_secret()

def get_smtp_host(self):
return self._get_value("smtp_host", self.conf_section, "smtp_host")
return self._get_deprecated("smtp_host", self.conf_section, "smtp_host")

def get_smtp_from(self):
return self._get_value("smtp_from", self.conf_section, "smtp_from")
return self._get_deprecated("smtp_from", self.conf_section, "smtp_from")

def get_smtp_additional_addresses(self):
value = self._get_value("smtp_additional_addresses", self.conf_section,
"smtp_additional_addresses")
value = self._get_deprecated("smtp_additional_addresses", self.conf_section,
"smtp_additional_addresses")

if value:
return [x.strip() for x in value.split(',')]
else:
return []

def get_smtp_error_addresses(self):
value = self._get_value("smtp_error_addresses", self.conf_section, "smtp_error_addresses")
value = self._get_deprecated("smtp_error_addresses", self.conf_section,
"smtp_error_addresses")
if value:
return [x.strip() for x in value.split(',')]
else:
return []

def get_smtp_email_domain(self):
return self._get_value("smtp_email_domain", self.conf_section, "smtp_email_domain")
return self._get_deprecated("smtp_email_domain", self.conf_section, "smtp_email_domain")

def get_smtp_to_submitter(self):
return self._get_value("smtp_to_submitter", self.conf_section, "smtp_to_submitter",
is_bool_val=True)
return self._get_deprecated("smtp_to_submitter", self.conf_section, "smtp_to_submitter",
is_bool_val=True)

def get_smtp_to_pkgowner(self):
return self._get_value("smtp_to_pkgowner", self.conf_section, "smtp_to_pkgowner",
is_bool_val=True)
return self._get_deprecated("smtp_to_pkgowner", self.conf_section, "smtp_to_pkgowner",
is_bool_val=True)

def get_cpu_limit(self):
return self._get_value("cpu_limit", self.conf_section, "cpu_limit")
Expand All @@ -434,7 +439,7 @@ def get_build_from(self):
return self._get_value("build_from", self.conf_section, "build_from")

def get_proxy(self):
return self._get_value("yum_proxy", self.conf_section, "yum_proxy")
return self._get_deprecated("yum_proxy", self.conf_section, "yum_proxy")

def get_scratch(self, default_value):
return self._get_value("scratch", self.conf_section, "scratch",
Expand Down Expand Up @@ -489,16 +494,15 @@ def get_oauth2_token(self):
return value

def get_reactor_config_secret(self):
return self._get_value("reactor_config_secret", self.conf_section,
"reactor_config_secret")
return self._get_deprecated("reactor_config_secret", self.conf_section,
"reactor_config_secret")

def get_client_config_secret(self):
return self._get_value("client_config_secret", self.conf_section,
"client_config_secret")
return self._get_deprecated("client_config_secret", self.conf_section,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're still using this in arrangement 6. But it's now configured in reactor config map, so let's deprecate it here.

"client_config_secret")

def get_token_secrets(self):
value = self._get_value("token_secrets", self.conf_section,
"token_secrets")
value = self._get_deprecated("token_secrets", self.conf_section, "token_secrets")
token_dict = {}
will_raise = False
if value:
Expand Down Expand Up @@ -533,21 +537,19 @@ def get_can_orchestrate(self):
default=False, is_bool_val=True)

def get_info_url_format(self):
return self._get_value("info_url_format", self.conf_section,
"info_url_format")
return self._get_deprecated("info_url_format", self.conf_section, "info_url_format")

def get_artifacts_allowed_domains(self):
value = self._get_value("artifacts_allowed_domains", self.conf_section,
"artifacts_allowed_domains")
value = self._get_deprecated("artifacts_allowed_domains", self.conf_section,
"artifacts_allowed_domains")
if value:
return [x.strip() for x in value.split(',')]
else:
return []

def get_equal_labels(self):
equal_labels = []
equal_labels_str = self._get_value("equal_labels", self.conf_section,
"equal_labels")
equal_labels_str = self._get_deprecated("equal_labels", self.conf_section, "equal_labels")
if equal_labels_str:
# must be in correct format
# e.g. `name1:name2:name3, release1:release2, version1:version2`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't comment any further, but shouldn't get_platform_descriptors also be deprecated now?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I got platform_descriptors and node_selectors confused. Fixed along with all the others.

Expand Down Expand Up @@ -621,6 +623,11 @@ def get_platform_descriptors(self):
continue
platform = section.split("platform:")[1]
platform_descriptor = {}
logger.warning("user configuration platforms in section %s is ignored in ",
"arrangement %s and later",
section, REACTOR_CONFIG_ARRANGEMENT_VERSION)
logger.warning("it has been deprecated in favor of the value in the reactor_config_map")

arch = self._get_value("architecture", section, "architecture") or platform
enable_v1 = self._get_value("enable_v1", section, "enable_v1",
default=False, is_bool_val=True)
Expand Down
12 changes: 12 additions & 0 deletions tests/test_conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from osbs.constants import DEFAULT_ARRANGEMENT_VERSION
import pytest
from tempfile import NamedTemporaryFile
import logging


class TestConfiguration(object):
Expand Down Expand Up @@ -520,3 +521,14 @@ def test_get_node_selector_types(self, nodeselector_type, config, expected):
with self.config_file(myconfig) as config_file:
conf = Configuration(conf_file=config_file)
assert getattr(conf, "get_" + nodeselector_type)() == expected

def test_deprecated_warnings(self, caplog): # noqa:F811
with caplog.atLevel(logging.WARNING):
self.test_arrangement_version({'default': {}}, DEFAULT_ARRANGEMENT_VERSION)
assert "it has been deprecated" not in caplog.text()
build_test_config = {
'default': {},
'general': {'build_json_dir': 'general'},
}
self.test_builder_build_json_dir(build_test_config, 'general')
assert "it has been deprecated" in caplog.text()