Asger Askov Blekinge created AMBARI-15754:
---------------------------------------------
Summary: configs.sh expands ***** in config values to a local file
list, causing broken config files
Key: AMBARI-15754
URL: https://issues.apache.org/jira/browse/AMBARI-15754
Project: Ambari
Issue Type: Bug
Components: ambari-server
Affects Versions: 2.0.0, 2.0.1, 2.1.0, 2.3.0, 2.0.2, 2.1.1, 2.1.2, trunk,
2.0.3, 2.2.0, 2.4.0, 2.2.1, 2.2.2, 2.4.1
Reporter: Asger Askov Blekinge
When you try to get the value of, say, pig-log4j like this, it outputs correctly
{code}
curl -k -s -u $AMBARI_USER:$AMBARI_PASSWORD
"$AMBARI_HOST:$AMBARI_PORT/api/v1/clusters/$CLUSTER_NAME/configurations?type=pig-log4j&tag=version1"
{code}
If you use configs.sh to do the same
{code}
configs.sh -u $AMBARI_USER -p $AMBARI_PASSWORD -port $AMBARI_PORT get
$AMBARI_HOST $CLUSTER_NAME pig-log4j
{code}
it will have replaced the ***** with the file list in the working directory
So,
{code}
"content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under
one\n# or more contributor license agreements. See the NOTICE file\n#
distributed with this work for additional information\n# regarding copyright
ownership. The ASF licenses this file\n# to you under the Apache License,
Version 2.0 (the\n# \"License\"); you may not use this file except in
compliance\n# with the License. You may obtain a copy of the License at\n#\n#
http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable
law or agreed to in writing,\n# software distributed under the License is
distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
ANY\n# KIND, either express or implied. See the License for the\n# specific
language governing permissions and limitations\n# under the
License.\n#\n#\n#\n\n# ***** Set root logger level to DEBUG and its only
appender to A.\nlog4j.logger.org.apache.pig=info, A\n\n# ***** A is set to be a
ConsoleAppender.\nlog4j.appender.A=org.apache.log4j.ConsoleAppender\n# ***** A
uses
PatternLayout.\nlog4j.appender.A.layout=org.apache.log4j.PatternLayout\nlog4j.appender.A.layout.ConversionPattern=%-4r
[%t] %-5p %c %x - %m%n"
{code}
will be output as
{code}
"content" : "\n#\n#\n# Licensed to the Apache Software Foundation (ASF) under
one\n# or more contributor license agreements. See the NOTICE file\n#
distributed with this work for additional information\n# regarding copyright
ownership. The ASF licenses this file\n# to you under the Apache License,
Version 2.0 (the\n# \"License\"); you may not use this file except in
compliance\n# with the License. You may obtain a copy of the License at\n#\n#
http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable
law or agreed to in writing,\n# software distributed under the License is
distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
ANY\n# KIND, either express or implied. See the License for the\n# specific
language governing permissions and limitations\n# under the
License.\n#\n#\n#\n\n# bigr configs.sh gpfs mmls ssh symphony Set root logger
level to DEBUG and its only appender to A.\nlog4j.logger.org.apache.pig=info,
A\n\n# bigr configs.sh gpfs mmls ssh symphony A is set to be a
ConsoleAppender.\nlog4j.appender.A=org.apache.log4j.ConsoleAppender\n# bigr
configs.sh gpfs mmls ssh symphony A uses
PatternLayout.\nlog4j.appender.A.layout=org.apache.log4j.PatternLayout\nlog4j.appender.A.layout.ConversionPattern=%-4r
[%t] %-5p %c %x - %m%n"
{code}
As you can see, there are no ***** string in the output any longer, but instead
it has been replaced with "bigr configs.sh gpfs mmls ssh symphony" which
happened to be the local files in my working dir.
It all comes from this line in configs.sh, line 241-247
{code}
if [ "$propertiesStarted" -gt "0" ]; then
if [ -z $FILENAME ]; then
echo $line
else
echo $line >> $FILENAME
fi
fi
{code}
where the echo do not quote the $line to output
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)