You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sm...@apache.org on 2018/08/31 06:06:36 UTC
[ambari] branch branch-2.7 updated: AMBARI-24542. Fixing typo in
LDAP configuration property name (#2178)
This is an automated email from the ASF dual-hosted git repository.
smolnar pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-2.7 by this push:
new df55794 AMBARI-24542. Fixing typo in LDAP configuration property name (#2178)
df55794 is described below
commit df55794d96ff830cbfe06602a50e6796d454d798
Author: Sandor Molnar <sm...@apache.org>
AuthorDate: Fri Aug 31 08:06:34 2018 +0200
AMBARI-24542. Fixing typo in LDAP configuration property name (#2178)
---
.../AmbariServerConfigurationKey.java | 2 +-
.../ambari/server/upgrade/SchemaUpgradeHelper.java | 1 +
.../ambari/server/upgrade/UpgradeCatalog272.java | 89 ++++++++++++++++++++++
.../src/main/python/ambari_server/setupSecurity.py | 2 +-
.../server/upgrade/UpgradeCatalog272Test.java | 87 +++++++++++++++++++++
ambari-server/src/test/python/TestAmbariServer.py | 12 +--
6 files changed, 185 insertions(+), 8 deletions(-)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
index ccdb2ab..8599a0d0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
@@ -72,7 +72,7 @@ public enum AmbariServerConfigurationKey {
FORCE_LOWERCASE_USERNAMES(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advanced.force_lowercase_usernames", PLAINTEXT, "", "Declares whether to force the ldap user name to be lowercase or leave as-is.\nThis is useful when local user names are expected to be lowercase but the LDAP user names are not."),
REFERRAL_HANDLING(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advanced.referrals", PLAINTEXT, "follow", "Determines whether to follow LDAP referrals to other URLs when the LDAP controller doesn't have the requested object."),
PAGINATION_ENABLED(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advanced.pagination_enabled", PLAINTEXT, "true", "Determines whether results from LDAP are paginated when requested."),
- COLLISION_BEHAVIOR(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advance.collision_behavior", PLAINTEXT, "convert", "Determines how to handle username collision while updating from LDAP."),
+ COLLISION_BEHAVIOR(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advanced.collision_behavior", PLAINTEXT, "convert", "Determines how to handle username collision while updating from LDAP."),
DISABLE_ENDPOINT_IDENTIFICATION(AmbariServerConfigurationCategory.LDAP_CONFIGURATION, "ambari.ldap.advanced.disable_endpoint_identification", PLAINTEXT, "false", "Determines whether to disable endpoint identification (hostname verification) during SSL handshake while updating from LDAP."),
/* ********************************************************
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
index 4a05175..1b3aedf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/SchemaUpgradeHelper.java
@@ -190,6 +190,7 @@ public class SchemaUpgradeHelper {
catalogBinder.addBinding().to(UpgradeCatalog262.class);
catalogBinder.addBinding().to(UpgradeCatalog270.class);
catalogBinder.addBinding().to(UpgradeCatalog271.class);
+ catalogBinder.addBinding().to(UpgradeCatalog272.class);
catalogBinder.addBinding().to(UpdateAlertScriptPaths.class);
catalogBinder.addBinding().to(FinalUpgradeCatalog.class);
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog272.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog272.java
new file mode 100644
index 0000000..d76e40d
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog272.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.upgrade;
+
+import static org.apache.ambari.server.configuration.AmbariServerConfigurationCategory.LDAP_CONFIGURATION;
+import static org.apache.ambari.server.upgrade.UpgradeCatalog270.AMBARI_CONFIGURATION_CATEGORY_NAME_COLUMN;
+import static org.apache.ambari.server.upgrade.UpgradeCatalog270.AMBARI_CONFIGURATION_PROPERTY_NAME_COLUMN;
+import static org.apache.ambari.server.upgrade.UpgradeCatalog270.AMBARI_CONFIGURATION_TABLE;
+
+import java.sql.SQLException;
+
+import org.apache.ambari.server.AmbariException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * The {@link UpgradeCatalog272} upgrades Ambari from 2.7.1 to 2.7.2.
+ */
+public class UpgradeCatalog272 extends AbstractUpgradeCatalog {
+
+ private static final Logger LOG = LoggerFactory.getLogger(UpgradeCatalog272.class);
+
+ private static final String LDAP_CONFIGURATION_WRONG_COLLISION_BEHAVIOR_PROPERTY_NAME = "ambari.ldap.advance.collision_behavior";
+ private static final String LDAP_CONFIGURATION_CORRECT_COLLISION_BEHAVIOR_PROPERTY_NAME = "ambari.ldap.advanced.collision_behavior";
+ static final String RENAME_COLLISION_BEHAVIOR_PROPERTY_SQL = String.format("UPDATE %s SET %s = '%s' WHERE %s = '%s' AND %s = '%s'", AMBARI_CONFIGURATION_TABLE,
+ AMBARI_CONFIGURATION_PROPERTY_NAME_COLUMN, LDAP_CONFIGURATION_CORRECT_COLLISION_BEHAVIOR_PROPERTY_NAME, AMBARI_CONFIGURATION_CATEGORY_NAME_COLUMN,
+ LDAP_CONFIGURATION.getCategoryName(), AMBARI_CONFIGURATION_PROPERTY_NAME_COLUMN, LDAP_CONFIGURATION_WRONG_COLLISION_BEHAVIOR_PROPERTY_NAME);
+
+ @Inject
+ public UpgradeCatalog272(Injector injector) {
+ super(injector);
+ }
+
+ @Override
+ public String getSourceVersion() {
+ return "2.7.1";
+ }
+
+ @Override
+ public String getTargetVersion() {
+ return "2.7.2";
+ }
+
+ @Override
+ protected void executeDDLUpdates() throws AmbariException, SQLException {
+ // nothing to do
+ }
+
+ @Override
+ protected void executePreDMLUpdates() throws AmbariException, SQLException {
+ // nothing to do
+ }
+
+ @Override
+ protected void executeDMLUpdates() throws AmbariException, SQLException {
+ renameLdapSynchCollisionBehaviorValue();
+ }
+
+ protected int renameLdapSynchCollisionBehaviorValue() throws SQLException {
+ int numberOfRecordsRenamed = 0;
+ if (dbAccessor.tableExists(AMBARI_CONFIGURATION_TABLE)) {
+ LOG.debug("Executing: {}", RENAME_COLLISION_BEHAVIOR_PROPERTY_SQL);
+ numberOfRecordsRenamed = dbAccessor.executeUpdate(RENAME_COLLISION_BEHAVIOR_PROPERTY_SQL);
+ LOG.info("Renamed {} {} with incorrect LDAP configuration property name", numberOfRecordsRenamed, 1 >= numberOfRecordsRenamed ? "record" : "records");
+ } else {
+ LOG.info("{} table does not exists; nothing to update", AMBARI_CONFIGURATION_TABLE);
+ }
+ return numberOfRecordsRenamed;
+ }
+
+}
diff --git a/ambari-server/src/main/python/ambari_server/setupSecurity.py b/ambari-server/src/main/python/ambari_server/setupSecurity.py
index 9eacd1f..b35b097 100644
--- a/ambari-server/src/main/python/ambari_server/setupSecurity.py
+++ b/ambari-server/src/main/python/ambari_server/setupSecurity.py
@@ -683,7 +683,7 @@ def init_ldap_properties_list_reqd(properties, options, ldap_type):
LdapPropTemplate(properties, options.ldap_base_dn, "ambari.ldap.attributes.user.search_base", "Search Base{0}: ", REGEX_ANYTHING, False, "dc=ambari,dc=apache,dc=org"),
LdapPropTemplate(properties, options.ldap_referral, "ambari.ldap.advanced.referrals", "Referral method [follow/ignore]{0}: ", REGEX_REFERRAL, True, "follow"),
LdapPropTemplate(properties, options.ldap_bind_anonym, "ambari.ldap.connectivity.anonymous_bind", "Bind anonymously [true/false]{0}: ", REGEX_TRUE_FALSE, False, "false"),
- LdapPropTemplate(properties, options.ldap_sync_username_collisions_behavior, "ambari.ldap.advance.collision_behavior", "Handling behavior for username collisions [convert/skip] for LDAP sync{0}: ", REGEX_SKIP_CONVERT, False, "skip"),
+ LdapPropTemplate(properties, options.ldap_sync_username_collisions_behavior, "ambari.ldap.advanced.collision_behavior", "Handling behavior for username collisions [convert/skip] for LDAP sync{0}: ", REGEX_SKIP_CONVERT, False, "skip"),
LdapPropTemplate(properties, options.ldap_force_lowercase_usernames, "ambari.ldap.advanced.force_lowercase_usernames", "Force lower-case user names [true/false]{0}:", REGEX_TRUE_FALSE, True),
LdapPropTemplate(properties, options.ldap_pagination_enabled, "ambari.ldap.advanced.pagination_enabled", "Results from LDAP are paginated when requested [true/false]{0}:", REGEX_TRUE_FALSE, True)
]
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog272Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog272Test.java
new file mode 100644
index 0000000..d303861
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog272Test.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.upgrade;
+
+import static org.apache.ambari.server.upgrade.UpgradeCatalog270.AMBARI_CONFIGURATION_TABLE;
+import static org.apache.ambari.server.upgrade.UpgradeCatalog272.RENAME_COLLISION_BEHAVIOR_PROPERTY_SQL;
+import static org.easymock.EasyMock.createMockBuilder;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+
+import java.lang.reflect.Method;
+
+import org.apache.ambari.server.orm.DBAccessor;
+import org.easymock.EasyMockSupport;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.inject.Injector;
+
+public class UpgradeCatalog272Test {
+
+ private Injector injector;
+ private DBAccessor dbAccessor;
+
+ @Before
+ public void init() {
+ final EasyMockSupport easyMockSupport = new EasyMockSupport();
+ injector = easyMockSupport.createNiceMock(Injector.class);
+ dbAccessor = easyMockSupport.createNiceMock(DBAccessor.class);
+ }
+
+ @Test
+ public void testExecuteDMLUpdates() throws Exception {
+ final Method renameLdapSynchCollisionBehaviorValue = UpgradeCatalog272.class.getDeclaredMethod("renameLdapSynchCollisionBehaviorValue");
+
+ final UpgradeCatalog272 upgradeCatalog272 = createMockBuilder(UpgradeCatalog272.class).addMockedMethod(renameLdapSynchCollisionBehaviorValue).createMock();
+
+ expect(upgradeCatalog272.renameLdapSynchCollisionBehaviorValue()).andReturn(0).once();
+
+ replay(upgradeCatalog272);
+
+ upgradeCatalog272.executeDMLUpdates();
+
+ verify(upgradeCatalog272);
+ }
+
+ @Test
+ public void shouldRenameCollisionBehaviorLdapCategoryPropertyNameIfTableWithDataExists() throws Exception {
+ final int expectedResult = 3;
+ expect(dbAccessor.tableExists(AMBARI_CONFIGURATION_TABLE)).andReturn(true).once();
+ expect(dbAccessor.executeUpdate(RENAME_COLLISION_BEHAVIOR_PROPERTY_SQL)).andReturn(expectedResult).once();
+ replay(dbAccessor);
+ final UpgradeCatalog272 upgradeCatalog272 = new UpgradeCatalog272(injector);
+ upgradeCatalog272.dbAccessor = dbAccessor;
+ assertEquals(expectedResult, upgradeCatalog272.renameLdapSynchCollisionBehaviorValue());
+ verify(dbAccessor);
+ }
+
+ @Test
+ public void shouldNotRenameCollisionBehaviorLdapCategoryPropertyNameIfTableDoesNotExist() throws Exception {
+ final int expectedResult = 0;
+ expect(dbAccessor.tableExists(AMBARI_CONFIGURATION_TABLE)).andReturn(false).once();
+ replay(dbAccessor);
+ final UpgradeCatalog272 upgradeCatalog272 = new UpgradeCatalog272(injector);
+ upgradeCatalog272.dbAccessor = dbAccessor;
+ assertEquals(expectedResult, upgradeCatalog272.renameLdapSynchCollisionBehaviorValue());
+ verify(dbAccessor);
+ }
+
+}
diff --git a/ambari-server/src/test/python/TestAmbariServer.py b/ambari-server/src/test/python/TestAmbariServer.py
index 6058ca1..3b9adf6 100644
--- a/ambari-server/src/test/python/TestAmbariServer.py
+++ b/ambari-server/src/test/python/TestAmbariServer.py
@@ -7070,7 +7070,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.search_base": "base",
"ambari.ldap.advanced.referrals": "follow",
"ambari.ldap.connectivity.anonymous_bind": "true",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.advanced.force_lowercase_usernames": "false",
"ambari.ldap.advanced.pagination_enabled": "false",
"ambari.ldap.authentication.enabled": "true"
@@ -7088,7 +7088,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.name_attr": "user",
"ambari.ldap.attributes.user.search_base": "uid",
"ambari.ldap.connectivity.anonymous_bind": "true",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.advanced.force_lowercase_usernames": "false",
"ambari.ldap.advanced.pagination_enabled": "false",
"ambari.ldap.advanced.referrals": "follow",
@@ -7113,7 +7113,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.search_base": "base",
"ambari.ldap.advanced.referrals": "follow",
"ambari.ldap.connectivity.anonymous_bind": "true",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.advanced.force_lowercase_usernames": "false",
"ambari.ldap.advanced.pagination_enabled": "false",
"ambari.ldap.authentication.enabled": "true"
@@ -7244,7 +7244,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.name_attr": "test",
"ambari.ldap.attributes.user.search_base": "test",
"ambari.ldap.connectivity.anonymous_bind": "false",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.advanced.force_lowercase_usernames": "false",
"ambari.ldap.advanced.pagination_enabled": "false",
"ambari.ldap.connectivity.bind_dn": "test",
@@ -7269,7 +7269,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.name_attr": "test",
"ambari.ldap.attributes.user.search_base": "test",
"ambari.ldap.connectivity.anonymous_bind": "false",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.advanced.force_lowercase_usernames": "false",
"ambari.ldap.advanced.pagination_enabled": "false",
"ambari.ldap.connectivity.bind_dn": "test",
@@ -7430,7 +7430,7 @@ class TestAmbariServer(TestCase):
"ambari.ldap.attributes.user.search_base": "test",
"ambari.ldap.attributes.dn_attr": "test",
"ambari.ldap.connectivity.anonymous_bind": "false",
- "ambari.ldap.advance.collision_behavior": "skip",
+ "ambari.ldap.advanced.collision_behavior": "skip",
"ambari.ldap.connectivity.bind_dn": "test",
"client.security": "ldap",
"ssl.trustStore.type": "test",