http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/data/PHD/site_properties.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/data/PHD/site_properties.js b/ambari-web/app/data/PHD/site_properties.js index 9a2aa4b..733e8f4 100644 --- a/ambari-web/app/data/PHD/site_properties.js +++ b/ambari-web/app/data/PHD/site_properties.js @@ -79,7 +79,7 @@ module.exports = "name": "dfs.datanode.data.dir.mount.file", "displayName": "File that stores mount point for each data dir", "description": "File path that contains the last known mount point for each data dir. This file is used to avoid creating a DFS data dir on the root drive (and filling it up) if a path was previously mounted on a drive.", - "defaultValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist", + "recommendedValue": "/etc/hadoop/conf/dfs_data_dir_mount.hist", "displayType": "directory", "isVisible": true, "category": "DATANODE", @@ -530,7 +530,7 @@ module.exports = "name": "hive.server2.thrift.port", "displayName": "Hive Server Port", "description": "TCP port number to listen on, default 10000.", - "defaultValue": "10000", + "recommendedValue": "10000", "displayType": "int", "isReconfigurable": true, "isOverridable": false, @@ -542,7 +542,7 @@ module.exports = "id": "site property", "name": "hive.server2.support.dynamic.service.discovery", "displayName": "hive.server2.support.dynamic.service.discovery", - "defaultValue": true, + "recommendedValue": true, "displayType": "checkbox", "category": "Advanced hive-site", "serviceName": "HIVE" @@ -551,7 +551,7 @@ module.exports = "id": "site property", "name": "hive.zookeeper.quorum", "displayName": "hive.zookeeper.quorum", - "defaultValue": "localhost:2181", + "recommendedValue": "localhost:2181", "displayType": "multiLine", "isVisible": true, "serviceName": "HIVE", @@ -1622,7 +1622,7 @@ module.exports = "name": "content", "displayName": "content", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "pig properties", "displayType": "content", "isRequired": false, @@ -1649,7 +1649,7 @@ module.exports = "name": "namenode_host", "displayName": "NameNode hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The hosts that has been assigned to run NameNode", "displayType": "masterHosts", "isOverridable": false, @@ -1665,7 +1665,7 @@ module.exports = "name": "namenode_heapsize", "displayName": "NameNode Java heap size", "description": "Initial and maximum Java heap size for NameNode (Java options -Xms and -Xmx). This also applies to the Secondary NameNode.", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isOverridable": false, @@ -1680,7 +1680,7 @@ module.exports = "name": "namenode_opt_newsize", "displayName": "NameNode new generation size", "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize). This also applies to the Secondary NameNode.", - "defaultValue": "200", + "recommendedValue": "200", "displayType": "int", "unit": "MB", "isOverridable": false, @@ -1695,7 +1695,7 @@ module.exports = "name": "namenode_opt_maxnewsize", "displayName": "NameNode maximum new generation size", "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).", - "defaultValue": "200", + "recommendedValue": "200", "displayType": "int", "unit": "MB", "isOverridable": false, @@ -1710,7 +1710,7 @@ module.exports = "name": "snamenode_host", "displayName": "SNameNode host", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The host that has been assigned to run SecondaryNameNode", "displayType": "masterHost", "isOverridable": false, @@ -1726,7 +1726,7 @@ module.exports = "name": "datanode_hosts", //not in the schema. For UI purpose "displayName": "DataNode hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The hosts that have been assigned to run DataNode", "displayType": "slaveHosts", "isRequired": false, @@ -1743,7 +1743,7 @@ module.exports = "name": "dtnode_heapsize", "displayName": "DataNode maximum Java heap size", "description": "Maximum Java heap size for DataNode (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isVisible": true, @@ -1757,7 +1757,7 @@ module.exports = "name": "hadoop_heapsize", "displayName": "Hadoop maximum Java heap size", "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isVisible": true, @@ -1771,7 +1771,7 @@ module.exports = "name": "hdfs_log_dir_prefix", "displayName": "Hadoop Log Dir Prefix", "description": "The parent directory for Hadoop log files. The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.", - "defaultValue": "/var/log/hadoop", + "recommendedValue": "/var/log/hadoop", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -1785,7 +1785,7 @@ module.exports = "name": "hadoop_pid_dir_prefix", "displayName": "Hadoop PID Dir Prefix", "description": "The parent directory in which the PID files for Hadoop processes will be created. The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.", - "defaultValue": "/var/run/hadoop", + "recommendedValue": "/var/run/hadoop", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -1799,7 +1799,7 @@ module.exports = "name": "hadoop_root_logger", "displayName": "Hadoop Root Logger", "description": "Hadoop logging options", - "defaultValue": "INFO,RFA", + "recommendedValue": "INFO,RFA", "displayType": "string", "isOverridable": false, "isVisible": true, @@ -1814,7 +1814,7 @@ module.exports = "name": "hs_host", "displayName": "History Server", "description": "History Server", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "masterHost", "isRequiredByAgent": false, @@ -1829,7 +1829,7 @@ module.exports = "name": "jobhistory_heapsize", "displayName": "History Server heap size", "description": "History Server heap size", - "defaultValue": "900", + "recommendedValue": "900", "unit": "MB", "isOverridable": true, "displayType": "int", @@ -1844,7 +1844,7 @@ module.exports = "name": "mapred_log_dir_prefix", "displayName": "Mapreduce Log Dir Prefix", "description": "", - "defaultValue": "/var/log/hadoop-mapreduce", + "recommendedValue": "/var/log/hadoop-mapreduce", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -1858,7 +1858,7 @@ module.exports = "name": "mapred_pid_dir_prefix", "displayName": "Mapreduce PID Dir Prefix", "description": "", - "defaultValue": "/var/run/hadoop-mapreduce", + "recommendedValue": "/var/run/hadoop-mapreduce", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -1873,7 +1873,7 @@ module.exports = "name": "yarn_heapsize", "displayName": "YARN Java heap size", "description": "Max heapsize for all YARN components", - "defaultValue": "1024", + "recommendedValue": "1024", "isOverridable": true, "displayType": "int", "unit": "MB", @@ -1888,7 +1888,7 @@ module.exports = "name": "rm_host", "displayName": "ResourceManager", "description": "ResourceManager", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "masterHost", "isRequiredByAgent": false, @@ -1903,7 +1903,7 @@ module.exports = "name": "resourcemanager_heapsize", "displayName": "ResourceManager Java heap size", "description": "Max heapsize for ResourceManager", - "defaultValue": "1024", + "recommendedValue": "1024", "isOverridable": false, "displayType": "int", "unit": "MB", @@ -1918,7 +1918,7 @@ module.exports = "name": "nm_hosts", "displayName": "NodeManager", "description": "List of NodeManager Hosts.", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "slaveHosts", "isRequiredByAgent": false, @@ -1933,7 +1933,7 @@ module.exports = "name": "nodemanager_heapsize", "displayName": "NodeManager Java heap size", "description": "Max heapsize for NodeManager", - "defaultValue": "1024", + "recommendedValue": "1024", "isOverridable": true, "displayType": "int", "unit": "MB", @@ -1948,7 +1948,7 @@ module.exports = "name": "yarn_log_dir_prefix", "displayName": "YARN Log Dir Prefix", "description": "", - "defaultValue": "/var/log/hadoop-yarn", + "recommendedValue": "/var/log/hadoop-yarn", "displayType": "directory", "isOverridable": false, "isReconfigurable": false, @@ -1962,7 +1962,7 @@ module.exports = "name": "yarn_pid_dir_prefix", "displayName": "YARN PID Dir Prefix", "description": "", - "defaultValue": "/var/run/hadoop-yarn", + "recommendedValue": "/var/run/hadoop-yarn", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -1987,7 +1987,7 @@ module.exports = "name": "ats_host", "displayName": "App Timeline Server", "description": "Application Timeline Server Host", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "masterHost", "isRequiredByAgent": false, @@ -2002,7 +2002,7 @@ module.exports = "name": "apptimelineserver_heapsize", "displayName": "AppTimelineServer Java heap size", "description": "AppTimelineServer Java heap size", - "defaultValue": "1024", + "recommendedValue": "1024", "isOverridable": false, "displayType": "int", "unit": "MB", @@ -2018,7 +2018,7 @@ module.exports = "name": "hbasemaster_host", "displayName": "HBase Master hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The host that has been assigned to run HBase Master", "displayType": "masterHosts", "isOverridable": false, @@ -2034,7 +2034,7 @@ module.exports = "name": "hbase_master_heapsize", "displayName": "HBase Master Maximum Java heap size", "description": "Maximum Java heap size for HBase master (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isOverridable": true, @@ -2049,7 +2049,7 @@ module.exports = "name": "regionserver_hosts", "displayName": "RegionServer hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The hosts that have been assigned to run RegionServer", "displayType": "slaveHosts", "isOverridable": false, @@ -2066,7 +2066,7 @@ module.exports = "name": "hbase_regionserver_heapsize", "displayName": "RegionServers maximum Java heap size", "description": "Maximum Java heap size for RegionServers (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isVisible": true, @@ -2101,7 +2101,7 @@ module.exports = "name": "hbase_log_dir", "displayName": "HBase Log Dir", "description": "Directory for HBase logs", - "defaultValue": "/var/log/hbase", + "recommendedValue": "/var/log/hbase", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2115,7 +2115,7 @@ module.exports = "name": "hbase_pid_dir", "displayName": "HBase PID Dir", "description": "Directory in which the pid files for HBase processes will be created", - "defaultValue": "/var/run/hbase", + "recommendedValue": "/var/run/hbase", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2149,7 +2149,7 @@ module.exports = "name": "fs_glusterfs_default_name", "displayName": "GlusterFS default fs name 1.x Hadoop", "description": "GlusterFS default filesystem name (glusterfs://{MasterFQDN}:9000)", - "defaultValue": "glusterfs:///localhost:8020", + "recommendedValue": "glusterfs:///localhost:8020", "displayType": "string", "isVisible": true, "serviceName": "GLUSTERFS", @@ -2161,7 +2161,7 @@ module.exports = "name": "glusterfs_defaultFS_name", "displayName": "GlusterFS default fs name 2.x Hadoop", "description": "GlusterFS default filesystem name (glusterfs:///)", - "defaultValue": "glusterfs:///localhost:8020", + "recommendedValue": "glusterfs:///localhost:8020", "displayType": "string", "isVisible": true, "serviceName": "GLUSTERFS", @@ -2173,7 +2173,7 @@ module.exports = "name": "hadoop_heapsize", "displayName": "Hadoop maximum Java heap size", "description": "Maximum Java heap size for daemons such as Balancer (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isVisible": true, @@ -2187,7 +2187,7 @@ module.exports = "name": "hdfs_log_dir_prefix", "displayName": "Hadoop Log Dir Prefix", "description": "The parent directory for Hadoop log files. The HDFS log directory will be ${hadoop_log_dir_prefix} / ${hdfs_user} and the MapReduce log directory will be ${hadoop_log_dir_prefix} / ${mapred_user}.", - "defaultValue": "/var/log/hadoop", + "recommendedValue": "/var/log/hadoop", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2201,7 +2201,7 @@ module.exports = "name": "hadoop_pid_dir_prefix", "displayName": "Hadoop PID Dir Prefix", "description": "The parent directory in which the PID files for Hadoop processes will be created. The HDFS PID directory will be ${hadoop_pid_dir_prefix} / ${hdfs_user} and the MapReduce PID directory will be ${hadoop_pid_dir_prefix} / ${mapred_user}.", - "defaultValue": "/var/run/hadoop", + "recommendedValue": "/var/run/hadoop", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2215,7 +2215,7 @@ module.exports = "name": "namenode_heapsize", "displayName": "Name Node Heap Size", "description": "Name Node Heap Size, default jvm memory setting", - "defaultValue": "1024", + "recommendedValue": "1024", "isReconfigurable": false, "displayType": "int", "isOverridable": false, @@ -2229,7 +2229,7 @@ module.exports = "name": "namenode_opt_newsize", "displayName": "NameNode new generation size", "description": "Default size of Java new generation for NameNode (Java option -XX:NewSize). This also applies to the Secondary NameNode.", - "defaultValue": "200", + "recommendedValue": "200", "displayType": "int", "unit": "MB", "isOverridable": false, @@ -2243,7 +2243,7 @@ module.exports = "name": "namenode_opt_maxnewsize", "displayName": "NameNode maximum new generation size", "description": "Maximum size of Java new generation for NameNode (Java option -XX:MaxnewSize).", - "defaultValue": "200", + "recommendedValue": "200", "displayType": "int", "unit": "MB", "isOverridable": false, @@ -2257,7 +2257,7 @@ module.exports = "name": "dtnode_heapsize", "displayName": "DataNode maximum Java heap size", "description": "Maximum Java heap size for DataNode (Java option -Xmx)", - "defaultValue": "1024", + "recommendedValue": "1024", "displayType": "int", "unit": "MB", "isVisible": false, @@ -2270,7 +2270,7 @@ module.exports = "name": "glusterfs_user", "displayName": "glusterfs user", "description": "glusterfs user", - "defaultValue": "root", + "recommendedValue": "root", "displayType": "string", "isVisible": false, "serviceName": "GLUSTERFS", @@ -2282,7 +2282,7 @@ module.exports = "name": "namenode_host", "displayName": "NameNode Host", "description": "NameNode Host.", - "defaultValue": "", + "recommendedValue": "", "displayType": "string", "isVisible": false, "serviceName": "GLUSTERFS", @@ -2294,7 +2294,7 @@ module.exports = "name": "snamenode_host", "displayName": "Secondary NameNode Host", "description": "Secondary NameNode Host.", - "defaultValue": "", + "recommendedValue": "", "displayType": "string", "isVisible": false, "serviceName": "GLUSTERFS", @@ -2307,7 +2307,7 @@ module.exports = "name": "hivemetastore_host", "displayName": "Hive Metastore hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The hosts that have been assigned to run Hive Metastore", "displayType": "masterHosts", "isOverridable": false, @@ -2321,7 +2321,7 @@ module.exports = { "name": "hive_master_hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "isRequiredByAgent": false, "isVisible": false, @@ -2334,7 +2334,7 @@ module.exports = "name": "hive_existing_mysql_database", "displayName": "Database Type", "value": "", - "defaultValue": "MySQL", + "recommendedValue": "MySQL", "description": "Using an existing MySQL database for Hive Metastore", "displayType": "masterHost", "isOverridable": false, @@ -2352,7 +2352,7 @@ module.exports = "name": "hive_existing_postgresql_database", "displayName": "Database Type", "value": "", - "defaultValue": "PostgreSQL", + "recommendedValue": "PostgreSQL", "description": "Using an existing PostgreSQL database for Hive Metastore", "displayType": "masterHost", "isOverridable": false, @@ -2370,7 +2370,7 @@ module.exports = "name": "hive_existing_oracle_database", "displayName": "Database Type", "value": "", - "defaultValue": "Oracle", + "recommendedValue": "Oracle", "description": "Using an existing Oracle database for Hive Metastore", "displayType": "masterHost", "isVisible": false, @@ -2388,7 +2388,7 @@ module.exports = "name": "hive_ambari_database", "displayName": "Database Type", "value": "", - "defaultValue": "PostgreSQL", + "recommendedValue": "PostgreSQL", "description": "PostgreSQL will be installed by Ambari", "displayType": "masterHost", "isOverridable": false, @@ -2403,7 +2403,7 @@ module.exports = "name": "hive_database", "displayName": "Hive Database", "value": "", - "defaultValue": "New PostgreSQL Database", + "recommendedValue": "New PostgreSQL Database", "options": [ { displayName: 'New PostgreSQL Database', @@ -2439,7 +2439,8 @@ module.exports = "name": "hive_hostname", "displayName": "Database Host", "description": "Specify the host on which the database is hosted", - "defaultValue": "", + "savedValue": "", + "recommendedValue": "", "isReconfigurable": true, "displayType": "host", "isOverridable": false, @@ -2455,7 +2456,7 @@ module.exports = "name": "hive_existing_mysql_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "displayType": "host", "isOverridable": false, "isVisible": false, @@ -2470,7 +2471,7 @@ module.exports = "name": "hive_existing_postgresql_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "displayType": "host", "isOverridable": false, "isVisible": false, @@ -2485,7 +2486,7 @@ module.exports = "name": "hive_existing_oracle_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "displayType": "host", "isOverridable": false, "isVisible": false, @@ -2499,7 +2500,7 @@ module.exports = "id": "puppet var", "name": "hive_ambari_host", "value": "", - "defaultValue": "", + "recommendedValue": "", "displayName": "Database Host", "description": "Host on which the database will be created by Ambari", "isReconfigurable": false, @@ -2517,7 +2518,7 @@ module.exports = "name": "hive_metastore_port", "displayName": "Hive metastore port", "description": "", - "defaultValue": "9083", + "recommendedValue": "9083", "isReconfigurable": false, "displayType": "int", "isOverridable": false, @@ -2531,7 +2532,7 @@ module.exports = "name": "hive_lib", "displayName": "Hive library", "description": "", - "defaultValue": "/usr/lib/hive/lib/", + "recommendedValue": "/usr/lib/hive/lib/", "isReconfigurable": false, "displayType": "directory", "isVisible": false, @@ -2545,7 +2546,7 @@ module.exports = "name": "hive_dbroot", "displayName": "Hive db directory", "description": "", - "defaultValue": "/usr/lib/hive/lib", + "recommendedValue": "/usr/lib/hive/lib", "isReconfigurable": false, "displayType": "directory", "isVisible": false, @@ -2559,7 +2560,7 @@ module.exports = "name": "hive_log_dir", "displayName": "Hive Log Dir", "description": "Directory for Hive log files", - "defaultValue": "/var/log/hive", + "recommendedValue": "/var/log/hive", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2573,7 +2574,7 @@ module.exports = "name": "hive_pid_dir", "displayName": "Hive PID Dir", "description": "Directory in which the PID files for Hive processes will be created", - "defaultValue": "/var/run/hive", + "recommendedValue": "/var/run/hive", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2588,7 +2589,7 @@ module.exports = "name": "webhcatserver_host", "displayName": "WebHCat Server host", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The host that has been assigned to run WebHCat Server", "displayType": "masterHost", "isOverridable": false, @@ -2603,7 +2604,7 @@ module.exports = "name": "hcat_log_dir", "displayName": "WebHCat Log Dir", "description": "Directory for WebHCat log files", - "defaultValue": "/var/log/webhcat", + "recommendedValue": "/var/log/webhcat", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2617,7 +2618,7 @@ module.exports = "name": "hcat_pid_dir", "displayName": "WebHCat PID Dir", "description": "Directory in which the PID files for WebHCat processes will be created", - "defaultValue": "/var/run/webhcat", + "recommendedValue": "/var/run/webhcat", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2632,7 +2633,7 @@ module.exports = "name": "oozieserver_host", "displayName": "Oozie Server host", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The hosts that have been assigned to run Oozie Server", "displayType": "masterHosts", "isOverridable": false, @@ -2649,7 +2650,7 @@ module.exports = "name": "oozie_existing_oracle_database", "displayName": "Database Type", "value": "", - "defaultValue": "Oracle", + "recommendedValue": "Oracle", "description": "Using an existing Oracle database for Oozie Metastore", "displayType": "masterHost", "isVisible": false, @@ -2668,7 +2669,7 @@ module.exports = "name": "oozie_existing_postgresql_database", "displayName": "Database Type", "value": "", - "defaultValue": "PostgreSQL", + "recommendedValue": "PostgreSQL", "description": "Using an existing PostgreSQL database for Oozie Metastore", "displayType": "masterHost", "isOverridable": false, @@ -2686,7 +2687,7 @@ module.exports = "name": "oozie_ambari_database", "displayName": "Database Type", "value": "", - "defaultValue": "MySQL", + "recommendedValue": "MySQL", "description": "MySQL will be installed by Ambari", "displayType": "masterHost", "isVisible": false, @@ -2702,7 +2703,7 @@ module.exports = "name": "oozie_derby_database", "displayName": "Database Type", "value": "", - "defaultValue": "Derby", + "recommendedValue": "Derby", "description": "Using current Derby database for Oozie Metastore", "displayType": "masterHost", "isVisible": false, @@ -2719,7 +2720,7 @@ module.exports = "name": "oozie_existing_mysql_database", "displayName": "Database Type", "value": "", - "defaultValue": "MySQL", + "recommendedValue": "MySQL", "description": "Using an existing MySQL database for Oozie Metastore", "displayType": "masterHost", "isVisible": false, @@ -2736,7 +2737,7 @@ module.exports = "name": "oozie_database", "displayName": "Oozie Database", "value": "", - "defaultValue": "New Derby Database", + "recommendedValue": "New Derby Database", "options": [ { displayName: 'New Derby Database', @@ -2779,7 +2780,7 @@ module.exports = "name": "oozie_data_dir", "displayName": "Oozie Data Dir", "description": "Data directory in which the Oozie DB exists", - "defaultValue": "", + "recommendedValue": "", "defaultDirectory": "/hadoop/oozie/data", "isReconfigurable": true, "displayType": "directory", @@ -2794,7 +2795,8 @@ module.exports = { "id": "puppet var", "name": "oozie_hostname", - "defaultValue": "", + "savedValue": "", + "recommendedValue": "", "displayName": "Database Host", "description": "The host where the Oozie database is located", "isReconfigurable": true, @@ -2811,7 +2813,7 @@ module.exports = "name": "oozie_existing_mysql_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "host", "isVisible": false, @@ -2826,7 +2828,7 @@ module.exports = "name": "oozie_existing_postgresql_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "host", "isVisible": false, @@ -2841,7 +2843,7 @@ module.exports = "name": "oozie_existing_oracle_host", "displayName": "Database Host", "description": "Specify the host on which the existing database is hosted", - "defaultValue": "", + "recommendedValue": "", "isOverridable": false, "displayType": "host", "isVisible": false, @@ -2855,7 +2857,7 @@ module.exports = "id": "puppet var", "name": "oozie_ambari_host", "value": "", - "defaultValue": "", + "recommendedValue": "", "displayName": "Database Host", "description": "Host on which the database will be created by Ambari", "isReconfigurable": false, @@ -2872,7 +2874,7 @@ module.exports = "name": "oozie_log_dir", "displayName": "Oozie Log Dir", "description": "Directory for oozie logs", - "defaultValue": "/var/log/oozie", + "recommendedValue": "/var/log/oozie", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2886,7 +2888,7 @@ module.exports = "name": "oozie_pid_dir", "displayName": "Oozie PID Dir", "description": "Directory in which the pid files for oozie processes will be created", - "defaultValue": "/var/run/oozie", + "recommendedValue": "/var/run/oozie", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -2913,7 +2915,7 @@ module.exports = "name": "zookeeperserver_hosts", "displayName": "ZooKeeper Server hosts", "value": "", - "defaultValue": "", + "recommendedValue": "", "description": "The host that has been assigned to run ZooKeeper Server", "displayType": "masterHosts", "isVisible": true, @@ -2930,7 +2932,7 @@ module.exports = "name": "zk_data_dir", "displayName": "ZooKeeper directory", "description": "Data directory for ZooKeeper", - "defaultValue": "", + "recommendedValue": "", "defaultDirectory": "/hadoop/zookeeper", "isReconfigurable": true, "displayType": "directory", @@ -2945,7 +2947,7 @@ module.exports = "name": "tickTime", "displayName": "Length of single Tick", "description": "The length of a single tick in milliseconds, which is the basic time unit used by ZooKeeper", - "defaultValue": "2000", + "recommendedValue": "2000", "displayType": "int", "unit": "ms", "isOverridable": false, @@ -2960,7 +2962,7 @@ module.exports = "name": "initLimit", "displayName": "Ticks to allow for sync at Init", "description": "Amount of time, in ticks to allow followers to connect and sync to a leader", - "defaultValue": "10", + "recommendedValue": "10", "displayType": "int", "isOverridable": false, "isVisible": true, @@ -2974,7 +2976,7 @@ module.exports = "name": "syncLimit", "displayName": "Ticks to allow for sync at Runtime", "description": "Amount of time, in ticks to allow followers to connect", - "defaultValue": "5", + "recommendedValue": "5", "displayType": "int", "isOverridable": false, "isVisible": true, @@ -2988,7 +2990,7 @@ module.exports = "name": "clientPort", "displayName": "Port for running ZK Server", "description": "Port for running ZooKeeper server", - "defaultValue": "2181", + "recommendedValue": "2181", "displayType": "int", "isOverridable": false, "isVisible": true, @@ -3002,7 +3004,7 @@ module.exports = "name": "zk_log_dir", "displayName": "ZooKeeper Log Dir", "description": "Directory for ZooKeeper log files", - "defaultValue": "/var/log/zookeeper", + "recommendedValue": "/var/log/zookeeper", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -3017,7 +3019,7 @@ module.exports = "name": "zk_pid_dir", "displayName": "ZooKeeper PID Dir", "description": "Directory in which the pid files for zookeeper processes will be created", - "defaultValue": "/var/run/zookeeper", + "recommendedValue": "/var/run/zookeeper", "isReconfigurable": false, "displayType": "directory", "isOverridable": false, @@ -3033,7 +3035,7 @@ module.exports = "name": "ganglia_conf_dir", "displayName": "Ganglia conf directory", "description": "", - "defaultValue": "/etc/ganglia/hdp", + "recommendedValue": "/etc/ganglia/hdp", "isReconfigurable": false, "displayType": "directory", "isVisible": false, @@ -3048,7 +3050,7 @@ module.exports = "name": "falconserver_host", "displayName": "Falcon Server", "description": "The host that has been assigned to run Falcon Server", - "defaultValue": "falcon", + "recommendedValue": "falcon", "displayType": "masterHost", "isVisible": true, "isRequiredByAgent": false, @@ -3061,7 +3063,7 @@ module.exports = "name": "falcon_port", "displayName": "Falcon server port", "description": "Port the Falcon Server listens on", - "defaultValue": "15000", + "recommendedValue": "15000", "isReconfigurable": true, "displayType": "int", "isVisible": true, @@ -3075,7 +3077,7 @@ module.exports = "name": "falcon_local_dir", "displayName": "Falcon data directory", "description": "Directory where Falcon data, such as activemq data, is stored", - "defaultValue": "/hadoop/falcon", + "recommendedValue": "/hadoop/falcon", "isReconfigurable": true, "displayType": "directory", "isVisible": true, @@ -3089,7 +3091,7 @@ module.exports = "name": "falcon_store_uri", "displayName": "Falcon store URI", "description": "Directory where entity definitions are stored", - "defaultValue": "file:///hadoop/falcon/store", + "recommendedValue": "file:///hadoop/falcon/store", "isReconfigurable": true, "displayType": "string", "isVisible": true, @@ -3103,7 +3105,7 @@ module.exports = "name": "falcon_log_dir", "displayName": "Falcon Log Dir", "description": "Directory for Falcon logs", - "defaultValue": "/var/log/falcon", + "recommendedValue": "/var/log/falcon", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -3118,7 +3120,7 @@ module.exports = "name": "falcon_pid_dir", "displayName": "Falcon PID Dir", "description": "Directory in which the pid files for Falcon processes will be created", - "defaultValue": "/var/run/falcon", + "recommendedValue": "/var/run/falcon", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -3133,7 +3135,7 @@ module.exports = "name": "falcon.embeddedmq", "displayName": "falcon.embeddedmq", "description": "Whether embeddedmq is enabled or not.", - "defaultValue": "true", + "recommendedValue": "true", "displayType": "string", "isOverridable": false, "isVisible": true, @@ -3148,7 +3150,7 @@ module.exports = "name": "falcon.embeddedmq.data", "displayName": "falcon.embeddedmq.data", "description": "Directory in which embeddedmq data is stored.", - "defaultValue": "/hadoop/falcon/embeddedmq/data", + "recommendedValue": "/hadoop/falcon/embeddedmq/data", "displayType": "directory", "isOverridable": false, "isVisible": true, @@ -3163,7 +3165,7 @@ module.exports = "name": "falcon.emeddedmq.port", "displayName": "falcon.emeddedmq.port", "description": "Port that embeddedmq will listen on.", - "defaultValue": "61616", + "recommendedValue": "61616", "displayType": "string", "isOverridable": false, "isVisible": true, @@ -3179,7 +3181,7 @@ module.exports = "name": "storm_log_dir", "displayName": "storm_log_dir", "description": "Storm log directory", - "defaultValue": "/var/log/storm", + "recommendedValue": "/var/log/storm", "displayType": "directory", "isReconfigurable": true, "isVisible": true, @@ -3193,7 +3195,7 @@ module.exports = "name": "storm_pid_dir", "displayName": "storm_pid_dir", "description": "Storm PID directory", - "defaultValue": "/var/run/storm", + "recommendedValue": "/var/run/storm", "displayType": "directory", "isReconfigurable": true, "isVisible": true, @@ -3207,7 +3209,7 @@ module.exports = "name": "stormuiserver_host", "displayName": "Storm UI Server host", "description": "The host that has been assigned to run Storm UI Server", - "defaultValue": "", + "recommendedValue": "", "displayType": "masterHost", "isReconfigurable": false, "isVisible": true, @@ -3221,7 +3223,7 @@ module.exports = "name": "drpcserver_host", "displayName": "DRPC Server host", "description": "The host that has been assigned to run DRPC Server", - "defaultValue": "", + "recommendedValue": "", "displayType": "masterHost", "isReconfigurable": false, "isVisible": true, @@ -3235,7 +3237,7 @@ module.exports = "name": "supervisor_hosts", "displayName": "Supervisor hosts", "description": "The host that has been assigned to run Supervisor", - "defaultValue": "", + "recommendedValue": "", "displayType": "slaveHosts", "isReconfigurable": false, "isVisible": true, @@ -3250,7 +3252,7 @@ module.exports = "name": "storm_rest_api_host", "displayName": "Storm REST API host", "description": "The host that has been assigned to run Storm REST API Server", - "defaultValue": "", + "recommendedValue": "", "displayType": "masterHost", "isReconfigurable": false, "isVisible": true, @@ -3266,7 +3268,7 @@ module.exports = "name": "hbase_conf_dir", "displayName": "HBase conf dir", "description": "", - "defaultValue": "/etc/hbase", + "recommendedValue": "/etc/hbase", "isRequired": false, "displayType": "directory", "isVisible": false, @@ -3281,7 +3283,7 @@ module.exports = "name": "proxyuser_group", "displayName": "Proxy group for Hive, WebHCat, Oozie and Falcon", "description": "", - "defaultValue": "users", + "recommendedValue": "users", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3297,7 +3299,7 @@ module.exports = "name": "ganglia_runtime_dir", "displayName": "Ganglia runtime directory", "description": "", - "defaultValue": "/var/run/ganglia/hdp", + "recommendedValue": "/var/run/ganglia/hdp", "isReconfigurable": false, "displayType": "directory", "isVisible": false, @@ -3311,7 +3313,7 @@ module.exports = "name": "hdfs_user", "displayName": "HDFS User", "description": "User to run HDFS as", - "defaultValue": "hdfs", + "recommendedValue": "hdfs", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3327,7 +3329,7 @@ module.exports = "name": "mapred_user", "displayName": "MapReduce User", "description": "User to run MapReduce as", - "defaultValue": "mapred", + "recommendedValue": "mapred", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3343,7 +3345,7 @@ module.exports = "name": "yarn_user", "displayName": "YARN User", "description": "User to run YARN as", - "defaultValue": "yarn", + "recommendedValue": "yarn", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3359,7 +3361,7 @@ module.exports = "name": "hbase_user", "displayName": "HBase User", "description": "User to run HBase as", - "defaultValue": "hbase", + "recommendedValue": "hbase", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3375,7 +3377,7 @@ module.exports = "name": "hive_user", "displayName": "Hive User", "description": "User to run Hive as", - "defaultValue": "hive", + "recommendedValue": "hive", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3391,7 +3393,7 @@ module.exports = "name": "hcat_user", "displayName": "HCat User", "description": "User to run HCatalog as", - "defaultValue": "hcat", + "recommendedValue": "hcat", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3407,7 +3409,7 @@ module.exports = "name": "webhcat_user", "displayName": "WebHCat User", "description": "User to run WebHCat as", - "defaultValue": "hcat", + "recommendedValue": "hcat", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3423,7 +3425,7 @@ module.exports = "name": "oozie_user", "displayName": "Oozie User", "description": "User to run Oozie as", - "defaultValue": "oozie", + "recommendedValue": "oozie", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3439,7 +3441,7 @@ module.exports = "name": "falcon_user", "displayName": "Falcon User", "description": "User to run Falcon as", - "defaultValue": "falcon", + "recommendedValue": "falcon", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3455,7 +3457,7 @@ module.exports = "name": "storm_user", "displayName": "Storm User", "description": "User to run Storm as", - "defaultValue": "storm", + "recommendedValue": "storm", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3471,7 +3473,7 @@ module.exports = "name": "zk_user", "displayName": "ZooKeeper User", "description": "User to run ZooKeeper as", - "defaultValue": "zookeeper", + "recommendedValue": "zookeeper", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3487,7 +3489,7 @@ module.exports = "name": "flume_user", "displayName": "Flume User", "description": "User to run Flume as", - "defaultValue": "flume", + "recommendedValue": "flume", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3503,7 +3505,7 @@ module.exports = "name": "gmetad_user", "displayName": "Ganglia User", "description": "The user used to run Ganglia", - "defaultValue": "nobody", + "recommendedValue": "nobody", "isReconfigurable": false, "displayType": "user", "isOverridable": false, @@ -3519,7 +3521,7 @@ module.exports = "name": "gmond_user", "displayName": "Gmond User", "description": "The user used to run gmond for Ganglia", - "defaultValue": "nobody", + "recommendedValue": "nobody", "isReconfigurable": false, "displayType": "advanced", "isOverridable": false, @@ -3534,7 +3536,7 @@ module.exports = "name": "tez_user", "displayName": "Tez User", "description": "User to run Tez as", - "defaultValue": "tez", + "recommendedValue": "tez", "isReconfigurable": false, "displayType": "user", "isOverridable": false,
http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mappers/configs/config_versions_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/configs/config_versions_mapper.js b/ambari-web/app/mappers/configs/config_versions_mapper.js index aad5a3b..7ad1e37 100644 --- a/ambari-web/app/mappers/configs/config_versions_mapper.js +++ b/ambari-web/app/mappers/configs/config_versions_mapper.js @@ -78,8 +78,8 @@ App.configVersionsMapper = App.QuickDataMapper.create({ config_version_id: parsedItem.id, stack_config_property_id: key + '_' + type }; - property.value = property.default_value = config.properties[key]; - property.is_final = property.default_is_final = !!item.properties_attributes && item.properties_attributes.final[key] === "true"; + property.value = property.recommended_value = config.properties[key]; + property.is_final = property.recommended_is_final = !!item.properties_attributes && item.properties_attributes.final[key] === "true"; properties.push(property); requestedProperties.push(property.id); http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mappers/configs/stack_config_properties_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/configs/stack_config_properties_mapper.js b/ambari-web/app/mappers/configs/stack_config_properties_mapper.js index 3d24df8..1f269c3 100644 --- a/ambari-web/app/mappers/configs/stack_config_properties_mapper.js +++ b/ambari-web/app/mappers/configs/stack_config_properties_mapper.js @@ -26,7 +26,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({ file_name: 'StackConfigurations.type', description: 'StackConfigurations.property_description', value: 'StackConfigurations.property_value', - default_value: 'StackConfigurations.property_value', + recommended_value: 'StackConfigurations.property_value', type: 'StackConfigurations.property_type', service_name: 'StackConfigurations.service_name', stack_name: 'StackConfigurations.stack_name', @@ -34,7 +34,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({ property_depended_by: 'StackConfigurations.property_depended_by', value_attributes: 'StackConfigurations.property_value_attributes', is_final: 'default_is_final', - default_is_final: 'default_is_final', + recommended_is_final: 'default_is_final', supports_final: 'supports_final', widget: 'widget', /**** ui properties ***/ @@ -52,7 +52,7 @@ App.stackConfigPropertiesMapper = App.QuickDataMapper.create({ stackItem.configurations.forEach(function(config) { var configType = App.config.getConfigTagFromFileName(config.StackConfigurations.type); config.id = config.StackConfigurations.property_name + '_' + configType; - config.default_is_final = config.StackConfigurations.final === "true"; + config.recommended_is_final = config.StackConfigurations.final === "true"; config.supports_final = !!configTypeInfo[configType] && configTypeInfo[configType].supports.final === "true"; // Map from /dependencies to property_depended_by config.StackConfigurations.property_depended_by = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index a93ab1f..410e849 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -265,6 +265,7 @@ Em.I18n.translations = { 'common.preview': 'Preview', 'common.scope': 'Scope', 'common.clone': 'Clone', + 'common.removed': 'Removed', 'models.alert_instance.tiggered.verbose': "Occured on {0} <br> Checked on {1}", 'models.alert_definition.triggered.verbose': "Occured on {0}", http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mixins/common/configs/configs_saver.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/configs_saver.js b/ambari-web/app/mixins/common/configs/configs_saver.js index 944133b..acef483 100644 --- a/ambari-web/app/mixins/common/configs/configs_saver.js +++ b/ambari-web/app/mixins/common/configs/configs_saver.js @@ -312,13 +312,10 @@ App.ConfigsSaverMixin = Em.Mixin.create({ * @method saveSiteConfigs */ saveSiteConfigs: function (configs) { - //storedConfigs contains custom configs as well configs = this.setHiveHostName(configs); configs = this.setOozieHostName(configs); this.formatConfigValues(configs); - var mappedConfigs = App.config.excludeUnsupportedConfigs(this.get('configMapping').all(), App.Service.find().mapProperty('serviceName')); - var allUiConfigs = this.loadUiSideConfigs(mappedConfigs); - return configs.concat(allUiConfigs); + return configs; }, /** @@ -437,119 +434,6 @@ App.ConfigsSaverMixin = Em.Mixin.create({ return configs; }, - /*********************************** 2.2 ADD DYNAMIC CONFIGS ********************************/ - /** - * return configs from the UI side - * @param configMapping array with configs - * @return {Array} - * @private - * @method loadUiSideConfigs - */ - loadUiSideConfigs: function (configMapping) { - var uiConfig = []; - var configs = configMapping.filterProperty('foreignKey', null); - this.addDynamicProperties(configs); - configs.forEach(function (_config) { - var valueWithOverrides = this.getGlobConfigValueWithOverrides(_config.templateName, _config.value, _config.name); - if (valueWithOverrides !== null) { - uiConfig.pushObject({ - "id": "site property", - "name": _config.name, - "value": valueWithOverrides.value, - "filename": _config.filename, - "overrides": valueWithOverrides.overrides - }); - } - }, this); - return uiConfig; - }, - - /** - * @param configs - * @private - * @method addDynamicProperties - */ - addDynamicProperties: function (configs) { - var allConfigs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs'); - var templetonHiveProperty = allConfigs.someProperty('name', 'templeton.hive.properties'); - if (!templetonHiveProperty && this.get('content.serviceName') === 'HIVE') { - configs.pushObject({ - "name": "templeton.hive.properties", - "templateName": ["hive.metastore.uris"], - "foreignKey": null, - "value": "hive.metastore.local=false,hive.metastore.uris=<templateName[0]>,hive.metastore.sasl.enabled=yes,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse", - "filename": "webhcat-site.xml" - }); - } - }, - - /** - * return config value - * @param templateName - * @param expression - * @param name - * @return {Object} - * example: <code>{ - * value: '...', - * overrides: { - * 'value1': [h1, h2], - * 'value2': [h3] - * } - * }</code> - * @private - * @method getGlobConfigValueWithOverrides - */ - getGlobConfigValueWithOverrides: function (templateName, expression, name) { - var express = expression.match(/<(.*?)>/g); - var value = expression; - var overrideHostToValue = {}; - if (express != null) { - express.forEach(function (_express) { - var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]); - var globalObj = this.get('allConfigs').findProperty('name', templateName[index]); - if (globalObj) { - var globOverride = globalObj.overrides; - if (globOverride != null) { - for (var ov in globOverride) { - globOverride[ov].forEach(function (host) { - var replacedVal = (host in overrideHostToValue) ? overrideHostToValue[host] : expression; - overrideHostToValue[host] = App.config.replaceConfigValues(name, _express, replacedVal, ov); - }, this); - } - } - value = App.config.replaceConfigValues(name, _express, expression, globalObj.value); - } else { - value = null; - } - }, this); - } - return this.getValueWithOverrides(value, overrideHostToValue) - }, - - /** - * @param value - * @param overrideHostToValue - * @returns {{value: *, overrides: {}}} - * @private - * @method getValueWithOverrides - */ - getValueWithOverrides: function (value, overrideHostToValue) { - var valueWithOverrides = { - value: value, - overrides: {} - }; - if (!jQuery.isEmptyObject(overrideHostToValue)) { - for (var host in overrideHostToValue) { - var hostVal = overrideHostToValue[host]; - if (!(hostVal in valueWithOverrides.overrides)) { - valueWithOverrides.overrides[hostVal] = []; - } - valueWithOverrides.overrides[hostVal].push(host); - } - } - return valueWithOverrides; - }, - /*********************************** 3. GENERATING JSON TO SAVE *****************************/ /** http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/mixins/common/configs/enhanced_configs.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/enhanced_configs.js b/ambari-web/app/mixins/common/configs/enhanced_configs.js index 853a1ab..5d67ee7 100644 --- a/ambari-web/app/mixins/common/configs/enhanced_configs.js +++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js @@ -33,10 +33,29 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * @type {boolean} */ hasChangedDependencies: function() { - return App.get('isClusterSupportsEnhancedConfigs') && this.get('_dependentConfigValues.length') > 0; + return App.get('isClusterSupportsEnhancedConfigs') && this.get('isControllerSupportsEnhancedConfigs') && this.get('_dependentConfigValues.length') > 0; }.property('_dependentConfigValues.length'), /** + * defines is block with changed dependent configs should be shown + * rely on controller + * @type {boolean} + */ + isControllerSupportsEnhancedConfigs: function() { + return ['wizardStep7Controller','mainServiceInfoConfigsController'].contains(this.get('name')); + }.property('name'), + + /** + * defines if initialValue of config can be used on current controller + * if not savedValue is used instead + * @type {boolean} + */ + useInitialValue: function() { + ['wizardStep7Controller'].contains(this.get('name')); + }.property('name'), + + + /** * message fro alert box for dependent configs * @type {string} */ @@ -121,7 +140,11 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ }, onConfigGroupChangeForEnhanced: function() { - this.clearDependentConfigs(); + if (this.get('name') === 'mainServiceInfoConfigsController') { + this.clearDependentConfigs(); + } else { + this.set('groupsToSave', {}); + } this.get('dependentServiceNames').forEach(function(serviceName) { var defaultGroup = this.get('dependentConfigGroups').filterProperty('service.serviceName', serviceName).findProperty('isDefault'); this.get('groupsToSave')[serviceName] = defaultGroup.get('name'); @@ -389,7 +412,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ var serviceName = service.get('serviceName'); var stepConfig = this.get('stepConfigs').findProperty('serviceName', serviceName); if (stepConfig) { - + var initialValue; var configProperties = stepConfig ? stepConfig.get('configs').filterProperty('filename', App.config.getOriginalFileName(key)) : []; var group = this.getGroupForService(serviceName); @@ -401,14 +424,28 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ var override = (notDefaultGroup && group && cp && cp.get('overrides')) ? cp.get('overrides').findProperty('group.name', group.get('name')) : null; var value = override ? override.get('value') : cp && cp.get('value'); - var defaultValue = override ? override.get('defaultValue') : cp && cp.get('defaultValue'); + + if (this.get('useInitialValue')) { + initialValue = override ? override.get('initialValue') : cp && cp.get('initialValue'); + } else { + initialValue = override ? override.get('savedValue') : cp && cp.get('savedValue'); + } + + + initialValue = Em.isNone(initialValue) ? value : initialValue; var recommendedValue = configObject[key].properties[propertyName]; var isNewProperty = (!notDefaultGroup && Em.isNone(cp)) || (notDefaultGroup && group && Em.isNone(override)); - if (!updateOnlyBoundaries && !parentPropertiesNames.contains(propertyName) && defaultValue != recommendedValue) { //on first initial request we don't need to change values + var parsedInit = parseFloat(initialValue); + var parsedRecommended = parseFloat(recommendedValue); + if (!isNaN(parsedInit) && !isNaN(parsedRecommended)) { + initialValue = parsedInit.toString(); + recommendedValue = parsedRecommended.toString(); + } + if (!updateOnlyBoundaries && !parentPropertiesNames.contains(propertyName) && initialValue != recommendedValue) { //on first initial request we don't need to change values if (dependentProperty) { - Em.set(dependentProperty, 'value', defaultValue); + Em.set(dependentProperty, 'value', initialValue); Em.set(dependentProperty, 'recommendedValue', recommendedValue); Em.set(dependentProperty, 'toDelete', false); Em.set(dependentProperty, 'toAdd', isNewProperty); @@ -423,7 +460,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ fileName: key, propertyName: propertyName, configGroup: group ? group.get('name') : service.get('displayName') + " Default", - value: defaultValue, + value: initialValue, parentConfigs: parentPropertiesNames, serviceName: serviceName, allowChangeGroup: serviceName != this.get('content.serviceName') && !this.get('selectedConfigGroup.isDefault'), @@ -448,21 +485,21 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * properties that wasn't changed while recommendations */ - if ((defaultValue == recommendedValue) || (Em.isNone(defaultValue) && Em.isNone(recommendedValue))) { + if ((initialValue == recommendedValue) || (Em.isNone(initialValue) && Em.isNone(recommendedValue))) { /** if recommended value same as default we shouldn't show it in popup **/ if (notDefaultGroup) { if (override) { if (override.get('isNotSaved')) { cp.get('overrides').removeObject(override); } else { - override.set('value', defaultValue); + override.set('value', initialValue); } if (dependentProperty) { this.get('_dependentConfigValues').removeObject(dependentProperty); } } } else { - cp.set('value', defaultValue); + cp.set('value', initialValue); if (dependentProperty) { this.get('_dependentConfigValues').removeObject(dependentProperty); } @@ -508,7 +545,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ self.get('_dependentConfigValues').pushObject({ saveRecommended: true, saveRecommendedDefault: true, - propertyValue: cp && cp.get('defaultValue'), + propertyValue: cp && (cp.get('useInitialValue') ? cp.get('initialValue') : cp.get('savedValue')), toDelete: true, toAdd: false, isDeleted: true, @@ -568,13 +605,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ name: Em.get(propertyToAdd, 'propertyName'), displayName: Em.get(propertyToAdd, 'propertyName'), value: Em.get(propertyToAdd, 'recommendedValue'), - defaultValue: Em.get(propertyToAdd, 'recommendedValue'), + recommendedValue: Em.get(propertyToAdd, 'recommendedValue'), + savedValue: null, category: 'Advanced ' + Em.get(propertyToAdd, 'fileName'), serviceName: stepConfigs.get('serviceName'), filename: App.config.getOriginalFileName(Em.get(propertyToAdd, 'fileName')), isNotSaved: !Em.get(propertyToAdd, 'isDeleted'), - isRequired: true, - forceUpdate: true + isRequired: true }); stepConfigs.get('configs').pushObject(addedProperty); addedProperty.validate(); @@ -652,16 +689,23 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ if (propertyToUpdate) { var valueToSave = propertyToUpdate.saveRecommended ? propertyToUpdate.recommendedValue : propertyToUpdate.value; if (!selectedGroup || selectedGroup.get('isDefault')) { - cp.set('value', valueToSave); - cp.set('forceUpdate', true); + if (propertyToUpdate.saveRecommended || cp.get('value') == propertyToUpdate.recommendedValue) { + cp.set('value', valueToSave); + } + cp.set('recommendedValue', propertyToUpdate.recommendedValue); } else { if (stepConfigs.get('serviceName') !== this.get('content.serviceName')) { - cp.set('value', cp.get('defaultValue')); - cp.set('forceUpdate', true); + if (propertyToUpdate.saveRecommended || cp.get('value') == propertyToUpdate.recommendedValue) { + cp.set('value', this.get('useInitialValue') ? cp.get('initialValue') : cp.get('savedValue')); + } + cp.set('recommendedValue', propertyToUpdate.recommendedValue); } var overriddenConfig = cp.get('overrides') && cp.get('overrides').findProperty('group.name', selectedGroup.get('name')); if (overriddenConfig) { - overriddenConfig.set('value', valueToSave); + if (propertyToUpdate.saveRecommended || overriddenConfig.get('value') == propertyToUpdate.recommendedValue) { + overriddenConfig.set('value', valueToSave); + } + overriddenConfig.set('recommendedValue', propertyToUpdate.recommendedValue); } } } http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/config_property.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/config_property.js b/ambari-web/app/models/configs/config_property.js index facaaf4..31ba3f6 100644 --- a/ambari-web/app/models/configs/config_property.js +++ b/ambari-web/app/models/configs/config_property.js @@ -36,18 +36,19 @@ App.ConfigProperty = DS.Model.extend({ * @property {string} */ fileName: DS.attr('string'), + /** * value of property - * by default is same as <code>defaultValue<code> + * by default is same as <code>savedValue<code> * @property {string} */ value: DS.attr('string'), /** - * default value of property + * saved value of property * @property {string} */ - defaultValue: DS.attr('string'), + savedValue: DS.attr('string'), /** * recommended value of property @@ -62,11 +63,17 @@ App.ConfigProperty = DS.Model.extend({ */ isFinal: DS.attr('boolean', {defaultValue: false}), + + /** + * value saved on cluster + */ + savedIsFinal: DS.attr('boolean', {defaultValue: false}), + /** - * defines if property is final by default + * value recommendedFrom Server * @property {boolean} */ - defaultIsFinal: DS.attr('boolean', {defaultValue: false}), + recommendedIsFinal: DS.attr('boolean', {defaultValue: false}), /** * link to config version @@ -224,9 +231,9 @@ App.ConfigProperty = DS.Model.extend({ */ isNotDefaultValue: function () { return this.get('isEditable') - && ((this.get('defaultValue') != null && this.get('value') !== this.get('defaultValue')) - || (this.get('supportsFinal') && this.get('isFinal') !== this.get('defaultIsFinal'))); - }.property('value', 'defaultValue', 'isEditable', 'isFinal', 'defaultIsFinal'), + && (!Em.isNone(this.get('savedValue') && this.get('value') !== this.get('savedValue')) + || (this.get('supportsFinal') && !Em.isNone(this.get('savedIsFinal')) && this.get('isFinal') !== this.get('savedIsFinal'))); + }.property('value', 'savedValue', 'isEditable', 'isFinal', 'savedIsFinal'), /** * opposite to <code>hasErrors<code> http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/objects/service_config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/objects/service_config.js b/ambari-web/app/models/configs/objects/service_config.js index fe4c8f0..e852c56 100644 --- a/ambari-web/app/models/configs/objects/service_config.js +++ b/ambari-web/app/models/configs/objects/service_config.js @@ -66,8 +66,7 @@ App.ServiceConfig = Ember.Object.extend({ return requiredByAgent.someProperty('isNotSaved') || requiredByAgent.someProperty('isNotDefaultValue') || requiredByAgent.someProperty('isOverrideChanged') || - this.get('configs.length') !== this.get('initConfigsLength') || - (this.get('configs.length') === this.get('initConfigsLength') && this.get('configs').someProperty('defaultValue', null)); + this.get('configs.length') !== this.get('initConfigsLength'); }.property('[email protected]', '[email protected]', 'configs.length', '[email protected]') }); http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/objects/service_config_property.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/objects/service_config_property.js b/ambari-web/app/models/configs/objects/service_config_property.js index c8971ec..6abf4ac 100644 --- a/ambari-web/app/models/configs/objects/service_config_property.js +++ b/ambari-web/app/models/configs/objects/service_config_property.js @@ -24,9 +24,61 @@ App.ServiceConfigProperty = Em.Object.extend({ id: '', //either 'puppet var' or 'site property' name: '', displayName: '', + + /** + * value that is shown on IU + * and is changing by user + * @type {String|null} + */ value: '', + + /** + * value that is saved on cluster configs + * and stored in /api/v1/clusters/{name}/configurations + * @type {String|null} + */ + savedValue: null, + + /** + * value that is returned from server as recommended + * or stored on stack + * @type {String|null} + */ + recommendedValue: null, + + /** + * initial value of config. if value is saved it will be initial + * otherwise first recommendedValue will be initial + * @type {String|null} + */ + initialValue: null, + + /** + * value that is shown on IU + * and is changing by user + * @type {boolean} + */ + isFinal: false, + + /** + * value that is saved on cluster configs api + * @type {boolean} + */ + savedIsFinal: null, + + /** + * value that is returned from server as recommended + * or stored on stack + * @type {boolean} + */ + recommendedIsFinal: null, + + /** + * @type {boolean} + */ + supportsFinal: false, + retypedPassword: '', - defaultValue: '', defaultDirectory: '', description: '', displayType: 'string', // string, digits, number, directories, custom @@ -36,12 +88,9 @@ App.ServiceConfigProperty = Em.Object.extend({ isReconfigurable: true, // by default a config property is reconfigurable isEditable: true, // by default a config property is editable isNotEditable: Ember.computed.not('isEditable'), - isFinal: false, hideFinalIcon: function () { return (!this.get('isFinal'))&& this.get('isNotEditable'); }.property('isFinal', 'isNotEditable'), - defaultIsFinal: false, - supportsFinal: false, isVisible: true, isMock: false, // mock config created created only to displaying isRequiredByAgent: true, // Setting it to true implies property will be stored in configuration @@ -84,18 +133,11 @@ App.ServiceConfigProperty = Em.Object.extend({ rowStyleClass: null, // CSS-Class to be applied on the row showing this config showAsTextBox: false, - forceUpdate: false, - /** - * value that is returned from server as recommended - * @type {String} - */ - recommendedValue: null, - /** * @type {boolean} */ recommendedValueExists: function () { - return !Em.isNone(this.get('recommendedValue')); + return !Em.isNone(this.get('recommendedValue')) && this.get('isRequiredByAgent') && !this.get('cantBeUndone'); }.property('recommendedValue'), /** @@ -148,9 +190,13 @@ App.ServiceConfigProperty = Em.Object.extend({ this.set('retypedPassword', this.get('value')); } if ((this.get('id') === 'puppet var') && this.get('value') == '') { - this.set('value', this.get('defaultValue')); + if (this.get('savedValue')) { + this.set('value', this.get('savedValue')); + } else if (this.get('recommendedValue')) { + this.set('value', this.get('recommendedValue')); + } } - // TODO: remove mock data + this.set('initialValue', this.get('value')); }, /** @@ -159,18 +205,18 @@ App.ServiceConfigProperty = Em.Object.extend({ */ isNotDefaultValue: function () { var value = this.get('value'); - var defaultValue = this.get('defaultValue'); + var savedValue = this.get('savedValue'); var supportsFinal = this.get('supportsFinal'); var isFinal = this.get('isFinal'); - var defaultIsFinal = this.get('defaultIsFinal'); + var savedIsFinal = this.get('savedIsFinal'); // ignore precision difference for configs with type of `float` which value may ends with 0 // e.g. between 0.4 and 0.40 if (this.get('stackConfigProperty') && this.get('stackConfigProperty.valueAttributes.type') == 'float') { - defaultValue = '' + parseFloat(defaultValue); + savedValue = !Em.isNone(savedValue) ? '' + parseFloat(savedValue) : null; value = '' + parseFloat(value); } - return (defaultValue != null && value !== defaultValue) || (supportsFinal && isFinal !== defaultIsFinal); - }.property('value', 'defaultValue', 'isEditable', 'isFinal', 'defaultIsFinal'), + return (savedValue != null && value !== savedValue) || (supportsFinal && !Em.isNone(savedIsFinal) && isFinal !== savedIsFinal); + }.property('value', 'savedValue', 'isEditable', 'isFinal', 'savedIsFinal'), /** * Don't show "Undo" for hosts on Installer Step7 http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/models/configs/stack_config_property.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/stack_config_property.js b/ambari-web/app/models/configs/stack_config_property.js index 5f66049..15dcfc2 100644 --- a/ambari-web/app/models/configs/stack_config_property.js +++ b/ambari-web/app/models/configs/stack_config_property.js @@ -62,7 +62,7 @@ App.StackConfigProperty = DS.Model.extend({ * after cluster created is taken from cluster properties value * @property {string} */ - defaultValue: DS.attr('string'), + recommendedValue: DS.attr('string'), /** * defines if property support usage <code>isFinal<code> flag @@ -71,10 +71,10 @@ App.StackConfigProperty = DS.Model.extend({ supportsFinal: DS.attr('boolean', {defaultValue: true}), /** - * defines the defaultValue value of <code>isFinal<code> value + * defines the recommended value of <code>isFinal<code> value * @property {boolean} */ - defaultIsFinal: DS.attr('boolean', {defaultValue: false}), + recommendedIsFinal: DS.attr('boolean', {defaultValue: false}), /** * type of property @@ -172,7 +172,7 @@ App.StackConfigProperty = DS.Model.extend({ value: DS.attr('string'), /** - * config property isFinal value same as defaultIsFinal + * config property isFinal value same as recommendedIsFinal * @property {boolean} */ isFinal: DS.attr('boolean', {defaultValue: false}) http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs b/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs index c42d50d..d53a133 100644 --- a/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs +++ b/ambari-web/app/templates/common/modal_popups/dependent_configs_list.hbs @@ -46,7 +46,13 @@ </td> <td>{{config.fileName}}</td> <td>{{config.value}}</td> - <td>{{config.recommendedValue}}</td> + <td> + {{#if config.isDeleted}} + {{t common.removed}} + {{else}} + {{config.recommendedValue}} + {{/if}} + </td> </tr> {{/each}} </tbody> http://git-wip-us.apache.org/repos/asf/ambari/blob/07616603/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index 5184051..d1df556 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -151,7 +151,6 @@ App.config = Em.Object.create({ "name": "content", "displayName": type.endsWith('-env') ? type + ' template' : "content", "value": "", - "defaultValue": "", "description": type + " properties", "displayType": "content", "isOverridable": true, @@ -231,7 +230,7 @@ App.config = Em.Object.create({ handleSpecialProperties: function (config) { if (Em.get(config, 'displayType') === 'int' && /\d+m$/.test(Em.get(config, 'value') )) { Em.set(config, 'value', Em.get(config, 'value').slice(0, Em.get(config, 'value.length') - 1)); - Em.set(config, 'defaultValue', Em.get(config, 'value')); + Em.set(config, 'savedValue', Em.get(config, 'value')); } }, @@ -311,7 +310,8 @@ App.config = Em.Object.create({ var serviceConfigObj = App.ServiceConfig.create({ name: index, value: value, - defaultValue: value, + savedValue: value, + recommendedValue: advancedConfig ? Em.get(advancedConfig, 'recommencedValue') : null, filename: filename, isUserProperty: !advancedConfig, isVisible: !!service, @@ -319,7 +319,8 @@ App.config = Em.Object.create({ isReconfigurable: true, isRequired: isAdvanced, isFinal: finalAttributes[index] === "true", - defaultIsFinal: finalAttributes[index] === "true", + savedIsFinal: finalAttributes[index] === "true", + recommendedIsFinal: advancedConfig ? Em.get(advancedConfig, 'recommendedIsFinal') : null, showLabel: true, serviceName: serviceName, belongsToService: [], @@ -405,13 +406,13 @@ App.config = Em.Object.create({ if (serviceConfigObj.get('displayType') == 'directories' && (serviceConfigObj.get('category') == 'DataNode' || serviceConfigObj.get('category') == 'NameNode')) { var dirs = serviceConfigObj.get('value').split(',').sort(); serviceConfigObj.set('value', dirs.join(',')); - serviceConfigObj.set('defaultValue', dirs.join(',')); + serviceConfigObj.set('savedValue', dirs.join(',')); } if (serviceConfigObj.get('displayType') == 'directory' && serviceConfigObj.get('category') == 'SNameNode') { var dirs = serviceConfigObj.get('value').split(',').sort(); serviceConfigObj.set('value', dirs[0]); - serviceConfigObj.set('defaultValue', dirs[0]); + serviceConfigObj.set('savedValue', dirs[0]); } if (serviceConfigObj.get('displayType') == 'masterHosts') { @@ -515,7 +516,8 @@ App.config = Em.Object.create({ if (preDefined && stored) { configData = preDefined; configData.value = stored.value; - configData.defaultValue = stored.defaultValue; + configData.savedValue = stored.savedValue; + configData.recommendedValue = stored.recommendedValue; configData.overrides = stored.overrides; configData.displayName = stored.displayName; configData.name = stored.name; @@ -565,7 +567,8 @@ App.config = Em.Object.create({ var storedCfg = storedCfgs.findProperty('filename', cfg.filename); if (storedCfg) { configData.value = storedCfg.value; - configData.defaultValue = storedCfg.defaultValue; + configData.recommendedValue = storedCfg.recommendedValue; + configData.savedValue = storedCfg.savedValue; configData.overrides = storedCfg.overrides; configData.filename = storedCfg.filename; configData.description = storedCfg.description; @@ -599,7 +602,7 @@ App.config = Em.Object.create({ } else { configData.value = advanced ? advanced.value : configData.value; } - configData.defaultValue = configData.value; + configData.recommendedValue = configData.value; configData.filename = advanced ? advanced.filename : configData.filename; configData.displayName = advanced && advanced.displayName ? advanced.displayName : configData.displayName; configData.name = advanced && advanced.name ? advanced.name : configData.name; @@ -645,7 +648,7 @@ App.config = Em.Object.create({ _config.id = "site property"; _config.category = configCategory; _config.displayName = _config.displayName || _config.name; - _config.defaultValue = _config.value; + _config.recommendedValue = _config.value; // make all advanced configs optional and populated by default /* * if (/\${.*}/.test(_config.value) || (service.serviceName !== @@ -685,10 +688,9 @@ App.config = Em.Object.create({ * @param allSelectedServiceNames * @param installedServiceNames * @param localDB - * @param recommended * @return {Array} */ - renderConfigs: function (configs, storedConfigs, allSelectedServiceNames, installedServiceNames, localDB, recommended) { + renderConfigs: function (configs, storedConfigs, allSelectedServiceNames, installedServiceNames, localDB) { var renderedServiceConfigs = []; var services = []; @@ -713,15 +715,15 @@ App.config = Em.Object.create({ var hiveMetastoreUrisConfig = configs.filterProperty('filename', 'hive-site.xml').findProperty('name', 'hive.metastore.uris'); var clientPortConfig = configs.filterProperty('filename', 'zoo.cfg.xml').findProperty('name', 'clientPort'); var dependencies = { - 'hive.metastore.uris': hiveMetastoreUrisConfig && hiveMetastoreUrisConfig.defaultValue, - 'clientPort': clientPortConfig && clientPortConfig.defaultValue + 'hive.metastore.uris': hiveMetastoreUrisConfig && hiveMetastoreUrisConfig.recommendedValue, + 'clientPort': clientPortConfig && clientPortConfig.recommendedValue }; configPropertyHelper.initialValue(serviceConfigProperty, localDB, dependencies); } if (storedConfigs && storedConfigs.filterProperty('name', _config.name).length && !!_config.filename) { var storedConfig = storedConfigs.filterProperty('name', _config.name).findProperty('filename', _config.filename); if (storedConfig) { - serviceConfigProperty.set('defaultValue', storedConfig.defaultValue); + serviceConfigProperty.set('recommendedValue', storedConfig.recommendedValue); serviceConfigProperty.set('value', storedConfig.value); } } @@ -731,28 +733,6 @@ App.config = Em.Object.create({ }, this); var serviceConfig = this.createServiceConfig(service.get('serviceName')); serviceConfig.set('showConfig', service.get('showConfig')); - - // Use calculated default values for some configs - var recommendedDefaults = {}; - if (!storedConfigs && service.get('configTypes')) { - Object.keys(service.get('configTypes')).forEach(function (type) { - if (!recommended || !recommended[type]) { - return; - } - var defaults = recommended[type].properties; - for (var name in defaults) { - var config = configsByService.findProperty('name', name); - if (!config) { - continue; - } - recommendedDefaults[name] = defaults[name]; - config.set('value', defaults[name]); - config.set('defaultValue', defaults[name]); - config.set('recommendedValue', defaults[name]); - config.set('forceUpdate', true); - } - }); - } serviceConfig.set('configs', configsByService); renderedServiceConfigs.push(serviceConfig); }, this); @@ -770,9 +750,9 @@ App.config = Em.Object.create({ break; } try { - if (typeof(config.defaultValue) == "string" && config.defaultValue.indexOf("{firstHost}") >= 0) { + if (typeof(config.recommendedValue) == "string" && config.recommendedValue.indexOf("{firstHost}") >= 0) { serviceConfigProperty.set('value', serviceConfigProperty.value.replace(new RegExp("{firstHost}"), firstHost)); - serviceConfigProperty.set('defaultValue', serviceConfigProperty.defaultValue.replace(new RegExp("{firstHost}"), firstHost)); + serviceConfigProperty.set('recommendedValue', serviceConfigProperty.recommendedValue.replace(new RegExp("{firstHost}"), firstHost)); } } catch (err) { // Nothing to worry about here, most likely trying indexOf on a non-string @@ -989,7 +969,7 @@ App.config = Em.Object.create({ description: item.property_description, isVisible: item.isVisible, isFinal: item.final === "true", - defaultIsFinal: item.final === "true", + recommendedIsFinal: item.final === "true", filename: item.filename || fileName }; @@ -1145,7 +1125,7 @@ App.config = Em.Object.create({ var propertyObject = { name: propertyName, displayName: propertyName, - defaultValue: propertyValue, + savedValue: propertyValue, value: propertyValue, displayType: stringUtils.isSingleLine(propertyValue) ? 'advanced' : 'multiLine', isSecureConfig: false, @@ -1219,7 +1199,7 @@ App.config = Em.Object.create({ if (Em.isNone(cFromMapped)) { var cFromAll = allConfigs.findProperty('name', cfk); if (!Em.isNone(cFromAll)) { - globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'defaultValue') : Em.get(cFromAll, 'value'); + globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'recommendedValue') : Em.get(cFromAll, 'value'); config.value = config.value.replace(_fkValue, globalValue); } } @@ -1244,7 +1224,7 @@ App.config = Em.Object.create({ config.noMatchSoSkipThisConfig = true; } else { - globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'defaultValue') : Em.get(cFromAll, 'value'); + globalValue = Em.get(cFromAll, 'value') === '' ? Em.get(cFromAll, 'recommendedValue') : Em.get(cFromAll, 'value'); config._name = config.name.replace(_fkName, globalValue); } } @@ -1305,7 +1285,8 @@ App.config = Em.Object.create({ this.getOriginalConfigAttribute(stored, 'displayName', advancedConfigs) : App.format.normalizeName(stored.name), serviceName: stored.serviceName, value: stored.value, - defaultValue: stored.defaultValue, + savedValue: stored.savedValue, + recommendedValue: stored.recommendedValue, displayType: skipAttributeChanges.displayType.contains(stored.name) ? this.getOriginalConfigAttribute(stored, 'displayType', advancedConfigs) : (stringUtils.isSingleLine(stored.value) ? 'advanced' : 'multiLine'), @@ -1317,7 +1298,7 @@ App.config = Em.Object.create({ isRequired: false, isVisible: stored.isVisible, isFinal: stored.isFinal, - defaultIsFinal: stored.defaultIsFinal, + savedIsFinal: stored.savedIsFinal, supportsFinal: stored.supportsFinal, showLabel: stored.showLabel !== false, category: stored.category @@ -1341,7 +1322,6 @@ App.config = Em.Object.create({ "name": "capacity-scheduler", "displayName": "Capacity Scheduler", "value": "", - "defaultValue": "", "description": "Capacity Scheduler properties", "displayType": "custom", "isOverridable": true, @@ -1366,22 +1346,30 @@ App.config = Em.Object.create({ */ fileConfigsIntoTextarea: function (configs, filename, configsToSkip) { var fileConfigs = configs.filterProperty('filename', filename); - var value = ''; - var defaultValue = ''; + var value = '', savedValue = '', recommendedValue = ''; var template = this.get('complexConfigsTemplate').findProperty('filename', filename); var complexConfig = $.extend({}, template); if (complexConfig) { fileConfigs.forEach(function (_config) { if (!(configsToSkip && configsToSkip.someProperty('name', _config.name))) { value += _config.name + '=' + _config.value + '\n'; - defaultValue += _config.name + '=' + _config.defaultValue + '\n'; + if (!Em.isNone(_config.savedValue)) { + savedValue += _config.name + '=' + _config.savedValue + '\n'; + } + if (!Em.isNone(_config.recommendedValue)) { + recommendedValue += _config.name + '=' + _config.recommendedValue + '\n'; + } } }, this); var isFinal = fileConfigs.someProperty('isFinal', true); + var savedIsFinal = fileConfigs.someProperty('savedIsFinal', true); + var recommendedIsFinal = fileConfigs.someProperty('recommendedIsFinal', true); complexConfig.value = value; - complexConfig.defaultValue = defaultValue; + complexConfig.savedValue = savedValue; + complexConfig.recommendedValue = recommendedValue; complexConfig.isFinal = isFinal; - complexConfig.defaultIsFinal = isFinal; + complexConfig.savedIsFinal = savedIsFinal; + complexConfig.recommendedIsFinal = recommendedIsFinal; configs = configs.filter(function (_config) { return _config.filename !== filename || (configsToSkip && configsToSkip.someProperty('name', _config.name)); }); @@ -1413,7 +1401,7 @@ App.config = Em.Object.create({ id: configsTextarea.get('id'), name: name, value: value, - defaultValue: value, + savedValue: value, serviceName: configsTextarea.get('serviceName'), filename: filename, isFinal: configsTextarea.get('isFinal'),
