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)

Reply via email to