[ 
https://issues.apache.org/jira/browse/AMBARI-8170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14199232#comment-14199232
 ] 

John Speidel commented on AMBARI-8170:
--------------------------------------

Thanks for pointing this out Greg.
I agree that this is incorrect and needs to be addressed.

> stack service configurations sometimes returns multiple objects
> ---------------------------------------------------------------
>
>                 Key: AMBARI-8170
>                 URL: https://issues.apache.org/jira/browse/AMBARI-8170
>             Project: Ambari
>          Issue Type: Bug
>    Affects Versions: 1.7.0
>            Reporter: Greg Hill
>
> Most of the configurations return a single data structure, but some return 
> two data structures wrapped in a list.  This makes writing clients very 
> difficult.  It should follow the same pattern as other list responses, even 
> if there's a single item.  
> {noformat}
> GET 
> http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/NAGIOS/configurations/nagios_web_password
> {
>   "href" : 
> "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/NAGIOS/configurations/nagios_web_password";,
>   "StackConfigurations" : {
>     "final" : "false",
>     "property_description" : "Nagios Admin Password.",
>     "property_name" : "nagios_web_password",
>     "property_type" : [
>       "PASSWORD"
>     ],
>     "property_value" : "",
>     "service_name" : "NAGIOS",
>     "stack_name" : "HDP",
>     "stack_version" : "2.1",
>     "type" : "nagios-env.xml"
>   }
> }
> {noformat}
> VS
> {noformat}
> GET 
> http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HBASE/configurations/content
>  
> [
>   {
>     "href" : 
> "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HBASE/configurations/content";,
>     "StackConfigurations" : {
>       "final" : "false",
>       "property_description" : "Custom log4j.properties",
>       "property_name" : "content",
>       "property_type" : [ ],
>       "property_value" : "\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, software\n# distributed under the 
> License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR 
> CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the 
> specific language governing permissions and\n# limitations under the 
> License.\n\n\n# Define some default values that can be overridden by system 
> properties\nhbase.root.logger=INFO,console\nhbase.security.logger=INFO,console\nhbase.log.dir=.\nhbase.log.file=hbase.log\n\n#
>  Define the root logger to the system property 
> \"hbase.root.logger\".\nlog4j.rootLogger=${hbase.root.logger}\n\n# Logging 
> Threshold\nlog4j.threshold=ALL\n\n#\n# Daily Rolling File 
> Appender\n#\nlog4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}\n\n#
>  Rollver at midnight\nlog4j.appender.DRFA.DatePattern=.yyyy-MM-dd\n\n# 30-day 
> backup\n#log4j.appender.DRFA.MaxBackupIndex=30\nlog4j.appender.DRFA.layout=org.apache.log4j.PatternLayout\n\n#
>  Pattern format: Date LogLevel LoggerName 
> LogMessage\nlog4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p 
> [%t] %c{2}: %m%n\n\n# Rolling File Appender 
> properties\nhbase.log.maxfilesize=256MB\nhbase.log.maxbackupindex=20\n\n# 
> Rolling File 
> Appender\nlog4j.appender.RFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFA.File=${hbase.log.dir}/${hbase.log.file}\n\nlog4j.appender.RFA.MaxFileSize=${hbase.log.maxfilesize}\nlog4j.appender.RFA.MaxBackupIndex=${hbase.log.maxbackupindex}\n\nlog4j.appender.RFA.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFA.layout.ConversionPattern=%d{ISO8601}
>  %-5p [%t] %c{2}: %m%n\n\n#\n# Security audit 
> appender\n#\nhbase.security.log.file=SecurityAuth.audit\nhbase.security.log.maxfilesize=256MB\nhbase.security.log.maxbackupindex=20\nlog4j.appender.RFAS=org.apache.log4j.RollingFileAppender\nlog4j.appender.RFAS.File=${hbase.log.dir}/${hbase.security.log.file}\nlog4j.appender.RFAS.MaxFileSize=${hbase.security.log.maxfilesize}\nlog4j.appender.RFAS.MaxBackupIndex=${hbase.security.log.maxbackupindex}\nlog4j.appender.RFAS.layout=org.apache.log4j.PatternLayout\nlog4j.appender.RFAS.layout.ConversionPattern=%d{ISO8601}
>  %p %c: 
> %m%n\nlog4j.category.SecurityLogger=${hbase.security.logger}\nlog4j.additivity.SecurityLogger=false\n#log4j.logger.SecurityLogger.org.apache.hadoop.hbase.security.access.AccessController=TRACE\n\n#\n#
>  Null 
> Appender\n#\nlog4j.appender.NullAppender=org.apache.log4j.varia.NullAppender\n\n#\n#
>  console\n# Add \"console\" to rootlogger above if you want to use 
> this\n#\nlog4j.appender.console=org.apache.log4j.ConsoleAppender\nlog4j.appender.console.target=System.err\nlog4j.appender.console.layout=org.apache.log4j.PatternLayout\nlog4j.appender.console.layout.ConversionPattern=%d{ISO8601}
>  %-5p [%t] %c{2}: %m%n\n\n# Custom Logging 
> levels\n\nlog4j.logger.org.apache.zookeeper=INFO\n#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG\nlog4j.logger.org.apache.hadoop.hbase=DEBUG\n#
>  Make these two classes INFO-level. Make them DEBUG to see more zk 
> debug.\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO\nlog4j.logger.org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher=INFO\n#log4j.logger.org.apache.hadoop.dfs=DEBUG\n#
>  Set this class to log INFO only otherwise its OTT\n# Enable this to get 
> detailed connection error/retry logging.\n# 
> log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=TRACE\n\n\n#
>  Uncomment this line to enable tracing on _every_ RPC call (this can be a lot 
> of output)\n#log4j.logger.org.apache.hadoop.ipc.HBaseServer.trace=DEBUG\n\n# 
> Uncomment the below if you want to remove logging of client region 
> caching'\n# and scan of .META. messages\n# 
> log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=INFO\n#
>  log4j.logger.org.apache.hadoop.hbase.client.MetaScanner=INFO\n\n    ",
>       "service_name" : "HBASE",
>       "stack_name" : "HDP",
>       "stack_version" : "2.1",
>       "type" : "hbase-log4j.xml"
>     }
>   },
>   {
>     "href" : 
> "http://c6401.ambari.apache.org:8080/api/v1/stacks/HDP/versions/2.1/services/HBASE/configurations/content";,
>     "StackConfigurations" : {
>       "final" : "false",
>       "property_description" : "This is the jinja template for hbase-env.sh 
> file",
>       "property_name" : "content",
>       "property_type" : [ ],
>       "property_value" : "\n# Set environment variables here.\n\n# The java 
> implementation to use. Java 1.6 required.\nexport 
> JAVA_HOME={{java64_home}}\n\n# HBase Configuration directory\nexport 
> HBASE_CONF_DIR=${HBASE_CONF_DIR:-{{hbase_conf_dir}}}\n\n# Extra Java 
> CLASSPATH elements. Optional.\nexport HBASE_CLASSPATH=${HBASE_CLASSPATH}\n\n# 
> The maximum amount of heap to use, in MB. Default is 1000.\n# export 
> HBASE_HEAPSIZE=1000\n\n# Extra Java runtime options.\n# Below are what we set 
> by default. May only work with SUN JVM.\n# For more on why as well as other 
> possible settings,\n# see 
> http://wiki.apache.org/hadoop/PerformanceTuning\nexport 
> SERVER_GC_OPTS=\"-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps 
> -Xloggc:{{log_dir}}/gc.log-`date +'%Y%m%d%H%M'`\"\n# Uncomment below to 
> enable java garbage collection logging.\n# export HBASE_OPTS=\"$HBASE_OPTS 
> -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps 
> -Xloggc:$HBASE_HOME/logs/gc-hbase.log\"\n\n# Uncomment and adjust to enable 
> JMX exporting\n# See jmxremote.password and jmxremote.access in 
> $JRE_HOME/lib/management to configure remote password access.\n# More details 
> at: 
> http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html\n#\n#
>  export HBASE_JMX_BASE=\"-Dcom.sun.management.jmxremote.ssl=false 
> -Dcom.sun.management.jmxremote.authenticate=false\"\n# If you want to 
> configure BucketCache, specify '-XX: MaxDirectMemorySize=' with proper direct 
> memory size\n# export HBASE_THRIFT_OPTS=\"$HBASE_JMX_BASE 
> -Dcom.sun.management.jmxremote.port=10103\"\n# export 
> HBASE_ZOOKEEPER_OPTS=\"$HBASE_JMX_BASE 
> -Dcom.sun.management.jmxremote.port=10104\"\n\n# File naming hosts on which 
> HRegionServers will run. $HBASE_HOME/conf/regionservers by default.\nexport 
> HBASE_REGIONSERVERS=${HBASE_CONF_DIR}/regionservers\n\n# Extra ssh options. 
> Empty by default.\n# export HBASE_SSH_OPTS=\"-o ConnectTimeout=1 -o 
> SendEnv=HBASE_CONF_DIR\"\n\n# Where log files are stored. $HBASE_HOME/logs by 
> default.\nexport HBASE_LOG_DIR={{log_dir}}\n\n# A string representing this 
> instance of hbase. $USER by default.\n# export HBASE_IDENT_STRING=$USER\n\n# 
> The scheduling priority for daemon processes. See 'man nice'.\n# export 
> HBASE_NICENESS=10\n\n# The directory where pid files are stored. /tmp by 
> default.\nexport HBASE_PID_DIR={{pid_dir}}\n\n# Seconds to sleep between 
> slave commands. Unset by default. This\n# can be useful in large clusters, 
> where, e.g., slave rsyncs can\n# otherwise arrive faster than the master can 
> service them.\n# export HBASE_SLAVE_SLEEP=0.1\n\n# Tell HBase whether it 
> should manage it's own instance of Zookeeper or not.\nexport 
> HBASE_MANAGES_ZK=false\n\n{% if security_enabled %}\nexport 
> HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC 
> -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log 
> -Djava.security.auth.login.config={{client_jaas_config_file}}\"\nexport 
> HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}} 
> -Djava.security.auth.login.config={{master_jaas_config_file}}\"\nexport 
> HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS 
> -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  
> -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}} 
> -Djava.security.auth.login.config={{regionserver_jaas_config_file}}\"\n{% 
> else %}\nexport HBASE_OPTS=\"$HBASE_OPTS -XX:+UseConcMarkSweepGC 
> -XX:ErrorFile={{log_dir}}/hs_err_pid%p.log\"\nexport 
> HBASE_MASTER_OPTS=\"$HBASE_MASTER_OPTS -Xmx{{master_heapsize}}\"\nexport 
> HBASE_REGIONSERVER_OPTS=\"$HBASE_REGIONSERVER_OPTS 
> -Xmn{{regionserver_xmn_size}} -XX:CMSInitiatingOccupancyFraction=70  
> -Xms{{regionserver_heapsize}} -Xmx{{regionserver_heapsize}}\"\n{% endif %}\n  
>   ",
>       "service_name" : "HBASE",
>       "stack_name" : "HDP",
>       "stack_version" : "2.1",
>       "type" : "hbase-env.xml"
>     }
>   }
> ]
> {noformat}
> It should probably be made to be the same as other responses, like so:
> {noformat}
> {
>   "items": /* the original data structure above */
> }
> {noformat}
> In either case, those that return a single element should return a 
> single-element list for consistency.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to