)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"7d20e36d65158bb5f2bc2bb6ed65f5e33fce99af","unresolved":false,"context_lines":[{"line_number":12,"context_line":"diskimage-builder and the \u0027-p spark\u0027 option."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This code is running on our Bigfoot research cluster."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ic105f7de64248bdfb05879ededf35503bc04925b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7adec928_7fd6eb28","line":15,"updated":"2014-05-22 13:38:23.000000000","message":"Please, add the blueprint with good description of the proposed plugin.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"142dbc5f31caf2f2b4322e19c1764c3656b0baf2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Wiki: https://wiki.openstack.org/wiki/Savanna/SparkPlugin"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This code is running on our Bigfoot research cluster."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ic105f7de64248bdfb05879ededf35503bc04925b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3ae8d1ca_6eee718d","line":18,"updated":"2014-05-27 12:43:38.000000000","message":"Please add link to a corresponding blueprint:\n\nImplements: blueprint spark-plugin","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8a2ae6ff88f0eae4789eec87ff95e18cb54b6fa9","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Wiki: https://wiki.openstack.org/wiki/Savanna/SparkPlugin"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This code is running on our Bigfoot research cluster."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ic105f7de64248bdfb05879ededf35503bc04925b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3ae8d1ca_dd1f3508","line":18,"in_reply_to":"3ae8d1ca_6eee718d","updated":"2014-05-27 14:19:51.000000000","message":"Done","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"}],"etc/savanna/savanna.conf.sample":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"f3b3e0a18201191dd6cf5e3b6d1824332d04cd23","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# List of plugins to be loaded. Savanna preserves the order of"},{"line_number":111,"context_line":"# the list when returning it. (list value)"},{"line_number":112,"context_line":"plugins\u003dvanilla,hdp,spark"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"[plugin:vanilla]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAUX%2F%2FEdo%3D","line":112,"updated":"2014-02-17 10:32:13.000000000","message":"We\u0027re adding plugins to this list only when we\u0027re ready to define that it\u0027s stable and tested enough. It means that we have integration tests written and enabled for this plugin for some reasonable time.","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8bc1b555227686470a3063fc6483ac8467c1c31c","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"# List of plugins to be loaded. Savanna preserves the order of"},{"line_number":111,"context_line":"# the list when returning it. (list value)"},{"line_number":112,"context_line":"plugins\u003dvanilla,hdp,spark"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"[plugin:vanilla]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAUX%2F%2FDZk%3D","line":112,"in_reply_to":"AAAAUX%2F%2FEdo%3D","updated":"2014-02-21 10:36:01.000000000","message":"Done","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"},{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"f3b3e0a18201191dd6cf5e3b6d1824332d04cd23","unresolved":false,"context_lines":[{"line_number":112,"context_line":"plugins\u003dvanilla,hdp,spark"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"[plugin:vanilla]"},{"line_number":116,"context_line":"plugin_class\u003dsavanna.plugins.vanilla.plugin:VanillaProvider"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"[plugin:hdp]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAUX%2F%2FEdA%3D","line":115,"updated":"2014-02-17 10:32:13.000000000","message":"The approach of pointing main class was changed to strong corresponding values in setup.cfg","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8bc1b555227686470a3063fc6483ac8467c1c31c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"plugins\u003dvanilla,hdp,spark"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"[plugin:vanilla]"},{"line_number":116,"context_line":"plugin_class\u003dsavanna.plugins.vanilla.plugin:VanillaProvider"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"[plugin:hdp]"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAUX%2F%2FDZY%3D","line":115,"in_reply_to":"AAAAUX%2F%2FEdA%3D","updated":"2014-02-21 10:36:01.000000000","message":"Done","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"}],"sahara/plugins/spark/config_helper.py":[{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                default_value\u003dTrue, is_optional\u003dTrue)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"HIDDEN_CONFS \u003d [\u0027fs.defaultFS\u0027, \u0027dfs.namenode.name.dir\u0027,"},{"line_number":65,"context_line":"                \u0027dfs.datanode.data.dir\u0027, \u0027mapred.job.tracker\u0027,"},{"line_number":66,"context_line":"                \u0027mapred.system.dir\u0027, \u0027mapred.local.dir\u0027,"},{"line_number":67,"context_line":"                \u0027hadoop.proxyuser.hadoop.hosts\u0027,"},{"line_number":68,"context_line":"                \u0027hadoop.proxyuser.hadoop.groups\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_febf4ba8","line":65,"updated":"2014-05-12 12:18:14.000000000","message":"\u0027mapred.job.tracker\u0027, \u0027mapred.system.dir\u0027, etc. parameters is not defined in core-site.xml and hdfs-site.xml. \n\nNeed to remove them.","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                default_value\u003dTrue, is_optional\u003dTrue)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"HIDDEN_CONFS \u003d [\u0027fs.defaultFS\u0027, \u0027dfs.namenode.name.dir\u0027,"},{"line_number":65,"context_line":"                \u0027dfs.datanode.data.dir\u0027, \u0027mapred.job.tracker\u0027,"},{"line_number":66,"context_line":"                \u0027mapred.system.dir\u0027, \u0027mapred.local.dir\u0027,"},{"line_number":67,"context_line":"                \u0027hadoop.proxyuser.hadoop.hosts\u0027,"},{"line_number":68,"context_line":"                \u0027hadoop.proxyuser.hadoop.groups\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_ab7100e2","line":65,"in_reply_to":"7adec928_febf4ba8","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"CLUSTER_WIDE_CONFS \u003d [\u0027dfs.block.size\u0027, \u0027dfs.permissions\u0027, \u0027dfs.replication\u0027,"},{"line_number":71,"context_line":"                      \u0027dfs.replication.min\u0027, \u0027dfs.replication.max\u0027,"},{"line_number":72,"context_line":"                      \u0027io.file.buffer.size\u0027, \u0027mapreduce.job.counters.max\u0027,"},{"line_number":73,"context_line":"                      \u0027mapred.output.compress\u0027, \u0027io.compression.codecs\u0027,"},{"line_number":74,"context_line":"                      \u0027mapred.output.compression.codec\u0027,"},{"line_number":75,"context_line":"                      \u0027mapred.output.compression.type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_3ee1b3d0","line":72,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"CLUSTER_WIDE_CONFS \u003d [\u0027dfs.block.size\u0027, \u0027dfs.permissions\u0027, \u0027dfs.replication\u0027,"},{"line_number":71,"context_line":"                      \u0027dfs.replication.min\u0027, \u0027dfs.replication.max\u0027,"},{"line_number":72,"context_line":"                      \u0027io.file.buffer.size\u0027, \u0027mapreduce.job.counters.max\u0027,"},{"line_number":73,"context_line":"                      \u0027mapred.output.compress\u0027, \u0027io.compression.codecs\u0027,"},{"line_number":74,"context_line":"                      \u0027mapred.output.compression.codec\u0027,"},{"line_number":75,"context_line":"                      \u0027mapred.output.compression.type\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_cb772cd3","line":72,"in_reply_to":"7adec928_3ee1b3d0","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    \u0027dfs.datanode.failed.volumes.tolerated\u0027,"},{"line_number":81,"context_line":"                    \u0027dfs.datanode.max.xcievers\u0027, \u0027dfs.datanode.handler.count\u0027,"},{"line_number":82,"context_line":"                    \u0027dfs.namenode.handler.count\u0027, \u0027mapred.child.java.opts\u0027,"},{"line_number":83,"context_line":"                    \u0027mapred.jobtracker.maxtasks.per.job\u0027,"},{"line_number":84,"context_line":"                    \u0027mapred.job.tracker.handler.count\u0027,"},{"line_number":85,"context_line":"                    \u0027mapred.map.child.java.opts\u0027,"},{"line_number":86,"context_line":"                    \u0027mapred.reduce.child.java.opts\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_7eeb3bb0","line":83,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                    \u0027dfs.datanode.failed.volumes.tolerated\u0027,"},{"line_number":81,"context_line":"                    \u0027dfs.datanode.max.xcievers\u0027, \u0027dfs.datanode.handler.count\u0027,"},{"line_number":82,"context_line":"                    \u0027dfs.namenode.handler.count\u0027, \u0027mapred.child.java.opts\u0027,"},{"line_number":83,"context_line":"                    \u0027mapred.jobtracker.maxtasks.per.job\u0027,"},{"line_number":84,"context_line":"                    \u0027mapred.job.tracker.handler.count\u0027,"},{"line_number":85,"context_line":"                    \u0027mapred.map.child.java.opts\u0027,"},{"line_number":86,"context_line":"                    \u0027mapred.reduce.child.java.opts\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_eb7228e2","line":83,"in_reply_to":"7adec928_7eeb3bb0","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    return PLUGIN_CONFIGS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"def get_general_configs(hive_hostname, passwd_hive_mysql):"},{"line_number":143,"context_line":"    config \u003d {}"},{"line_number":144,"context_line":"    if CONF.enable_data_locality:"},{"line_number":145,"context_line":"        config.update({"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_5e367f53","line":142,"updated":"2014-05-12 12:18:14.000000000","message":"Unused method. Need to remove it.","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    return PLUGIN_CONFIGS"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"def get_general_configs(hive_hostname, passwd_hive_mysql):"},{"line_number":143,"context_line":"    config \u003d {}"},{"line_number":144,"context_line":"    if CONF.enable_data_locality:"},{"line_number":145,"context_line":"        config.update({"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_4b4b1c87","line":142,"in_reply_to":"7adec928_5e367f53","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    return service.hostname() if service else None"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"def get_hadoop_ssh_keys(cluster):"},{"line_number":189,"context_line":"    extra \u003d cluster.extra or {}"},{"line_number":190,"context_line":"    private_key \u003d extra.get(\u0027hadoop_private_ssh_key\u0027)"},{"line_number":191,"context_line":"    public_key \u003d extra.get(\u0027hadoop_public_ssh_key\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_de2fef9f","line":188,"updated":"2014-05-12 12:18:14.000000000","message":"Unused method","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    return service.hostname() if service else None"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"def get_hadoop_ssh_keys(cluster):"},{"line_number":189,"context_line":"    extra \u003d cluster.extra or {}"},{"line_number":190,"context_line":"    private_key \u003d extra.get(\u0027hadoop_private_ssh_key\u0027)"},{"line_number":191,"context_line":"    public_key \u003d extra.get(\u0027hadoop_public_ssh_key\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_6b4e1898","line":188,"in_reply_to":"7adec928_de2fef9f","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    return xml_configs"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def write_hadoop_configs_xml_file(xml_configs):"},{"line_number":246,"context_line":"    f_core \u003d open(\u0027core-site.xml\u0027, \u0027w\u0027)"},{"line_number":247,"context_line":"    f_hdfs \u003d open(\u0027hdfs-site.xml\u0027, \u0027w\u0027)"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_9e3f2725","line":245,"updated":"2014-05-12 12:18:14.000000000","message":"Unused method. Need to remove it.","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    return xml_configs"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"def write_hadoop_configs_xml_file(xml_configs):"},{"line_number":246,"context_line":"    f_core \u003d open(\u0027core-site.xml\u0027, \u0027w\u0027)"},{"line_number":247,"context_line":"    f_hdfs \u003d open(\u0027hdfs-site.xml\u0027, \u0027w\u0027)"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_cb5e4c45","line":245,"in_reply_to":"7adec928_9e3f2725","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    configs \u003d []"},{"line_number":265,"context_line":"    # master configuration"},{"line_number":266,"context_line":"    configs.append(\u0027SPARK_MASTER_IP\u003d\u0027 + mastername)"},{"line_number":267,"context_line":"    if masterport is None or masterport \u003d\u003d \u0027\u0027:"},{"line_number":268,"context_line":"        masterport \u003d 7077"},{"line_number":269,"context_line":"    configs.append(\u0027SPARK_MASTER_PORT\u003d\u0027 + str(masterport))"},{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_dee52fa9","line":267,"updated":"2014-05-12 12:18:14.000000000","message":"I would prefer this code:\n\nif not masterport:\n    bla-bla-bla","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    configs \u003d []"},{"line_number":265,"context_line":"    # master configuration"},{"line_number":266,"context_line":"    configs.append(\u0027SPARK_MASTER_IP\u003d\u0027 + mastername)"},{"line_number":267,"context_line":"    if masterport is None or masterport \u003d\u003d \u0027\u0027:"},{"line_number":268,"context_line":"        masterport \u003d 7077"},{"line_number":269,"context_line":"    configs.append(\u0027SPARK_MASTER_PORT\u003d\u0027 + str(masterport))"},{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_6162b7ae","line":267,"in_reply_to":"7adec928_dee52fa9","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    if masterport is None or masterport \u003d\u003d \u0027\u0027:"},{"line_number":268,"context_line":"        masterport \u003d 7077"},{"line_number":269,"context_line":"    configs.append(\u0027SPARK_MASTER_PORT\u003d\u0027 + str(masterport))"},{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"},{"line_number":271,"context_line":"        configs.append(\u0027SPARK_MASTER_WEBUI_PORT\u003d\u0027 + str(masterwebport))"},{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_5ea03f43","line":270,"updated":"2014-05-12 12:18:14.000000000","message":"I would prefer this code:\n\nif masterwebport:\n    bla-bla-bla","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":267,"context_line":"    if masterport is None or masterport \u003d\u003d \u0027\u0027:"},{"line_number":268,"context_line":"        masterport \u003d 7077"},{"line_number":269,"context_line":"    configs.append(\u0027SPARK_MASTER_PORT\u003d\u0027 + str(masterport))"},{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"},{"line_number":271,"context_line":"        configs.append(\u0027SPARK_MASTER_WEBUI_PORT\u003d\u0027 + str(masterwebport))"},{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_81598300","line":270,"in_reply_to":"7adec928_5ea03f43","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"},{"line_number":271,"context_line":"        configs.append(\u0027SPARK_MASTER_WEBUI_PORT\u003d\u0027 + str(masterwebport))"},{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"},{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_7ea33b4f","line":273,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":270,"context_line":"    if masterwebport is not None and masterwebport !\u003d \u0027\u0027:"},{"line_number":271,"context_line":"        configs.append(\u0027SPARK_MASTER_WEBUI_PORT\u003d\u0027 + str(masterwebport))"},{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"},{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_a15cbfee","line":273,"in_reply_to":"7adec928_7ea33b4f","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"},{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_de936ff8","line":275,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    # configuration for workers"},{"line_number":273,"context_line":"    if workercores is not None and workercores !\u003d \u0027\u0027:"},{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_c172ab7b","line":275,"in_reply_to":"7adec928_de936ff8","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_fe8e6bcf","line":277,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        configs.append(\u0027SPARK_WORKER_CORES\u003d\u0027 + str(workercores))"},{"line_number":275,"context_line":"    if workermemory is not None and workermemory !\u003d \u0027\u0027:"},{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_e16de79a","line":277,"in_reply_to":"7adec928_fe8e6bcf","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"},{"line_number":281,"context_line":"    if workerinstances is not None and workerinstances !\u003d \u0027\u0027:"},{"line_number":282,"context_line":"        configs.append(\u0027SPARK_WORKER_INSTANCES\u003d\u0027 + str(workerinstances))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_1ebdd768","line":279,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        configs.append(\u0027SPARK_WORKER_MEMORY\u003d\u0027 + str(workermemory))"},{"line_number":277,"context_line":"    if workerport is not None and workerport !\u003d \u0027\u0027:"},{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"},{"line_number":281,"context_line":"    if workerinstances is not None and workerinstances !\u003d \u0027\u0027:"},{"line_number":282,"context_line":"        configs.append(\u0027SPARK_WORKER_INSTANCES\u003d\u0027 + str(workerinstances))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_016d7398","line":279,"in_reply_to":"7adec928_1ebdd768","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"},{"line_number":281,"context_line":"    if workerinstances is not None and workerinstances !\u003d \u0027\u0027:"},{"line_number":282,"context_line":"        configs.append(\u0027SPARK_WORKER_INSTANCES\u003d\u0027 + str(workerinstances))"},{"line_number":283,"context_line":"    return \u0027\\n\u0027.join(configs)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_3ec0d3df","line":281,"updated":"2014-05-12 12:18:14.000000000","message":"ditto","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        configs.append(\u0027SPARK_WORKER_PORT\u003d\u0027 + str(workerport))"},{"line_number":279,"context_line":"    if workerwebport is not None and workerwebport !\u003d \u0027\u0027:"},{"line_number":280,"context_line":"        configs.append(\u0027SPARK_WORKER_WEBUI_PORT\u003d\u0027 + str(workerwebport))"},{"line_number":281,"context_line":"    if workerinstances is not None and workerinstances !\u003d \u0027\u0027:"},{"line_number":282,"context_line":"        configs.append(\u0027SPARK_WORKER_INSTANCES\u003d\u0027 + str(workerinstances))"},{"line_number":283,"context_line":"    return \u0027\\n\u0027.join(configs)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_2168af86","line":281,"in_reply_to":"7adec928_3ec0d3df","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    return \u0027\\n\u0027.join(workernames)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def write_spark_configs(configs, filename):"},{"line_number":293,"context_line":"    f \u003d open(str(filename), \u0027w\u0027)"},{"line_number":294,"context_line":"    f.write(configs)"},{"line_number":295,"context_line":"    f.flush()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_fe44abb8","line":292,"updated":"2014-05-12 12:18:14.000000000","message":"Unused method. Need to remove it.","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    return \u0027\\n\u0027.join(workernames)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def write_spark_configs(configs, filename):"},{"line_number":293,"context_line":"    f \u003d open(str(filename), \u0027w\u0027)"},{"line_number":294,"context_line":"    f.write(configs)"},{"line_number":295,"context_line":"    f.flush()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_6109d7dc","line":292,"in_reply_to":"7adec928_fe44abb8","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":8091,"name":"Trevor McKay","email":"tmckay@redhat.com","username":"tmckay"},"change_message_id":"14671b3f50fdef5fd1034ff443a58100fbe8d159","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if c.applicable_target \u003d\u003d service and c.name \u003d\u003d name:"},{"line_number":135,"context_line":"            return c.default_value"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    raise RuntimeError(\"Unable get parameter \u0027%s\u0027 from service %s\","},{"line_number":138,"context_line":"                       name, service)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_1d7268e5","line":137,"updated":"2014-05-21 21:41:08.000000000","message":"Minor, missing \"to\" after \"Unable\" in the exception message","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"290b2673df898cccf896fa2ea64908d6f503da8f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        if c.applicable_target \u003d\u003d service and c.name \u003d\u003d name:"},{"line_number":135,"context_line":"            return c.default_value"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    raise RuntimeError(\"Unable get parameter \u0027%s\u0027 from service %s\","},{"line_number":138,"context_line":"                       name, service)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_a5f5cecc","line":137,"in_reply_to":"7adec928_1d7268e5","updated":"2014-05-22 07:05:42.000000000","message":"Done","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"445419d79bd9f96cc8f57f6f61cb94f49cd84f00","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    return xml_configs"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"def generate_spark_env_configs(mastername, masterport, masterwebport\u003dNone,"},{"line_number":205,"context_line":"                               workercores\u003dNone, workermemory\u003dNone,"},{"line_number":206,"context_line":"                               workerport\u003dNone, workerwebport\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5adbc538_ffd94984","line":203,"updated":"2014-05-26 14:19:09.000000000","message":"I moved all the optional configuration logic here.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"}],"sahara/plugins/spark/plugin.py":[{"author":{"_account_id":7710,"name":"Sergey Reshetnyak","email":"sreshetniak@mirantis.com","username":"sreshetniak"},"change_message_id":"bf9a9ee5a495a4155ca8097e8027facd7d2cc21e","unresolved":false,"context_lines":[{"line_number":374,"context_line":"    def _get_scalable_processes(self):"},{"line_number":375,"context_line":"        return [\"datanode\", \"slave\"]"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _get_by_id(self, lst, id):"},{"line_number":378,"context_line":"        for obj in lst:"},{"line_number":379,"context_line":"            if obj.id \u003d\u003d id:"},{"line_number":380,"context_line":"                return obj"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_fe7cabb7","line":377,"updated":"2014-05-12 12:18:14.000000000","message":"this method is defined in sahara.utils.general module. Please, use it.","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"608b5c3fe65b6c7e4ed2102eba8d1a5e4b01d9ce","unresolved":false,"context_lines":[{"line_number":374,"context_line":"    def _get_scalable_processes(self):"},{"line_number":375,"context_line":"        return [\"datanode\", \"slave\"]"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"    def _get_by_id(self, lst, id):"},{"line_number":378,"context_line":"        for obj in lst:"},{"line_number":379,"context_line":"            if obj.id \u003d\u003d id:"},{"line_number":380,"context_line":"                return obj"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_995e6144","line":377,"in_reply_to":"7adec928_fe7cabb7","updated":"2014-05-12 15:46:26.000000000","message":"Done","commit_id":"8ae0c1e8591526e73f74823b5c7234929dcbf8fe"},{"author":{"_account_id":11453,"name":"Ximo Guanter","email":"ximo.guanter@gmail.com","username":"edrevo"},"change_message_id":"f580167d35884c7d0092a29852dc12b0ba68cd80","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def validate(self, cluster):"},{"line_number":66,"context_line":"        nn_count \u003d sum([ng.count for ng"},{"line_number":67,"context_line":"                        in utils.get_node_groups(cluster, \"namenode\")])"},{"line_number":68,"context_line":"        if nn_count !\u003d 1:"},{"line_number":69,"context_line":"            raise ex.InvalidComponentCountException(\"namenode\", 1, nn_count)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_cfdc8915","line":67,"updated":"2014-05-14 14:22:26.000000000","message":"Hello. I\u0027m just eavesdropping on this code review, so feel free to ignore my feedback.\n\nThe sum that happens here is being repeated in several places, so it might be worth extracting it as a function.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"1cbe5ef3270e42769f7fad0b1f640901c09eb661","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def validate(self, cluster):"},{"line_number":66,"context_line":"        nn_count \u003d sum([ng.count for ng"},{"line_number":67,"context_line":"                        in utils.get_node_groups(cluster, \"namenode\")])"},{"line_number":68,"context_line":"        if nn_count !\u003d 1:"},{"line_number":69,"context_line":"            raise ex.InvalidComponentCountException(\"namenode\", 1, nn_count)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_4b712a75","line":67,"in_reply_to":"7adec928_cfdc8915","updated":"2014-05-15 15:04:16.000000000","message":"It is a nice cleanup I will do in the next patchset, hopefully when I get more reviews.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":8091,"name":"Trevor McKay","email":"tmckay@redhat.com","username":"tmckay"},"change_message_id":"14671b3f50fdef5fd1034ff443a58100fbe8d159","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                 cluster.name)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        with remote.get_remote(nn_instance) as r:"},{"line_number":116,"context_line":"            r.execute_command(\"sudo -u hdfs hdfs dfs -mkdir -p /user/ubuntu/\")"},{"line_number":117,"context_line":"            r.execute_command(\"sudo -u hdfs hdfs dfs -chown ubuntu \\"},{"line_number":118,"context_line":"                              /user/ubuntu/\")"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_935e6711","line":116,"updated":"2014-05-21 21:41:08.000000000","message":"Why do we have a hardcoded \u0027ubuntu\u0027 user here and in other places?  Is it possible that this might be a user other than ubuntu?  Does this tie the plugin code too tightly to the cluster image?  Would it be better to make this user configurable?","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"290b2673df898cccf896fa2ea64908d6f503da8f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                 cluster.name)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        with remote.get_remote(nn_instance) as r:"},{"line_number":116,"context_line":"            r.execute_command(\"sudo -u hdfs hdfs dfs -mkdir -p /user/ubuntu/\")"},{"line_number":117,"context_line":"            r.execute_command(\"sudo -u hdfs hdfs dfs -chown ubuntu \\"},{"line_number":118,"context_line":"                              /user/ubuntu/\")"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_4535ea44","line":116,"in_reply_to":"7adec928_935e6711","updated":"2014-05-22 07:05:42.000000000","message":"No, currently is is not possible to have another user here, as this plugin works only with Spark-Ubuntu images created by the DIB.\nAlso these commands are executed only as a convenience for the user, so that the system can be used at first login without additional boilerplate configuration.\n\nThere is another instance of the ubuntu user below, where private ssh keys are installed. That instead is needed by Spark to start the cluster and is not an optional step.\n\nI will try to change the code to use $HOME and $USER.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":8091,"name":"Trevor McKay","email":"tmckay@redhat.com","username":"tmckay"},"change_message_id":"a1a2d36e51afda348c53d63cd979d9718b64ecc0","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        extra \u003d dict()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Generate and add Spark config"},{"line_number":139,"context_line":"        master_port \u003d cluster.cluster_configs.SPARK.SPARK_MASTER_PORT"},{"line_number":140,"context_line":"        master_web_port \u003d cluster.cluster_configs.SPARK.SPARK_MASTER_WEBUI_PORT"},{"line_number":141,"context_line":"        worker_cores \u003d cluster.cluster_configs.SPARK.SPARK_WORKER_CORES"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_2bb877e4","line":138,"updated":"2014-05-23 19:54:23.000000000","message":"So it looks to me from Spark docs that all of these values have sane defaults.  imho, passing cluster_configs as part of the cluster template shouldn\u0027t be required, cluster.cluster_configs \u003d\u003d {} should be allowed here.\n\nIn my experimenting with a simple template, I crashed here.  But, when I added a conditional and set all the vars to None if cluster_configs is empty, I got past it.\n\nMaybe test for cluster_configs.SPARK, and test for the presence of each of these configs (or use var \u003d cluster_configs.SPARK.get(name) or something)","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"445419d79bd9f96cc8f57f6f61cb94f49cd84f00","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        extra \u003d dict()"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # Generate and add Spark config"},{"line_number":139,"context_line":"        master_port \u003d cluster.cluster_configs.SPARK.SPARK_MASTER_PORT"},{"line_number":140,"context_line":"        master_web_port \u003d cluster.cluster_configs.SPARK.SPARK_MASTER_WEBUI_PORT"},{"line_number":141,"context_line":"        worker_cores \u003d cluster.cluster_configs.SPARK.SPARK_WORKER_CORES"}],"source_content_type":"text/x-python","patch_set":5,"id":"5adbc538_bfcfc1af","line":138,"in_reply_to":"7adec928_2bb877e4","updated":"2014-05-26 14:19:09.000000000","message":"I moved all this Spark env configuration logic in generate_spark_env_configs(), using the get_config_value() function and checking for None values.","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":8091,"name":"Trevor McKay","email":"tmckay@redhat.com","username":"tmckay"},"change_message_id":"5268cda00fbb4b6ab864383de8aed5dbb3cdc607","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                \u0027sudo chown -R $USER:$USER /etc/hadoop\u0027"},{"line_number":287,"context_line":"            )"},{"line_number":288,"context_line":"            r.write_files_to(files_hadoop)"},{"line_number":289,"context_line":"            r.write_files_to(files_spark)"},{"line_number":290,"context_line":"            r.write_files_to(files_init)"},{"line_number":291,"context_line":"            r.execute_command("},{"line_number":292,"context_line":"                \u0027sudo chmod 0500 /tmp/sahara-hadoop-init.sh\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_6eab6d1e","line":289,"updated":"2014-05-23 20:37:46.000000000","message":"In the image I used generated from DIB, the /opt/spark/conf dir is owned by hadoop without world right permission.  This caused a \"permission denied\" error at configuration time when the ubuntu user tried to create the files  in files_spark.\n\nI changed this call to \"r.write_files_to(files_spark, run_as_root\u003dTrue)\" which resulted in successful cluster start and the following directory structure on the node.  Note that slaves and spark-env.sh are owned by \u0027ubuntu\u0027.\n\nNot sure what the correct solution is here.\n\nubuntu@test-w-20823-001:~$ ls -l /opt/spark/conf/\ntotal 28\n\n-rw-rw-r-- 1 hadoop hadoop  303 Mar 27 05:36 fairscheduler.xml.template\n\n-rw-rw-r-- 1 hadoop hadoop  550 Mar 27 05:36 log4j.properties.template\n\n-rw-rw-r-- 1 hadoop hadoop 5308 Mar 27 05:36 metrics.properties.template\n\n-rw-rw-r-- 1 ubuntu ubuntu   33 May 23 20:22 slaves\n\n-rw-rw-r-- 1 ubuntu ubuntu   55 May 23 20:22 spark-env.sh\n\n-rwxrwxr-x 1 hadoop hadoop 1211 Mar 27 05:36 spark-env.sh.template\n\nubuntu@test-w-20823-001:~$ ls -ld /opt/spark/conf\n\ndrwxrwxr-x 2 hadoop hadoop 4096 May 23 20:22 /opt/spark/conf","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"142dbc5f31caf2f2b4322e19c1764c3656b0baf2","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        # start spark nodes"},{"line_number":114,"context_line":"        if sm_instance:"},{"line_number":115,"context_line":"            with remote.get_remote(sm_instance) as r:"},{"line_number":116,"context_line":"                #run.stop_spark(r)"},{"line_number":117,"context_line":"                run.start_spark_master(r)"},{"line_number":118,"context_line":"                LOG.info(\"Spark service at \u0027%s\u0027 has been started\","},{"line_number":119,"context_line":"                         sm_instance.hostname())"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_6e12f1b5","line":116,"updated":"2014-05-27 12:43:38.000000000","message":"I think this commented code could be removed","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8a2ae6ff88f0eae4789eec87ff95e18cb54b6fa9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        # start spark nodes"},{"line_number":114,"context_line":"        if sm_instance:"},{"line_number":115,"context_line":"            with remote.get_remote(sm_instance) as r:"},{"line_number":116,"context_line":"                #run.stop_spark(r)"},{"line_number":117,"context_line":"                run.start_spark_master(r)"},{"line_number":118,"context_line":"                LOG.info(\"Spark service at \u0027%s\u0027 has been started\","},{"line_number":119,"context_line":"                         sm_instance.hostname())"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_7431de0a","line":116,"in_reply_to":"3ae8d1ca_6e12f1b5","updated":"2014-05-27 14:19:51.000000000","message":"Done","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"142dbc5f31caf2f2b4322e19c1764c3656b0baf2","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            self._push_namenode_configs(cluster, r)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def _push_namenode_configs(self, cluster, r):"},{"line_number":309,"context_line":"        r.write_file_to(\u0027/etc/hadoop/dn.incl\u0027,"},{"line_number":310,"context_line":"                        utils.generate_fqdn_host_names("},{"line_number":311,"context_line":"                            utils.get_instances(cluster, \"datanode\")))"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_2da71251","line":309,"updated":"2014-05-27 12:43:38.000000000","message":"Seems to be it\u0027s unnecessary method because \u0027dn.incl\u0027 file is used to provide information about new nodes to be appended to cluster during scaling. But as I see scaling operation is not supported yet in this patch.","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8a2ae6ff88f0eae4789eec87ff95e18cb54b6fa9","unresolved":false,"context_lines":[{"line_number":306,"context_line":"            self._push_namenode_configs(cluster, r)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def _push_namenode_configs(self, cluster, r):"},{"line_number":309,"context_line":"        r.write_file_to(\u0027/etc/hadoop/dn.incl\u0027,"},{"line_number":310,"context_line":"                        utils.generate_fqdn_host_names("},{"line_number":311,"context_line":"                            utils.get_instances(cluster, \"datanode\")))"},{"line_number":312,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_a20c0896","line":309,"in_reply_to":"3ae8d1ca_2da71251","updated":"2014-05-27 14:19:51.000000000","message":"Yes, for now I am removing all the scaling code, this was left over.","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"142dbc5f31caf2f2b4322e19c1764c3656b0baf2","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        if sp_master:"},{"line_number":328,"context_line":"            port \u003d c_helper.get_config_value("},{"line_number":329,"context_line":"                \u0027Spark\u0027, \u0027Master webui port\u0027, cluster)"},{"line_number":330,"context_line":"            if (port is not None):"},{"line_number":331,"context_line":"                info[\u0027Spark\u0027] \u003d {"},{"line_number":332,"context_line":"                    \u0027Web UI\u0027: \u0027http://%s:%s\u0027 % (sp_master.management_ip, port)"},{"line_number":333,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_cd5dce4a","line":330,"updated":"2014-05-27 12:43:38.000000000","message":"Not sure if these parentheses are needed.","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8a2ae6ff88f0eae4789eec87ff95e18cb54b6fa9","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        if sp_master:"},{"line_number":328,"context_line":"            port \u003d c_helper.get_config_value("},{"line_number":329,"context_line":"                \u0027Spark\u0027, \u0027Master webui port\u0027, cluster)"},{"line_number":330,"context_line":"            if (port is not None):"},{"line_number":331,"context_line":"                info[\u0027Spark\u0027] \u003d {"},{"line_number":332,"context_line":"                    \u0027Web UI\u0027: \u0027http://%s:%s\u0027 % (sp_master.management_ip, port)"},{"line_number":333,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_972bcc81","line":330,"in_reply_to":"3ae8d1ca_cd5dce4a","updated":"2014-05-27 14:19:51.000000000","message":"Done","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"}],"sahara/plugins/spark/resources/README.rst":[{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"142dbc5f31caf2f2b4322e19c1764c3656b0baf2","unresolved":false,"context_lines":[{"line_number":8,"context_line":"* spark-env.sh.template,"},{"line_number":9,"context_line":"* topology.sh"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"These files are used by Sahara\u0027s plugin for Apache Spark and Cloudera HDFS."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"XML configs are used to expose default Hadoop configurations to the users through"},{"line_number":14,"context_line":"Sahara\u0027s REST API. It allows users to override some config values which will be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3ae8d1ca_8e301d58","line":11,"updated":"2014-05-27 12:43:38.000000000","message":"Could you please provide exact links to the origin configuration deafult files in Hadoop upstream like it was done for vanilla plugin:\n\nhttps://github.com/openstack/sahara/blob/master/sahara/plugins/vanilla/v1_2_1/resources/README.rst","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8a2ae6ff88f0eae4789eec87ff95e18cb54b6fa9","unresolved":false,"context_lines":[{"line_number":8,"context_line":"* spark-env.sh.template,"},{"line_number":9,"context_line":"* topology.sh"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"These files are used by Sahara\u0027s plugin for Apache Spark and Cloudera HDFS."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"XML configs are used to expose default Hadoop configurations to the users through"},{"line_number":14,"context_line":"Sahara\u0027s REST API. It allows users to override some config values which will be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3ae8d1ca_dddc9577","line":11,"in_reply_to":"3ae8d1ca_8e301d58","updated":"2014-05-27 14:19:51.000000000","message":"Done","commit_id":"7d4b5f444a3eb2b698cafd11ccd78c79e0f81403"}],"sahara/plugins/spark/resources/core-default.xml":[{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  \u003cdescription\u003eA comma separated list of class names. Each class in the list "},{"line_number":28,"context_line":"  must extend org.apache.hadoop.http.FilterInitializer. The corresponding "},{"line_number":29,"context_line":"  Filter will be initialized. Then, the Filter will be applied to all user "},{"line_number":30,"context_line":"  facing jsp and servlet web pages.  The ordering of the list defines the "},{"line_number":31,"context_line":"  ordering of the filters.\u003c/description\u003e"},{"line_number":32,"context_line":"\u003c/property\u003e"},{"line_number":33,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_46679c25","line":30,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on the preceeding 4 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"dcc08aedf6380c7c813f12cef60496283ca9139d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  \u003cdescription\u003eA comma separated list of class names. Each class in the list "},{"line_number":28,"context_line":"  must extend org.apache.hadoop.http.FilterInitializer. The corresponding "},{"line_number":29,"context_line":"  Filter will be initialized. Then, the Filter will be applied to all user "},{"line_number":30,"context_line":"  facing jsp and servlet web pages.  The ordering of the list defines the "},{"line_number":31,"context_line":"  ordering of the filters.\u003c/description\u003e"},{"line_number":32,"context_line":"\u003c/property\u003e"},{"line_number":33,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_69b1cbe0","line":30,"in_reply_to":"3ae8d1ca_46679c25","updated":"2014-05-28 21:15:11.000000000","message":"Mike, this file was taken from hadoop upstream and shouldn\u0027t be changed. Also we have documented rule for that:\n\nhttp://docs.openstack.org/developer/sahara/devref/development.guidelines.html#modification-of-upstream-files\n\nThe same for the hdfs-default.xml","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":8411,"name":"Andrew Lazarev","email":"alazarev@mirantis.com","username":"alazarev"},"change_message_id":"6e3879cab53ae138a0c81ad61a6a75f7135117ea","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  \u003cdescription\u003eA comma separated list of class names. Each class in the list "},{"line_number":28,"context_line":"  must extend org.apache.hadoop.http.FilterInitializer. The corresponding "},{"line_number":29,"context_line":"  Filter will be initialized. Then, the Filter will be applied to all user "},{"line_number":30,"context_line":"  facing jsp and servlet web pages.  The ordering of the list defines the "},{"line_number":31,"context_line":"  ordering of the filters.\u003c/description\u003e"},{"line_number":32,"context_line":"\u003c/property\u003e"},{"line_number":33,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_dae7fb3e","line":30,"in_reply_to":"3ae8d1ca_69b1cbe0","updated":"2014-05-28 22:49:20.000000000","message":"Agree with Alex. No changes in external files.","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":116,"context_line":"  page size (4096 on Intel x86), and it determines how much data is"},{"line_number":117,"context_line":"  buffered during read and write operations.\u003c/description\u003e"},{"line_number":118,"context_line":"\u003c/property\u003e"},{"line_number":119,"context_line":"  "},{"line_number":120,"context_line":"\u003cproperty\u003e"},{"line_number":121,"context_line":"  \u003cname\u003eio.bytes.per.checksum\u003c/name\u003e"},{"line_number":122,"context_line":"  \u003cvalue\u003e512\u003c/value\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_464ebc97","line":119,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":135,"context_line":"\u003cproperty\u003e"},{"line_number":136,"context_line":"  \u003cname\u003eio.compression.codecs\u003c/name\u003e"},{"line_number":137,"context_line":"  \u003cvalue\u003eorg.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec\u003c/value\u003e"},{"line_number":138,"context_line":"  \u003cdescription\u003eA list of the compression codec classes that can be used "},{"line_number":139,"context_line":"               for compression/decompression.\u003c/description\u003e"},{"line_number":140,"context_line":"\u003c/property\u003e"},{"line_number":141,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_8648c488","line":138,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":291,"context_line":"\u003cproperty\u003e"},{"line_number":292,"context_line":"  \u003cname\u003efs.s3.maxRetries\u003c/name\u003e"},{"line_number":293,"context_line":"  \u003cvalue\u003e4\u003c/value\u003e"},{"line_number":294,"context_line":"  \u003cdescription\u003eThe maximum number of retries for reading or writing files to S3, "},{"line_number":295,"context_line":"  before we signal failure to the application."},{"line_number":296,"context_line":"  \u003c/description\u003e"},{"line_number":297,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a65ea043","line":294,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":311,"context_line":"  to 10GB. This will act as a soft limit on the cache directory for out of band data."},{"line_number":312,"context_line":"  \u003c/description\u003e"},{"line_number":313,"context_line":"\u003c/property\u003e"},{"line_number":314,"context_line":"            "},{"line_number":315,"context_line":"\u003cproperty\u003e"},{"line_number":316,"context_line":"  \u003cname\u003eio.seqfile.compress.blocksize\u003c/name\u003e"},{"line_number":317,"context_line":"  \u003cvalue\u003e1000000\u003c/value\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_4635dcf5","line":314,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":315,"context_line":"\u003cproperty\u003e"},{"line_number":316,"context_line":"  \u003cname\u003eio.seqfile.compress.blocksize\u003c/name\u003e"},{"line_number":317,"context_line":"  \u003cvalue\u003e1000000\u003c/value\u003e"},{"line_number":318,"context_line":"  \u003cdescription\u003eThe minimum block size for compression in block compressed "},{"line_number":319,"context_line":"          SequenceFiles."},{"line_number":320,"context_line":"  \u003c/description\u003e"},{"line_number":321,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a625c0c3","line":318,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":331,"context_line":"\u003cproperty\u003e"},{"line_number":332,"context_line":"  \u003cname\u003eio.seqfile.sorter.recordlimit\u003c/name\u003e"},{"line_number":333,"context_line":"  \u003cvalue\u003e1000000\u003c/value\u003e"},{"line_number":334,"context_line":"  \u003cdescription\u003eThe limit on number of records to be kept in memory in a spill "},{"line_number":335,"context_line":"          in SequenceFiles.Sorter"},{"line_number":336,"context_line":"  \u003c/description\u003e"},{"line_number":337,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_c6200cb3","line":334,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":409,"context_line":"\u003cproperty\u003e"},{"line_number":410,"context_line":"  \u003cname\u003eipc.server.tcpnodelay\u003c/name\u003e"},{"line_number":411,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":412,"context_line":"  \u003cdescription\u003eTurn on/off Nagle\u0027s algorithm for the TCP socket connection on "},{"line_number":413,"context_line":"  the server. Setting to true disables the algorithm and may decrease latency"},{"line_number":414,"context_line":"  with a cost of more/smaller packets. "},{"line_number":415,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_6613b866","line":412,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":411,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":412,"context_line":"  \u003cdescription\u003eTurn on/off Nagle\u0027s algorithm for the TCP socket connection on "},{"line_number":413,"context_line":"  the server. Setting to true disables the algorithm and may decrease latency"},{"line_number":414,"context_line":"  with a cost of more/smaller packets. "},{"line_number":415,"context_line":"  \u003c/description\u003e"},{"line_number":416,"context_line":"\u003c/property\u003e"},{"line_number":417,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a60ce043","line":414,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":418,"context_line":"\u003cproperty\u003e"},{"line_number":419,"context_line":"  \u003cname\u003eipc.client.tcpnodelay\u003c/name\u003e"},{"line_number":420,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":421,"context_line":"  \u003cdescription\u003eTurn on/off Nagle\u0027s algorithm for the TCP socket connection on "},{"line_number":422,"context_line":"  the client. Setting to true disables the algorithm and may decrease latency"},{"line_number":423,"context_line":"  with a cost of more/smaller packets. "},{"line_number":424,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_c6072c1c","line":421,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":420,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":421,"context_line":"  \u003cdescription\u003eTurn on/off Nagle\u0027s algorithm for the TCP socket connection on "},{"line_number":422,"context_line":"  the client. Setting to true disables the algorithm and may decrease latency"},{"line_number":423,"context_line":"  with a cost of more/smaller packets. "},{"line_number":424,"context_line":"  \u003c/description\u003e"},{"line_number":425,"context_line":"\u003c/property\u003e"},{"line_number":426,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_690aab22","line":423,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":432,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":433,"context_line":"  \u003cdescription\u003e If set to true, the web interfaces of JT and NN may contain "},{"line_number":434,"context_line":"                actions, such as kill job, delete file, etc., that should "},{"line_number":435,"context_line":"                not be exposed to public. Enable this option if the interfaces "},{"line_number":436,"context_line":"                are only reachable by those who have the right authorization."},{"line_number":437,"context_line":"  \u003c/description\u003e"},{"line_number":438,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_09192779","line":435,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on preceeding 3 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":498,"context_line":"\u003cproperty\u003e"},{"line_number":499,"context_line":"  \u003cname\u003etopology.script.number.args\u003c/name\u003e"},{"line_number":500,"context_line":"  \u003cvalue\u003e100\u003c/value\u003e"},{"line_number":501,"context_line":"  \u003cdescription\u003e The max number of args that the script configured with "},{"line_number":502,"context_line":"    topology.script.file.name should be run with. Each arg is an"},{"line_number":503,"context_line":"    IP address."},{"line_number":504,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_2927c3b7","line":501,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"}],"sahara/plugins/spark/resources/hdfs-default.xml":[{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":119,"context_line":" \u003cproperty\u003e"},{"line_number":120,"context_line":"  \u003cname\u003edfs.datanode.dns.interface\u003c/name\u003e"},{"line_number":121,"context_line":"  \u003cvalue\u003edefault\u003c/value\u003e"},{"line_number":122,"context_line":"  \u003cdescription\u003eThe name of the Network Interface from which a data node should "},{"line_number":123,"context_line":"  report its IP address."},{"line_number":124,"context_line":"  \u003c/description\u003e"},{"line_number":125,"context_line":" \u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_892457b0","line":122,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  report its IP address."},{"line_number":124,"context_line":"  \u003c/description\u003e"},{"line_number":125,"context_line":" \u003c/property\u003e"},{"line_number":126,"context_line":" "},{"line_number":127,"context_line":"\u003cproperty\u003e"},{"line_number":128,"context_line":"  \u003cname\u003edfs.datanode.dns.nameserver\u003c/name\u003e"},{"line_number":129,"context_line":"  \u003cvalue\u003edefault\u003c/value\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a93af3ca","line":126,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":134,"context_line":" \u003c/property\u003e"},{"line_number":135,"context_line":" "},{"line_number":136,"context_line":" "},{"line_number":137,"context_line":" "},{"line_number":138,"context_line":"\u003cproperty\u003e"},{"line_number":139,"context_line":"  \u003cname\u003edfs.replication.considerLoad\u003c/name\u003e"},{"line_number":140,"context_line":"  \u003cvalue\u003etrue\u003c/value\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_895b772d","line":137,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on preceeding 3 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":169,"context_line":"  \u003cvalue\u003e${dfs.name.dir}\u003c/value\u003e"},{"line_number":170,"context_line":"  \u003cdescription\u003eDetermines where on the local filesystem the DFS name node"},{"line_number":171,"context_line":"      should store the transaction (edits) file. If this is a comma-delimited list"},{"line_number":172,"context_line":"      of directories then the transaction file is replicated in all of the "},{"line_number":173,"context_line":"      directories, for redundancy. Default value is same as dfs.name.dir"},{"line_number":174,"context_line":"  \u003c/description\u003e"},{"line_number":175,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_0947674c","line":172,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":257,"context_line":"  \u003cname\u003edfs.datanode.data.dir.perm\u003c/name\u003e"},{"line_number":258,"context_line":"  \u003cvalue\u003e755\u003c/value\u003e"},{"line_number":259,"context_line":"  \u003cdescription\u003ePermissions for the directories on on the local filesystem where "},{"line_number":260,"context_line":"  the DFS data node store its blocks. The permissions can either be octal or "},{"line_number":261,"context_line":"  symbolic.\u003c/description\u003e"},{"line_number":262,"context_line":"\u003c/property\u003e"},{"line_number":263,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_897297ab","line":260,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on preceeding 2 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":264,"context_line":"\u003cproperty\u003e"},{"line_number":265,"context_line":"  \u003cname\u003edfs.replication\u003c/name\u003e"},{"line_number":266,"context_line":"  \u003cvalue\u003e3\u003c/value\u003e"},{"line_number":267,"context_line":"  \u003cdescription\u003eDefault block replication. "},{"line_number":268,"context_line":"  The actual number of replications can be specified when the file is created."},{"line_number":269,"context_line":"  The default is used if replication is not specified in create time."},{"line_number":270,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a96833bb","line":267,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":273,"context_line":"\u003cproperty\u003e"},{"line_number":274,"context_line":"  \u003cname\u003edfs.replication.max\u003c/name\u003e"},{"line_number":275,"context_line":"  \u003cvalue\u003e512\u003c/value\u003e"},{"line_number":276,"context_line":"  \u003cdescription\u003eMaximal block replication. "},{"line_number":277,"context_line":"  \u003c/description\u003e"},{"line_number":278,"context_line":"\u003c/property\u003e"},{"line_number":279,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_095e8712","line":276,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":280,"context_line":"\u003cproperty\u003e"},{"line_number":281,"context_line":"  \u003cname\u003edfs.replication.min\u003c/name\u003e"},{"line_number":282,"context_line":"  \u003cvalue\u003e1\u003c/value\u003e"},{"line_number":283,"context_line":"  \u003cdescription\u003eMinimal block replication. "},{"line_number":284,"context_line":"  \u003c/description\u003e"},{"line_number":285,"context_line":"\u003c/property\u003e"},{"line_number":286,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_69a62b12","line":283,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":299,"context_line":"\u003cproperty\u003e"},{"line_number":300,"context_line":"  \u003cname\u003edfs.client.block.write.retries\u003c/name\u003e"},{"line_number":301,"context_line":"  \u003cvalue\u003e3\u003c/value\u003e"},{"line_number":302,"context_line":"  \u003cdescription\u003eThe number of retries for writing blocks to the data nodes, "},{"line_number":303,"context_line":"  before we signal failure to the application."},{"line_number":304,"context_line":"  \u003c/description\u003e"},{"line_number":305,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_c9aadfd1","line":302,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":331,"context_line":"  \u003cname\u003edfs.safemode.threshold.pct\u003c/name\u003e"},{"line_number":332,"context_line":"  \u003cvalue\u003e0.999f\u003c/value\u003e"},{"line_number":333,"context_line":"  \u003cdescription\u003e"},{"line_number":334,"context_line":"    Specifies the percentage of blocks that should satisfy "},{"line_number":335,"context_line":"    the minimal replication requirement defined by dfs.replication.min."},{"line_number":336,"context_line":"    Values less than or equal to 0 mean not to wait for any particular"},{"line_number":337,"context_line":"    percentage of blocks before exiting safemode."}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_29834357","line":334,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":338,"context_line":"    Values greater than 1 will make safe mode permanent."},{"line_number":339,"context_line":"  \u003c/description\u003e"},{"line_number":340,"context_line":" \u003c/property\u003e"},{"line_number":341,"context_line":" "},{"line_number":342,"context_line":"\u003cproperty\u003e"},{"line_number":343,"context_line":"  \u003cname\u003edfs.namenode.safemode.min.datanodes\u003c/name\u003e"},{"line_number":344,"context_line":"  \u003cvalue\u003e0\u003c/value\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a9967392","line":341,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":357,"context_line":"  \u003cname\u003edfs.safemode.extension\u003c/name\u003e"},{"line_number":358,"context_line":"  \u003cvalue\u003e30000\u003c/value\u003e"},{"line_number":359,"context_line":"  \u003cdescription\u003e"},{"line_number":360,"context_line":"    Determines extension of safe mode in milliseconds "},{"line_number":361,"context_line":"    after the threshold level is reached."},{"line_number":362,"context_line":"  \u003c/description\u003e"},{"line_number":363,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_29ea630f","line":360,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":388,"context_line":"  not permitted to connect to the namenode.  The full pathname of the"},{"line_number":389,"context_line":"  file must be specified.  If the value is empty, no hosts are"},{"line_number":390,"context_line":"  excluded.\u003c/description\u003e"},{"line_number":391,"context_line":"\u003c/property\u003e "},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"\u003cproperty\u003e"},{"line_number":394,"context_line":"  \u003cname\u003edfs.max.objects\u003c/name\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_69f46bf2","line":391,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":402,"context_line":"\u003cproperty\u003e"},{"line_number":403,"context_line":"  \u003cname\u003edfs.namenode.decommission.interval\u003c/name\u003e"},{"line_number":404,"context_line":"  \u003cvalue\u003e30\u003c/value\u003e"},{"line_number":405,"context_line":"  \u003cdescription\u003eNamenode periodicity in seconds to check if decommission is "},{"line_number":406,"context_line":"  complete.\u003c/description\u003e"},{"line_number":407,"context_line":"\u003c/property\u003e"},{"line_number":408,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a9dd9372","line":405,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":416,"context_line":"\u003cproperty\u003e"},{"line_number":417,"context_line":"  \u003cname\u003edfs.replication.interval\u003c/name\u003e"},{"line_number":418,"context_line":"  \u003cvalue\u003e3\u003c/value\u003e"},{"line_number":419,"context_line":"  \u003cdescription\u003eThe periodicity in seconds with which the namenode computes "},{"line_number":420,"context_line":"  repliaction work for datanodes. \u003c/description\u003e"},{"line_number":421,"context_line":"\u003c/property\u003e"},{"line_number":422,"context_line":""}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_49d40f47","line":419,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":423,"context_line":"\u003cproperty\u003e"},{"line_number":424,"context_line":"  \u003cname\u003edfs.access.time.precision\u003c/name\u003e"},{"line_number":425,"context_line":"  \u003cvalue\u003e3600000\u003c/value\u003e"},{"line_number":426,"context_line":"  \u003cdescription\u003eThe access time for HDFS file is precise upto this value. "},{"line_number":427,"context_line":"               The default value is 1 hour. Setting a value of 0 disables"},{"line_number":428,"context_line":"               access times for HDFS."},{"line_number":429,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_69cb8ba5","line":426,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":441,"context_line":"\u003cproperty\u003e"},{"line_number":442,"context_line":"  \u003cname\u003edfs.namenode.delegation.key.update-interval\u003c/name\u003e"},{"line_number":443,"context_line":"  \u003cvalue\u003e86400000\u003c/value\u003e"},{"line_number":444,"context_line":"  \u003cdescription\u003eThe update interval for master key for delegation tokens "},{"line_number":445,"context_line":"       in the namenode in milliseconds."},{"line_number":446,"context_line":"  \u003c/description\u003e"},{"line_number":447,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_2938a39f","line":444,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":449,"context_line":"\u003cproperty\u003e"},{"line_number":450,"context_line":"  \u003cname\u003edfs.namenode.delegation.token.max-lifetime\u003c/name\u003e"},{"line_number":451,"context_line":"  \u003cvalue\u003e604800000\u003c/value\u003e"},{"line_number":452,"context_line":"  \u003cdescription\u003eThe maximum lifetime in milliseconds for which a delegation "},{"line_number":453,"context_line":"      token is valid."},{"line_number":454,"context_line":"  \u003c/description\u003e"},{"line_number":455,"context_line":"\u003c/property\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_493b2f9c","line":452,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":646,"context_line":"  \u003cvalue\u003efalse\u003c/value\u003e"},{"line_number":647,"context_line":"  \u003cdescription\u003e"},{"line_number":648,"context_line":"    Indicate whether or not to avoid reading from \u0026quot;stale\u0026quot; datanodes whose"},{"line_number":649,"context_line":"    heartbeat messages have not been received by the namenode "},{"line_number":650,"context_line":"    for more than a specified time interval. Stale datanodes will be"},{"line_number":651,"context_line":"    moved to the end of the node list returned for reading. See"},{"line_number":652,"context_line":"    dfs.namenode.avoid.write.stale.datanode for a similar setting for writes."}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_a94bd329","line":649,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    heartbeat messages have not been received by the namenode "},{"line_number":662,"context_line":"    for more than a specified time interval. Writes will avoid using "},{"line_number":663,"context_line":"    stale datanodes unless more than a configured ratio "},{"line_number":664,"context_line":"    (dfs.namenode.write.stale.datanode.ratio) of datanodes are marked as "},{"line_number":665,"context_line":"    stale. See dfs.namenode.avoid.read.stale.datanode for a similar setting"},{"line_number":666,"context_line":"    for reads."},{"line_number":667,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_095127d8","line":664,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on preceeding 5 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"d97c5359ef68be7034b2c727a66eda4ae48631ab","unresolved":false,"context_lines":[{"line_number":676,"context_line":"    more than this time interval, the datanode will be marked and treated "},{"line_number":677,"context_line":"    as \"stale\" by default. The stale interval cannot be too small since "},{"line_number":678,"context_line":"    otherwise this may cause too frequent change of stale states. "},{"line_number":679,"context_line":"    We thus set a minimum stale interval value (the default value is 3 times "},{"line_number":680,"context_line":"    of heartbeat interval) and guarantee that the stale interval cannot be less"},{"line_number":681,"context_line":"    than the minimum value."},{"line_number":682,"context_line":"  \u003c/description\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"3ae8d1ca_6959cbfd","line":679,"updated":"2014-05-28 21:09:14.000000000","message":"whitespace on preceeding 6 lines","commit_id":"591c5eb1ee1bf40f48b0c00b60794a957b0f06c5"}],"sahara/plugins/spark/scaling.py":[{"author":{"_account_id":8091,"name":"Trevor McKay","email":"tmckay@redhat.com","username":"tmckay"},"change_message_id":"14671b3f50fdef5fd1034ff443a58100fbe8d159","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        slavenames \u003d []"},{"line_number":30,"context_line":"        for slave in survived_inst:"},{"line_number":31,"context_line":"            slavenames.append(slave.hostname())"},{"line_number":32,"context_line":"        config_slaves \u003d c_helper.generate_spark_slaves_configs(slavenames)"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        config_slaves \u003d \"\\n\""},{"line_number":35,"context_line":"    slave_content \u003d c_helper.generate_spark_slaves_configs(config_slaves)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_786b7a85","line":32,"updated":"2014-05-21 21:41:08.000000000","message":"If I understand this correctly, there is a mistake here.  \n\nThe first call to generate_spark_slaves_configs(slavenames) will set config_slaves to a string containing slavenames separated by \u0027\\n\u0027.\n\nBut we call generate_spark_slaves_configs(config_slaves) again, which will set slave_content to a string with every character separated by \u0027\\n\u0027.  Is that really intended?","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"290b2673df898cccf896fa2ea64908d6f503da8f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        slavenames \u003d []"},{"line_number":30,"context_line":"        for slave in survived_inst:"},{"line_number":31,"context_line":"            slavenames.append(slave.hostname())"},{"line_number":32,"context_line":"        config_slaves \u003d c_helper.generate_spark_slaves_configs(slavenames)"},{"line_number":33,"context_line":"    else:"},{"line_number":34,"context_line":"        config_slaves \u003d \"\\n\""},{"line_number":35,"context_line":"    slave_content \u003d c_helper.generate_spark_slaves_configs(config_slaves)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_e54516b4","line":32,"in_reply_to":"7adec928_786b7a85","updated":"2014-05-22 07:05:42.000000000","message":"I think I will remove the scaling functionality for now, it is mostly untested and there is already enough code to review.\n\nAnyway, yes, it is a bug: thanks!","commit_id":"23c598cde92f65a26138871ec3523b3fdb269e95"}],"savanna/plugins/base.py":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"f3b3e0a18201191dd6cf5e3b6d1824332d04cd23","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"opts \u003d ["},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027plugins\u0027,"},{"line_number":30,"context_line":"                default\u003d[\u0027vanilla\u0027, \u0027hdp\u0027, \u0027spark\u0027],"},{"line_number":31,"context_line":"                help\u003d\u0027List of plugins to be loaded. Savanna preserves the \u0027"},{"line_number":32,"context_line":"                     \u0027order of the list when returning it.\u0027),"},{"line_number":33,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FEc0%3D","line":30,"updated":"2014-02-17 10:32:13.000000000","message":"The same common as in the sample config file.","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8bc1b555227686470a3063fc6483ac8467c1c31c","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"opts \u003d ["},{"line_number":29,"context_line":"    cfg.ListOpt(\u0027plugins\u0027,"},{"line_number":30,"context_line":"                default\u003d[\u0027vanilla\u0027, \u0027hdp\u0027, \u0027spark\u0027],"},{"line_number":31,"context_line":"                help\u003d\u0027List of plugins to be loaded. Savanna preserves the \u0027"},{"line_number":32,"context_line":"                     \u0027order of the list when returning it.\u0027),"},{"line_number":33,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FDZU%3D","line":30,"in_reply_to":"AAAAUX%2F%2FEc0%3D","updated":"2014-02-21 10:36:01.000000000","message":"Done","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"}],"savanna/plugins/general/exceptions.py":[{"author":{"_account_id":6786,"name":"Sergey Lukjanov","email":"me@slukjanov.name","username":"slukjanov"},"change_message_id":"f3b3e0a18201191dd6cf5e3b6d1824332d04cd23","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        self.code \u003d \"NOT_SINGLE_NAME_NODE\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class NotSingleMasterNodeException(e.SavannaException):"},{"line_number":27,"context_line":"    def __init__(self, nn_count):"},{"line_number":28,"context_line":"        self.message \u003d (\"Spark cluster should contain only 1 master node \""},{"line_number":29,"context_line":"                        \"instance. Actual master node count is %s\" % nn_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FEXY%3D","line":26,"updated":"2014-02-17 10:32:13.000000000","message":"I think that you should rebase on https://review.openstack.org/#/c/73602/","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"},{"author":{"_account_id":9940,"name":"Daniele Venzano","email":"venza@brownhat.org","username":"venza"},"change_message_id":"8bc1b555227686470a3063fc6483ac8467c1c31c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        self.code \u003d \"NOT_SINGLE_NAME_NODE\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class NotSingleMasterNodeException(e.SavannaException):"},{"line_number":27,"context_line":"    def __init__(self, nn_count):"},{"line_number":28,"context_line":"        self.message \u003d (\"Spark cluster should contain only 1 master node \""},{"line_number":29,"context_line":"                        \"instance. Actual master node count is %s\" % nn_count)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2BaUQ%3D","line":26,"in_reply_to":"AAAAUX%2F%2FEXY%3D","updated":"2014-02-21 10:36:01.000000000","message":"I will when it is merged.","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"}],"savanna/plugins/spark/plugin.py":[{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"05165c1058f0425596a9f926ba2e9c557cf2da3b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \"2.0.0-cdh4.5.0 cluster without any management consoles.\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_versions(self):"},{"line_number":53,"context_line":"        return [\u00272.0.0_cdh4.5.0\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_configs(self, hadoop_version):"},{"line_number":56,"context_line":"        return c_helper.get_plugin_configs()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVX%2F%2F3sM%3D","line":53,"updated":"2014-02-27 17:26:04.000000000","message":"it seems to me here should be Spark version, not CDH.","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"}],"savanna/plugins/spark/resources/README.rst":[{"author":{"_account_id":7125,"name":"Alexander Ignatov","email":"aignatov@mirantis.com","username":"aignatov"},"change_message_id":"05165c1058f0425596a9f926ba2e9c557cf2da3b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"and Cloudera HDFS CDH 4.5."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Files were taken from here:"},{"line_number":15,"context_line":"https://github.com/apache/hadoop-common/blob/release-1.2.1/src/hdfs/hdfs-default.xml"},{"line_number":16,"context_line":"https://github.com/apache/hadoop-common/blob/release-1.2.1/src/core/core-default.xml"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"XML configs are used to expose default Hadoop configurations to the users through"}],"source_content_type":"text/x-rst","patch_set":1,"id":"AAAAVX%2F%2F3qM%3D","line":15,"updated":"2014-02-27 17:26:04.000000000","message":"I think this and the next link are incorrect since you are using CDH 4.5, and hdfs-default.xml and core-default.xml should be taken from here.","commit_id":"aaa10f90e17f7c0244fc54c9b746c66a750974b3"}]}
