You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by st...@apache.org on 2017/04/20 11:51:30 UTC
ambari git commit: AMBARI-20596. Cleanup temporary files needed for
downloading client configurations response. (Attila Magyar via stoader)
Repository: ambari
Updated Branches:
refs/heads/branch-2.4 14c6114f4 -> 0f4adf610
AMBARI-20596. Cleanup temporary files needed for downloading client configurations response. (Attila Magyar via stoader)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0f4adf61
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0f4adf61
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0f4adf61
Branch: refs/heads/branch-2.4
Commit: 0f4adf610d8215953462777a68842f68250f33e4
Parents: 14c6114
Author: Attila Magyae <am...@hortonworks.com>
Authored: Thu Apr 20 13:51:13 2017 +0200
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Thu Apr 20 13:51:13 2017 +0200
----------------------------------------------------------------------
.../resource_management/libraries/script/script.py | 8 +++++---
.../internal/ClientConfigResourceProvider.java | 17 +++++++++++++++--
.../internal/ClientConfigResourceProviderTest.java | 7 +++++--
.../python/stacks/2.0.6/HDFS/test_hdfs_client.py | 11 ++++++-----
4 files changed, 31 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f4adf61/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 9eee5be..1c5bdce 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
@@ -806,6 +806,7 @@ class Script(object):
Directory(self.get_tmp_dir(), create_parents = True)
conf_tmp_dir = tempfile.mkdtemp(dir=self.get_tmp_dir())
+ os.chmod(conf_tmp_dir, 0700)
output_filename = os.path.join(self.get_tmp_dir(), config['commandParams']['output_file'])
try:
@@ -813,22 +814,23 @@ class Script(object):
for filename, dict in file_dict.iteritems():
XmlConfig(filename,
conf_dir=conf_tmp_dir,
- mode=0644,
+ mode=0600,
**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=0644,
+ mode=0600,
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=0644,
+ mode=0600,
properties=self.generate_configs_get_xml_file_dict(filename, dict)
)
with closing(tarfile.open(output_filename, "w:gz")) as tar:
+ os.chmod(output_filename, 0600)
try:
tar.add(conf_tmp_dir, arcname=os.path.basename("."))
finally:
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f4adf61/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 c390c86..a018fee 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
@@ -383,8 +383,7 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
jsonContent.put("clusterName", cluster.getClusterName());
jsonConfigurations = gson.toJson(jsonContent);
- File jsonFileName = new File(TMP_PATH + File.separator + componentName + "-configuration.json");
- File tmpDirectory = new File(jsonFileName.getParent());
+ File tmpDirectory = new File(TMP_PATH);
if (!tmpDirectory.exists()) {
try {
tmpDirectory.mkdirs();
@@ -394,6 +393,18 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
throw new SystemException("Failed to get temporary directory to store configurations", se);
}
}
+
+ File jsonFileName;
+ try {
+ jsonFileName = File.createTempFile(componentName, "-configuration.json", tmpDirectory);
+ jsonFileName.setWritable(true, true);
+ jsonFileName.setReadable(true, true);
+ } catch (SecurityException e) {
+ throw new SystemException("Failed to set permission", e);
+ } catch (IOException e) {
+ throw new SystemException("Controller error ", e);
+ }
+
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter(jsonFileName.getAbsolutePath());
@@ -417,6 +428,8 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
} catch (ExecutionException e) {
LOG.error(e.getMessage(),e);
throw new SystemException(e.getMessage() + " " + e.getCause());
+ } finally {
+ jsonFileName.delete();
}
} catch (AmbariException e) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f4adf61/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
index 463b3a1..f5ca3f1 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
@@ -19,6 +19,7 @@
package org.apache.ambari.server.controller.internal;
import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
@@ -327,8 +328,9 @@ public class ClientConfigResourceProviderTest {
userSet.add("hdfs");
expect(configHelper.getPropertyValuesWithPropertyType(stackId, PropertyInfo.PropertyType.USER, cluster, desiredConfigMap)).andReturn(userSet);
PowerMock.expectNew(File.class, new Class<?>[]{String.class}, anyObject(String.class)).andReturn(mockFile).anyTimes();
+ PowerMock.mockStatic(File.class);
+ expect(File.createTempFile(anyString(), anyString(), anyObject(File.class))).andReturn(mockFile);
PowerMock.createNiceMockAndExpectNew(PrintWriter.class, anyObject());
- expect(mockFile.getParent()).andReturn("");
PowerMock.mockStatic(Runtime.class);
expect(mockFile.exists()).andReturn(true);
String commandLine = "ambari-python-wrap /tmp/stacks/S1/V1/PIG/package/null generate_configs null " +
@@ -531,8 +533,9 @@ public class ClientConfigResourceProviderTest {
userSet.add("hdfs");
expect(configHelper.getPropertyValuesWithPropertyType(stackId, PropertyInfo.PropertyType.USER, cluster, desiredConfigMap)).andReturn(userSet);
PowerMock.expectNew(File.class, new Class<?>[]{String.class}, anyObject(String.class)).andReturn(mockFile).anyTimes();
+ PowerMock.mockStatic(File.class);
+ expect(File.createTempFile(anyString(), anyString(), anyObject(File.class))).andReturn(mockFile);
PowerMock.createNiceMockAndExpectNew(PrintWriter.class, anyObject());
- expect(mockFile.getParent()).andReturn("");
PowerMock.mockStatic(Runtime.class);
expect(mockFile.exists()).andReturn(true);
String commandLine = "ambari-python-wrap " + commonServicesPath + "/PIG/package/null generate_configs null " +
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f4adf61/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 b2636ab..85098fa 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
@@ -32,6 +32,7 @@ from resource_management.libraries.script.script import Script
@patch.object(tempfile,"mkdtemp", new = MagicMock(return_value='/tmp/123'))
@patch.object(contextlib,"closing", new = MagicMock())
@patch("os.path.exists", new = MagicMock(return_value=True))
+@patch("os.chmod", new = MagicMock(return_value=True))
class Test(RMFTestCase):
COMMON_SERVICES_PACKAGE_DIR = "HDFS/2.1.0.2.0/package"
STACK_VERSION = "2.0.6"
@@ -49,25 +50,25 @@ class Test(RMFTestCase):
)
self.assertResourceCalled('XmlConfig', 'hdfs-site.xml',
conf_dir = '/tmp/123',
- mode=0644,
+ mode=0600,
configuration_attributes = self.getConfig()['configuration_attributes']['hdfs-site'],
configurations = self.getConfig()['configurations']['hdfs-site'],
)
self.assertResourceCalled('File', '/tmp/123/hadoop-env.sh',
- mode=0644,
+ mode=0600,
content = InlineTemplate(self.getConfig()['configurations']['hadoop-env']['content']),
)
self.assertResourceCalled('File', '/tmp/123/log4j.properties',
- mode=0644,
+ mode=0600,
content = InlineTemplate(self.getConfig()['configurations']['hdfs-log4j']['content']+
self.getConfig()['configurations']['yarn-log4j']['content']),
)
self.assertResourceCalled('PropertiesFile', '/tmp/123/runtime.properties',
- mode=0644,
+ mode=0600,
properties = UnknownConfigurationMock(),
)
self.assertResourceCalled('PropertiesFile', '/tmp/123/startup.properties',
- mode=0644,
+ mode=0600,
properties = UnknownConfigurationMock(),
)
self.assertResourceCalled('Directory', '/tmp/123',