AMBARI-20843. Client configs downloaded via Ambari are empty with non-root ambari-server (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/101942df Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/101942df Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/101942df Branch: refs/heads/branch-feature-AMBARI-12556 Commit: 101942df479c7e572eb3c5c984eef0903b44d05c Parents: f4877c8 Author: Andrew Onishuk <aonis...@hortonworks.com> Authored: Tue Apr 25 14:22:07 2017 +0300 Committer: Andrew Onishuk <aonis...@hortonworks.com> Committed: Thu Apr 27 15:11:59 2017 +0300 ---------------------------------------------------------------------- .../libraries/script/script.py | 6 +-- .../internal/ClientConfigResourceProvider.java | 41 ++++++++++---------- .../stacks/2.0.6/HDFS/test_hdfs_client.py | 10 ++--- 3 files changed, 28 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/101942df/ambari-common/src/main/python/resource_management/libraries/script/script.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index a08feab..da47351 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -911,19 +911,19 @@ class Script(object): for filename, dict in file_dict.iteritems(): XmlConfig(filename, conf_dir=conf_tmp_dir, - mode=0600, + mode=0644, **self.generate_configs_get_xml_file_content(filename, dict) ) for file_dict in env_configs_list: for filename,dicts in file_dict.iteritems(): File(os.path.join(conf_tmp_dir, filename), - mode=0600, + mode=0644, content=InlineTemplate(self.generate_configs_get_template_file_content(filename, dicts))) for file_dict in properties_configs_list: for filename, dict in file_dict.iteritems(): PropertiesFile(os.path.join(conf_tmp_dir, filename), - mode=0600, + mode=0644, properties=self.generate_configs_get_xml_file_dict(filename, dict) ) with closing(tarfile.open(output_filename, "w:gz")) as tar: http://git-wip-us.apache.org/repos/asf/ambari/blob/101942df/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java index e42bd45..4ad01a5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java @@ -585,28 +585,27 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv throws SystemException { processExecutor.shutdown(); try { - if (!processExecutor.awaitTermination(timeout, TimeUnit.MILLISECONDS)) { - processExecutor.shutdownNow(); - for (CommandLineThreadWrapper commandLineThreadWrapper: pythonCmdThreads) { - CommandLineThread commandLineThread = commandLineThreadWrapper.getCommandLineThread(); - try { - Integer returnCode = commandLineThread.getReturnCode(); - if (returnCode == null) { - throw new TimeoutException(); - } else if (returnCode != 0) { - throw new ExecutionException(String.format("Execution of \"%s\" returned %d.", commandLineThreadWrapper.getCommandLine(), returnCode), - new Throwable(commandLineThreadWrapper.getLogStream().getOutput())); - } - } catch (TimeoutException e) { - LOG.error("Generate client configs script was killed due to timeout ", e); - throw new SystemException("Generate client configs script was killed due to timeout ", e); - } catch (ExecutionException e) { - LOG.error(e.getMessage(), e); - throw new SystemException(e.getMessage() + " " + e.getCause()); - } finally { - commandLineThreadWrapper.getProcess().destroy(); + processExecutor.awaitTermination(timeout, TimeUnit.MILLISECONDS); + processExecutor.shutdownNow(); + for (CommandLineThreadWrapper commandLineThreadWrapper: pythonCmdThreads) { + CommandLineThread commandLineThread = commandLineThreadWrapper.getCommandLineThread(); + try { + Integer returnCode = commandLineThread.getReturnCode(); + if (returnCode == null) { + throw new TimeoutException(); + } else if (returnCode != 0) { + throw new ExecutionException(String.format("Execution of \"%s\" returned %d.", commandLineThreadWrapper.getCommandLine(), returnCode), + new Throwable(commandLineThreadWrapper.getLogStream().getOutput())); } - } + } catch (TimeoutException e) { + LOG.error("Generate client configs script was killed due to timeout ", e); + throw new SystemException("Generate client configs script was killed due to timeout ", e); + } catch (ExecutionException e) { + LOG.error(e.getMessage(), e); + throw new SystemException(e.getMessage() + " " + e.getCause()); + } finally { + commandLineThreadWrapper.getProcess().destroy(); + } } } catch (InterruptedException e) { Thread.currentThread().interrupt(); http://git-wip-us.apache.org/repos/asf/ambari/blob/101942df/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py index fc80849..bcd9c80 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py +++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py @@ -50,25 +50,25 @@ class Test(RMFTestCase): ) self.assertResourceCalled('XmlConfig', 'hdfs-site.xml', conf_dir = '/tmp/123', - mode=0600, + mode=0644, configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site'], configurations = self.getConfig()['configurations']['hdfs-site'], ) self.assertResourceCalled('File', '/tmp/123/hadoop-env.sh', - mode=0600, + mode=0644, content = InlineTemplate(self.getConfig()['configurations']['hadoop-env']['content']), ) self.assertResourceCalled('File', '/tmp/123/log4j.properties', - mode=0600, + mode=0644, content = InlineTemplate(self.getConfig()['configurations']['hdfs-log4j']['content']+ self.getConfig()['configurations']['yarn-log4j']['content']), ) self.assertResourceCalled('PropertiesFile', '/tmp/123/runtime.properties', - mode=0600, + mode=0644, properties = UnknownConfigurationMock(), ) self.assertResourceCalled('PropertiesFile', '/tmp/123/startup.properties', - mode=0600, + mode=0644, properties = UnknownConfigurationMock(), ) self.assertResourceCalled('Directory', '/tmp/123',