From a6df0c1dfc3d608cbfd74b53df0d70f1d72fb541 Mon Sep 17 00:00:00 2001 From: artemosadchiy Date: Fri, 9 Jan 2015 15:27:41 +0200 Subject: [PATCH] Refactor MapR plugin for Sahara Implements: blueprint mapr-refactor Change-Id: Ib4385845a00aab2506dddccb9e6a6f3297a5622d --- MANIFEST.in | 28 +- requirements.txt | 1 + .../mapr/abstract}/__init__.py | 0 .../plugins/mapr/abstract/cluster_context.py | 109 +++ .../mapr/abstract/cluster_validator.py | 29 + sahara/plugins/mapr/abstract/configurer.py | 29 + sahara/plugins/mapr/abstract/node_manager.py | 37 + .../plugins/mapr/abstract/version_handler.py | 73 ++ .../mapr/base}/__init__.py | 0 .../mapr/base/base_cluster_configurer.py | 324 ++++++++ .../plugins/mapr/base/base_cluster_context.py | 332 ++++++++ .../mapr/base/base_cluster_validator.py | 35 + sahara/plugins/mapr/base/base_edp_engine.py | 86 ++ sahara/plugins/mapr/base/base_node_manager.py | 184 +++++ .../plugins/mapr/base/base_version_handler.py | 126 +++ sahara/plugins/mapr/domain/__init__.py | 0 .../plugins/mapr/domain/configuration_file.py | 132 +++ sahara/plugins/mapr/domain/distro.py | 81 ++ sahara/plugins/mapr/domain/node_process.py | 62 ++ sahara/plugins/mapr/domain/service.py | 224 ++++++ sahara/plugins/mapr/plugin.py | 51 +- .../plugins/mapr/resources/add_mapr_repo.sh | 51 ++ .../resources/create_disk_list_file.sh | 0 sahara/plugins/mapr/resources/install_java.sh | 58 ++ .../plugins/mapr/resources/install_mysql.sh | 23 + .../mapr/{util => }/resources/topology.sh | 0 sahara/plugins/mapr/services/__init__.py | 0 .../plugins/mapr/services/hbase/__init__.py | 0 sahara/plugins/mapr/services/hbase/hbase.py | 82 ++ .../hbase/resources/hbase-default.json | 26 + sahara/plugins/mapr/services/hive/__init__.py | 0 sahara/plugins/mapr/services/hive/hive.py | 128 +++ .../services/hive/resources/hive-default.xml | 56 ++ .../plugins/mapr/services/httpfs/__init__.py | 0 sahara/plugins/mapr/services/httpfs/httpfs.py | 45 ++ .../httpfs/resources/httpfs-default.json | 12 + .../plugins/mapr/services/mahout/__init__.py | 0 sahara/plugins/mapr/services/mahout/mahout.py | 39 + .../mapr/services/management/__init__.py | 0 .../mapr/services/management/management.py | 60 ++ .../mapr/services/mapreduce/__init__.py | 0 .../mapr/services/mapreduce/mapreduce.py | 138 ++++ .../resources/mapreduce-cluster.json | 91 +++ .../plugins/mapr/services/maprfs/__init__.py | 0 sahara/plugins/mapr/services/maprfs/maprfs.py | 140 ++++ .../maprfs/resources}/cldb.conf | 0 .../plugins/mapr/services/mysql/__init__.py | 0 sahara/plugins/mapr/services/mysql/mysql.py | 208 +++++ .../mysql/resources/create_database.sql | 7 + .../services/mysql/resources/grant_access.sql | 6 + .../services/mysql/resources/hive_schema.sql | 2 + .../plugins/mapr/services/oozie/__init__.py | 0 sahara/plugins/mapr/services/oozie/oozie.py | 115 +++ .../oozie/resources/oozie-default.json | 28 + sahara/plugins/mapr/services/pig/__init__.py | 0 sahara/plugins/mapr/services/pig/pig.py | 38 + .../plugins/mapr/services/swift/__init__.py | 0 .../swift/resources/hadoop-swift-latest.jar | Bin 0 -> 117363 bytes .../resources/jackson-core-asl-1.9.13.jar | Bin 0 -> 232248 bytes .../resources/jackson-mapper-asl-1.9.13.jar | Bin 0 -> 780664 bytes .../swift/resources/swift-default.json | 61 ++ sahara/plugins/mapr/services/swift/swift.py | 48 ++ sahara/plugins/mapr/services/yarn/__init__.py | 0 .../services/yarn/resources/yarn-cluster.json | 16 + .../services/yarn/resources/yarn-node.json | 23 + sahara/plugins/mapr/services/yarn/yarn.py | 123 +++ sahara/plugins/mapr/util/attr_dict.py | 20 - sahara/plugins/mapr/util/cluster_helper.py | 78 -- sahara/plugins/mapr/util/cluster_info.py | 76 -- sahara/plugins/mapr/util/commands.py | 19 + sahara/plugins/mapr/util/config.py | 110 --- sahara/plugins/mapr/util/config_file_utils.py | 81 -- sahara/plugins/mapr/util/config_utils.py | 77 -- sahara/plugins/mapr/util/dict_utils.py | 124 --- sahara/plugins/mapr/util/func_utils.py | 167 ---- sahara/plugins/mapr/util/general.py | 90 +++ sahara/plugins/mapr/util/maprfs_helper.py | 36 +- sahara/plugins/mapr/util/names.py | 41 - sahara/plugins/mapr/util/plugin_spec.py | 198 ----- .../mapr/util/resources/hadoop_version | 3 - .../mapr/util/resources/waiting_script.sh | 9 - sahara/plugins/mapr/util/run_scripts.py | 72 -- sahara/plugins/mapr/util/scaling.py | 145 ---- sahara/plugins/mapr/util/start_helper.py | 178 ---- sahara/plugins/mapr/util/validation_utils.py | 226 +++--- sahara/plugins/mapr/util/wrapper.py | 28 - .../mapr/versions/base_cluster_configurer.py | 167 ---- sahara/plugins/mapr/versions/base_context.py | 173 ---- .../mapr/versions/base_version_handler.py | 115 --- sahara/plugins/mapr/versions/edp_engine.py | 76 -- .../versions/v3_1_1/cluster_configurer.py | 24 - .../plugins/mapr/versions/v3_1_1/context.py | 81 ++ .../mapr/versions/v3_1_1/edp_engine.py | 22 + .../v3_1_1/resources/default/core-site.xml | 57 -- .../versions/v3_1_1/resources/default/exports | 30 - .../default/hadoop-metrics.properties | 41 - .../v3_1_1/resources/default/mfs.conf | 16 - .../v3_1_1/resources/default/nfsserver.conf | 43 - .../v3_1_1/resources/plugin_spec.json | 203 ----- .../mapr/versions/v3_1_1/start_utils.py | 34 - .../mapr/versions/v3_1_1/version_handler.py | 151 ++-- .../v4_0_1_mrv1/cluster_configurer.py | 52 -- .../mapr/versions/v4_0_1_mrv1/context.py | 72 ++ .../v4_0_1_mrv1/resources/default/cldb.conf | 63 -- .../resources/default/core-site.xml | 57 -- .../v4_0_1_mrv1/resources/default/exports | 30 - .../default/hadoop-metrics.properties | 41 - .../v4_0_1_mrv1/resources/default/mfs.conf | 16 - .../resources/default/nfsserver.conf | 43 - .../v4_0_1_mrv1/resources/plugin_spec.json | 203 ----- .../versions/v4_0_1_mrv1/version_handler.py | 149 ++-- .../v4_0_1_mrv2/cluster_configurer.py | 24 - .../mapr/versions/v4_0_1_mrv2/context.py | 87 ++ .../v4_0_1_mrv2/resources/default/cldb.conf | 63 -- .../resources/default/core-site.xml | 57 -- .../v4_0_1_mrv2/resources/default/exports | 30 - .../default/hadoop-metrics.properties | 41 - .../v4_0_1_mrv2/resources/default/mfs.conf | 16 - .../resources/default/nfsserver.conf | 43 - .../v4_0_1_mrv2/resources/plugin_spec.json | 203 ----- .../versions/v4_0_1_mrv2/version_handler.py | 145 ++-- .../mapr/versions/version_handler_factory.py | 19 +- sahara/tests/integration/configs/config.py | 478 ++++++----- .../tests/gating/test_mapr4_1_gating.py | 223 ----- .../tests/gating/test_mapr4_2_gating.py | 223 ----- .../tests/gating/test_mapr_311_gating.py | 70 ++ .../tests/gating/test_mapr_401mrv1_gating.py | 66 ++ .../tests/gating/test_mapr_401mrv2_gating.py | 53 ++ .../tests/gating/test_mapr_gating.py | 760 +++++++++++------- sahara/tests/integration/tests/map_reduce.py | 21 +- .../resources/mapr/ecosystem_test_script.sh | 141 ++++ .../resources/mapr/map_reduce_test_script.sh | 138 ++++ .../tests/resources/mapr/swift_test_script.sh | 69 ++ sahara/tests/integration/tests/scaling.py | 1 + sahara/tests/integration/tests/swift.py | 7 +- sahara/tests/unit/plugins/mapr/stubs.py | 185 ----- .../unit/plugins/mapr/test_base_handler.py | 112 +++ .../unit/plugins/mapr/test_cluster_context.py | 265 ++++++ .../unit/plugins/mapr/test_config_files.py | 184 +++++ sahara/tests/unit/plugins/mapr/test_distro.py | 34 + .../utils/resources/bcc_expected/cldb-1.conf | 2 - .../resources/bcc_expected/core-site-0.xml | 69 -- .../resources/bcc_expected/core-site-1.xml | 82 -- .../resources/bcc_expected/mapred-site-0.xml | 8 - .../resources/bcc_expected/mapred-site-1.xml | 16 - .../resources/bcc_expected/topology-1.data | 9 - .../mapr/utils/resources/compute.topology | 6 - .../mapr/utils/resources/plugin_spec.json | 106 --- .../mapr/utils/resources/plugin_spec_ci.json | 168 ---- .../plugins/mapr/utils/resources/raw.data | 1 - .../mapr/utils/resources/test.properties | 4 - .../plugins/mapr/utils/resources/test.xml | 10 - .../plugins/mapr/utils/test_cluster_info.py | 51 -- .../mapr/utils/test_config_file_utils.py | 96 --- .../plugins/mapr/utils/test_dict_utils.py | 196 ----- .../plugins/mapr/utils/test_func_utils.py | 202 ----- .../plugins/mapr/utils/test_plugin_spec.py | 324 -------- .../versions/test_base_cluster_configurer.py | 207 ----- 158 files changed, 6044 insertions(+), 6575 deletions(-) rename sahara/{tests/unit/plugins/mapr/utils => plugins/mapr/abstract}/__init__.py (100%) create mode 100644 sahara/plugins/mapr/abstract/cluster_context.py create mode 100644 sahara/plugins/mapr/abstract/cluster_validator.py create mode 100644 sahara/plugins/mapr/abstract/configurer.py create mode 100644 sahara/plugins/mapr/abstract/node_manager.py create mode 100644 sahara/plugins/mapr/abstract/version_handler.py rename sahara/{tests/unit/plugins/mapr/versions => plugins/mapr/base}/__init__.py (100%) create mode 100644 sahara/plugins/mapr/base/base_cluster_configurer.py create mode 100644 sahara/plugins/mapr/base/base_cluster_context.py create mode 100644 sahara/plugins/mapr/base/base_cluster_validator.py create mode 100644 sahara/plugins/mapr/base/base_edp_engine.py create mode 100644 sahara/plugins/mapr/base/base_node_manager.py create mode 100644 sahara/plugins/mapr/base/base_version_handler.py create mode 100644 sahara/plugins/mapr/domain/__init__.py create mode 100644 sahara/plugins/mapr/domain/configuration_file.py create mode 100644 sahara/plugins/mapr/domain/distro.py create mode 100644 sahara/plugins/mapr/domain/node_process.py create mode 100644 sahara/plugins/mapr/domain/service.py create mode 100644 sahara/plugins/mapr/resources/add_mapr_repo.sh rename sahara/plugins/mapr/{util => }/resources/create_disk_list_file.sh (100%) create mode 100644 sahara/plugins/mapr/resources/install_java.sh create mode 100644 sahara/plugins/mapr/resources/install_mysql.sh rename sahara/plugins/mapr/{util => }/resources/topology.sh (100%) mode change 100755 => 100644 create mode 100644 sahara/plugins/mapr/services/__init__.py create mode 100644 sahara/plugins/mapr/services/hbase/__init__.py create mode 100644 sahara/plugins/mapr/services/hbase/hbase.py create mode 100644 sahara/plugins/mapr/services/hbase/resources/hbase-default.json create mode 100644 sahara/plugins/mapr/services/hive/__init__.py create mode 100644 sahara/plugins/mapr/services/hive/hive.py create mode 100644 sahara/plugins/mapr/services/hive/resources/hive-default.xml create mode 100644 sahara/plugins/mapr/services/httpfs/__init__.py create mode 100644 sahara/plugins/mapr/services/httpfs/httpfs.py create mode 100644 sahara/plugins/mapr/services/httpfs/resources/httpfs-default.json create mode 100644 sahara/plugins/mapr/services/mahout/__init__.py create mode 100644 sahara/plugins/mapr/services/mahout/mahout.py create mode 100644 sahara/plugins/mapr/services/management/__init__.py create mode 100644 sahara/plugins/mapr/services/management/management.py create mode 100644 sahara/plugins/mapr/services/mapreduce/__init__.py create mode 100644 sahara/plugins/mapr/services/mapreduce/mapreduce.py create mode 100644 sahara/plugins/mapr/services/mapreduce/resources/mapreduce-cluster.json create mode 100644 sahara/plugins/mapr/services/maprfs/__init__.py create mode 100644 sahara/plugins/mapr/services/maprfs/maprfs.py rename sahara/plugins/mapr/{versions/v3_1_1/resources/default => services/maprfs/resources}/cldb.conf (100%) create mode 100644 sahara/plugins/mapr/services/mysql/__init__.py create mode 100644 sahara/plugins/mapr/services/mysql/mysql.py create mode 100644 sahara/plugins/mapr/services/mysql/resources/create_database.sql create mode 100644 sahara/plugins/mapr/services/mysql/resources/grant_access.sql create mode 100644 sahara/plugins/mapr/services/mysql/resources/hive_schema.sql create mode 100644 sahara/plugins/mapr/services/oozie/__init__.py create mode 100644 sahara/plugins/mapr/services/oozie/oozie.py create mode 100644 sahara/plugins/mapr/services/oozie/resources/oozie-default.json create mode 100644 sahara/plugins/mapr/services/pig/__init__.py create mode 100644 sahara/plugins/mapr/services/pig/pig.py create mode 100644 sahara/plugins/mapr/services/swift/__init__.py create mode 100644 sahara/plugins/mapr/services/swift/resources/hadoop-swift-latest.jar create mode 100644 sahara/plugins/mapr/services/swift/resources/jackson-core-asl-1.9.13.jar create mode 100644 sahara/plugins/mapr/services/swift/resources/jackson-mapper-asl-1.9.13.jar create mode 100644 sahara/plugins/mapr/services/swift/resources/swift-default.json create mode 100644 sahara/plugins/mapr/services/swift/swift.py create mode 100644 sahara/plugins/mapr/services/yarn/__init__.py create mode 100644 sahara/plugins/mapr/services/yarn/resources/yarn-cluster.json create mode 100644 sahara/plugins/mapr/services/yarn/resources/yarn-node.json create mode 100644 sahara/plugins/mapr/services/yarn/yarn.py delete mode 100644 sahara/plugins/mapr/util/attr_dict.py delete mode 100644 sahara/plugins/mapr/util/cluster_helper.py delete mode 100644 sahara/plugins/mapr/util/cluster_info.py create mode 100644 sahara/plugins/mapr/util/commands.py delete mode 100644 sahara/plugins/mapr/util/config.py delete mode 100644 sahara/plugins/mapr/util/config_file_utils.py delete mode 100644 sahara/plugins/mapr/util/config_utils.py delete mode 100644 sahara/plugins/mapr/util/dict_utils.py delete mode 100644 sahara/plugins/mapr/util/func_utils.py create mode 100644 sahara/plugins/mapr/util/general.py delete mode 100644 sahara/plugins/mapr/util/names.py delete mode 100644 sahara/plugins/mapr/util/plugin_spec.py delete mode 100644 sahara/plugins/mapr/util/resources/hadoop_version delete mode 100644 sahara/plugins/mapr/util/resources/waiting_script.sh delete mode 100644 sahara/plugins/mapr/util/run_scripts.py delete mode 100644 sahara/plugins/mapr/util/scaling.py delete mode 100644 sahara/plugins/mapr/util/start_helper.py delete mode 100644 sahara/plugins/mapr/util/wrapper.py delete mode 100644 sahara/plugins/mapr/versions/base_cluster_configurer.py delete mode 100644 sahara/plugins/mapr/versions/base_context.py delete mode 100644 sahara/plugins/mapr/versions/base_version_handler.py delete mode 100644 sahara/plugins/mapr/versions/edp_engine.py delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/cluster_configurer.py create mode 100644 sahara/plugins/mapr/versions/v3_1_1/context.py create mode 100644 sahara/plugins/mapr/versions/v3_1_1/edp_engine.py delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/default/core-site.xml delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/default/exports delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/default/hadoop-metrics.properties delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/default/mfs.conf delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/default/nfsserver.conf delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/resources/plugin_spec.json delete mode 100644 sahara/plugins/mapr/versions/v3_1_1/start_utils.py delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/cluster_configurer.py create mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/context.py delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/cldb.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/core-site.xml delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/exports delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/hadoop-metrics.properties delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/mfs.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/nfsserver.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/plugin_spec.json delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/cluster_configurer.py create mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/context.py delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/cldb.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/core-site.xml delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/exports delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/hadoop-metrics.properties delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/mfs.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/nfsserver.conf delete mode 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/plugin_spec.json mode change 100755 => 100644 sahara/plugins/mapr/versions/v4_0_1_mrv2/version_handler.py delete mode 100644 sahara/tests/integration/tests/gating/test_mapr4_1_gating.py delete mode 100644 sahara/tests/integration/tests/gating/test_mapr4_2_gating.py create mode 100644 sahara/tests/integration/tests/gating/test_mapr_311_gating.py create mode 100644 sahara/tests/integration/tests/gating/test_mapr_401mrv1_gating.py create mode 100644 sahara/tests/integration/tests/gating/test_mapr_401mrv2_gating.py create mode 100644 sahara/tests/integration/tests/resources/mapr/ecosystem_test_script.sh create mode 100644 sahara/tests/integration/tests/resources/mapr/map_reduce_test_script.sh create mode 100644 sahara/tests/integration/tests/resources/mapr/swift_test_script.sh delete mode 100644 sahara/tests/unit/plugins/mapr/stubs.py create mode 100644 sahara/tests/unit/plugins/mapr/test_base_handler.py create mode 100644 sahara/tests/unit/plugins/mapr/test_cluster_context.py create mode 100644 sahara/tests/unit/plugins/mapr/test_config_files.py create mode 100644 sahara/tests/unit/plugins/mapr/test_distro.py delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/cldb-1.conf delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-0.xml delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-1.xml delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-0.xml delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-1.xml delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/topology-1.data delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/compute.topology delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec.json delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/raw.data delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/test.properties delete mode 100644 sahara/tests/unit/plugins/mapr/utils/resources/test.xml delete mode 100644 sahara/tests/unit/plugins/mapr/utils/test_cluster_info.py delete mode 100644 sahara/tests/unit/plugins/mapr/utils/test_config_file_utils.py delete mode 100644 sahara/tests/unit/plugins/mapr/utils/test_dict_utils.py delete mode 100644 sahara/tests/unit/plugins/mapr/utils/test_func_utils.py delete mode 100644 sahara/tests/unit/plugins/mapr/utils/test_plugin_spec.py delete mode 100644 sahara/tests/unit/plugins/mapr/versions/test_base_cluster_configurer.py diff --git a/MANIFEST.in b/MANIFEST.in index 75dc99dc..ca286943 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -31,15 +31,17 @@ include sahara/plugins/hdp/versions/version_1_3_2/resources/*.sh include sahara/plugins/hdp/versions/version_2_0_6/resources/*.template include sahara/plugins/hdp/versions/version_2_0_6/resources/*.json include sahara/plugins/hdp/versions/version_2_0_6/resources/*.sh -include sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/*.sh -include sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/*.json -include sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/*.xml -include sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/*.sh -include sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/*.json -include sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/*.xml -include sahara/plugins/mapr/versions/v3_1_1/resources/*.sh -include sahara/plugins/mapr/versions/v3_1_1/resources/*.json -include sahara/plugins/mapr/versions/v3_1_1/resources/*.xml +include sahara/plugins/mapr/resources/*.sh +include sahara/plugins/mapr/services/hbase/resources/*.json +include sahara/plugins/mapr/services/hive/resources/*.xml +include sahara/plugins/mapr/services/httpfs/resources/*.json +include sahara/plugins/mapr/services/mapreduce/resources/*.json +include sahara/plugins/mapr/services/maprfs/resources/*.conf +include sahara/plugins/mapr/services/mysql/resources/*.sql +include sahara/plugins/mapr/services/oozie/resources/*.json +include sahara/plugins/mapr/services/swift/resources/*.jar +include sahara/plugins/mapr/services/swift/resources/*.json +include sahara/plugins/mapr/services/yarn/resources/*.json include sahara/plugins/spark/resources/*.xml include sahara/plugins/spark/resources/*.sh include sahara/plugins/spark/resources/*.template @@ -49,14 +51,6 @@ include sahara/service/edp/resources/*.jar include sahara/service/edp/resources/launch_command.py include sahara/swift/resources/*.xml include sahara/tests/unit/plugins/vanilla/hadoop2/resources/*.txt -include sahara/tests/unit/plugins/mapr/utils/resources/*.topology -include sahara/tests/unit/plugins/mapr/utils/resources/*.json -include sahara/tests/unit/plugins/mapr/utils/resources/*.data -include sahara/tests/unit/plugins/mapr/utils/resources/*.properties -include sahara/tests/unit/plugins/mapr/utils/resources/*.xml -include sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/*.conf -include sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/*.data -include sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/*.xml include sahara/tests/unit/resources/*.heat include sahara/tests/unit/resources/*.xml include sahara/tests/unit/resources/*.txt diff --git a/requirements.txt b/requirements.txt index 3c874e16..c9be4f93 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,6 +9,7 @@ Babel>=1.3 eventlet>=0.16.1 Flask>=0.10,<1.0 iso8601>=0.1.9 +Jinja2>=2.6 # BSD License (3 clause) jsonschema>=2.0.0,<3.0.0 keystonemiddleware>=1.0.0 oslo.config>=1.6.0 # Apache-2.0 diff --git a/sahara/tests/unit/plugins/mapr/utils/__init__.py b/sahara/plugins/mapr/abstract/__init__.py similarity index 100% rename from sahara/tests/unit/plugins/mapr/utils/__init__.py rename to sahara/plugins/mapr/abstract/__init__.py diff --git a/sahara/plugins/mapr/abstract/cluster_context.py b/sahara/plugins/mapr/abstract/cluster_context.py new file mode 100644 index 00000000..451d0290 --- /dev/null +++ b/sahara/plugins/mapr/abstract/cluster_context.py @@ -0,0 +1,109 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc + +import six + + +@six.add_metaclass(abc.ABCMeta) +class AbstractClusterContext(object): + @abc.abstractproperty + def mapr_home(self): + return + + @abc.abstractproperty + def hadoop_version(self): + return + + @abc.abstractproperty + def hadoop_home(self): + return + + @abc.abstractproperty + def hadoop_lib(self): + return + + @abc.abstractproperty + def hadoop_conf(self): + return + + @abc.abstractproperty + def cluster(self): + return + + @abc.abstractproperty + def name_node_uri(self): + return + + @abc.abstractproperty + def resource_manager_uri(self): + return + + @abc.abstractproperty + def oozie_server_uri(self): + return + + @abc.abstractproperty + def oozie_server(self): + return + + @abc.abstractproperty + def oozie_http(self): + return + + @abc.abstractproperty + def cluster_mode(self): + return + + @abc.abstractproperty + def is_node_aware(self): + return + + @abc.abstractproperty + def some_instance(self): + return + + @abc.abstractproperty + def distro(self): + return + + @abc.abstractproperty + def mapr_db(self): + return + + @abc.abstractmethod + def filter_instances(self, instances, node_process=None, service=None): + return + + @abc.abstractmethod + def removed_instances(self, node_process=None, service=None): + return + + @abc.abstractmethod + def added_instances(self, node_process=None, service=None): + return + + @abc.abstractmethod + def changed_instances(self, node_process=None, service=None): + return + + @abc.abstractmethod + def existing_instances(self, node_process=None, service=None): + return + + @abc.abstractproperty + def should_be_restarted(self): + return diff --git a/sahara/plugins/mapr/abstract/cluster_validator.py b/sahara/plugins/mapr/abstract/cluster_validator.py new file mode 100644 index 00000000..79f6a3d7 --- /dev/null +++ b/sahara/plugins/mapr/abstract/cluster_validator.py @@ -0,0 +1,29 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc + +import six + + +@six.add_metaclass(abc.ABCMeta) +class AbstractValidator(object): + @abc.abstractmethod + def validate(self, cluster_context): + pass + + @abc.abstractmethod + def validate_scaling(self, cluster_context, existing, additional): + pass diff --git a/sahara/plugins/mapr/abstract/configurer.py b/sahara/plugins/mapr/abstract/configurer.py new file mode 100644 index 00000000..6756b458 --- /dev/null +++ b/sahara/plugins/mapr/abstract/configurer.py @@ -0,0 +1,29 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc + +import six + + +@six.add_metaclass(abc.ABCMeta) +class AbstractConfigurer(object): + @abc.abstractmethod + def configure(self, cluster_context, instances=None): + pass + + @abc.abstractmethod + def update(self, cluster_context, instances=None): + pass diff --git a/sahara/plugins/mapr/abstract/node_manager.py b/sahara/plugins/mapr/abstract/node_manager.py new file mode 100644 index 00000000..3447d6c3 --- /dev/null +++ b/sahara/plugins/mapr/abstract/node_manager.py @@ -0,0 +1,37 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc + +import six + + +@six.add_metaclass(abc.ABCMeta) +class AbstractNodeManager(object): + @abc.abstractmethod + def start(self, cluster_context, instances=None): + pass + + @abc.abstractmethod + def stop(self, cluster_context, instances=None): + pass + + @abc.abstractmethod + def move_nodes(self, cluster_context, instances): + pass + + @abc.abstractmethod + def remove_nodes(self, cluster_context, instances): + pass diff --git a/sahara/plugins/mapr/abstract/version_handler.py b/sahara/plugins/mapr/abstract/version_handler.py new file mode 100644 index 00000000..7d35b4bd --- /dev/null +++ b/sahara/plugins/mapr/abstract/version_handler.py @@ -0,0 +1,73 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc + +import six + + +@six.add_metaclass(abc.ABCMeta) +class AbstractVersionHandler(object): + @abc.abstractmethod + def get_node_processes(self): + return + + @abc.abstractmethod + def get_configs(self): + return + + @abc.abstractmethod + def configure_cluster(self, cluster): + pass + + @abc.abstractmethod + def start_cluster(self, cluster): + pass + + @abc.abstractmethod + def validate(self, cluster): + pass + + @abc.abstractmethod + def validate_scaling(self, cluster, existing, additional): + pass + + @abc.abstractmethod + def scale_cluster(self, cluster, instances): + pass + + @abc.abstractmethod + def decommission_nodes(self, cluster, instances): + pass + + @abc.abstractmethod + def get_edp_engine(self, cluster, job_type): + return + + @abc.abstractmethod + def get_context(self, cluster, added=None, removed=None): + return + + @abc.abstractmethod + def get_services(self): + return + + @abc.abstractmethod + def get_required_services(self): + return + + @abc.abstractmethod + def get_open_ports(self, node_group): + return diff --git a/sahara/tests/unit/plugins/mapr/versions/__init__.py b/sahara/plugins/mapr/base/__init__.py similarity index 100% rename from sahara/tests/unit/plugins/mapr/versions/__init__.py rename to sahara/plugins/mapr/base/__init__.py diff --git a/sahara/plugins/mapr/base/base_cluster_configurer.py b/sahara/plugins/mapr/base/base_cluster_configurer.py new file mode 100644 index 00000000..5068a99c --- /dev/null +++ b/sahara/plugins/mapr/base/base_cluster_configurer.py @@ -0,0 +1,324 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc +import os + +from oslo_log import log as logging +import six + +from sahara import conductor +from sahara import context +import sahara.plugins.mapr.abstract.configurer as ac +import sahara.plugins.mapr.services.management.management as mng +import sahara.plugins.mapr.services.mapreduce.mapreduce as mr +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.mysql import mysql +import sahara.plugins.mapr.services.yarn.yarn as yarn +import sahara.plugins.mapr.util.general as util +from sahara.topology import topology_helper as th +import sahara.utils.configs as sahara_configs +from sahara.utils import files as f + + +LOG = logging.getLogger(__name__) +conductor = conductor.API + +MAPR_REPO_DIR = '/opt/mapr-repository' +_MAPR_HOME = '/opt/mapr' +_JAVA_HOME = '/usr/java/jdk1.7.0_51' +_CONFIGURE_SH_TIMEOUT = 600 +_SET_MODE_CMD = 'maprcli cluster mapreduce set -mode ' + +_TOPO_SCRIPT = 'plugins/mapr/resources/topology.sh' + +SERVICE_INSTALL_PRIORITY = [ + mng.Management(), + yarn.YARNv251(), + yarn.YARNv241(), + mr.MapReduce(), + maprfs.MapRFS(), +] + + +@six.add_metaclass(abc.ABCMeta) +class BaseConfigurer(ac.AbstractConfigurer): + def configure(self, cluster_context, instances=None): + instances = instances or cluster_context.get_instances() + self._configure_ssh_connection(cluster_context, instances) + self._install_mapr_repo(cluster_context, instances) + self._install_services(cluster_context, instances) + self._configure_topology(cluster_context, instances) + self._configure_database(cluster_context, instances) + self._configure_services(cluster_context, instances) + self._configure_sh_cluster(cluster_context, instances) + self._set_cluster_mode(cluster_context) + self._write_config_files(cluster_context, instances) + self._configure_environment(cluster_context, instances) + self._update_cluster_info(cluster_context) + + def update(self, cluster_context, instances=None): + LOG.debug('Configuring existing instances') + instances = instances or cluster_context.get_instances() + existing = cluster_context.existing_instances() + self._configure_topology(cluster_context, existing) + if cluster_context.has_control_nodes(instances): + self._configure_sh_cluster(cluster_context, existing) + self._write_config_files(cluster_context, existing) + self._update_services(cluster_context, existing) + self._restart_services(cluster_context) + LOG.debug('Existing instances successfully configured') + + def _configure_services(self, cluster_context, instances): + for service in cluster_context.cluster_services: + service.configure(cluster_context, instances) + + def _install_services(self, cluster_context, instances): + for service in self._service_install_sequence(cluster_context): + service.install(cluster_context, instances) + + def _service_install_sequence(self, cluster_context): + def key(service): + if service in SERVICE_INSTALL_PRIORITY: + return SERVICE_INSTALL_PRIORITY.index(service) + return -1 + + return sorted(cluster_context.cluster_services, key=key, reverse=True) + + def _configure_topology(self, context, instances): + LOG.debug('Configuring cluster topology') + is_node_aware = context.is_node_aware + if is_node_aware: + topo = th.generate_topology_map(context.cluster, is_node_aware) + topo = '\n'.join(['%s %s' % i for i in six.iteritems(topo)]) + data_path = '%s/topology.data' % context.mapr_home + script_path = '%s/topology.sh' % context.mapr_home + files = { + data_path: topo, + script_path: f.get_file_text(_TOPO_SCRIPT), + } + chmod_cmd = 'chmod +x %s' % script_path + for instance in instances: + with instance.remote() as r: + r.write_files_to(files, run_as_root=True) + r.execute_command(chmod_cmd, run_as_root=True) + else: + LOG.debug('Data locality is disabled.') + LOG.debug('Cluster topology successfully configured') + + def _execute_on_instances(self, function, cluster_context, instances, + **kwargs): + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('%s-execution' % function.__name__, + function, instance, **kwargs) + + def _write_config_files(self, cluster_context, instances): + LOG.debug('Writing config files') + + def get_node_groups(instances): + return util.unique_list(instances, lambda i: i.node_group) + + for ng in get_node_groups(instances): + ng_services = cluster_context.get_cluster_services(ng) + ng_user_configs = ng.configuration() + ng_default_configs = cluster_context.get_services_configs_dict( + ng_services) + ng_configs = sahara_configs.merge_configs( + ng_default_configs, ng_user_configs) + ng_config_files = dict() + for service in ng_services: + service_conf_files = service.get_config_files( + cluster_context=cluster_context, + configs=ng_configs[service.ui_name], + instance=ng.instances[0] + ) + LOG.debug('Rendering %s config files', service.ui_name) + for conf_file in service_conf_files: + ng_config_files.update({ + conf_file.remote_path: conf_file.render() + }) + + ng_instances = filter(lambda i: i in instances, ng.instances) + self._write_ng_config_files(ng_instances, ng_config_files) + LOG.debug('Config files successfully written') + + def _write_ng_config_files(self, instances, conf_files): + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('write-config-files-%s' % instance.id, + self._write_config_files_instance, instance, + conf_files) + + def _configure_environment(self, cluster_context, instances): + self.configure_general_environment(cluster_context, instances) + self._post_install_services(cluster_context, instances) + + def _configure_database(self, cluster_context, instances): + mysql_instance = mysql.MySQL.get_db_instance(cluster_context) + distro_name = cluster_context.distro.name + mysql.MySQL.install_mysql(mysql_instance, distro_name) + mysql.MySQL.start_mysql_server(cluster_context) + mysql.MySQL.create_databases(cluster_context, instances) + + @staticmethod + def _write_config_files_instance(instance, config_files): + paths = six.iterkeys(config_files) + with instance.remote() as r: + for path in paths: + r.execute_command('mkdir -p ' + os.path.dirname(path), + run_as_root=True) + r.write_files_to(config_files, run_as_root=True) + + def _post_install_services(self, cluster_context, instances): + LOG.debug('Executing service post install hooks') + for s in cluster_context.cluster_services: + s.post_install(cluster_context, instances) + LOG.debug('Post install hooks execution successfully executed') + + def _update_cluster_info(self, cluster_context): + LOG.debug('Updating UI information.') + info = dict() + for service in cluster_context.cluster_services: + for uri_info in service.ui_info: + title, process, url = uri_info + info.update({ + title: { + 'WebUI': url % cluster_context.get_instance_ip(process) + } + }) + + ctx = context.ctx() + conductor.cluster_update(ctx, cluster_context.cluster, {'info': info}) + + def configure_general_environment(self, cluster_context, instances=None): + LOG.debug('Executing post configure hooks') + + if not instances: + instances = cluster_context.get_instances() + + def set_user_password(instance): + LOG.debug('Setting password for user "mapr"') + if self.mapr_user_exists(instance): + with instance.remote() as r: + r.execute_command( + 'echo "%s:%s"|chpasswd' % ('mapr', 'mapr'), + run_as_root=True) + else: + LOG.debug('user "mapr" does not exists') + + def create_home_mapr(instance): + target_path = '/home/mapr' + LOG.debug("Creating home directory for user 'mapr'") + args = {'path': target_path} + cmd = 'mkdir -p %(path)s && chown mapr:mapr %(path)s' % args + if self.mapr_user_exists(instance): + with instance.remote() as r: + r.execute_command(cmd, run_as_root=True) + else: + LOG.debug('user "mapr" does not exists') + + self._execute_on_instances(set_user_password, cluster_context, + instances) + self._execute_on_instances(create_home_mapr, cluster_context, + instances) + + def _configure_sh_cluster(self, cluster_context, instances): + LOG.debug('Executing configure.sh') + + if not instances: + instances = cluster_context.get_instances() + script = cluster_context.configure_sh + + db_specs = dict(mysql.MySQL.METRICS_SPECS._asdict()) + db_specs.update({ + 'host': mysql.MySQL.get_db_instance(cluster_context).fqdn(), + 'port': mysql.MySQL.MYSQL_SERVER_PORT, + }) + + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('configure-sh-%s' % instance.id, + self._configure_sh_instance, cluster_context, + instance, script, db_specs) + LOG.debug('Executing configure.sh successfully completed') + + def _configure_sh_instance(self, context, instance, command, specs): + if not self.mapr_user_exists(instance): + command += ' --create-user' + if context.check_for_process(instance, mng.METRICS): + command += (' -d %(host)s:%(port)s -du %(user)s -dp %(password)s ' + '-ds %(db_name)s') % specs + with instance.remote() as r: + r.execute_command('sudo -i ' + command, + timeout=_CONFIGURE_SH_TIMEOUT) + + def _configure_ssh_connection(self, cluster_context, instances): + def keep_alive_connection(instance): + echo_param = 'echo "KeepAlive yes" >> ~/.ssh/config' + echo_timeout = 'echo "ServerAliveInterval 60" >> ~/.ssh/config' + with instance.remote() as r: + r.execute_command(echo_param) + r.execute_command(echo_timeout) + + self._execute_on_instances(keep_alive_connection, + cluster_context, instances) + + def mapr_user_exists(self, instance): + with instance.remote() as r: + ec, out = r.execute_command( + 'id -u mapr', run_as_root=True, raise_when_error=False) + return ec == 0 + + def post_start(self, c_context, instances=None): + instances = instances or c_context.get_instances() + LOG.debug('Executing service post start hooks') + for service in c_context.cluster_services: + updated = c_context.filter_instances(instances, service=service) + service.post_start(c_context, updated) + LOG.debug('Post start hooks execution successfully executed') + + def _set_cluster_mode(self, cluster_context): + cluster_mode = cluster_context.cluster_mode + if not cluster_mode: + return + cldb = cluster_context.get_instance(maprfs.CLDB) + with cldb.remote() as r: + cmd = 'sudo -u mapr maprcli cluster mapreduce set -mode %s' + r.execute_command(cmd % cluster_mode) + + def _install_mapr_repo(self, cluster_context, instances): + def add_repo(instance, **kwargs): + with instance.remote() as r: + script = '/tmp/repo_install.sh' + data = cluster_context.get_install_repo_script_data() + r.write_file_to(script, data, run_as_root=True) + r.execute_command('chmod +x %s' % script, run_as_root=True) + r.execute_command('%s %s' % (script, kwargs.get('distro')), + run_as_root=True, raise_when_error=False) + + d_name = cluster_context.distro.name + self._execute_on_instances( + add_repo, cluster_context, instances, distro=d_name) + + def _update_services(self, c_context, instances): + for service in c_context.cluster_services: + updated = c_context.filter_instances(instances, service=service) + service.update(c_context, updated) + + def _restart_services(self, cluster_context): + restart = cluster_context.should_be_restarted + for service, instances in six.iteritems(restart): + service.restart(util.unique_list(instances)) diff --git a/sahara/plugins/mapr/base/base_cluster_context.py b/sahara/plugins/mapr/base/base_cluster_context.py new file mode 100644 index 00000000..a38aff6c --- /dev/null +++ b/sahara/plugins/mapr/base/base_cluster_context.py @@ -0,0 +1,332 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import collections + +from oslo_config import cfg + +import sahara.exceptions as e +from sahara.i18n import _ +import sahara.plugins.mapr.abstract.cluster_context as cc +import sahara.plugins.mapr.domain.distro as distro +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.services.management.management as mng +import sahara.plugins.mapr.services.maprfs.maprfs as mfs +import sahara.plugins.mapr.services.oozie.oozie as oozie +from sahara.plugins.mapr.services.swift import swift +import sahara.plugins.mapr.services.yarn.yarn as yarn +import sahara.plugins.mapr.util.general as g +import sahara.plugins.utils as u + + +CONF = cfg.CONF +CONF.import_opt("enable_data_locality", "sahara.topology.topology_helper") + + +def _get_node_process_name(node_process): + name = None + if isinstance(node_process, np.NodeProcess): + name = node_process.ui_name + elif isinstance(node_process, basestring): + name = node_process + return name + + +class BaseClusterContext(cc.AbstractClusterContext): + def __init__(self, cluster, version_handler, added=None, removed=None): + self._cluster = cluster + self._distro = None + self.all_services_list = version_handler.get_services() + self._required_services = version_handler.get_required_services() + self._cluster_services = None + self._mapr_home = '/opt/mapr' + self._name_node_uri = 'maprfs:///' + self._cluster_mode = None + self._node_aware = None + self._oozie_server_uri = None + self._oozie_server = None + self._oozie_http = None + self._some_instance = None + self._configure_sh = None + self._mapr_db = None + self._hadoop_home = None + self._hadoop_version = None + self._added_instances = added or [] + self._removed_instances = removed or [] + self._changed_instances = ( + self._added_instances + self._removed_instances) + self._existing_instances = [i for i in self.get_instances() + if i not in self._changed_instances] + self._restart = collections.defaultdict(list) + + @property + def cluster(self): + return self._cluster + + @property + def cluster_services(self): + if not self._cluster_services: + self._cluster_services = self.get_cluster_services() + return self._cluster_services + + @property + def required_services(self): + return self._required_services + + @property + def mapr_home(self): + return self._mapr_home + + @property + def hadoop_version(self): + return self._hadoop_version + + @property + def hadoop_home(self): + if not self._hadoop_home: + f = '%(mapr_home)s/hadoop/hadoop-%(hadoop_version)s' + args = { + 'mapr_home': self.mapr_home, + 'hadoop_version': self.hadoop_version, + } + self._hadoop_home = f % args + return self._hadoop_home + + @property + def name_node_uri(self): + return self._name_node_uri + + @property + def oozie_server_uri(self): + if not self._oozie_server_uri: + oozie_http = self.oozie_http + url = 'http://%s/oozie' % oozie_http if oozie_http else None + self._oozie_server_uri = url + return self._oozie_server_uri + + @property + def oozie_server(self): + if not self._oozie_server: + self._oozie_server = self.get_instance(oozie.OOZIE) + return self._oozie_server + + @property + def oozie_http(self): + if not self._oozie_http: + oozie_server = self.oozie_server + ip = oozie_server.management_ip if oozie_server else None + self._oozie_http = '%s:11000' % ip if ip else None + return self._oozie_http + + @property + def cluster_mode(self): + return self._cluster_mode + + @property + def is_node_aware(self): + return self._node_aware and CONF.enable_data_locality + + @property + def some_instance(self): + if not self._some_instance: + self._some_instance = self.cluster.node_groups[0].instances[0] + return self._some_instance + + @property + def distro(self): + if not self._distro: + self._distro = distro.get(self.some_instance) + return self._distro + + @property + def mapr_db(self): + if self._mapr_db is None: + mapr_db = mfs.MapRFS.ENABLE_MAPR_DB_CONFIG + mapr_db = self._get_cluster_config_value(mapr_db) + self._mapr_db = '-noDB' if not mapr_db else '' + return self._mapr_db + + @property + def configure_sh(self): + if not self._configure_sh: + f = ('%(script_path)s' + ' -N %(cluster_name)s' + ' -C %(cldbs)s' + ' -Z %(zookeepers)s' + ' -no-autostart -f %(m7)s') + args = { + 'script_path': '/opt/mapr/server/configure.sh', + 'cluster_name': self.cluster.name, + 'cldbs': self.get_cldb_nodes_ip(), + 'zookeepers': self.get_zookeeper_nodes_ip(), + 'm7': self.mapr_db + } + self._configure_sh = f % args + return self._configure_sh + + def _get_cluster_config_value(self, config): + cluster_configs = self.cluster.cluster_configs + service = config.applicable_target + name = config.name + if service in cluster_configs and name in cluster_configs[service]: + return cluster_configs[service][name] + else: + return config.default_value + + def get_instances(self, node_process=None): + name = _get_node_process_name(node_process) + return u.get_instances(self.cluster, name) + + def get_instance(self, node_process): + name = _get_node_process_name(node_process) + i = u.get_instances(self.cluster, name) + return i[0] if i else None + + def get_instances_ip(self, node_process): + return [i.management_ip for i in self.get_instances(node_process)] + + def get_instance_ip(self, node_process): + i = self.get_instance(node_process) + return i.management_ip if i else None + + def get_zookeeper_nodes_ip_with_port(self, separator=','): + return separator.join(['%s:%s' % (ip, mng.ZK_CLIENT_PORT) + for ip in self.get_instances_ip(mng.ZOOKEEPER)]) + + def check_for_process(self, instance, process): + processes = instance.node_group.node_processes + name = _get_node_process_name(process) + return name in processes + + def get_services_configs_dict(self, services=None): + if not services: + services = self.cluster_services + result = dict() + for service in services: + result.update(service.get_configs_dict()) + return result + + def get_configure_sh_path(self): + return '/opt/mapr/server/configure.sh' + + def get_chosen_service_version(self, service_name): + service_configs = self.cluster.cluster_configs.get(service_name, None) + if not service_configs: + return None + return service_configs.get('%s Version' % service_name, None) + + def get_cluster_services(self, node_group=None): + node_processes = None + + if node_group: + node_processes = node_group.node_processes + else: + node_processes = [np for ng in self.cluster.node_groups + for np in ng.node_processes] + node_processes = g.unique_list(node_processes) + services = g.unique_list(node_processes, self.get_service) + + return services + [swift.Swift()] + + def get_service(self, node_process): + ui_name = self.get_service_name_by_node_process(node_process) + if ui_name is None: + raise e.InvalidDataException( + _('Service not found in services list')) + version = self.get_chosen_service_version(ui_name) + service = self._find_service_instance(ui_name, version) + if service is None: + raise e.InvalidDataException(_('Can not map service')) + return service + + def _find_service_instance(self, ui_name, version): + for service in self.all_services_list: + if service.ui_name == ui_name: + if version is not None and service.version != version: + continue + return service + + def get_service_name_by_node_process(self, node_process): + node_process = _get_node_process_name(node_process) + for service in self.all_services_list: + node_processes = [np.ui_name for np in service.node_processes] + if node_process in node_processes: + return service.ui_name + + def get_instances_count(self, node_process=None): + name = _get_node_process_name(node_process) + return u.get_instances_count(self.cluster, name) + + def get_node_groups(self, node_process=None): + name = _get_node_process_name(node_process) + return u.get_node_groups(self.cluster, name) + + def get_cldb_nodes_ip(self, separator=','): + return separator.join(self.get_instances_ip(mfs.CLDB)) + + def get_zookeeper_nodes_ip(self, separator=','): + return separator.join( + self.get_instances_ip(mng.ZOOKEEPER)) + + def get_resourcemanager_ip(self): + return self.get_instance_ip(yarn.RESOURCE_MANAGER) + + def get_historyserver_ip(self): + return self.get_instance_ip(yarn.HISTORY_SERVER) + + def has_control_nodes(self, instances): + for inst in instances: + zookeepers = self.check_for_process(inst, mng.ZOOKEEPER) + cldbs = self.check_for_process(inst, mfs.CLDB) + if zookeepers or cldbs: + return True + return False + + def is_present(self, service): + return service in self.cluster_services + + def filter_instances(self, instances, node_process=None, service=None): + if node_process: + return filter( + lambda i: self.check_for_process(i, node_process), instances) + if service: + result = [] + for instance in instances: + for node_process in service.node_processes: + if self.check_for_process(instance, node_process): + result += [instance] + break + return result + return list(instances) + + def removed_instances(self, node_process=None, service=None): + instances = self._removed_instances + return self.filter_instances(instances, node_process, service) + + def added_instances(self, node_process=None, service=None): + instances = self._added_instances + return self.filter_instances(instances, node_process, service) + + def changed_instances(self, node_process=None, service=None): + instances = self._changed_instances + return self.filter_instances(instances, node_process, service) + + def existing_instances(self, node_process=None, service=None): + instances = self._existing_instances + return self.filter_instances(instances, node_process, service) + + @property + def should_be_restarted(self): + return self._restart diff --git a/sahara/plugins/mapr/base/base_cluster_validator.py b/sahara/plugins/mapr/base/base_cluster_validator.py new file mode 100644 index 00000000..9c7473bd --- /dev/null +++ b/sahara/plugins/mapr/base/base_cluster_validator.py @@ -0,0 +1,35 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import sahara.plugins.mapr.abstract.cluster_validator as v +import sahara.plugins.mapr.util.validation_utils as vu +import sahara.plugins.mapr.versions.version_handler_factory as vhf + + +class BaseValidator(v.AbstractValidator): + def validate(self, cluster_context): + for service in cluster_context.required_services: + vu.assert_present(service, cluster_context) + for service in cluster_context.cluster_services: + for rule in service.validation_rules: + rule(cluster_context) + + def validate_scaling(self, cluster_context, existing, additional): + cluster = cluster_context.cluster + version = cluster.hadoop_version + handler = vhf.VersionHandlerFactory.get().get_handler(version) + cluster = vu.create_fake_cluster(cluster, existing, additional) + cluster_context = handler.get_context(cluster) + self.validate(cluster_context) diff --git a/sahara/plugins/mapr/base/base_edp_engine.py b/sahara/plugins/mapr/base/base_edp_engine.py new file mode 100644 index 00000000..4ecb5ddd --- /dev/null +++ b/sahara/plugins/mapr/base/base_edp_engine.py @@ -0,0 +1,86 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import os + +import sahara.plugins.mapr.util.maprfs_helper as mfs +import sahara.plugins.mapr.versions.version_handler_factory as vhf +import sahara.service.edp.binary_retrievers.dispatch as d +import sahara.service.edp.oozie.engine as e +from sahara.utils import edp + + +class MapROozieJobEngine(e.OozieJobEngine): + def __init__(self, cluster): + super(MapROozieJobEngine, self).__init__(cluster) + self.ctx = self._get_cluster_context(self.cluster) + + hdfs_user = 'mapr' + + def get_hdfs_user(self): + return MapROozieJobEngine.hdfs_user + + def create_hdfs_dir(self, remote, dir_name): + mfs.create_maprfs4_dir(remote, dir_name, self.get_hdfs_user()) + + def _upload_workflow_file(self, where, job_dir, wf_xml, hdfs_user): + f_name = 'workflow.xml' + with where.remote() as r: + mfs.put_file_to_maprfs(r, wf_xml, f_name, job_dir, hdfs_user) + return os.path.join(job_dir, f_name) + + def _upload_job_files_to_hdfs(self, where, job_dir, job, configs, + proxy_configs=None): + mains = job.mains or [] + libs = job.libs or [] + builtin_libs = edp.get_builtin_binaries(job, configs) + uploaded_paths = [] + hdfs_user = self.get_hdfs_user() + lib_dir = job_dir + '/lib' + + with where.remote() as r: + for m in mains: + raw_data = d.get_raw_binary(m, proxy_configs) + mfs.put_file_to_maprfs(r, raw_data, m.name, job_dir, hdfs_user) + uploaded_paths.append(os.path.join(job_dir, m.name)) + if len(libs) > 0: + self.create_hdfs_dir(r, lib_dir) + for l in libs: + raw_data = d.get_raw_binary(l, proxy_configs) + mfs.put_file_to_maprfs(r, raw_data, l.name, lib_dir, + hdfs_user) + uploaded_paths.append(os.path.join(lib_dir, l.name)) + for lib in builtin_libs: + mfs.put_file_to_maprfs(r, lib['raw'], lib['name'], lib_dir, + hdfs_user) + uploaded_paths.append(lib_dir + '/' + lib['name']) + return uploaded_paths + + def get_name_node_uri(self, cluster): + return self.ctx.name_node_uri + + def get_oozie_server_uri(self, cluster): + return self.ctx.oozie_server_uri + + def get_oozie_server(self, cluster): + return self.ctx.oozie_server + + def get_resource_manager_uri(self, cluster): + return self.ctx.resource_manager_uri + + def _get_cluster_context(self, cluster): + h_version = cluster.hadoop_version + v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) + return v_handler.get_context(cluster) diff --git a/sahara/plugins/mapr/base/base_node_manager.py b/sahara/plugins/mapr/base/base_node_manager.py new file mode 100644 index 00000000..a2e248ab --- /dev/null +++ b/sahara/plugins/mapr/base/base_node_manager.py @@ -0,0 +1,184 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import json +import random + +from oslo_log import log as logging +from oslo_utils import timeutils + +from sahara import context +from sahara.i18n import _ +import sahara.plugins.exceptions as ex +import sahara.plugins.mapr.abstract.node_manager as s +import sahara.plugins.mapr.services.management.management as mng +import sahara.plugins.mapr.services.maprfs.maprfs as mfs + + +LOG = logging.getLogger(__name__) + + +GET_SERVER_ID_CMD = ('maprcli node list -json -filter [ip==%s] -columns id' + ' | grep id | grep -o \'[0-9]*\'') +NODE_LIST_CMD = 'maprcli node list -json' +MOVE_NODE_CMD = 'maprcli node move -serverids %s -topology /decommissioned' +REMOVE_NODE_CMD = ('maprcli node remove -filter [ip==%(ip)s] -nodes %(nodes)s' + ' -zkconnect %(zookeepers)s') +WAIT_NODE_ALARM_NO_HEARTBEAT = 360 + +WARDEN_SERVICE = 'warden' +START = 'start' +STOP = 'stop' +DELAY = 5 +DEFAULT_RETRY_COUNT = 10 + + +class BaseNodeManager(s.AbstractNodeManager): + def move_nodes(self, cluster_context, instances): + LOG.debug("Moving the nodes to /decommissioned topology") + cldb_instances = self._get_cldb_instances(cluster_context, instances) + with random.choice(cldb_instances).remote() as cldb_remote: + for instance in instances: + with instance.remote() as r: + command = GET_SERVER_ID_CMD % instance.management_ip + ec, out = r.execute_command(command, run_as_root=True) + command = MOVE_NODE_CMD % out.strip() + cldb_remote.execute_command(command, run_as_root=True) + LOG.debug("Nodes successfully moved") + + def remove_nodes(self, c_context, instances): + LOG.debug("Removing nodes from cluster") + cldb_instances = self._get_cldb_instances(c_context, instances) + with random.choice(cldb_instances).remote() as cldb_remote: + for instance in instances: + args = { + 'ip': instance.management_ip, + 'nodes': instance.fqdn(), + 'zookeepers': c_context.get_zookeeper_nodes_ip_with_port(), + } + command = REMOVE_NODE_CMD % args + cldb_remote.execute_command(command, run_as_root=True) + LOG.debug("Nodes successfully removed") + + def start(self, cluster_context, instances=None): + instances = instances or cluster_context.get_instances() + zookeepers = cluster_context.filter_instances(instances, mng.ZOOKEEPER) + cldbs = cluster_context.filter_instances(instances, mfs.CLDB) + others = filter( + lambda i: not cluster_context.check_for_process(i, mfs.CLDB), + instances) + self._start_zk_nodes(zookeepers) + self._start_cldb_nodes(cldbs) + self._start_non_cldb_nodes(others) + self._await_cldb(cluster_context, instances) + + def stop(self, cluster_context, instances=None): + instances = instances or cluster_context.get_instances() + zookeepers = cluster_context.filter_instances(instances, mng.ZOOKEEPER) + self._stop_zk_nodes(zookeepers) + self._stop_warden_on_nodes(instances) + + def _await_cldb(self, cluster_context, instances=None, timeout=600): + instances = instances or cluster_context.get_instances() + cldb_node = cluster_context.get_instance(mfs.CLDB) + start_time = timeutils.utcnow() + retry_count = 0 + with cldb_node.remote() as r: + LOG.debug("Waiting %s seconds for CLDB initialization", timeout) + while timeutils.delta_seconds(start_time, + timeutils.utcnow()) < timeout: + ec, out = r.execute_command(NODE_LIST_CMD, + raise_when_error=False) + resp = json.loads(out) + status = resp['status'] + if str(status).lower() == 'ok': + ips = [n['ip'] for n in resp['data']] + retry_count += 1 + for i in instances: + if (i.management_ip not in ips + and retry_count > DEFAULT_RETRY_COUNT): + raise ex.HadoopProvisionError(_( + "Node failed to connect to CLDB: %s") % + i.management_ip) + break + else: + context.sleep(DELAY) + else: + raise ex.HadoopProvisionError(_("CLDB failed to start")) + + def _start_nodes(self, instances, sys_service): + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('start-%s-%s' % (sys_service, instance.id), + self._start_service, instance, sys_service) + + def _stop_nodes(self, instances, sys_service): + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('stop-%s-%s' % (sys_service, instance.id), + self._stop_service, instance, sys_service) + + def _start_zk_nodes(self, instances): + LOG.debug('Starting ZooKeeper nodes') + self._start_nodes(instances, mng.ZOOKEEPER.ui_name) + LOG.debug('ZooKeeper nodes successfully started') + + def _start_cldb_nodes(self, instances): + LOG.debug('Starting CLDB nodes') + self._start_nodes(instances, WARDEN_SERVICE) + LOG.debug('CLDB nodes successfully started') + + def _start_non_cldb_nodes(self, instances): + LOG.debug('Starting non-control nodes') + self._start_nodes(instances, WARDEN_SERVICE) + LOG.debug('Non-control nodes successfully started') + + def _stop_zk_nodes(self, instances): + self._stop_nodes(instances, mng.ZOOKEEPER.ui_name) + + def _stop_warden_on_nodes(self, instances): + self._stop_nodes(instances, WARDEN_SERVICE) + + @staticmethod + def _do_service_action(instance, service, action): + with instance.remote() as r: + cmd = "service mapr-%(service)s %(action)s" + args = {'service': service.lower(), 'action': action} + cmd = cmd % args + LOG.debug( + 'Executing "%(command)s" on node=%(ip)s', + {'command': cmd, 'ip': instance.management_ip} + ) + r.execute_command(cmd, run_as_root=True) + + def _start_service(self, instance, service): + return self._do_service_action(instance, service, START) + + def _stop_service(self, instance, service): + return self._do_service_action(instance, service, STOP) + + def _get_cldb_instances(self, c_context, instances): + current = self._get_current_cluster_instances(c_context, instances) + return c_context.filter_instances(current, mfs.CLDB) + + @staticmethod + def await_no_heartbeat(): + delay = WAIT_NODE_ALARM_NO_HEARTBEAT + LOG.debug('Waiting for "NO_HEARBEAT" alarm') + context.sleep(delay) + + def _get_current_cluster_instances(self, cluster_context, instances): + all_instances = cluster_context.get_instances() + return [x for x in all_instances if x not in instances] diff --git a/sahara/plugins/mapr/base/base_version_handler.py b/sahara/plugins/mapr/base/base_version_handler.py new file mode 100644 index 00000000..a512e528 --- /dev/null +++ b/sahara/plugins/mapr/base/base_version_handler.py @@ -0,0 +1,126 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import collections as c + +import sahara.plugins.mapr.abstract.version_handler as vh +import sahara.plugins.mapr.base.base_cluster_configurer as base_conf +import sahara.plugins.mapr.base.base_cluster_validator as bv +import sahara.plugins.mapr.base.base_edp_engine as edp +import sahara.plugins.mapr.base.base_node_manager as bs +import sahara.plugins.mapr.util.general as util +import sahara.plugins.utils as u + + +class BaseVersionHandler(vh.AbstractVersionHandler): + def __init__(self): + self._validator = bv.BaseValidator() + self._configurer = base_conf.BaseConfigurer() + self._node_manager = bs.BaseNodeManager() + self._version = None + self._required_services = [] + self._services = [] + self._node_processes = {} + self._configs = [] + + def get_edp_engine(self, cluster, job_type): + if job_type in edp.MapROozieJobEngine.get_supported_job_types(): + return edp.MapROozieJobEngine(cluster) + return None + + def get_services(self): + return self._services + + def get_required_services(self): + return self._required_services + + def get_node_processes(self): + if not self._node_processes: + self._node_processes = { + s.ui_name: [np.ui_name for np in s.node_processes] + for s in self.get_services() if s.node_processes + } + return self._node_processes + + def get_configs(self): + if not self._configs: + configs = [c for s in self.get_services() for c in s.get_configs()] + configs += self._get_version_configs() + self._configs = util.unique_list(configs) + return self._configs + + def _get_version_configs(self): + services = self.get_services() + + service_version_dict = c.defaultdict(list) + for service in services: + service_version_dict[service.ui_name].append(service.version) + + result = [] + for service in services: + versions = service_version_dict[service.ui_name] + if len(versions) > 1: + result.append(service.get_version_config(versions)) + + return result + + def get_configs_dict(self): + configs = dict() + for service in self.get_services(): + configs.update(service.get_configs_dict()) + return configs + + def configure_cluster(self, cluster): + instances = u.get_instances(cluster) + cluster_context = self.get_context(cluster, added=instances) + self._configurer.configure(cluster_context) + + def start_cluster(self, cluster): + instances = u.get_instances(cluster) + cluster_context = self.get_context(cluster, added=instances) + self._node_manager.start(cluster_context) + self._configurer.post_start(cluster_context) + + def validate(self, cluster): + cluster_context = self.get_context(cluster) + self._validator.validate(cluster_context) + + def validate_scaling(self, cluster, existing, additional): + cluster_context = self.get_context(cluster) + self._validator.validate_scaling(cluster_context, existing, additional) + + def scale_cluster(self, cluster, instances): + cluster_context = self.get_context(cluster, added=instances) + cluster_context._cluster_services = None + self._configurer.configure(cluster_context, instances) + self._configurer.update(cluster_context, instances) + self._node_manager.start(cluster_context, instances) + + def decommission_nodes(self, cluster, instances): + cluster_context = self.get_context(cluster, removed=instances) + cluster_context._cluster_services = None + self._node_manager.move_nodes(cluster_context, instances) + self._node_manager.stop(cluster_context, instances) + self._node_manager.await_no_heartbeat() + self._node_manager.remove_nodes(cluster_context, instances) + self._configurer.update(cluster_context, instances) + + def get_open_ports(self, node_group): + result = [] + for service in self.get_services(): + for node_process in service.node_processes: + if node_process.ui_name in node_group.node_processes: + result += node_process.open_ports + return util.unique_list(result) diff --git a/sahara/plugins/mapr/domain/__init__.py b/sahara/plugins/mapr/domain/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/domain/configuration_file.py b/sahara/plugins/mapr/domain/configuration_file.py new file mode 100644 index 00000000..40981a23 --- /dev/null +++ b/sahara/plugins/mapr/domain/configuration_file.py @@ -0,0 +1,132 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import abc +import os + +import jinja2 as j2 +import six + +import sahara.exceptions as e +from sahara.i18n import _ +import sahara.utils.xmlutils as xml + + +@six.add_metaclass(abc.ABCMeta) +class BaseConfigurationFile(object): + def __init__(self, file_name): + self.f_name = file_name + self._config_dict = dict() + self._local_path = None + self._remote_path = None + + @property + def remote_path(self): + return self._remote_path + + @remote_path.setter + def remote_path(self, path): + self._remote_path = os.path.join(path, self.f_name) + + @abc.abstractmethod + def render(self): + pass + + @abc.abstractmethod + def parse(self, content): + pass + + def fetch(self, instance): + with instance.remote() as r: + content = r.read_file_from(self.remote_path, run_as_root=True) + self.parse(content) + + def load_properties(self, config_dict): + for k, v in six.iteritems(config_dict): + self.add_property(k, v) + + def add_property(self, name, value): + self._config_dict[name] = value + + def add_properties(self, properties): + for prop in six.iteritems(properties): + self.add_property(*prop) + + def _get_config_value(self, name): + return self._config_dict.get(name, None) + + def __repr__(self): + return '' % self.f_name + + +class HadoopXML(BaseConfigurationFile): + def __init__(self, file_name): + super(HadoopXML, self).__init__(file_name) + + def parse(self, content): + configs = xml.parse_hadoop_xml_with_name_and_value(content) + map(lambda i: self.add_property(i['name'], i['value']), configs) + + def render(self): + return xml.create_hadoop_xml(self._config_dict) + + +class RawFile(BaseConfigurationFile): + def __init__(self, file_name): + super(RawFile, self).__init__(file_name) + + def render(self): + return self._config_dict.get('content', '') + + def parse(self, content): + self._config_dict.update({'content': content}) + + +class PropertiesFile(BaseConfigurationFile): + def __init__(self, file_name): + super(PropertiesFile, self).__init__(file_name) + + def parse(self, content): + for line in content.splitlines(): + prop = line.strip() + if len(prop) == 0: + continue + if prop[0] in ['#', '!']: + continue + name, value = prop.split("=") + self.add_property(name.strip(), value.strip()) + + def render(self): + lines = ['%s=%s' % (k, v) for k, v in six.iteritems(self._config_dict)] + return "\n".join(lines) + + +class TemplateFile(BaseConfigurationFile): + def __init__(self, file_name): + super(TemplateFile, self).__init__(file_name) + self._template = None + + @staticmethod + def _j2_render(template, arg_dict): + if template: + return template.render(arg_dict) + else: + raise e.InvalidDataException(_('Template object must be defined')) + + def render(self): + return self._j2_render(self._template, self._config_dict) + + def parse(self, content): + self._template = j2.Template(content) diff --git a/sahara/plugins/mapr/domain/distro.py b/sahara/plugins/mapr/domain/distro.py new file mode 100644 index 00000000..8be5729b --- /dev/null +++ b/sahara/plugins/mapr/domain/distro.py @@ -0,0 +1,81 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +class Distro(object): + def __init__(self, name, install_cmd, version_separator): + self._name = name + self._install_command = install_cmd + self._version_separator = version_separator + + @property + def name(self): + return self._name + + @property + def install_command(self): + return self._install_command + + @property + def version_separator(self): + return self._version_separator + + def create_install_cmd(self, packages): + s = self.version_separator + + def join_package_version(pv_item): + p, v = pv_item if len(pv_item) > 1 else (pv_item[0], None) + return p + s + v + '*' if v else p + + packages = ' '.join(map(join_package_version, packages)) + command = '%(install_cmd)s %(packages)s' + args = {'install_cmd': self.install_command, 'packages': packages} + return command % args + + +UBUNTU = Distro( + name='Ubuntu', + install_cmd='apt-get install --force-yes -y', + version_separator='=', +) + +CENTOS = Distro( + name='CentOS', + install_cmd='yum install -y', + version_separator='-', +) + +RHEL = Distro( + name='RedHatEnterpriseServer', + install_cmd='yum install -y', + version_separator='-', +) + +SUSE = Distro( + name='Suse', + install_cmd='zypper', + version_separator=':', +) + + +def get_all(): + return [UBUNTU, CENTOS, RHEL, SUSE] + + +def get(instance): + with instance.remote() as r: + name = r.execute_command('cat /etc/*-release', run_as_root=True)[1] + for d in get_all(): + if d.name in name: + return d diff --git a/sahara/plugins/mapr/domain/node_process.py b/sahara/plugins/mapr/domain/node_process.py new file mode 100644 index 00000000..42cea1a5 --- /dev/null +++ b/sahara/plugins/mapr/domain/node_process.py @@ -0,0 +1,62 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +WARDEN_MANAGED_CMD = ('sudo -u mapr maprcli node services' + ' -name %(service)s' + ' -action %(action)s' + ' -nodes %(nodes)s') +START_ACTION = 'start' +STOP_ACTION = 'stop' +RESTART_ACTION = 'restart' + + +class NodeProcess(object): + def __init__(self, name, ui_name, package, open_ports=None): + self._name = name + self._ui_name = ui_name + self._package = package + self._open_ports = open_ports or [] + + @property + def name(self): + return self._name + + @property + def ui_name(self): + return self._ui_name + + @property + def package(self): + return self._package + + @property + def open_ports(self): + return self._open_ports + + def start(self, instances): + self.execute_action(instances, START_ACTION) + + def restart(self, instances): + self.execute_action(instances, RESTART_ACTION) + + def stop(self, instances): + self.execute_action(instances, STOP_ACTION) + + def execute_action(self, instances, action): + nodes = ','.join(map(lambda i: i.management_ip, instances)) + args = {'service': self.name, 'action': action, 'nodes': nodes} + command = WARDEN_MANAGED_CMD % args + with instances[0].remote() as r: + r.execute_command(command) diff --git a/sahara/plugins/mapr/domain/service.py b/sahara/plugins/mapr/domain/service.py new file mode 100644 index 00000000..9b260733 --- /dev/null +++ b/sahara/plugins/mapr/domain/service.py @@ -0,0 +1,224 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import json + +from sahara import context +import sahara.exceptions as e +from sahara.i18n import _ +import sahara.plugins.exceptions as ex +import sahara.plugins.provisioning as p +from sahara.utils import files as files + + +_INSTALL_PACKAGES_TIMEOUT = 3600 + + +class Service(object): + def __init__(self): + self._name = None + self._ui_name = None + self._node_processes = [] + self._version = None + self._dependencies = [] + self._ui_info = [] + self._cluster_defaults = [] + self._node_defaults = [] + self._validation_rules = [] + + @property + def name(self): + return self._name + + @property + def ui_name(self): + return self._ui_name + + @property + def version(self): + return self._version + + @property + def node_processes(self): + return self._node_processes + + @property + def dependencies(self): + return self._dependencies + + @property + def ui_info(self): + return self._ui_info + + @property + def cluster_defaults(self): + return self._cluster_defaults + + @property + def node_defaults(self): + return self._node_defaults + + @property + def validation_rules(self): + return self._validation_rules + + def install(self, cluster_context, instances): + with context.ThreadGroup() as tg: + for instance in instances: + tg.spawn('install-packages-%s' % instance.id, + self._install_packages_on_instance, cluster_context, + instance) + + def _install_packages_on_instance(self, cluster_context, instance): + processes = [p for p in self.node_processes if + p.ui_name in instance.node_group.node_processes] + if processes is not None and len(processes) > 0: + packages = self._get_packages(processes) + cmd = cluster_context.distro.create_install_cmd(packages) + with instance.remote() as r: + r.execute_command(cmd, run_as_root=True, + timeout=_INSTALL_PACKAGES_TIMEOUT, + raise_when_error=False) + + def _get_packages(self, node_processes): + result = [] + + result += self.dependencies + result += [(np.package, self.version) for np in node_processes] + + return result + + def post_install(self, cluster_context, instances): + pass + + def post_start(self, cluster_context, instances): + pass + + def configure(self, cluster_context, instances=None): + pass + + def update(self, cluster_context, instances=None): + pass + + def get_file_path(self, file_name): + template = 'plugins/mapr/services/%(service)s/resources/%(file_name)s' + args = {'service': self.name, 'file_name': file_name} + return template % args + + def get_configs(self): + result = [] + + for d_file in self.cluster_defaults: + data = self._load_config_file(self.get_file_path(d_file)) + result += [self._create_config_obj(c, self.ui_name) for c in data] + + for d_file in self.node_defaults: + data = self._load_config_file(self.get_file_path(d_file)) + result += [self._create_config_obj(c, self.ui_name, scope='node') + for c in data] + + return result + + def get_configs_dict(self): + result = dict() + for conf_obj in self.get_configs(): + result.update({conf_obj.name: conf_obj.default_value}) + return {self.ui_name: result} + + def _load_config_file(self, file_path=None): + return json.loads(files.get_file_text(file_path)) + + def get_config_files(self, cluster_context, configs, instance=None): + return [] + + def _create_config_obj(self, item, target='general', scope='cluster', + high_priority=False): + def _prepare_value(value): + if isinstance(value, str): + return value.strip().lower() + return value + + conf_name = _prepare_value(item.get('name', None)) + + conf_value = _prepare_value(item.get('value', None)) + + if not conf_name: + raise ex.HadoopProvisionError(_("Config missing 'name'")) + + if conf_value is None: + raise e.InvalidDataException( + _("Config '%s' missing 'value'") % conf_name) + + if high_priority or item.get('priority', 2) == 1: + priority = 1 + else: + priority = 2 + + return p.Config( + name=conf_name, + applicable_target=target, + scope=scope, + config_type=item.get('config_type', "string"), + config_values=item.get('config_values', None), + default_value=conf_value, + is_optional=item.get('is_optional', True), + description=item.get('description', None), + priority=priority) + + def get_version_config(self, versions): + return p.Config( + name='%s Version' % self._ui_name, + applicable_target=self.ui_name, + scope='cluster', + config_type='dropdown', + config_values=[(v, v) for v in sorted(versions, reverse=True)], + is_optional=False, + description=_('Specify the version of the service'), + priority=1) + + def __eq__(self, other): + if isinstance(other, self.__class__): + version_eq = self.version == other.version + ui_name_eq = self.ui_name == other.ui_name + return version_eq and ui_name_eq + return NotImplemented + + def restart(self, instances): + for node_process in self.node_processes: + node_process.restart(instances) + + def service_dir(self, cluster_context): + args = {'mapr_home': cluster_context.mapr_home, 'name': self.name} + return '%(mapr_home)s/%(name)s' % args + + def home_dir(self, cluster_context): + args = { + 'service_dir': self.service_dir(cluster_context), + 'name': self.name, + 'version': self.version, + } + return '%(service_dir)s/%(name)s-%(version)s' % args + + def conf_dir(self, cluster_context): + return '%s/conf' % self.home_dir(cluster_context) + + +class Single(type): + _instances = {} + + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + cls._instances[cls] = super(Single, cls).__call__(*args, **kwargs) + return cls._instances[cls] diff --git a/sahara/plugins/mapr/plugin.py b/sahara/plugins/mapr/plugin.py index 4f3216f2..3c7106ff 100644 --- a/sahara/plugins/mapr/plugin.py +++ b/sahara/plugins/mapr/plugin.py @@ -1,29 +1,29 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +from sahara.i18n import _ import sahara.plugins.mapr.versions.version_handler_factory as vhf import sahara.plugins.provisioning as p class MapRPlugin(p.ProvisioningPluginBase): title = 'MapR Hadoop Distribution' - description = ('The MapR Distribution provides a full Hadoop stack that' - ' includes the MapR File System (MapR-FS), MapReduce,' - ' a complete Hadoop ecosystem, and the MapR Control System' - ' user interface') - hdfs_user = 'mapr' + description = _('The MapR Distribution provides a full Hadoop stack that' + ' includes the MapR File System (MapR-FS), MapReduce,' + ' a complete Hadoop ecosystem, and the MapR Control System' + ' user interface') def _get_handler(self, hadoop_version): return vhf.VersionHandlerFactory.get().get_handler(hadoop_version) @@ -34,9 +34,6 @@ class MapRPlugin(p.ProvisioningPluginBase): def get_description(self): return MapRPlugin.description - def get_hdfs_user(self): - return MapRPlugin.hdfs_user - def get_versions(self): return vhf.VersionHandlerFactory.get().get_versions() @@ -67,22 +64,10 @@ class MapRPlugin(p.ProvisioningPluginBase): v_handler = self._get_handler(cluster.hadoop_version) v_handler.decommission_nodes(cluster, instances) - def get_oozie_server(self, cluster): - v_handler = self._get_handler(cluster.hadoop_version) - return v_handler.get_oozie_server(cluster) - - def get_name_node_uri(self, cluster): - v_handler = self._get_handler(cluster.hadoop_version) - return v_handler.get_name_node_uri(cluster) - - def get_oozie_server_uri(self, cluster): - v_handler = self._get_handler(cluster.hadoop_version) - return v_handler.get_oozie_server_uri(cluster) - - def get_resource_manager_uri(self, cluster): - v_handler = self._get_handler(cluster.hadoop_version) - return v_handler.get_resource_manager_uri(cluster) - def get_edp_engine(self, cluster, job_type): v_handler = self._get_handler(cluster.hadoop_version) return v_handler.get_edp_engine(cluster, job_type) + + def get_open_ports(self, node_group): + v_handler = self._get_handler(node_group.cluster.hadoop_version) + return v_handler.get_open_ports(node_group) diff --git a/sahara/plugins/mapr/resources/add_mapr_repo.sh b/sahara/plugins/mapr/resources/add_mapr_repo.sh new file mode 100644 index 00000000..97aa1695 --- /dev/null +++ b/sahara/plugins/mapr/resources/add_mapr_repo.sh @@ -0,0 +1,51 @@ +#!/bin/sh +if [ "$1" = "Ubuntu" ]; then + cat >> /etc/apt/sources.list.d/maprtech.list << EOF +deb %(ubuntu_mapr_base_repo)s +deb %(ubuntu_mapr_ecosystem_repo)s +EOF + cat >> /etc/apt/sources.list.d/security_repo.list << EOF +deb http://security.ubuntu.com/ubuntu precise-security main +deb http://security.ubuntu.com/ubuntu lucid-security main +EOF + sudo apt-get install -y --force-yes wget + wget -O - http://package.mapr.com/releases/pub/maprgpg.key | sudo apt-key add - + sudo apt-get update + +elif [ "$1" = 'CentOS' -o "$1" = 'RedHatEnterpriseServer' ]; then + cat >> /etc/yum.repos.d/maprtech.repo << EOF +[maprtech] +name=MapR Technologies +baseurl=%(centos_mapr_repo)s +enabled=1 +gpgcheck=0 +protect=1 + +[maprecosystem] +name=MapR Technologies +baseurl=%(centos_mapr_ecosystem_repo)s +enabled=1 +gpgcheck=0 +protect=1 +EOF + rpm --import http://package.mapr.com/releases/pub/maprgpg.key + yum install -y wget + release=`cat /etc/*-release` + if [[ $release =~ 6\.[0-9] ]]; then + cd /tmp + wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm + rpm -Uvh epel-release-6*.rpm + + elif [[ $release =~ 7\.[0-9] ]]; then + cd /tmp + wget http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm + rpm -Uvh epel-release-7*.rpm + else + echo "Unsupported distribution version" + exit 1 + fi + rpm -Uvh ftp://rpmfind.net/linux/centos/6.6/os/x86_64/Packages/libevent-1.4.13-4.el6.x86_64.rpm +else + echo "Unknown distribution" + exit 1 +fi diff --git a/sahara/plugins/mapr/util/resources/create_disk_list_file.sh b/sahara/plugins/mapr/resources/create_disk_list_file.sh similarity index 100% rename from sahara/plugins/mapr/util/resources/create_disk_list_file.sh rename to sahara/plugins/mapr/resources/create_disk_list_file.sh diff --git a/sahara/plugins/mapr/resources/install_java.sh b/sahara/plugins/mapr/resources/install_java.sh new file mode 100644 index 00000000..067643c2 --- /dev/null +++ b/sahara/plugins/mapr/resources/install_java.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +set -e + +JAVA_TARGET_LOCATION="/usr/java" + +export JAVA_DOWNLOAD_URL=${JAVA_DOWNLOAD_URL:-"http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz"} + +JAVA_HOME=$TARGET_ROOT$JAVA_TARGET_LOCATION + +mkdir -p $JAVA_HOME + +JAVA_FILE=$(basename $JAVA_DOWNLOAD_URL) +wget --no-check-certificate --no-cookies -c \ + --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \ + -O $JAVA_HOME/$JAVA_FILE $JAVA_DOWNLOAD_URL +if [ $? -eq 0 ]; then + echo "Java download successful" +else + echo "Error downloading $JAVA_DOWNLOAD_URL, exiting" + exit 1 +fi + + +cd $JAVA_HOME +if [[ $JAVA_FILE == *.tar.gz ]]; then + echo -e "\n" | tar -zxf $JAVA_FILE + JAVA_NAME=`ls -1 $JAVA_TARGET_LOCATION | grep -v tar.gz` + chown -R root:root $JAVA_HOME + cat >> /etc/profile.d/java.sh < + + + + + javax.jdo.option.ConnectionURL + jdbc:mysql://localhost:3306/metastore + ?createDatabaseIfNotExist=true + + JDBC connect string for a JDBC metastore + + + + javax.jdo.option.ConnectionDriverName + com.mysql.jdbc.Driver + Driver class name for a JDBC metastore + + + + javax.jdo.option.ConnectionUserName + root + username to use against metastore database + + + + javax.jdo.option.ConnectionPassword + + password to use against metastore database + + + + hive.metastore.uris + thrift://localhost:9083 + + + + hive.server2.authentication + NOSASL + + + + hive.zookeeper.property.clientPort + 5181 + + + + hbase.zookeeper.property.clientPort + 5181 + + + + hive.metastore.execute.setugi + true + + + \ No newline at end of file diff --git a/sahara/plugins/mapr/services/httpfs/__init__.py b/sahara/plugins/mapr/services/httpfs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/httpfs/httpfs.py b/sahara/plugins/mapr/services/httpfs/httpfs.py new file mode 100644 index 00000000..6d6fa6b4 --- /dev/null +++ b/sahara/plugins/mapr/services/httpfs/httpfs.py @@ -0,0 +1,45 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import six + +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.commands as cmd +import sahara.plugins.mapr.util.validation_utils as vu + + +HTTP_FS = np.NodeProcess( + name='httpfs', + ui_name='HTTPFS', + package='mapr-httpfs', + open_ports=[14000] +) + + +@six.add_metaclass(s.Single) +class HttpFS(s.Service): + def __init__(self): + super(HttpFS, self).__init__() + self._name = 'httpfs' + self._ui_name = 'HttpFS' + self._version = '1.0' + self._node_processes = [HTTP_FS] + self._cluster_defaults = ['httpfs-default.json'] + self._validation_rules = [vu.at_least(1, HTTP_FS)] + + def post_install(self, cluster_context, instances): + instance = cluster_context.get_instance(HTTP_FS) + cmd.chown(instance, 'mapr:mapr', self.service_dir(cluster_context)) diff --git a/sahara/plugins/mapr/services/httpfs/resources/httpfs-default.json b/sahara/plugins/mapr/services/httpfs/resources/httpfs-default.json new file mode 100644 index 00000000..63c54bc9 --- /dev/null +++ b/sahara/plugins/mapr/services/httpfs/resources/httpfs-default.json @@ -0,0 +1,12 @@ +[ + { + "value": "*", + "priority": 1, + "name": "httpfs.proxyuser.mapr.hosts" + }, + { + "value": "*", + "priority": 1, + "name": "httpfs.proxyuser.mapr.groups" + } +] \ No newline at end of file diff --git a/sahara/plugins/mapr/services/mahout/__init__.py b/sahara/plugins/mapr/services/mahout/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/mahout/mahout.py b/sahara/plugins/mapr/services/mahout/mahout.py new file mode 100644 index 00000000..dc3a7eb5 --- /dev/null +++ b/sahara/plugins/mapr/services/mahout/mahout.py @@ -0,0 +1,39 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import six + +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu + + +MAHOUT = np.NodeProcess( + name='mahout', + ui_name='Mahout', + package='mapr-mahout', + open_ports=[] +) + + +@six.add_metaclass(s.Single) +class Mahout(s.Service): + def __init__(self): + super(Mahout, self).__init__() + self._name = 'mahout' + self._ui_name = 'Mahout' + self._version = '0.9' + self._node_processes = [MAHOUT] + self._validation_rules = [vu.at_least(1, MAHOUT)] diff --git a/sahara/plugins/mapr/services/management/__init__.py b/sahara/plugins/mapr/services/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/management/management.py b/sahara/plugins/mapr/services/management/management.py new file mode 100644 index 00000000..e8dd01ce --- /dev/null +++ b/sahara/plugins/mapr/services/management/management.py @@ -0,0 +1,60 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import six + +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu + + +ZK_CLIENT_PORT = 5181 + +ZOOKEEPER = np.NodeProcess( + name='mapr-zookeeper', + ui_name='ZooKeeper', + package='mapr-zookeeper', + open_ports=[ZK_CLIENT_PORT] +) + +WEB_SERVER = np.NodeProcess( + name='webserver', + ui_name='Webserver', + package='mapr-webserver', + open_ports=[8443] +) + +METRICS = np.NodeProcess( + name='metrics', + ui_name='Metrics', + package='mapr-metrics', + open_ports=[1111] +) + + +@six.add_metaclass(s.Single) +class Management(s.Service): + def __init__(self): + super(Management, self).__init__() + self._ui_name = 'Management' + self._node_processes = [ZOOKEEPER, WEB_SERVER, METRICS] + self._ui_info = [ + ('MapR Control System (MCS)', WEB_SERVER, 'https://%s:8443'), + ] + self._validation_rules = [ + vu.at_least(1, ZOOKEEPER), + vu.exactly(1, WEB_SERVER), + vu.odd_count_of(ZOOKEEPER), + ] diff --git a/sahara/plugins/mapr/services/mapreduce/__init__.py b/sahara/plugins/mapr/services/mapreduce/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/mapreduce/mapreduce.py b/sahara/plugins/mapr/services/mapreduce/mapreduce.py new file mode 100644 index 00000000..c2591bb4 --- /dev/null +++ b/sahara/plugins/mapr/services/mapreduce/mapreduce.py @@ -0,0 +1,138 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import six + +import sahara.plugins.mapr.domain.configuration_file as bcf +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu +from sahara.plugins.mapr.versions import version_handler_factory as vhf +from sahara.swift import swift_helper +from sahara.topology import topology_helper as topo +from sahara.utils import files as f + +JOB_TRACKER = np.NodeProcess( + name='jobtracker', + ui_name='JobTracker', + package='mapr-jobtracker', + open_ports=[9001, 50030] +) +TASK_TRACKER = np.NodeProcess( + name='tasktracker', + ui_name='TaskTracker', + package='mapr-tasktracker', + open_ports=[50060] +) + +JACKSON_CORE_ASL = ('plugins/mapr/services/swift/resources/' + 'jackson-core-asl-1.9.13.jar') +JACKSON_MAPPER_ASL = ('plugins/mapr/services/swift/resources/' + 'jackson-mapper-asl-1.9.13.jar') + + +@six.add_metaclass(s.Single) +class MapReduce(s.Service): + cluster_mode = 'classic' + + def __init__(self): + super(MapReduce, self).__init__() + self._ui_name = 'MapReduce' + self._name = 'hadoop' + self._version = '0.20.2' + self._node_processes = [JOB_TRACKER, TASK_TRACKER] + self._ui_info = [ + ('JobTracker', JOB_TRACKER, 'http://%s:50030'), + ('TaskTracker', TASK_TRACKER, 'http://%s:50060'), + ] + self._validation_rules = [ + vu.at_least(1, JOB_TRACKER), + vu.at_least(1, TASK_TRACKER), + ] + + def _get_packages(self, node_processes): + result = [] + + result += self.dependencies + result += [(np.package, None) for np in node_processes] + + return result + + # mapred-site.xml + def get_config_files(self, cluster_context, configs, instance=None): + core_site = bcf.HadoopXML("core-site.xml") + core_site.remote_path = self.conf_dir(cluster_context) + if instance: + core_site.fetch(instance) + core_site.add_properties(self._get_core_site_props(cluster_context)) + + mapred_site = bcf.HadoopXML("mapred-site.xml") + mapred_site.remote_path = self.conf_dir(cluster_context) + if instance: + mapred_site.fetch(instance) + mapred_site.load_properties(configs) + mapred_site.add_properties( + self._get_mapred_site_props(cluster_context)) + + return [core_site, mapred_site] + + def _get_core_site_props(self, context): + result = {} + if context.is_node_aware: + for conf in topo.vm_awareness_core_config(): + result[conf['name']] = conf['value'] + for conf in swift_helper.get_swift_configs(): + result[conf['name']] = conf['value'] + for conf in self._get_impersonation_props(): + result[conf['name']] = conf['value'] + return result + + def _get_mapred_site_props(self, context): + result = {} + if context.is_node_aware: + for conf in topo.vm_awareness_mapred_config(): + result[conf['name']] = conf['value'] + return result + + def _get_impersonation_props(self): + return [ + {'name': 'hadoop.proxyuser.mapr.groups', 'value': '*'}, + {'name': 'hadoop.proxyuser.mapr.hosts', 'value': '*'} + ] + + def configure(self, cluster_context, instances=None): + version = cluster_context.cluster.hadoop_version + handler = vhf.VersionHandlerFactory.get().get_handler(version) + if handler._version == '3.1.1': + self._update_jackson_libs(cluster_context, instances) + + def _update_jackson_libs(self, context, instances): + hadoop_lib = context.hadoop_lib + core_asl = f.get_file_text(JACKSON_CORE_ASL) + mapper_asl = f.get_file_text(JACKSON_MAPPER_ASL) + core_asl_path = '%s/%s' % (hadoop_lib, 'jackson-core-asl-1.9.13.jar') + mapper_path = '%s/%s' % (hadoop_lib, 'jackson-mapper-asl-1.9.13.jar') + libs = { + core_asl_path: core_asl, + mapper_path: mapper_asl + } + for instance in instances: + with instance.remote() as r: + r.execute_command('rm %s/jackson-*.jar' % hadoop_lib, + run_as_root=True) + r.write_files_to(libs, run_as_root=True) + + def get_file_path(self, file_name): + template = 'plugins/mapr/services/mapreduce/resources/%s' + return template % file_name diff --git a/sahara/plugins/mapr/services/mapreduce/resources/mapreduce-cluster.json b/sahara/plugins/mapr/services/mapreduce/resources/mapreduce-cluster.json new file mode 100644 index 00000000..37a4ca0e --- /dev/null +++ b/sahara/plugins/mapr/services/mapreduce/resources/mapreduce-cluster.json @@ -0,0 +1,91 @@ +[ + { + "name": "mapred.fairscheduler.assignmultiple", + "value": true, + "config_type": "bool", + "description": "CoreDefaultProperties" + }, + { + "name": "mapred.fairscheduler.eventlog.enabled", + "value": false, + "config_type": "bool", + "description": "Enable scheduler logging in ${HADOOP_LOG_DIR}/fairscheduler/" + }, + { + "name": "mapred.fairscheduler.smalljob.schedule.enable", + "value": true, + "config_type": "bool", + "description": "Enable small job fast scheduling inside fair scheduler. TaskTrackers should reserve a slot called ephemeral slot which is used for smalljob if cluster is busy." + }, + { + "name": "mapred.fairscheduler.smalljob.max.maps", + "value": 10, + "config_type": "int", + "description": "Small job definition. Max number of maps allowed in small job." + }, + { + "name": "mapred.fairscheduler.smalljob.max.reducers", + "value": 10, + "config_type": "int", + "description": "Small job definition. Max number of reducers allowed in small job." + }, + { + "name": "mapred.fairscheduler.smalljob.max.inputsize", + "value": 10737418240, + "config_type": "int", + "description": "Small job definition. Max input size in bytes allowed for a small job. Default is 10 GB" + }, + { + "name": "mapred.fairscheduler.smalljob.max.reducer.inputsize", + "value": 1073741824, + "config_type": "int", + "description": "Small job definition. Max estimated input size for a reducer allowed in small job. Default is 1 GB per reducer." + }, + { + "name": "mapred.cluster.ephemeral.tasks.memory.limit.mb", + "value": 200, + "config_type": "int", + "description": "Small job definition. Max memory in mbytes reserved for an ephermal slot. Default is 200 mb. This value must be same on JobTracker and TaskTracker nodes." + }, + { + "name": "mapreduce.jobtracker.node.labels.file", + "value": "/", + "description": "File on maprfs that has mapping of nodes and labels." + }, + { + "name": "mapred.tasktracker.ephemeral.tasks.maximum", + "value": 1, + "config_type": "int", + "description": "Reserved slot for small job scheduling" + }, + { + "name": "mapred.tasktracker.ephemeral.tasks.timeout", + "value": 10000, + "config_type": "int", + "description": "Maximum time in ms a task is allowed to occupy ephemeral slot" + }, + { + "name": "mapred.tasktracker.ephemeral.tasks.ulimit", + "value": 4294967296, + "config_type": "int", + "description": "Ulimit (bytes) on all tasks sheduled on an ephemeral slot" + }, + { + "name": "mapreduce.tasktracker.group", + "value": "root", + "description": "Group to which TaskTracker belongs." + }, + { + "name": "mapred.local.dir", + "value": "/tmp/mapr-hadoop/mapred/local", + "description": "The local directory where MapReduce stores job jar, xml files and creates work dirs for tasks. MapR hadoop uses a local volume map outputs." + }, + { + "name": "mapred.map.child.java.opts", + "value": "-Xmx1024m" + }, + { + "name": "mapred.reduce.child.java.opts", + "value": "-Xmx3072m" + } +] \ No newline at end of file diff --git a/sahara/plugins/mapr/services/maprfs/__init__.py b/sahara/plugins/mapr/services/maprfs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/maprfs/maprfs.py b/sahara/plugins/mapr/services/maprfs/maprfs.py new file mode 100644 index 00000000..9fe9f49a --- /dev/null +++ b/sahara/plugins/mapr/services/maprfs/maprfs.py @@ -0,0 +1,140 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from oslo_log import log as logging +import six + +from sahara import context +from sahara.i18n import _ +import sahara.plugins.mapr.domain.configuration_file as bcf +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu +import sahara.plugins.provisioning as p +from sahara.utils import files + + +LOG = logging.getLogger(__name__) + +CLDB = np.NodeProcess( + name='cldb', + ui_name='CLDB', + package='mapr-cldb', + open_ports=[7222, 7220, 7221] +) +FILE_SERVER = np.NodeProcess( + name='fileserver', + ui_name='FileServer', + package='mapr-fileserver', + open_ports=[] +) +NFS = np.NodeProcess( + name='nfs', + ui_name='NFS', + package='mapr-nfs', + open_ports=[2049, 9997, 9998] +) + + +@six.add_metaclass(s.Single) +class MapRFS(s.Service): + _CREATE_DISK_LIST = 'plugins/mapr/resources/create_disk_list_file.sh' + _DISK_SETUP_CMD = '/opt/mapr/server/disksetup -F /tmp/disk.list' + _DISK_SETUP_TIMEOUT = 600 + + ENABLE_MAPR_DB_NAME = 'Enable MapR-DB' + ENABLE_MAPR_DB_CONFIG = p.Config( + name=ENABLE_MAPR_DB_NAME, + applicable_target='general', + scope='cluster', + config_type="bool", + priority=1, + default_value=True, + description=_('Specifies that MapR-DB is in use.') + ) + + def __init__(self): + super(MapRFS, self).__init__() + self._ui_name = 'MapRFS' + self._node_processes = [CLDB, FILE_SERVER, NFS] + self._ui_info = [ + ('Container Location Database (CLDB)', CLDB, 'http://%s:7221'), + ] + self._validation_rules = [ + vu.at_least(1, CLDB), + vu.each_node_has(FILE_SERVER), + vu.on_same_node(CLDB, FILE_SERVER), + ] + + def service_dir(self, cluster_context): + return + + def home_dir(self, cluster_context): + return + + def conf_dir(self, cluster_context): + return '%s/conf' % cluster_context.mapr_home + + def post_install(self, cluster_context, instances): + LOG.debug('Initializing MapR FS') + instances = instances or cluster_context.get_instances() + file_servers = cluster_context.filter_instances(instances, FILE_SERVER) + with context.ThreadGroup() as tg: + for instance in file_servers: + tg.spawn('init-mfs-%s' % instance.id, + self._init_mfs_instance, instance) + LOG.debug('MapR FS successfully initialized') + + def _init_mfs_instance(self, instance): + self._generate_disk_list_file(instance, self._CREATE_DISK_LIST) + self._execute_disksetup(instance) + + def _generate_disk_list_file(self, instance, path_to_disk_setup_script): + LOG.debug('Creating disk list file') + script_path = '/tmp/disk_setup_script.sh' + with instance.remote() as r: + r.write_file_to( + script_path, files.get_file_text(path_to_disk_setup_script)) + r.execute_command('chmod +x ' + script_path, run_as_root=True) + args = ' '.join(instance.node_group.storage_paths()) + cmd = '%s %s' % (script_path, args) + r.execute_command(cmd, run_as_root=True) + + def _execute_disksetup(self, instance): + with instance.remote() as rmt: + rmt.execute_command( + self._DISK_SETUP_CMD, run_as_root=True, + timeout=self._DISK_SETUP_TIMEOUT) + + def get_configs(self): + return [MapRFS.ENABLE_MAPR_DB_CONFIG] + + def get_config_files(self, cluster_context, configs, instance=None): + default_path = 'plugins/mapr/services/maprfs/resources/cldb.conf' + cldb_conf = bcf.PropertiesFile("cldb.conf") + cldb_conf.remote_path = self.conf_dir(cluster_context) + if instance: + cldb_conf.fetch(instance) + cldb_conf.parse(files.get_file_text(default_path)) + cldb_conf.add_properties(self._get_cldb_conf_props(cluster_context)) + + return [cldb_conf] + + def _get_cldb_conf_props(self, context): + zookeepers = context.get_zookeeper_nodes_ip_with_port() + result = {'cldb.zookeeper.servers': zookeepers} + if context.is_node_aware: + result['net.topology.script.file.name'] = '/opt/mapr/topology.sh' + return result diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/cldb.conf b/sahara/plugins/mapr/services/maprfs/resources/cldb.conf similarity index 100% rename from sahara/plugins/mapr/versions/v3_1_1/resources/default/cldb.conf rename to sahara/plugins/mapr/services/maprfs/resources/cldb.conf diff --git a/sahara/plugins/mapr/services/mysql/__init__.py b/sahara/plugins/mapr/services/mysql/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/mysql/mysql.py b/sahara/plugins/mapr/services/mysql/mysql.py new file mode 100644 index 00000000..f880d051 --- /dev/null +++ b/sahara/plugins/mapr/services/mysql/mysql.py @@ -0,0 +1,208 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import collections as c + +from oslo_log import log as logging +import six + +import sahara.plugins.mapr.domain.configuration_file as cf +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.services.hive.hive as hive +import sahara.utils.files as f + +LOG = logging.getLogger(__name__) + +db_spec = c.namedtuple('DatabaseSpec', ['db_name', 'user', 'password']) + + +@six.add_metaclass(s.Single) +class MySQL(s.Service): + METRICS_SPECS = db_spec('metrics', 'maprmetrics', 'mapr') + METASTORE_SPECS = db_spec('metastore', 'maprmetastore', 'mapr') + RDBMS_SPECS = db_spec('rdbms', 'maprrdbms', 'mapr') + OOZIE_SPECS = db_spec('oozie', 'maproozie', 'mapr') + + SELECT_DATA = 'mysql -uroot --skip-column-names -e "%s"| grep -E "\w+"' + GET_DBS_LIST = SELECT_DATA % 'SHOW DATABASES' + GET_USERS_HOSTS = ( + SELECT_DATA % "SELECT Host FROM mysql.user WHERE mysql.user.User='%s'" + ) + + SCHEMA_PATH = ( + '/opt/mapr/hive/hive-{0}/scripts/metastore/upgrade/mysql/' + 'hive-schema-{0}.0.mysql.sql') + DRIVER_CLASS = 'com.mysql.jdbc.Driver' + MYSQL_SERVER_PORT = 3306 + MYSQL_INSTALL_SCRIPT = 'plugins/mapr/resources/install_mysql.sh' + INSTALL_PACKAGES_TIMEOUT = 1800 + + def __init__(self): + super(MySQL, self).__init__() + self._ui_name = 'MySQL' + + @staticmethod + def _get_db_daemon_name(distro): + if distro.lower() == 'ubuntu': + return 'mysql' + if distro.lower() in ['centos', 'redhatenterpriseserver', 'suse']: + return 'mysqld' + return None + + @staticmethod + def _execute_script(instance, script_path, script_text=None, + user='root', password=None): + with instance.remote() as r: + if script_text: + r.write_file_to(script_path, script_text, run_as_root=True) + LOG.debug('Executing SQL script %s', script_path) + r.execute_command(("mysql %s %s < %s" % + ('-u' + user if user else '', + '-p' + password if password else '', + script_path)), + run_as_root=True) + + @staticmethod + def _create_service_db(instance, specs): + f_name = 'create_db_%s.sql' % specs.db_name + script = MySQL._create_script_obj(f_name, 'create_database.sql', + db_name=specs.db_name, + user=specs.user, + password=specs.password) + MySQL._execute_script(instance, script.remote_path, script.render()) + + @staticmethod + def _create_metrics_db(instance, databases, instances): + if MySQL.METRICS_SPECS.db_name not in databases: + MySQL._create_service_db(instance, MySQL.METRICS_SPECS) + MySQL._execute_script(instance=instance, + script_path='/opt/mapr/bin/setup.sql') + MySQL._grant_access(instance, MySQL.METRICS_SPECS, instances) + + @staticmethod + def _create_rdbms_db(instance, databases, instances): + if MySQL.RDBMS_SPECS.db_name not in databases: + MySQL._create_service_db(instance, MySQL.RDBMS_SPECS) + MySQL._grant_access(instance, MySQL.RDBMS_SPECS, instances) + + @staticmethod + def _create_metastore_db(instance, cluster_context, databases, instances): + hive_meta = cluster_context.get_instance(hive.HIVE_METASTORE) + + if not hive_meta: + return + + db_name = MySQL.METASTORE_SPECS.db_name + if db_name not in databases: + MySQL._create_service_db(instance, MySQL.METASTORE_SPECS) + MySQL._grant_access(instance, MySQL.METASTORE_SPECS, instances) + with hive_meta.remote() as r: + hive_serv = cluster_context.get_service(hive.HIVE_METASTORE) + schema_path = MySQL.SCHEMA_PATH.format(hive_serv.version) + script = MySQL._create_script_obj('hive_schema.sql', + 'hive_schema.sql', + db_name=db_name, + path=schema_path) + r.write_file_to(script.remote_path, script.render()) + args = { + 'user': MySQL.METASTORE_SPECS.user, + 'password': MySQL.METASTORE_SPECS.password, + 'host': instance.management_ip, + 'path': script.remote_path + } + cmd = 'mysql -h{host} -u{user} -p{password} < {path}' + r.execute_command(cmd.format(**args), run_as_root=True) + else: + MySQL._grant_access(instance, MySQL.METASTORE_SPECS, instances) + + @staticmethod + def _create_oozie_db(instance, databases, instances): + if MySQL.OOZIE_SPECS.db_name not in databases: + MySQL._create_service_db(instance, MySQL.OOZIE_SPECS) + MySQL._grant_access(instance, MySQL.OOZIE_SPECS, instances) + + @staticmethod + def start_mysql_server(cluster_context): + LOG.debug('Starting MySQL Server') + instance = MySQL.get_db_instance(cluster_context) + distro = cluster_context.distro + with instance.remote() as r: + r.execute_command(('service %s restart' % + MySQL._get_db_daemon_name(distro.name)), + run_as_root=True) + LOG.debug('MySQL Server successfully started') + + @staticmethod + def get_databases_list(db_instance): + with db_instance.remote() as r: + ec, out = r.execute_command(MySQL.GET_DBS_LIST) + if out: + return out.splitlines() + return list() + + @staticmethod + def get_user_hosts(db_instance, username): + with db_instance.remote() as r: + ec, out = r.execute_command(MySQL.GET_USERS_HOSTS % username) + if out: + return out.splitlines() + return list() + + @staticmethod + def get_db_instance(context): + return context.oozie_server + + @staticmethod + def create_databases(cluster_context, instances): + db_instance = MySQL.get_db_instance(cluster_context) + databases = MySQL.get_databases_list(db_instance) + MySQL._create_metrics_db(db_instance, databases, instances) + MySQL._create_rdbms_db(db_instance, databases, instances) + MySQL._create_oozie_db(db_instance, databases, instances) + MySQL._create_metastore_db( + db_instance, cluster_context, databases, instances) + + @staticmethod + def _create_script_obj(filename, template, **kwargs): + script = cf.TemplateFile(filename) + script.remote_path = '/tmp/' + script.parse(f.get_file_text( + 'plugins/mapr/services/mysql/resources/%s' % template)) + for k, v in six.iteritems(kwargs): + script.add_property(k, v) + return script + + @staticmethod + def _grant_access(instance, specs, instances): + f_name = 'grant_access_%s.sql' % specs.db_name + ips = [i.management_ip for i in instances] + user_hosts = MySQL.get_user_hosts(instance, specs.user) + script = MySQL._create_script_obj(f_name, 'grant_access.sql', + hosts=set(ips)-set(user_hosts), + db_name=specs.db_name, + user=specs.user, + password=specs.password) + MySQL._execute_script(instance, script.remote_path, script.render()) + + @staticmethod + def install_mysql(instance, distro_name): + with instance.remote() as r: + script = '/tmp/install_mysql.sh' + data = f.get_file_text(MySQL.MYSQL_INSTALL_SCRIPT) + r.write_file_to(script, data, run_as_root=True) + r.execute_command('chmod +x %s' % script, run_as_root=True) + r.execute_command('%s %s' % (script, distro_name), + run_as_root=True, + timeout=MySQL.INSTALL_PACKAGES_TIMEOUT) diff --git a/sahara/plugins/mapr/services/mysql/resources/create_database.sql b/sahara/plugins/mapr/services/mysql/resources/create_database.sql new file mode 100644 index 00000000..c7fd5afd --- /dev/null +++ b/sahara/plugins/mapr/services/mysql/resources/create_database.sql @@ -0,0 +1,7 @@ +CREATE DATABASE {{ db_name }}; +CREATE USER {{ user }}@'localhost' IDENTIFIED BY '{{ password }}'; +CREATE USER {{ user }}@'127.0.0.1' IDENTIFIED BY '{{ password }}'; +GRANT ALL PRIVILEGES ON {{ db_name }}.* TO {{ user }}@'localhost' WITH GRANT OPTION; +GRANT ALL PRIVILEGES ON {{ db_name }}.* TO {{ user }}@'127.0.0.1' WITH GRANT OPTION; +FLUSH PRIVILEGES; +FLUSH HOSTS; \ No newline at end of file diff --git a/sahara/plugins/mapr/services/mysql/resources/grant_access.sql b/sahara/plugins/mapr/services/mysql/resources/grant_access.sql new file mode 100644 index 00000000..93a45dd3 --- /dev/null +++ b/sahara/plugins/mapr/services/mysql/resources/grant_access.sql @@ -0,0 +1,6 @@ +{% for host in hosts %} +CREATE USER {{ user }}@'{{ host }}' IDENTIFIED BY '{{ password }}'; +GRANT ALL PRIVILEGES ON {{ db_name }}.* TO {{ user }}@'{{ host }}' WITH GRANT OPTION; +{% endfor %} +FLUSH PRIVILEGES; +FLUSH HOSTS; \ No newline at end of file diff --git a/sahara/plugins/mapr/services/mysql/resources/hive_schema.sql b/sahara/plugins/mapr/services/mysql/resources/hive_schema.sql new file mode 100644 index 00000000..cba6e30c --- /dev/null +++ b/sahara/plugins/mapr/services/mysql/resources/hive_schema.sql @@ -0,0 +1,2 @@ +USE {{ db_name }}; +SOURCE {{ path }}; \ No newline at end of file diff --git a/sahara/plugins/mapr/services/oozie/__init__.py b/sahara/plugins/mapr/services/oozie/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/oozie/oozie.py b/sahara/plugins/mapr/services/oozie/oozie.py new file mode 100644 index 00000000..8353a9ce --- /dev/null +++ b/sahara/plugins/mapr/services/oozie/oozie.py @@ -0,0 +1,115 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from oslo_log import log as logging +import six + +import sahara.plugins.mapr.domain.configuration_file as bcf +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.services.mysql.mysql as mysql +import sahara.plugins.mapr.util.validation_utils as vu + + +LOG = logging.getLogger(__name__) + +OOZIE = np.NodeProcess( + name='oozie', + ui_name='Oozie', + package='mapr-oozie', + open_ports=[11000] +) + + +@six.add_metaclass(s.Single) +class Oozie(s.Service): + def __init__(self): + super(Oozie, self).__init__() + self._name = 'oozie' + self._ui_name = 'Oozie' + self._version = '4.0.1' + self._node_processes = [OOZIE] + self._dependencies = [('mapr-oozie-internal', self.version)] + self._cluster_defaults = ['oozie-default.json'] + self._validation_rules = [vu.exactly(1, OOZIE)] + + def get_config_files(self, cluster_context, configs, instance=None): + oozie_site = bcf.HadoopXML("oozie-site.xml") + oozie_site.remote_path = self.conf_dir(cluster_context) + if instance: + oozie_site.fetch(instance) + oozie_site.load_properties(configs) + oozie_site.add_properties(self._get_oozie_site_props(cluster_context)) + return [oozie_site] + + def _get_oozie_site_props(self, context): + oozie_specs = mysql.MySQL.OOZIE_SPECS + + return { + 'oozie.db.schema.name': oozie_specs.db_name, + 'oozie.service.JPAService.create.db.schema': True, + 'oozie.service.JPAService.jdbc.driver': mysql.MySQL.DRIVER_CLASS, + 'oozie.service.JPAService.jdbc.url': self._get_jdbc_uri(context), + 'oozie.service.JPAService.jdbc.username': oozie_specs.user, + 'oozie.service.JPAService.jdbc.password': oozie_specs.password, + 'oozie.service.HadoopAccessorService.hadoop.configurations': + '*=%s' % context.hadoop_conf + } + + def _get_jdbc_uri(self, context): + jdbc_uri = ('jdbc:mysql://%(db_host)s:%(db_port)s/%(db_name)s?' + 'createDatabaseIfNotExist=true') + jdbc_args = { + 'db_host': mysql.MySQL.get_db_instance(context).fqdn(), + 'db_port': mysql.MySQL.MYSQL_SERVER_PORT, + 'db_name': mysql.MySQL.OOZIE_SPECS.db_name, + } + return jdbc_uri % jdbc_args + + def post_install(self, cluster_context, instances): + oozie_inst = cluster_context.get_instance(OOZIE) + oozie_service = cluster_context.get_service(OOZIE) + if oozie_service: + oozie_version = oozie_service.version + symlink_cmd = ('cp /usr/share/java/mysql-connector-java.jar ' + '/opt/mapr/oozie/oozie-%s' + '/oozie-server/lib/') % oozie_version + with oozie_inst.remote() as r: + LOG.debug('Installing MySQL connector for Oozie') + r.execute_command(symlink_cmd, run_as_root=True, + raise_when_error=False) + + def post_start(self, cluster_context, instances): + check_sharelib = 'sudo -u mapr hadoop fs -ls /oozie/share/lib' + create_sharelib_dir = 'sudo -u mapr hadoop fs -mkdir /oozie' + is_yarn = cluster_context.cluster_mode == 'yarn' + upload_args = { + 'oozie_home': self.home_dir(cluster_context), + 'share': 'share2' if is_yarn else 'share1' + } + upload_sharelib = ('sudo -u mapr hadoop fs -copyFromLocal ' + '%(oozie_home)s/%(share)s /oozie/share') + + oozie_inst = cluster_context.get_instance(OOZIE) + + with oozie_inst.remote() as r: + LOG.debug("Installing Oozie sharelibs") + command = '%(check)s || (%(mkdir)s && %(upload)s)' + args = { + 'check': check_sharelib, + 'mkdir': create_sharelib_dir, + 'upload': upload_sharelib % upload_args, + } + r.execute_command(command % args, raise_when_error=False) diff --git a/sahara/plugins/mapr/services/oozie/resources/oozie-default.json b/sahara/plugins/mapr/services/oozie/resources/oozie-default.json new file mode 100644 index 00000000..dace073b --- /dev/null +++ b/sahara/plugins/mapr/services/oozie/resources/oozie-default.json @@ -0,0 +1,28 @@ +[ + { + "value": "/oozie/share/lib", + "name": "oozie.service.WorkflowAppService.system.libpath", + "description": "System library path to use for workflow applications.This path is added to workflow application if their job properties setsthe property 'oozie.use.system.libpath' to true." + }, + { + "value": "yarn-tez", + "name": "mapreduce.framework.name", + "description": "The runtime framework for executing MapReduce jobs." + }, + { + "value": false, + "name": "use.system.libpath.for.mapreduce.and.pig.jobs", + "config_type": "bool", + "description": "If set to true, submissions of MapReduce and Pig jobs will includeautomatically the system library path, thus not requiring users tospecify where the Pig JAR files are. Instead, the ones from the systemlibrary path are used." + }, + { + "value": "*", + "name": "oozie.service.ProxyUserService.proxyuser.mapr.hosts", + "description": "List of hosts the '#USER#' user is allowed to perform 'doAs'operations.The '#USER#' must be replaced with the username o the user who isallowed to perform 'doAs' operations.The value can be the '*' wildcard or a list of hostnames.For multiple users copy this property and replace the user namein the property name." + }, + { + "value": "*", + "name": "oozie.service.ProxyUserService.proxyuser.mapr.groups", + "description": "List of groups the '#USER#' user is allowed to impersonate usersfrom to perform 'doAs' operations.The '#USER#' must be replaced with the username o the user who isallowed to perform 'doAs' operations.The value can be the '*' wildcard or a list of groups.For multiple users copy this property and replace the user namein the property name." + } +] \ No newline at end of file diff --git a/sahara/plugins/mapr/services/pig/__init__.py b/sahara/plugins/mapr/services/pig/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/pig/pig.py b/sahara/plugins/mapr/services/pig/pig.py new file mode 100644 index 00000000..a70fd40a --- /dev/null +++ b/sahara/plugins/mapr/services/pig/pig.py @@ -0,0 +1,38 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import six + +import sahara.plugins.mapr.domain.node_process as np +import sahara.plugins.mapr.domain.service as s +import sahara.plugins.mapr.util.validation_utils as vu + + +PIG = np.NodeProcess( + name='pig', + ui_name='Pig', + package='mapr-pig' +) + + +@six.add_metaclass(s.Single) +class Pig(s.Service): + def __init__(self): + super(Pig, self).__init__() + self._name = 'pig' + self._ui_name = 'Pig' + self._version = '0.13' + self._node_processes = [PIG] + self._validation_rules = [vu.at_least(1, PIG)] diff --git a/sahara/plugins/mapr/services/swift/__init__.py b/sahara/plugins/mapr/services/swift/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sahara/plugins/mapr/services/swift/resources/hadoop-swift-latest.jar b/sahara/plugins/mapr/services/swift/resources/hadoop-swift-latest.jar new file mode 100644 index 0000000000000000000000000000000000000000..b22760020776e4ff35ef91aee172ac3c3783753f GIT binary patch literal 117363 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

sx!;3CY81*(tV7=ruA|yUu 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

2dsko`4LW75AF7j}p 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

|(>5 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%0AgOxUc}mzz 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 |WxMP@?WSdJ7=j|3&70YYWRMV7>r_-!}? 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 z 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

pn$MDn?I^2zrz)9F;8l4+w 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 z zHK`k7&(V{N#P4xtm|Ywm`@v=UD7-Q^ysz`AKucG84ofLoB0gJ)rCX^{3(~LP#K4s- z=I-4xBCew^onLvsOC4BLxF7K{c$HbMQhk<^!7~F`Q#OoYSG1Z3T=a;S2DMCAm|HvP zM^kB7jprId&sEu;N9m^tQ>X{HNcuz$)KlW6i2E4L$>b)gx)~ciwmHfcG@&fJ2eCPF z+I8)sLx8Hr9Xh^r3Xz@C?K|5cj8`ES#Urnx76NCSA|69)cBkIc;}^oFdr#Wg_u`1B zhH5qG?}z8j!o#ge>XPLsUHnm0{+%cIS|~WLl^cD6Oia zR7{Eql%y9KI{jm(mK;0W1&zVubSik20V5R01L!yvN_jtDkhcz6>>-E%&a2|haLT0j zsVsV??TCazx9FR~u7w*0hVIdq9+$j39|1nZkl%=hdXMo;Ka70HIlFS~o*c2UFUDI~ z9KNWBK2nEciKB5#-)FB-(Rs4i0%#I90PN@ti!-f9Kk?x&rbZJpXC?>q8W0QFTzV zp3Us@w%ng9RzY#CH+JjVAScEinC7LkUmF?8A+1oKvSRk!N32Qr0Cu<{FxJG(ituh# z>AwJE+kC2{BJKMnW@tr_9PunlS%`+NEnXNt2>}XbuQ{B~#2towGP6g0|J=ps9fkrb zoG)mf?LaSl?3nS3wX+^chK$5Q=4jAS`cDDNUyz&dCik*I-4Vlf2^kzBB>-t3qEd zigwJIQ-|}WWRm-E(_aBQvP6^JrlcC~G?Q(NFA`px-1BDh+5O8v5f8ss#x)?|>bK?5 z>JJ0z4?nYo@K`lZmbfh?A>d}P%wud(EL+|j6$oU&H+tt6Rhl=ZW*p8eL zibIh`oN79cCY(^}-!RT9fNhdOr z$C8$R9{_ zXe3=9;Ar^E!BtW0qu@o*+{y70H!2@h*l>Pt8_QvumeX7S*Y{VnDI=;A>aY@IMyenw z%9%;|^^YZ$k1)-d%J82#OPa5!*^-}mxA(#L5m`xdsM&XpcSt2;aJa%glQiJ!rA%v4 zSdLRd1R3*?Bk&ysLb|NabaQDsTVU~VVDEwyxk?$*W!L%Sjm4m3fV_Opg1o$Bfm3J; zXU!t}k@!Vaz!zc3=_Y)lZ5mbXIodN352@vhztLQ^OS4L=X}j+4+OK6k)~ZD$h7oBx zgQg=+U9VC?nw+;-@8Og`Z?p25N#Zmc2t5h@B2#U6`BC?_zg({CBo(S0jys)}+!sf^ zEo!Zm&A?kNTo!fB2$vq7f|>~ftnxnj(N~nuwNzOiSngSPEcGE~c7^`DWvoZ+Urt85 zIW-f!yY~A2%1{M~w{vQl8Mz9hM@GWUcY3?X2OCs+6r82JaJiI811XU}2*#42pi@O< zQujU{YKn_7JN*k_eLNtg=%UPWojm4O?bl+>Y^s1&8>XEt`NQj9>4CU%Yp6XTQV{`j zhKw)IaS!><6j%J)gOzXG_>>j)J2#z=Ai#Lhm&W1ng^cIYFt-gO(nH~--FAp2bm&+?}Kpf8n%I4fzGe2oV zkuMy~D%xo&eJa>C701~po>-yK&qQA0*#Khd8`$>_(&n@8k?h%xxWiBEr^rRLV5#BI z@92OH{lrDz(#S1xMZ5LtsOj7qR3Ov^o3^&m69vyW!5pg&6vJR}vC0FTX0J&^d5A9e zCO~y@ekr=L_}A^I=Xxj`$mAK8;u)a4^%Cg@h_35as7*4mjy>nFT|PcSEc_|~vOyAf z;x45XxgAzxV>1TvMi@^c@Xad2L8`8FF;^wao?{v@RUa@H764#Z^#q{B>W;;Tm!#=! zNJXKkaUu>knyw|{Az{La8AIeKX4=oW9t{@C+XyrRG+0sTif!t9(l5P%MO}$gZkfX^ zxbTK(EV=V!VLI?fk4n+HQ`MUwfHfuf?FwhQ@k3hz?2HMvr|CkGs!1@UhgjVNecUoJ zu2K|ftk3?Ghg#KikW+_I?b@bG8pum11bNzsgfsNISm)1Q8q47+aUgtLVMQLsr8|d zqnQaAR#)eizE614kW%Fq1RFVsr3jZG$+cuJK3NHrB3{Zw+q7}`w%A0_GeH*Uz&Rl4 zB=eOfzI)e4imPCg6d_DzT<$~~ZGrl342gVm3GQOaUuCJtoC6Ni0l?*n*zw18cgGBR z^XG)L*xnYxyb@cTMxFci26MkLzjGPLGu)v)VjGCr-?2UN8_4|Z{XLWEg}pljZ@q&b z0(Db1*g|rm%QKKh)@sZ@Vq+b=wTdxc0KSHaYbv132pK2q)sU@1^m!M$11Voo{`^p) zWe{uVMjyG?M4ehvqP^;0Bw%8Usf{rXFcO`HKocAGzAyY!JHebsaq#)H4C;5xV=~F| zX!^PZaoaRTSgy+UC*r$W=PwQBrv>Z@n3gK zuxX~4lT=8PrZMbbFrCI!h?cEoS(h_js}8_~*P1`61$fUc;`Z*T3f;&r+Ck<93St8w zTs!1TgC;U+0$S<{0hh$hA>@@goxb?tB{qF)PzGK8pkDr);@}ToxW&s7sOso(H%#ac z;>=+fQji--?m$O-(&~K?_-&nVY zhez5zL57DYhv40QB>htNH}^-RKHKaR}}uBpMkX7GH*J+(YE`(_8fuJuvdZZxW1#W z&y;<`_QoZZ@M?JyE8mzm=k#XEbEdx{__aVpH{44S1mI2379f!O{NSJF(Y{OYc zHJ2N#gdSblm=paYP-_O_o)!${o$>J296<6qY@h=B2J=jf&Qk1O0N?pd%8j-q_ zLL<^ePRGR)lVUWgs&C% zFdGPbh%_mu#Bfr!^Ad7}ysoThihEU=x zsfpb&+MYaw?7)KQ>Svp-{MkQjBlpZ4=3Drk4jh5{5PHoZYg8FDtf$Z>7dYS$q-rvm z+OqO3xM8|NLCaFCx;4djRxJY_0aC=3)yzST;42nW>T2Agm6HAW+l?nc<0* zh0>LDF_cosLJ)d3sYOL&c*U?ZtZPS`r1=KQ02~TLYjsi8r*Y0BS+Lq73>~l ztaWn@Yz*H&z7?|E_X!%#(^OgrHU3XUzl2{JpGD$E9($k@DO%tQEemN^WIn`ImXKMsvZa&@*iQK`e>)9}1-=WL zPJAFs?$YHk$ShzL~v&+bvzev`Wtdx6g+EDFr`Tl zrKvvvEqV0q$wL4_GIEDQdNcF_OFk?PbHOuqCCwp}`qy7zH!4HoIP}$;4@c^o;;G}& z-(oSYMYtL|oqfPBKwFv4wmca!&R0pIgT!t#%_9KjPA3Sscx#_d*xJO-hYM-bCmA!3 z8Tbu!y)O0D+N2hBEPaB$o3KW=plZ65{n*zQ9J4EOtt{hx+<4$q#Hh4yJ&%Mc=Je5! zf4I6yBPMo{yk~G}|WUk2Qm_EdbteQ5PP)3y|)a@Nig^Woaj7 zs}q#*P)RsgT7rh2yhUZznYSz3mEzjG!g5Qqj-EtZ)!%cnClN2XZBaipj-|d8I)~>? zE|u+pujL$G;q4KVl@Q(1Yo<#}I2SgQHT|OSW7#R?c;~&yJREiwH1J*9dmzG7}hDVp)BGTiO_iH+TYZ$}r1LkO$jOXb% z&udo5B*_JY^yxhru}PdrVJa-*pK`%gK$Z>gqKi^7N>ayCM&mdZv&@4h*W*wcpGA+x zpmJm9V2e1CB=$E$Qfj=}<6Me=1pZ?_nWfUY)5Q7pOIhsyG++GRZam@t?=qgJuq(jE z)Xa%g-rm&gf0^?})VEboG*Ex8X2!@Jk4Y%4w5y1XC5J(8Q4p0PBSYh$OC!a)f^9Wn zv!>016fG_vOI+Ux*3()MYU*4{`(>{ll`P)Z+rC+Ha+|ue0`^==9ZL~@-*mj>^1Zx# z$17Zk?DF*WQ6QfLi*eb4X5oRL`wvYzCI&rQ#6gHIt)($|Kz3oe%&ECKUwyJdjP0ddmsMHD zimC)BRf{%_(#Fc^;AFU1ixyDY;?+`!al+P=GoC^bh%9AiAmYr&>13lMBB)C#@@T3PnIlz*=Q%MndWJ!c{fPH!2~)UQ=edZNx* zy&_VVSz&B)OuWK7`({_(AM0$1ca6M!rdM`b)nO$P`F%OsH=ug~qe)kYIE3F8^#$nW z4|iorjwk>**78xrb-EGH2S+d0Z0H7IL9NR=lguHiT+h_AITRb>ITmVBU4$LPa)d2= z&nj0}-hMo3oi3%{=XxSsKhpn!I1 zm`$WDi&f6KJW^0YJpEe(u+Xe*4m3Zi0oycD9en$dloZzJZhg0cS#&K6?k33d{9s;u zoDmTH!2)7+CKmi=Mdp+>nT+7DD`F}MyELDT-p*_OV0?@3Jxa=7Fj$7D5Xf5(mLy%< zm&w)+>-)?0Oj_&;s-I7`&=RoM7GHwFs-P0__3b(y@fF}2>|3hgBdNS86hPFukHH5S zrOz7P6dvgu9swg6&R;AhFdG4sO}r~)A>)E%xV{R=g4UtRL}^VSf92o2C_VGtyda|S z*KdsLwAK@C!9J|VD2g%W6wWT_XyQCw^a1`8>&u(*3f7w!KD{9md~-Lhpx}?6kvmUL zY>nRnz9S7wL|RKo9BK<)Baaz3=(v$e^=PMK{jduEJEKDoUG2%v{}Z23Jna)ha1Cl6 z4%p>^&j0<&X&p~dKub*!#B@Q+8R$!p@3+B`-oKoZQBP|Ufsr%F@6~p{5Rq#}6OtdK zeNiWnN$mr;X@qc`VNg>hDKiJ0v0+s15!TKTylf12zV#f@aUhw^PEfD5nifxM+5P~Z zjFV8_bsGB1XYB6ZEY`sBnB}9>Od1Osh0%5cZO~*C|AzbK|r5cRP5;^b7BH z$TMGGZSp-q7A#@dV7);;3O^=x^7Aaq{Np-irQCS-+7s9z^vdWS3%x(W>*k4i#nU`O zbq=!VZpU+tzUk%qtjtA)73LoPnzpMN6^{=XaieExgUT(YQqiWmMrBhYa_~YDX-}}a#F_9S2`Ei)` zk@Ndz>*00Rd5-V&{t{xBM@;mgV@O0}o(AlwRHNiAg0)WSK?UGTJ~PMmPJz%{C-X3e z|BmslQSdF7X(0I!%4#qDpboS$&%pMc;{CHNV)kf_@CETzCjL{hV9%>6RM&oP`}Vym zcQgLkW%q7>-gjCc_1K%mKYx}TX1-XrEqm{yVe&kWJG;bbU=kK)wGJh9i7bsWNhcS; ziVuJuNa2ddr%Ofd$G^lD|j+ll0i8`s-+6#mV>{GnIODKpmw2_JV- z8yW6uQI$x5rfeJ&SJz;GFKk-NHT)$UYcTNsPH3zLE9SM{C~E-?X6)Yu2g2oA-(uG* z=!*h;T5GEq(cd_o0}TxE;cS=iE;kWkgK%E~0pPR|;>I9e?%hU9qfa;-Vk975tiFb7 z#F!TgMNMKb_4H?u&!Hf9qNp~9hsLd+-Rc}+LkS*)wJ+5uFsW=pAqTbB9;BUAh#|K1 z$m&-=oM;W8G-g|RJziV$#CMKX3#DTp#C)aD4aLy4#{&+GJO6lV=EVlfb|EY^>a(g_ z*sy=EBEECHTx1L_B;S;Zc@Q_S!@*1J;kgfdgdFrTtBe$9dA3kCt({I%{^WmZHsiqK zufAXbZ+!&b@dw#V1rKn_Qk}&Z(Wt!4xGmfe>_q?hCX0UrmiiUb5D%C z3QaMBP6aizd_V{fTpRMb*GEh|7k=uWW7Cj2R<6qOWBWsI$kRx(Ci~%{5bwwcwx4r}n3pD=y%nQzcI>|PbnK=@qfwB|XTE32qMwWo7S-aZaGlaG z0Tt+&L)hR}RaPj%ns%WmHSo?anNauaf6iKFu97J1KVKnRa{fYbIb2+M1~(CEF^Co^ z+ZT@(Jw~)b?A7kL9%Y)8*GiQ8PTVS>^4FH~v&SnkE*-L1lGdc~Spe(gLd7<409CN) z!@mM+rEoSkA*DIg$$5}Vm`>K+_6acb@J-bG2S)LR8ce0T==8IFOBLUAv)SsvsY+#w zL7)wK3+p%bt|zn2MqK$I`Tdl7G%$DtK1RtTzDcrQGx4ASY;kGeD)eiVT82LKyn9b` zOsm&<(xP`HcaKX6tA@-2;6gMZqX>VH_pHR4veGdqZIE|PX16Rj&8|4B+XZ6#yhOyM zEv+}0ey$87A>}AO<@Y(vd@{!E2sXpxJ#lX^KplE6RZ;Q=E;zHOC&HHx*PyFUhk%he zEt2;4tZLk(4aNZgH%Lu~JOm2x+$g|-4w2$^X_wle$g5sai{;9%ypo=8{U zjMQBgJ>t^6>-^`lIvcaN^@#btSZ*xbE`{a+&^aP zRzGx&A4~ImbF#a;_hNNX%@inG(%o_buA*34+0K^x4sFHVA!1~cc zXm9Wrndm`Cc_)+o8b;<(lYJE;+jhVskK5E(#{U1|>>Hyi?bd8lv2EM7ZQHhORa~)c z+qP}nPAax4xjE>2yT2ZN#_7Aq{!C@aB>mx0ri5JSrM_w5N5!C3|s?SHNv?ho``I zC7=ZgD(p0?D-5D6Bcd$CDN2elVUG5QNKp=VUT28QoVF9bb9m6vtN%%U1o6drlM;P^ z&T;sgTU7S7JvvURd!1ok@y_fABq877N?gi$S>mxG2@62JhqBcDt)2gT$#|^sS%aTz zprOd6zo|#A(4w8?GO%xc&k1lFm(S;cvi)NGsbWR)YUP8vHcxnpdf4x!!zDXG_7N~G z*#tFdP9YHwv5)d=XY5;;xRID10!nVfurxpc;gmSh6re>^$~+ilfhzhd$c$5tktS{a=O$-=#{uLAZ%_W=i+Vd1S;vB6^*BXs6h>zr|#$drgyj zU7I@~affWeF*>oBFK2=dD=88+={qCiTs;GXsc}6Y5t0}yXtg-R_y*w}(Z@B>D>Zkco75RblN z4e)~Do-SlQaRK@OogF~IjNoJxyc3e}4)o3kPDZPwly)1*RRb!a3@PDJeV^GV6J~qM zsvkv*pFo(!&Ax0Z4W`f3?$Kd^Ah%?ZT)rpUDAfA7?7}CfQ6&ypRp*=nT~))p!r2Gw zRO}4A47c>v+p>VBTA0I<3(WjH5_8!-u!=Ko$(Tu!5c5z8?0I5+nR%~e`Yc+08QUpA zx^Jc_w*r|W*vwYG--Oz6rI0mYI}+F%Ex@x1x>IQJ+*YXcGok7BuhvHxP4VXi#y8Tc zqMd=cpMJ{=*9)j`sDkhKTOm8R-!wD!bp86lwTv_T))|r2PwZVceIGI(+(ab+hCa#> zJ72VK+p-l21{n7qb5UWVBbw!Lt=jn)m6Y&My>ak{_X&Ql6ulqN`k%b|yg;eH0PY(G^t+b=UYivRx_yvS z?XWHmNeEK>&Goly6iO}o+q5g*n2A^UoFV6=t4B%A(fs|*b3UzjcKHIk>J6~ zS#8-Fu07g2+1qY+mal_{yAsS?|5N#7oGVf zVmwuyjDQ4Tg6`OG4^EjA4CNV>#!R#IO#9%X3rHrIr_m0qW8tjQwA$oXd&Up3IAC@k zF`v(oQP&R`4Dt6@LPrM}kJjYQip|H^CQI^d6vLy|lR(u~WH8tW%#-XtAT{vR`MeL_hR?PpsgM#Equd zij@cBvoum1DUPXa!B1i3zskGBZcz>xJsow#M`D8#mGqGh^~JT{ z^cwi@`wiYS#&K_`IACHk2L=wv51BAH76-7P>r|q1fSq|3;F{N$<-;^k3<*dTu_rUE z5M~ zz`4-`v1lah(Doa4t|$mI`iz5DnDZoR)#L}$IRtWTwCW}6PQg1 zaWG3!WZLN@4R1bad{cP<*w zJd7F!7m9kGwPu3!uVfDVRz+X}Wx<`+9=#20?oIIiHJ0#Y$pEuqhRM3{GrjmgSIad$ z{D?_-;yOhQF)0Wp`@PN3x+fSnpiRu2kWU&V*X%|iV~vTX!Hlp4&$c{a^U(}-lUs#@G zMNTc~Z>F|@?xCx|Cw&~@?e8Ij4J^nO-uv{%q-Y&-ezfKgs#-RGf8Ne?_|yV3Pxkxw zVwtWBTos={MU|s7%(;w_spOhwAT3V5i%E)vg(cQ=#z6|%?}cQt$*tBlT9b1?a_JAO zi{TCB-ku@b&OoYDp7d~FGtQg>joL;|x*XI)j#B_%H>K>6_Gn0Rzfah-j>F$zRXkkg z!!mik`b$}$#*ELMEYF=T41d6l%&L4o>eJNiSY>Ps!hwey&ZtOEtOhFVnvUBS0Z zXKC{`U^Iccru3Q-x@=m16qj@X9w)_f)kH2I$rLwtN^UIMvQ{||0eSpL;!I&yLSJgn z+ksT-0nGW5aD zZb)&(QlTUy%+FWGAXgrog2RkAL1v=SU+qWZJ=JjQhfQ>~;9Ar>G-F{HM)&pm8s^jY zhP@aPmYFSV%X#NKyN`Fuw&Ux@22vMo^P|w7G6G)ka9lywU2zcVi;T~Zw53Q>F+6Ln zDj2ObT+*8uw6eR2MiKQ&Mr#(%a5J*X@d9%|SLX)r4}ytXH=0iMRzg5XYKeUgTUgxP?EsF_R!ihKvdT1mWpVHUcBYwJ7|*w=JjN% ze(ibbLh+G|Bx3N8nkNs}5l6OMB$>JzS7$A$M`~ALvxoC7Yf7RdM0WE*pWL^7=FNHR zLXF-U;RQOq*Xb`pjZy26V{m@`2fAJC?b1IUg#<1sv3Bq#w0ihTFKVj;^F7wh8iQB? z-7P3(wI|AqhRLt56vRKYoHxb@fhlzWqB;FNaa8`T<_>y@@Ay$~^7C=1k?6`z<$Y-X zquOhk+Y|7zY{8s;0~+cpzUY^N6zC?O2FyB2)pkX`T1%FsQG~W@*Kw;A^sD9{lOD15 z{q|#Mn>qolsY!`P&vAlZ3aQ9+@IGSc*!aAGI6rB;h0g=u=5u1lth+p2wzq5CBhF{g*n;mkNllLs~PO8{H2Tnm_?LIDKWIqR4C+Q5JXI`{%$pCCp%Ql z^XAId|w>Tn@5koZ17e)V*rt2XRXjU5^kkU&PDRxmz*p?pAN=r6D6(t2#m6-~ z+tB8o95QHr3k8bdbQpx;!*$x{(*Bteam{h-L*~0Xcp%HYH<+;bggoP!9$|*Yu}Yqx55>{Wy7;DIg2*6(X3+~E3pi7^5Wep|r<=oqnzx$Fa zOCu3(l=7vro61?7Fg4~*Q81#4j;Hoc@vp~051Buj=D$#>$SOJg)3$sx3G;^5AH?N1 zs)BJ|()_qsG;@bB^`eCHAz1QMvP3lx_zBx(rDF5$7L^6*u9gpekL)%Kxr<6ExRDo^ zg_&zA8MxI{2Ybz%KALx(^Rv%khLJ6bizBf&<=>TZx3J6!1HzsoRQc$iu+l7-*+MBr zbm_*NhJpH@hi7WnR9qmYqC|!)+NWSHU`z@(lDxTSmU*X>*D|xor&oyyBLDbWrjWK? zK>VX{C!2UQ%;U56iAQ>;xE3{uW*<#T(KIB}XHZ{N*|8^#pSQWO_7=Lme=If8s zcDyuqX5DxdV!o)i6aWvP1ZRU%LMBl|;a@V{^gC zcj0H!gKx1aHG?SUC}T?!cIjD3b&98j8;KAWhOh2e+S)Vj_<( zIV5)1zxI%19V<~!y}W1%7*8tUf~U|_d_nYrt6{t7@<~Ar6J=8ht2T#iHrD1JpqKE5 z{CD`Nw{YhC)y1vmIL1z*v04%>=HnVH@Z)FQERS93+2U}cUdhywnN&7NaT_6RuXqsWeXyN4r=_;x{P9eg20$7&qhz6d^_IQ@1{Uz2Nv%Fwet5R zx$E}T%vS2tpwZcn@Y-4#Jc_8+n7Z&(^q4+ks@flJUGnF1WymS z$}3wI<9HtXCIit?yx{1n-azWA*ux$)7fAJ4J`Gll6gZe3a4X(sBa%+c;-;KZlu7 zp0(Yu$t01$zusN(7I=K}(O?RNJb`MUo?WZ&mqS>94R{^X7NEbjYdX-E;*DMB*dnW< zukjTe=WYp#Z97tl$Ktn-K?^2sZYgb9>Esa=Fp3h6lw9@WR94nh#;F(UhTB$RH@nRx z)<%YffF@VF*pEw`;$8Fg#m&{WxWa(s<>TFUYlJjrhqITU-n%# zCENYP7(`mRXC^zUEt6>TO0k$y0}sOZtNDX5DA!kJT=^h=2yV)h=r*{KuB+su&+fb~ z{+BUU|KMa&(H+6Ic70(|EE}ejJFGwfPi(cwp7W!T%yz33)U!S0CUpAhF>aW1#^DUM zS>Xe-;`T$nKJZEL;1F6sPyS+}aRwuRrNi0s#Y#@oJ@szl3ABdh>)U^7dsB-b@hyd>w!R3g1^?L`pYJuHFjFWtih zc|CpbW-s|#JjkY15ZGQ`;E^qR#~7-$1KCISRxydEN%2Qy$C*iEIfe3)R4-E!FVhmw zPB-`h?y*;P_A+mHR&HQ8+~HgH$R&5+j9c=3_JE07blDOFlMpoblt@gej9CF*PkRJT z2hhB_6`kT0wK&@ojf}kA4VqfHgRGHlHd541Qy1AITc{9bt}`dL5tU3GQmq?=kCRs*HvWCa z&XyKc0xfkocKs3&97=}=!UhA13Vx^tVj1?cRs&(R_IrkV!zTTK8NmS?L(mv`C?VHl z;5f`o3t?I}xRw(G(%NKBiS}n}_RW)!(K(jK{b!2<3Qw3GySp+ze5kfhF}ch`4Y3W9 zlOaOxdk9Vosv{YVmonc6jkNTG0Or8!Doc>j#{j$Q*`;IY1=8Ij0Oe_m@>~BcfC=#I zKGZBFj3b9$GD*EQ{)9)pHuI^}Z334@;y$qhwQ4xyV#GnMYNAmf`;W_fz%0Vp=7f&; z%#K+g8OF2t3lFkqQlo~1Cz5w{o55il>$uz)$S<2r8%Fs;&r>z=9>X^eG5KVSR!d~X z{Asj_1wgedVudVd?VZ759_#f4Mw&2bLr;{nYJ!EPgw(5?RcC?>T5K!L__W>!OUAAc zX*O9y&F^m+GH7w_G!e%Q+k>TR$QH0j8M=H77j#)Kn^6v#5T+dl+{H+h-Be3;5W{)BsntEI)E|xg z!-)(8Vbtp=@rG~HNF4><8L0Bdw8QNQuBXYi6Vnog;fegvmhOs;clZJRS2(zpZn zb*$l!K%Lg)jINUDFu-o1+C<=`u4_6POijmjXqc>qUY~N5Ab~qP-WM6Vh3`QXLPBIH z66K7qV_9FyB4m3KOE;Pt^?PC8Ms9c`I_Bm~kiDHnR-&5y&+@nK^Uztta9RqLYz@ow zrnW=#UID3W!)x6B&Fh(pLpV$9t*t$=KQ^#&Cl>Y#dJh)(9k!KagkzB_ENw%-28#>! z0mzHPn=gZXx$!*E{R?bHRB(d=Q{+0BJX1hB7r{$i_9ucEo!Q%=lov9@=`zVD=Hq4dT8xZ7%U}wil(65nD%t|e#0EBsk!w)q08& zXp}48wm_)_|EkvG`v1+L|H=1K(UJR`!KzRk$eRfB``!aN)(9Hbp^=QpQ8u3hwwa?p#erF`Dw9 z)fBb}3@6=EE`ZzjG$Zb^oR1Q>$H^Y2%lPOT3k1fV%dPQR8MR6XlJXMJevzs}MTqqgym5~;`@eoa#VZlEo#lk#fo-{ol zF17!5Vk8NZHf?KVW>z2ADg{=kTTue)wQ`kK;eQ28b|F^1nqvC24}Kq(N6(!hp1duh z8V8+Ps^XEccVsNxUQ1)0MfP#hgEp|tK8Yc^6Gf4_vt$vXF^P~(#vDAsFb#J@xCfXF zy1GbbmR)0fV+o4J^r8u>H-ZU2^2lyW>`v5I1e}7{8HOd%i7}$pnl;F^$duyT9pQ+5 zy@xpDGJYbC609*P-)MdU!abOzX4Uie4uiB;Eg;Ny<)#7lpQFy`FC7NLe-(9>-}Y0^ z9`+`5K!0EH`>z1s3;zA}|Fon2S_?9K|8D1KMrZU*MKm{XaiX*QhmRGVje$Mg|6Nhm zz{bQ_`FrhuL~oL^j?;!PG7r{IafQTU2b&TX3wk^oo3SSHBPNI+nBI{?)O z-60sAC3${J7UA0~H$Qk6?UAfHKSJgBj!#jqefnGFP&QR>(m-)4D6eihs||%jgobo< zeX94NK=dGu-O{tSenU*wTyOBLC!4*~SVgrYgA}uECEJ1hsV0h*%dSDMfL^oM=z7vL zi^1P-<~JQ_fg_)W>0=A5{@ntespH_orcP2nuHJm!%+Gn4rsd{SGRL>-(ysMXO}54< zv$4_KL0eNWQi%|1@@HJBqwllpJ&7(zOaodLM+G( z5?S zqvlEGCwTPJQRz!ixLmPIj>pmWbVHZUVejgydjUEb1D~^CD=HdzaUq3Y`2lq?7l{;c zmX+&|?Lym8{g~Ol>tdSd2q7i6^*OnrKwok+CpC!PnLF4wO=~Yddc|I61gf>rDC4^4H$gw-hpsD@?cbv1kkB2f(_1Kj*sjbFmrr@sTTs=Uf&kfKl zfpv6#Y^hDSL-bow*_da<4#Z|$&?Zt}kJRL>8(d+m84`hg zwyIJqztvsLK68iIJ#!Y#z6dAPf@Pqs^jsx+F?)zRF@p^#DbAgZ`| zTt3J?51mS)P_nuRg<_vVl4J(vyb|V|k-Tv}>RFxnP-^5Ym|~AquSFk88YS_VaG7Ad zRij!;N&>NE{NX+@VjmrQd#8Z8YomUuTy7l3LXRKq8LLOsX)qT&`=&LvLO&; zz4h`fr>*d!omji6#tIU-g`o@%$wShwhpFMW?cNN8Fub#hjA0<-d9h<9V@0t-C8pD7 zEV@;$d%Vfn2YqU(=r^$Q9zj5}u|J4yKQ;MzXmg`m2>TwgQ@F5bmrCTF?&0d(0VhP>Blq0>oUo4v=-0NfgeWoV!cD?7 zJwX44V$r^$Ejd5{0L}m9Jo)R>|J}~~H=cea7sJ1uD~cvgcGj*Y|5P3tQl63oVt~(H zw5e$NTkWX%zayG?kqjAb z*q4JHpGJ3oZ_+<`F!2WnzoHgqZ>Q0Ta%igehSZ zcLbiz`I4x$s$e9fFwC#;wH-w=Aq-d{OCdl%^D zKUUsOI4S38cTk!))V3dQlBeRpz~)!mkmLZc0qkfzR&nq}%#ak>GcF{7>iivMaz$^6 zQLDCpw22UaXlybuw1O|Ro*)6G`eXY!fi#2?pI~oKj_^Xkk_H#m>4rWY)pZBVTT)kb z0sbu-l%`~0%6t zn;}H>UgGV|VGC9pGDnY)l1Wv2GgF8WlfAPXekV_@6*#_SG2|V01hS_`Yot2%`*T1m zFF~f=RKAz^an4oY3vM0UMROsMei&Qor^wF^w$lK|FhOt=JWTT0ONWXxmc>%e zi)(R-zi>S&Wt}3(auHcjI z+=8>SPI+a`tp0^dxWJ~&8Z`VvLIjmgn(v6LMXw_HGrUTZJ?o zNMbB%_2tG{zhuA6qbi?%lw*39ROOh{UX&vSypsOpFP>X7Qud8hju3fUT*Jn8o8wA; z@KHRT2z0@0mB83uAeGwqt^6rkHL>>cq_N4;dr!dgg7eB3RlC85`eft?@{z%yTh2B@ zvVv+2pXvw%=%FTwTJ)Sa1l$dK3Yw&7QC=q~9I}+;(zFLE#BEAawAV+5O63rM8nW6I zJ1?=y1V-1So8#A}IrTBy`XGXMFiPzn9<@F+jU7YWjir}2y+R~aRDB;(??egSN#*h< zln2KFL-$+pgs)lImG;z^09KL*Ztx|42$%6bxzVJ{(Z%sP;7iddjK>M>)cm^YHGi93YD4^_s_aCew+jPAe}+Rcd@A7!g++};6aAK-{q z+C5v`?B0G^1lxo5PNk2(D^m*~(i2d8M`H!}e~!q%rl(~87Mxhv*jxY0998QtS+DTF zzpQ|hfTN><$KTEa1xt zx!v`=xpVz7{rwCa&Gh)bf$)RjdelKN(76&F_c3T6)(q%I?jqvp9P_DlwuY~~ZnD5t z8!bk$b;dFr=QXwZ0so}bT{Os~lLJqE$p2A}rS#zuC`9~9K9s`3=FB#aeOU}3T!(#9V9BrlUug zpX%wT$)LJ6S2emGn^%G|kbY^2X=?u%i!o5_tD*$TSjI3EI%Xu1ZgIMD;OMB%s{DB+ z-Cik?1e{4bK*EwF3o2+jN`I(vrCVc28I+`Kmk33(0Ma|N41={*wl2^BG=Y&DjZ!jTl z{cd4`s#nSV$h?w^Ofz&k1o&u1Vyxrxb;u*b5>2=v(X_hu^l)R?Xc-EJh?RNebc3CA zW94oKtB~<(qpe0|guS%Z_~r)P-bOzyXfDANWF$q`;C6qTzF9?05VWqs9c7t`vB<4uRq)-iyF6Liof)V+*Kg9+{LIl+&(9}? z3Hc@n!fICJ1WC`j+K+O!a*8v6LH2g1SnaKg7qGqwj_MeLU z&!$Vqf(-4)^yo8}kni@qo$dMS2Z%JK-mzPj6npY9j9{G3lyKU$jldHjnVyH-GvI+0kMdHlBD?2!@bqavXd@4*= z$94oW!p_)`_iG;56k5vgaMYRx_uY%7ke?}=Iy%{O!}an8w8ie zb~*(;L{@00;V~1S8p!*M*qbw_o@cX97TC=ZbPdXwpd+~`=rMB*{JQt62l7&Y2-~L3 zhot4**qmPwEyl+zWwww^+<%8vKFn?3X=40C-R^aI>+D%N(aeqG=tW z`lcs?YV&YdcxgN!0Yg}|51qMqk}d{fRz+>NB_!@;vs}P2!Ck>Nb3WDJiKEI3xeIdF z5ICG~gwl(U?lHIQl6b7!@9=iy+qjUh(VCriXQAuX#N*a$I%Cj^?HYn~>c|`v7Q+Nt zXn`{cIBGwj5?{s4CVGH6#iVR)}Z zTl{IpteriQ98#shIA(~&Q@=V5a;(h8D=?#p9|eWq4JbYkEh5eZ#=a@8wFe&aZ5x2( zES^yMOA^K~d_RGZhfShEV2;@V<~t4V_t`9#E8}txVvEom)#lB1dUc=Xxb^056>^W- z*T61=6t?~(*KL+ck3&P{lzadDdrcP3Y5?mE3IKqJ_@6=auV^Ru|Alr+f5EyYwVz5@ zBIv%X1lSN@Ma0Y&f7ZfnzzNhWwJPyR@MncJ=><5Krk#_GCEx~hj;{iS_&%i1*(_STNx3 zHFIRA%K+i{(0)QSxtH&Y4p*}J9wftqEA3TpvYjYanKF_;~vdp?;qiF0s zPT%N>$RJH)uj@wJT}qPY!< zZu{7#6jB#ruT5OAY`xKLL9T8PiYyVN$p~#w#r!>gk!e^fvsbo7FCM_jOR`w(TW2DR zV9hh@ZgCbHT}>u=dQh_}ZffhGvxFT8ycp)?JJd|Tf~i8{F5pFU)rm#EN=??vTqUq; z-qL*Fm#2Bc>eo-b0E;B3dn+f^gthr@RRssAgxrB7fvC0>yG+Mbq6{2mON3C7$srzj zlu)>EdJwdTzuuN_)3+`(lONswEL0$rN;}&YY$IcC3{r`os@hd<>T;`ZKie+D<^Fk$ zPN%@Kp(;~(HXme_=T?aSSb^SG8qQKlqkf$#+WW=pd7e<4kH)ao_g0fNn z%rgE>Y&rIwPrGz_9dnu3M1>qZOmot~3n|p1-ddE*_@poy&CxJzUuH4bXrBWwjNz_A zZfRDfq6<%wyu}D~y^``i$eBUmNwn3dfNjC9nVqZTRv(~q{)#ee_1QLy0(f{!H^IGd zw*8ojb>c$-SHX#BmdpRe!{azgA9pzwcRt)+9wT?+s0WG@P+x&VGCZf*sIG(kvMdj{m_43OISoge zXX2v!8ic76-=W?ItU*HeD1mTtov?#O?8b&4o4KE2#72zxESFL;2SDKrEpAzkM2S>G z!sK5@Dc{8C*hN0X6|$iPDU_(4a(dQ4W2H`IMvw6A~dBikD<;&*VZu>a+E^y-Io0B={B})k5#- z#F@0aD)C44xHl~-=ACdEOo?gsv-qE33!vUY4?Bk7GeDq&J`4_e(%g%F8+pQE^!bVYqnjqsN;WZ>t zC{_U$wG=ROWQ>V<)V5|BYcvQy{jNVjk#d&IrM+*!UJ4@JilzF+SV+2WYMIQQww+G4 zzpuX6?C|*ls`m{rQ*X)~5o~ zRr89`9qe^u(N{jkHEmdW$x@K_Km^BcE{JfW_~+VZzbB9Dhh7FjxA_Vi)@suL3=~BC z9-?237B)z|RN@KA)2SQb(ruM>k$;~V8`H;=6L!NSm4y;*7H_O;*j)0CJ1vuGq3~E$ zIJ~=coC=q%eQt$j6EVMvg{eVm?Upw5=hVnwUj3~IY4XypMCEkfWp|?ZMgUhv%jsft z`Pvq*$}BV|_tVe_xoAWzdHaE@oFKbRbLXr_Zms@!9eprA3OJrMxpq?i?fT4w{0XO^ z5Sfn?3m@W_!I|J2eP@rhk|C&J;YYo0wM`=B#?pF(Wt-~Hp#Oj09mWR%K5}k;2<@Zo4H+qyN97wv`%|3i1{k9BB|m3@TQ+ zYMmigzmcS#W?rK|XpmyAgs^-55uYt4U+*yHbL2 zFxqE_>20$erz?z?`Gd;f_?9`HMRA>`;P?LG0t98|BnP&ssl` zx)0(0_#l%If1H!T{uP>rewq_w6`n)r6gAjIB9%Fnf=Xm;DW>rSXdR~XJdOrvQO}{q zamlgGgPO(iD(upt8tVml*rjksekA`AWDE8638#(4m{yjpb))DC(I}txI5+1&0#>3yrm)k($C;`thBQDWPi@CJcOH;vF?O>0s2k|~M6>)T)E`#r^M59St**yED zV2AuVlV{&HjSz-f6_L#=jkajxh{7xLY^q-L2AA9uNW+3Ay7Xfpb{Zkkbr5f**=q|@ z2|0o#g7RofIZnzMrQ=Bq5elg=gNnWQAjGa@%O0DI_i+=T!YWs48a;gdLN4G(H7LeJ zN@}8hEVO`xLT>#qD#nUN4 zATP?dZ2XWfH_WL!`T|a5h@Nr_PlR~K2uVKvq703N9)FV-DPukMf~`l-{TUOJ6W$>c z)Zpt>K1E{9B%S#?i$U9=p*(GTUQ>P=`he!QKc`UG2CIu-?CaBzi>ZPEP}`ItZBM$+ zn#N2`)ydru4d~G(%+YYq3i~5-jV<<)qva#IOa!{;R$ykG+Q!w|93TU9%S=TMKw}rk z1o!66+uRgsO})p;BN6fhNYrny#p8vjkf|Q?v?n^4>p8b~M4$7rvd|O$2Hx~%BfsH^ z#&uC-hBq3s;o+Yk6Ve|6qcM%qyO2>`&XCXr5%!+;f%JZnW-)B`DE4L)&LJc!1%wZudZFnorQ)<{@sO^G?|hSw?&Wn%5byufu>l z&kTa9{cd4^2#mz>?%}I^=kd0c3BU!d@B`TzxzhQyw(Yfuwg@u71+*4HSNfAh=wxsL zb#jCIs))i24&kl4p&{&7Nd1Acmn4AE!o6`f9D~*Y`QeJnEEY?H??fJi~FNk29%G-#1*PrdZ%4nJk&54{@{PhI|*eP*PC zp#G`n4jq?8D70U8$(g<2H4Lvawv1tjrQA<%!kJC}%mss>-npk}y8d8uwd}Dg?voiA z$_DLZnt^A(b+nzW`&8l6p<*Aj!5q*FmrY-)(u22}zdITb?A?m;qJ!`NTQyLKpnOB=KaI`sLkYWa`cGxtrLO0Y{Q z%TxL4q-?B>j-h&yh+DC8ebu`}VLzJa^u=}-&CqXbzzJ%4+qsLi4Tm@@XI1i;*AaQ`Sbz5VMryM zNqrD;$V4-01bHQHgj57bt5h*^7cdF|5BeTDu=cS%a@FQLbe1p zqr3v#v9_!CaTpzIxVI@{+`{hOg`H!ZuTz$R>dylypFryXu4#w84!dg5uajb~sfOQ+ zdiX-&cKyVCxCgNwY=*Lw64- zqZ9QxcnM<2l)1|c#fOw2bNQ|6s0S>hPs97&LRdcTI*EgN(ldWUL+^lhzQFW(~!B=E3nl~ z`ejExH0+IqYfE)*iLZrShB$>|z=YVs5LIHuR5>OD@Dq_yrfykkifVc0j@WZPW(S!? z;4C0zIFBUyy3+63vRHT>AoHgKjR_N{W9sVCvtdvKo+BRPD^QW2I-n%V1tWn37q3?6 zzdoEP$Y)Ll$k!T&8_#VGTs`VwSu@5*BP{3;RpT#aH)}ift{N9h-yt?pZ!GC7G>6`F za%YPj%kT9y4FA!EmP3SNIuNbNmTjeR#tZb`q-L;J)`yp7Wj~HWsjktKd5wo{n3>;d z6p9lvLjwb}H^h{DhhEVd2q&4R@KhaIh+HMd>8#9m+&^;WgEj~E`aIO_;HJ!+DsG=E zGQ@3?mZzo-jX4Z04Xtsw@PFj_BO2K@&jsOCzYV%2krf{rcX&_O6eomhBxT`;IyguXykz zo&IjIA}!3_7vgMJ19qBTmZ8O$%?I(Oe?OfX_aGS%Zl=sFMcO{{=4uo!Yd1dA^8N{j zo1MRe1QuXa2yXi@o&4_kDcpzIq;5Jh)zVbdA~Ua7;?oDqbvYQxQoI-uoNx^*Wx@jU zs7@9W8KP3UU=KZ_!dIJmBY){L4{>H{zY{2cdJj7--pMc_R z8ZToW#)1jqnWa+_6>Ku`g`2yRAUMVR1-H8<*HL11tGvU23B~o&KC*g2hKkw(o%LYP zUZmzS$VjoiAJf;57Sy*W1TSA|D2Dk1op0{@K1ZDfF5kcm%Lic3;tdsZ*-KN%&Tb2} zg;8DEOIFCv0UY%`QH~}$vk%})O#ZIi%YA8>jB9$4?ttEn+UrY;f)bWBSD$6Y-nF~T z0N+h|z$r!!5^`mBeRS!;DH6Fkw-Nl&gz|@yz-8ljcR(91TQQD>Mh+Diq$TN${YW&1 zuHRu8pS!C~+V+)tXP(cWkmD!WVFTlJuf6^SW%i#f*3w+j25q{il&!|~JZwFqdft{0 zxM!T41(#V{zp<8C*L}i`tsXI%wLfHTo(Mm_L_wjIE`9 zL%cn2hTp2xIW_>Qz`})CTR63Q$x!ifVkac9KPZ!Ue_)tsVma1jV;(o3J#bA@lup~M zA%WGYv5OsYiYFQj9e%T?iCTsH@_oo4PMQzhZ*m>)Dm&qF9NG{#ch45<<$(HO4ZkO?JDW-&$3br7GFJGw3?f z=sNO9s?wK&nuxv}l#zw7TPvi^vpn?>eOU`syG(z9k1;?7O4 zq+qMrd2nlv|8nHWnEl2ck{Px!KORFMEUYN}BKszcQ@Z^~P#x@tKOcAF?v&*rQqCSLa zLBCM_dQO6nV)}o)!&xiI5G^2z1+De9CdOO#U_O?wG`9NcWH)r^TV7&M=t%z!af0UmEpG)nEDgog}`_sD)|>HRX-4?Vv>7b*IZQHhO+qP}nwr$%scFc}DwmZp} zb7pFAznNQetJWXbRr{^=tcO|$^*=<2%<`|6BA_Xb1G-eNMyC^41l#*DY_C0jF5`?Y z#NULm`hbqo^2Qhw?oW2#fQs4=uhKt|)nF-zNa@Nj_=l?L{$$|CDQS;oV8$^Ne=JNP?@S8oZ@VF1;9*M5sXc%b_2s#y5YnX`7oL=#Yj71ys zmG-Zfk7|A+{_NMdEHnB)!;t?Hzw=))xqza1anxf+>9w=K zkxkM1*haa;u`2aETQn+%#aCqYCGY%pK1n`mz@wAwA)1C3FK5tebAJs&577Xk8hii( zzy@##qg6tEnyJqmm%Je#L9<)9bXqiXpRAg5>4hPSx7FKh3~1N49hY+*LFCmU*lfhi zdh6TFRRlW!l0xPdnEg1A&{cAZ4g3DmbPAU7nuw8$Mk_Rk9#PsnUkMS1Go^$ZGOWP;%sO!l$3Kzqe%e>b+G+w>ikH&nwy%m3ZcMamTo zIe1=ZJFLIK0wxRz?ha^Mwjl33ewlF@jjrZlVMnHKXKYQyUdueOJ5bSO-(DPx( zGyL-B7L##qr%$W;9=kC2tx`w=x=j{~Bye1F!Wq*OhoMikY~xe!6fnPqdcr`({6#wF z#s*vtY2$;s~A=9)4r9>gGXo6Zx zeEI{rYV$j!d^24Ig43b~QFBvWL$d9|Xi+!Y_$Oo>hh91~Gq&@yD5iY(B^!9hMFc2H?xS^_$ zc04Ap^U*G^k^_58hL8kh45?)|BVfslsj{wYN;vBQB#!ZtPtGP{GMJSE=^e-h21Sl1Vu0 zL83+_nh?Uvg2BlmX$&@EEq*KEJNopox%eA2nij-wAvB5{qjtuh^?KK-XFnOWEEpM} z`^n{9gi<^SM(0>{>$w_IGavA~z|5Fd2rf0lt}=B#k7I zo6gEDu!ll9su4O_34?Y{;36H3#1};!Ij{R0{rmZuL9j(r0mI!9f^oT@x;T>GivgmL z1By{9Eo%1UmKbBJF+Yf9V>MIkkTg zB^%R`UZ$dbSDZ$SG(p>9W?9=LqP%%TK~MbT7W-a7?QA4HnG~ z75DmrkX4%cjwPO@XBl_(`~DH(QIHj;s^4yY1tAGP zp;&?o@(B*vOO(S@rVM1*6yg#vT7$;W8Ozs-cT0?gHs^<5#x}LAe9T!m z5HqDP8+@S?D*)u>_vlRw4Gn!T*s%OnG+fxoZWt=gTmu;~&PdK&DJ@#IWR+_MZj+my z`7_mx$5BAzrz#8AeFh7(Meh)HNq=1mgP!)lx2q_AO?e2}~(j9{RMi zo&#&<%&iV0ir5EH9s;Bv7sG>e%Ot}t<7BSEAy;T3kIV#UG36kcE^IuVYy8lI)t*cB zjRVR476DII(~N>{JBg>~k|p20LFbCHs@P)cx|-hk;@0n~NeT*5(FiVgF!{N&B}9(^ znI)LCrRP|2iJh7ya|KXtMtJqzk}XsH)X{=_9w7Qbqag=JpzLMfcR#sU{r*O?2UFmq zh)*+b%Zd;7n>_g^f(V7Tm_%nrl8abzwzR~X_=$S)y#>r_ib6Z2e%KUNNwbbWw%ocUR!@gZh^t-or9jlZcr-@)HCE5X9-+i$ z89z((iXHYE|_=}dHBz$eQyunM(x*1@PghYn)g-z-=yosu{eG`sy?ENUlEdS zFP4ys-yR{CrEI)hLbE&hTi!o?ZSx}Z$|3~s%LHool6fIk@1R3-_Yy#Ge1NzXzCGet z=Lrr5T~+U?DNInuK*Olo{|TuTao8jGAQ}(fPDI!!?W$a|39CRA1MF}rox0wzTy#rxe6O_(zLcykdc7uF8ldi&#c}N) z@fcd9?Skn2KoCla=>2app_5-Ib?TS5{t@<{T?PM=kM+M?1^*w4{POl7ivGK|hax<0 z>0?d-hF7+#x*3mHE+8M?AVHvchE1|zsBru*YtNkQk_(5+Ij)bNPnpcl7SVBhka-?* z$ne4zOBZBbvyyFcR*sNwmxTN-`%dw2>9Hq*zIZN4c4l!|P}) zm4mp2x(fYheY^1{Dckg2cLqyNo$3@YU}5M|=8l*t)VnkBnB2C)@+S_8gs zO9G75P6QLwD^;VDI?t{->c#y*`PG!~OcBQ5=!>;NI!$@82j#k*K|(gXbCP!rgxw&= zDU>m5%r!BV(FMp6@=d8E*({YWI}`u{4i&5vtyCNPIdm*1<>Ae?vL#vqy|)we-1vs< zqUV{S<{N9geDv0ua9syOz zxKAIN!I>zr{L}AWH6cwQFd@^96j0|1CCs)7U*?|T8sU(e#4pZOSaDa zy}oV5?#tZs`M0?TaVuDY{U`6G`T+3wk&IpW+$yj7R`_Kx4VQ0mG%DpPOexVq3DfQ? zxi$l>Y@Q(!suP!h$Y4p#Rov1I+CD~$lNDj4d;+gcjHbRZ1Ml#>)ZyTQE$?9WWt6H0y zT4eMn#@4%O-(LND5qVG=x6PaNR{X3aSF7jXlinJ%%d7_&(QhW~7pu+LCU-lh^T3M! za{Z2D-xR#nAuLRaq~)n8t&wD1OeM1ofijYmX)3^ab}Dx}FnUnE1?DR^aE)-4^^w>1 znCE|1X&$y%5?=6CI+ncAqT0-%p8YtOrAxCy!Ju7G1k-;7Z8}L`=5}a0fZGf4(*9}gxo=Je#jm%cVR}H zm>_7@thA_0nv>`de;0brbPxM*6Vq&$#gwhDoi9BXagTeLeQWdBk;H38C{l4Ip@>eZ z{lai^3|ctA!(?gg$jrM3mNJB+T8#)FR(#>My(;Z$G$LPyav|v@4368_@THp0qMr zl68PzaE{PmcbJ8c5u*INmXND=K{Sf|0g?C}_I-p{3@`|MF5VuZkOy2)nKbbNw@08j zmB^>DSEMDS>gV4|iHb_mI`x;n=krfJJbeFmq$+5o@96kfDD)qLK-sEqnpmpnKHw-O z>CpOv#1JJcm;!qG?M=+g)N@TiNR2;+fbmPpNd_C6mCC4QX6ildM;+pEIsAJ$E}RI^cGcAJxBDek-?O z0w6WwRKzmn_4HKw1INhH0@Z~xh(p}@-_oEpLkI_z<)W?7pbU6WN8IUYDdcYAqCyAV zg!s96XdYuH+@$*VpM%hN$U{hnuFL6osFl1$MofbXW+855BX;i~d;Cg`yyWA0iS{Q0 zo{>RyhZO^ME%m*)qe=&#Lsq>Rqf9|AH6c^%_(z1%cT(imOw+!^y8$(;)ds+pIA!sy znR=w zArIj?6akXo)RCkGaX1crCR)HKefAKmahaFQtoW28dwN%+pKfGM_6>Pq5;}t*_a<;? z>cqrl22sGWyACYVVT(x4UM*2%0oEWm*%Pgfn*^jRRvC9g#@3s}s)IOzqPtSo- ztx8?gZY%tvP3}PNg+XJl5vn(&U4;9y6dwV-4fQS$8!aurnIy|DG3wBsitJ?11qaWS z2s&2+;M`hX+&%$2*RJTFayPPEqkxA`RyPROl(BPX0M`z@4kW_|alWIZciJH@-6k*3 zOvS3hci20NA2G_>Rn=m&F;%p3IP!y1C&#g}j79ZAngQO;2a{py=|{Ubb5fH`tE0qC zHWO#YJB<4vs#T@tr!ZFBa!vZyO*-6-N9$D_jUHE*G7VH(oL{Ql@k3F+;$s|6(*dBE zn~{a(B!R=kU22mydHqk<$|#5JuZfHnJcc8UE0O{pm8ND^q(rggh$m<}ENW@ojYvO8 zGDOA}XBn+39MfqIRdtjQz!lq`1@Xw$$^)kDN6Xtu*=`u&`OCC5b2QrQ%$dsqDv=}a zsrFMr{zi@Cf}JVLjsJNC88E)B!L(&zT{#kUP(~6@wK1bj0Q<^R5zStYcn^!a(8a{c zq=n{9G+O6n;&DfF{7SP5$&#}bC~Z!tN`L-3916=^fqwWwHo-vZJs-rj)mk?n2Qv;C z#8}~}QE67*4Cbnd1kHVruHoo#ARgKB5kay#5t=kBPY*Pcajf|<@c2dXljiw;ZOsPW z$9UY(M&SO%Cb8ViXHm;2X9|Azlrj4Dto$zYVtztz_fLD|2mQA1u3!cpbCUQ5OQD@% zDRyY0!1dZ$!>x0aWSvQ=>L>Fq?zc*xo_MkY-(nDm-LCd?=MK>ob^6*$`{2lJ!-72N ze|x8117Q`$3F&k_vkct?=0FT;Me8xq-OwHWKuvyh;|jgS5;%j2_IP!9E$iX|9lgPy z?S7*}N%LyJi}24A7}R75&!ZKq3W5p_natTW_TSwvlKvHB+g3zpA)r8lb26E~r%rZ* ztQ6yFhCiaum8lg^l%f{4a8%`6cbw^M{KPLNM9RbceaDFB#Yor2T#ysqC`n@YmD9S+ zWmcN}5P&BQ-jw<5kI+mJPRpIl!D&ggsNV2y$u{;6u*Vv_bwrK+9*%Qs=)<|B!H;>= zYa;k*Nj5&AJIJ5+L8o&Iio5+8n1a#B>`g~-gx6N4MHHbeIdX<&E!hLKc^Q>$r6nbe zDHfcx1r05ca~qt5(^IR$PEJ*Mns!~m-URCGn+uBbVkcX+ga~lJfvT3~7|~d<_1_Rz z`LA3X(w^$FGSMU13SHvtG4+Z>&=SSHf+`uKHr3VU?0zb`VKlmhBtfMO-i_U+4g>29 z462O~wnd1(JbFjXu99|1Nh?nBFUn2e6>^Acf1ENg`zBRFN<=Aq&@ZH<$2Q_z2%9L} z*-Z)Xc&^+!`%sTP;b@g`kN#FAD1+2pk<z#YC~gxq3;0K<^3WW_TObt^-@Z__8+ zvGxRdUYh^G{fkql5z$xp_LUPX`lm66f5Dd_ZEj<3t#9?ef{tS4ecMx$vT*UKp?HV`$*IW7K{dsSXV!guz6pKbt?(=MNIzyeX(N4Rs?i# zB50ZHeh9TVlvq}$y`-AVYcNcv@G&)- z;-sA?rzJmZE?2&i-A~hd^f%d|KsgcUH#T8 zFSphnXsNLh&CU@x@VI1lf+Wm+?`W%EfB)%KvMs!$*9s!R<~7gI{X z!eq6V9&wDJ^UD&*?Dyz5Whslc7$BIPUz#vG`jW#fV2HBJ2XQNMe#E0LAYe3lr2Y{Y zF8Y?MgN)HDPv8C9KfSR)akLvmBF8CoAf>cU(tbpJJn7t!-Ne;o?7XD`cfXzl?t`~$ zZkY-IQLA_E)Pk{0xXS8h40b$d^tXGW4*lQ9#A* z&TH?rW#0@6Pig(VmkEDM@kyh$cS}J(z$+H@neok22SmgB7N<`2`R0^QFKios{RIdr z-01WNfx2j3OiOY2m=X4bH*v|IATxq>pD;aw3LJuaFv0Nfmb3z^m3jUhS1-orNZ2Qu z4bIN_HTp}kxxXi!o6YZau>F$DTqYa{vJMCcii?&BN z5Zk6tAxC!v8_4w&x~Eiqgr6_yL-TMuFAUA1Z%9J;BAhWCC#%*+e4++w<=t44pJDPj znsDa;Oq|IA*xI&=q{W3)ppX#p0<@CRco&1vtP-2KYAShX*KG9Wa|HRa({K9{*T2N)2eTdh%3k+DBLP3tn_GB zY6y2?{;Lhqe%E4Fc9vvFh?#OzgITCiC?;9>IhKS3#T- za%w=jOg`X5sx&+Q9gzdTTX4@=*=!XjMV(so&R^O2l;b($+I#g?0QGUB+uH%AM=Y|h z7UfSt6;QlqhJ_D3wx1Rug(VL?!fsGGHX=_<$c~k&Uy4D)<$f@1K^B9^hCWIs6aId@ z_srEJ7fm}5KVPcEMGcT0m5((YI&J$>(3a5ApA)!xsA5fx7u1n;k9nt;Es}Tny)=t_&)>18oY=s5fpokb*EWAIW~$?rDKC z-&@$s!s5_pYmdZ3ds=ihk`p$L+EKZ~atv1IXgKasK; zL$5sSlB19xVS!pma16J!EGqH8UkCv#`CPQaA6|pV*lL*ypvC04lc$ZQl2*)1zYmPE z`&8QBB5SrB8*O2kl5kpco}uTYU(yp}UJ^LR#!sftlvHh*KI{xr*_jz%)EFdH0k)a& zi&>H70779hhuEV1rxSBA_2nJGppy; zXSTQmd!OY<&7qQz%>leS`%5ZKl^>k+lSo*fVJ+zDH3<8l#Vd|fniSe>$7zC)O?=kA z^pKZ~BPyz8!pe_mF3V>I;gmQQ6StqJGbPC~xc2c#;(Og|U5N~>Y7T>GnjXBGG;vH+ zgM%121EXe)2vVQ6=|LTdLcDRh>vox2KlF`r99 zRPA+!L1AilH7RcNIvIBeTogn z4j;>2E5h&&vcvF>(lT{LPhxEMQ$pfoK6a;+KKkZpGLRY-0UUy}>iBcm9FoT8x0`ao z?G4v54+#Nmxny3wCl^dING%KJBP9%}xoOB+iEgrHRusP871S4p*%p0vt(m0UpM?g! z=boR&GuH9}!SfknkaQN8eSNmyCoi0|U#@qN-69jQsb+xi^uUk#?TjdpFT+9R0-Y?Cn*AEWYLDJptL-71|(f&EMT+tj4r& z5D3z8&NY^O7Q3jb8`*Y|nD`(JV?Ugc2A!OM({NA`n-L9-lG5p$vdp^Q%VSN!jeqe8 zc@2&4Ws~o^?r_!s7gKCUtj-ueL{GWkvAHe8AEN3t^f%P(+${NVc+2G56!n6HU6#`6 zPInAb>6YtLl4;a+BVK}86%^Qid zm&p5!2GR2(B$$~9)TituKD<;<5FE9?bNCb8KG>zKmay3la?s9b)KN}~C3b%EZin5V z@Na78U1e+d`US$muybxi6`HNrQMb02o=mVZwZ6Q_Fk5<+YhUVksGy%Qw1Qb?s&Hdi zHD<&r_Lo{zLxgJ5Xm>Yw%XP>oY(Prp)y3I+fjXj|K<{AQ!p}RKUKgxkk3k$6wbd}J zi@~%7J;l2e1#cOcD%$?*o+Lt1pHfXx1SEWdh<+@$YX^;uai5atRQ=z8otU*p+u}sM zhATq!mzg`h0!u^bl>U1Y#HzB;@7Wh}wS4G6Agi=@#JZP|Tu z%UXZ@#Zc`NExQl9dLnsCVX<16pLl0*--MKzCQMO$_G^Pw+=83ix@7dnyO~wwmikno zZM|cfB`BwYF47H2q0Jp}=Xl#zl9&c}6cWKL?=Hl7-nlszX+rkBS9-$Zf^O2P6K}}r zWKNzk{s#>&ywi4oAp+A^W=VM*%6k@(uHR2bIH~}H_>fIG5mHKe2b`ivixh*z-I>S zj0FlB-M0d7*?7rSJ>%QYCGaH+$8~Y6!4`s-C^G6=a1&{$kDmE}j`|rK{%upO0kHEHY z%|A;$-|Bs6IN1{2+olKo{P=+cp$io(MyJl!(prewFEffb(FrS&9TqxDY!9$B7pykM zE!_n(NRxet2ZvPYYsd)Fm@49lX5&hFwNx(KVJE8CK?x8Cb3gpxm667%C#p+N0QpKT5I!Dlr>L zWX;468N2+7;vK832eWC?R7ULH+P_Cvtalt9NO@A595l*^^ws&v!#~lH6aYOCjL_p7 zAUvUGeDaiqk$+?i3^Kv$OZ`aOkF!nC^8h{c`wz1qN-t)fT)`Zk>rbaXnc#RS%V`L7Xn5REeAK`M?lGFFEq@-{vpB~LQ;E9xbKg{Sh+Sv^j5^Q%CVO;{qL zoNNdws-+Sn^7Zr)@$-35vL{yFjFB0jfi?)UOY8X(3Xvnl;CTd5FoRHBt~2aVZLd@8 zV6U!o<^oAhnZ{VW#leDq&O%I^aXJ(&G_wv>(8-t|96BM97c`(<147b@!vwE|M-7 z|M`Ra_mGPEn=aA{@~4g(8k(pu5|ULy^cES-?+R-Sp8!~z|8|^MS`jVTkk|6x;}rm+FYcrLU~W_YsO~Z*<;1SW3E?23-?x zv2###-T_Jmf;KXJfe{j|B>HekE9HcFNy?B|>W~O)LeZNt%oN z7BOS7anP5Ex=7>};1R=|Fid=jEQXqZn3JQRE9Mc!1!K!PY}6`>g&!4SRh@p1M$3s- zsq@GY8T*!SR- zR`4)fw`WeS;|K{s1eRntT4k9}ny7K>t)^B>N(*XE4FI0Z}%TIdQG zVn&x`uvKK(Uv>rpS>nk+UtZ_SWd$Lyw?F|bE+mE#=`}moy^OKmCR>Le+M2cVn)EN^ z3j|pgYV1&3y{)v$^2NA{nXN8)AEJ)KWz*#fNZBG-zh^ zpd=+`6|39wTQOd5+&-a8R$tGFXX(5e_Y0Gdzpl_|A%V!-S9P(~;&KlTX_H1SP1hEB z3rga;9yUS{ir2-Wqie)lLxgIvl2^B=v?^*VylM2u1n+2BM|5gRW3ix2mJ85ft2=mf z@J0OTM<+(o(O%n>$VlZ2Fd?C6)B|e`2EwV@se%6cDNXV@#s|_t7NpAFK3|)h=}+9* zV>u=B+;wpUQN6Y@>WrAP7u&XEoq4`ekH_(yr8wXFS>0a*lRS)S(2kUKc$G*X_qdldr?{MB<8qC2tEkgLKK)?$30S)XS7D)=Z!-DUUHq z6{kA0?udCA5wo3mq3eZPy~I2M0&Isn*y4RWnDJVhm(-9rz+a9L_Cz)k20k3Nzg%fU zJ++{>;L7|SDgX8Dor+MbHKNG4q(Ftvyxc>I*^pm_kWJef#60(>$6?63v!z@=?G2^R zAB}!nIt6IvoKyx$43g(oC;RNgTnB$2(mF?)oC%u3_p^kPN~ zrRo#f^U{)E7(H&RRoaHJ(Pk*sM53c#yAdm(Ew76cJW|g=8QY&kf5iK9Z%|8q*M3}V z$i70ChX?riDqg$(5zK228;ckXD1rJFl+rD3Csu5y;2&ND{CyBuxqYL$Z_9Dr_Wf9U zH=4Fdet;Kr8QGZ!nKc*cq|ZMPeEmd2^*0EwMCZwUZskJ%RnkDFpmyn=ij!YNE?hWt zv2ci1e16lIT+UbmI420vVAL?V*F`Ux{O2ka=(3b(<&Nafwfr5n=YgSQ$AGi*xPaz) z=nZ4X8Ly|ITx*|TV>UtHLPoT7MUQO|g3XEqH@96BKzUtjg@fq0KZNvEE7%d%Nmi8W zO9vyHFVazP=Tez*8X*=)V^TB@_T|0F8wCe#${k*M5;e~gtxjsUC_sB_BMdaBQ<)~7 z(M$VlX<}*4Lsd~5%DHKNJ}vBAKbS5ZIK8hXUv&O@kRct>%&&HdHB|v#P38!L3Ex4Z(pO zK$z+Ws|;UzSn#fS<|zb(5He!(4{J3Er)s>403oDGG$%N1X_GuEk!l)r0&Ak7KqJDu}(wae(_EB z#))JlDyhW&sx((l?icPmXcV(J_ecLnr19vFNLpY6tXoKVkWsn|VTcgvK3g zhV#~>vIp(&6S*gE!lq@>^^38m8~2zd!&CS%IQ@erH%-J^vg);tB))^DV@~PQ2=ubN zVy6#OT#}?B(1*Js5a*u&g_d@j**PCoF*D7@aavm2TaAQCM^jv-A-!G2nlw->rLRETl429sk5bw<7GTSUP)6_9wFW$q zapM;L`XmDVEVUxG%pT53V1C9c1}$Y=Dy#{^$rx-r#jNEo>9XLGeG%>{gg!H3hq^n6 zG60%Mh$1EL&zXo*yc#bjEqGjYD0_B(DtOaoM+k((T-4WY3C+cq$(jC^$VC^<=T@0% z5+(ZRp1DJAkv$@|Z6n+>yLGEWRi_F1>~RTp#erem8ndtmx+2$KYfmz0(%aM75x##2 zyvz<#?J9s)1g#~72l657{Sz+kD{BoIe@Q~%GDyUtKx8A~y3H)3E{|A7-WlW?8(D?c zy%8?o&KDIDPOF!|)+Q99MZzkz%hDx*?wfr3&K%LWGCpn_=eaW#29S@PmX83yZcM~@ z*mIl?pOEnc#CFK|1Zl`*Eq642F;bh!>F{qi6)3l(g*2a<+N`N}IPW=H;7X=$ZJU7d ztbr6RDK-)w`5(tPpKP91Sb+(7-)2lc*)CXQV2Kj~0hc-ANIlY*Kq;^XSPbd;Z)u)m zV$V(9V@2X`&^(sCxTD=JJxK-WD=Nx*;64%AoM&?qS1sAjpMR(CgPR!MYQ8ckqy+!< zJ@${xH2?n{9{!_!TtMIP-;3L)RiXaorfaC(t=;j#IQ_`*f94ORRQ(`h3m3v`fr!>N z3>B3!N62b!VzE5XHf|n>Ngi0T`7yO-OMAaFQ za0} zXhY~{y~!|oPhooK2>A+rQqOVN7|UjWlDf`2fj+`=UMex{8%^Jd)W>D9FrY%lWM|Re zj+@hTO}aC>XAJ6zlTgnw@aQ8+iKDD`_W%>K8EG*Qr6P=X%4|DzPXfa#wXWG>JSGAW z7T@1gv6~|~ZvT?vA+3ww2sqIYnepg%f&#u61Te)@d8p951j)1cZjMQ6mR6B(Tu0FC zN~<_v-HNjh=1An+YE9-ysDd*M4bL+a9u5>D0!&6EagSv6G}#v&ApG4fPRoCfVF$pQ zaTu+oxT^gsuF(ik^aWc)>%FA+pZm53a*5GmkxX+NPXgWlzb0eX+&yH{7xV`-DPP4Jv#*{B#UA_n?XNX6(Ib> zyXC?y#FU-IxFxCGRXF5z=Y8k38G4y-h72jGP*Zg)NgA2!maURY2H?NKxy*nYG0xQS z_~|SGA%W9mJ#n8T!kI{kf<_Kw`-AD8Uhg%}Iy?j{Xv>+XHTI68+t&hozh1peC^D$7E@>LZd5)f7yb-%u;Ma z&yTiG`R~dx~UJ* zJ$r`nsoZyc?v4SEM-toNH|@giY5s%pffrX+>CqrZzM>)HVAtd{58|=BL=dblz-W@+ zhn7^&>M~Bzd)BB4OL*x1awsJw=0>B(ztJkM=DMS(uz7L5WFJ^L=P zV{~v=GA+?qXqnf*UX`@m(o8-(Aw}%pBede7T-4E`{HGte1KXES8shu~y4;Vbu63Jd zc#^VwRLfLEWh-=rTShuZc3ItZH7W8DbR%84T{VSGvAMf;QL{^3@%9j%g0o6{qOH0@ zy>=6`X~ zt|padp>(@8BCddWJc3xTfeR!X^#GD1_;^VigX)UX38iN63a?Tw@%8Wp@tOpJ?DZ#d z7P>sl(0yxJ+P#`pg7x32!d4uJJ6-9CSCuZ89DlUMF4l91@6w+ME_HzFvf=zn)8l9H zB23etkAIkC!TZYiukT?(^D#5lklIJsaoA+Qp=u>U68P8kkNnRdz`r0) z{{;d5)0_LB03cgY+w!m7p+@yalTLGsgccvAi&U01BvsrZG2yykKLn~G;$MpCThJ#X z(>AMHO0Ts@R-m|lxnyo;tjxqTtsabzX0pGypC{|?gkvnJz76PL z!BkR#BedmO6N+U|pDE%9vX>Q~-=(%_>&=;PANkoHq5M0k;ELq~hKViP?)4oIPW$rnobkZ-{U`IJ3ZtRsmaV}!c|3jutsq$pET>gALC=qxr& zrB*tQ5IkqDnf6Sp?5Netr`0_DS$?71ro7Sbb)v@8?`BAz1t*jID73DRQVvu|H;V(% zR8XL4U@TONa;10V|GNLl72d4+W{9MU{6VsIes1^!zpDd{ zYVMnUVjT)u6J}os9Fg^aCYfIF_$5(#-C8tfC!b}dndD9Nb6%cu{nALQoIZITXrx^A zm4)|N?FZ`e)#loH$a#oO**m`LW%rj6V&-M0{dl|Ubw`pGs15V;=P!6Jj6MagxmY-y z#9e!Io}&FhAUAuVQBmOQT`@S^VMKne@InTz;(fJmir4h$JT!x(z>BX&-*OYuVRKV< z898_``=q>NT4E#1XV0Dke)!DCaz874BfV~lNxYpTNAIcHr@Zwh@pFH+_@+C!BK+DE zV+&FTCu-!T5_0VIT;kPBJa`8*^_A`0S-!!BdF@f7STlXHRNKs!coH=zZ)4Uo$sWr? z=loTa5RdQ3wqW=ZR`cX1@oGtb@7ASkM!MDd0$h!hrL$W#+2te`gVlwY^Dwj26%G?@ zM!eOCj1Wu4%(r54d)<>u3s*{gk~hK)Msv=!9hHv#f{h#Oa_pwO-Tn!?iB}pP5uCg# zK60Zg3r=&>Ws5N;WibWfG2EYQX z>nYAYfJF2dgYPB_E+I}{v1{>zmQKWpQKDi=N}F3u{>Y5!QpQuzg?kdvPQ-5t z(c1O|;1|y!P8MdR>0`G=v=$hNS<~HtQ7zWu?E$wB8YT%4(dJ&C^nbvXKKq~l=3BW&wAQJvJ5%ILn5KSkEQaiN34Re$57 zD5etOqZ=Y0AMTbeCO|AQ^y2*KgcGA40Wa#|II(mjZcbs@GI6p5NAY5;y(}}N+`M=h zsp)OP5-(p~Vhfc?K`1OaQO`Rio*GhuP#hk1EXFQySpr!Uqyi_s2; z{X6P)LCBGKmi%{A`|&ncG=&Nii%D3Tq0P`XK`H9i1|Gsre&UCH$XQuD!1{}K<{h9E?=-2z| zsE~}DKA6sEuJLnZ2)Xs$xtk@)5=DJg{B$n{8UpZVNbgsz_y;>XLIlX1vgBy5o2_(3 zas4W##U~f>d3ixwf7FeFVWD|;nRi5ugJTq1rOyTk>vY>&p@W!vq7v&kTj6FgVQljs zCQj)CO&+T63ypP+5xdiUA+b4rRR;;t;t zS!mQSri}aR2Ihg(j-yB$y!|_WBq+kb$$O@`l3I04IWJ-eKS6IGD7iHXs4oHz3?z1u z)sAG)ty7R6>}N|Jb7WxR#dQaq_XqVW(4~2j+M$P+jNz@sOAS!IOFp_*%&A>FMu2OX zBL$atmF$@n5lPbihI=Oic0r~RSElY=@+YrN@|`3TCGvrxv;}1-aX!4MdNxBAAu-QL zd9!-j{grY)qS=K+%A)lMd@o@t&VULdja>{poY~%dPM9z70*UtdG9ZH3xO(*`~v8(hbSu zcA&A(HIZ!^E;o3UWhd$Qa~)JEICHj;W77jC$8O9KhuJhanI)z%>459`tMUwr4%>A; zQl#qW5)u{EvJOSA(Ur2+$c1;^T-xM}OtsnsJIlRJXIJ_7F!k_oW&TXQTsg^s`>JRQ z#x3@&^%2)i-|q8uGd&0JLnp-b3G}yWlUX#%!wfg*K7-fhji{xG$4FHdHLG3KApx+L z^C|v2K>&sfJ|&~zKBA$-BI@m-9OlEM=_xtLp(ZP^?${?miSYNJ8mOh9KkSR4!0b{x z#MhGoI_gtx5$W@KWNzO9f**2pq3Y~YJfK%&n54pZR2r^fGh>*eG=xo@n^Htqpi}IM zd2Xa84pt=H)M+6q$(x*F2VMz{Vd2qn|Btn|42mpDwniIk+}+*X9U6D1aCdjt#vK}W zcXy|8YrJun!rk3IX6}u5?>Fzo#Qb;_Rdp&V&e=b9MCQ(1xpHO3zU+}&!W9y`GT9dK zv4rH7(yV6|TQ-s0bbQ(2^|z_~%*#4C8nL*9x?R~7@e)$W^T+%s6h9*upwJjZIF1Nn zv9G8fTxLB)hhmj7G<%||l~oJ+nyPZGF|S*hi|&Xw_wCH3GtFQ2yN@dACUtTxH=Rme z%Y`A`l#z`{T~TNDOKOXnf|AU)Fbh{sf&(hC&LsWo{#(#ZNAY)tb;YZ{!|n+xpF_Yz zl-I`jGqF7atW(=K`a`Q^fCrl7D5)jFf)1|GFIP2Z`XYU3 TeUK&_=&maOb-(f8E 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

Y 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�hB)1A*9$%$Gv)mW(nI>>YYH4#TjZf?d}03mHf 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

Os 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Ð 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 filename mapping') - return dict((s['name'], [fn for fn in s['files']]) - for s in self.plugin_spec_dict['services'] - if 'files' in s and s['files']) - - def _load_default_configs(self): - LOG.debug('Loading defaults from local files') - file_name_data_map = {} - for f in self.plugin_spec_dict['files']: - if 'local' not in f: - LOG.debug('%s skipped. No "local" section', f['remote']) - continue - local_path = os.path.join(self.base_dir, f['local']) - LOG.debug('Loading %(local_path)s as default for %(remote)s', - {'local_path': local_path, 'remote': f['remote']}) - data = cfu.load_file(local_path, f['type']) - file_name_data_map[f['remote']] = data - return du.append_to_key(self.service_file_name_map, file_name_data_map) - - def _load_plugin_config_items(self): - LOG.debug('Loading full configs map for plugin') - items = map(lambda i: i.to_dict(), self.plugin_config_objects) - - def mapper(item): - file_name = du.get_keys_by_value_2( - self.file_name_config_map, item['name'])[0] - append_f = fu.append_field_function('file', file_name) - return append_f(item) - return map(mapper, items) - - def _load_plugin_configs(self): - LOG.debug('Loading plugin configs {service:{file:{name:value}}}') - m_fields = ['applicable_target', 'file'] - vp_fields = ('name', 'default_value') - reducer = du.iterable_to_values_pair_dict_reducer(*vp_fields) - return du.map_by_fields_values(self.plugin_config_items, - m_fields, dict, reducer) - - def _load_default_plugin_configs(self): - return du.deep_update(self.default_configs, self.plugin_configs) - - def _load_service_node_process_map(self): - LOG.debug('Loading {service:[node process]} mapping') - return dict((s['name'], [np for np in s['node_processes']]) - for s in self.plugin_spec_dict['services'] - if 'node_processes' in s and s['node_processes']) - - def _load_file_name_config_map(self): - LOG.debug('Loading {filename:[config_name]} names mapping') - r = {} - for fd in self.plugin_spec_dict['files']: - if 'configs' in fd: - r[fd['remote']] = [i['name'] - for ir, sd in six.iteritems(fd['configs']) - for s, items in six.iteritems(sd) - for i in items] - return r - - def _load_plugin_config_objects(self): - LOG.debug('Loading config objects for sahara-dashboard') - - def mapper(item): - req = ['name', 'applicable_target', 'scope'] - opt = ['description', 'config_type', 'config_values', - 'default_value', 'is_optional', 'priority'] - kargs = dict((k, item[k]) for k in req + opt if k in item) - return p.Config(**kargs) - result = [] - for file_dict in self.plugin_spec_dict['files']: - if 'configs' not in file_dict: - LOG.debug('%s skipped. No "configs" section', - file_dict['remote']) - continue - remote_path = file_dict['remote'] - applicable_target = du.get_keys_by_value_2( - self.service_file_name_map, remote_path)[0] - for is_required, scope_dict in six.iteritems(file_dict['configs']): - is_optional = is_required != 'required' - for scope, items in six.iteritems(scope_dict): - fields = {'file': remote_path, 'is_optional': is_optional, - 'scope': scope, - 'applicable_target': applicable_target} - append_f = fu.append_fields_function(fields) - result.extend([append_f(i) for i in items]) - return map(mapper, result) - - def _load_file_type_map(self): - LOG.debug('Loading {filename:type} mapping') - return dict((f['remote'], f['type']) - for f in self.plugin_spec_dict['files']) - - def get_node_process_service(self, node_process): - return du.get_keys_by_value_2(self.service_node_process_map, - node_process)[0] - - def get_default_plugin_configs(self, services): - return dict((k, self.default_plugin_configs[k]) - for k in services if k in self.default_plugin_configs) - - def get_config_file(self, scope, service, name): - p_template = { - 'applicable_target': service, 'scope': scope, 'name': name} - q_fields = ['file'] - q_predicate = fu.like_predicate(p_template) - q_source = self.plugin_config_items - q_result = du.select(q_fields, q_source, q_predicate) - if q_result and 'file' in q_result[0]: - return q_result[0]['file'] - else: - return None - - def get_file_type(self, file_name): - if file_name in self.file_type_map: - return self.file_type_map[file_name] - else: - return None - - def get_service_for_file_name(self, file_name): - return du.get_keys_by_value_2(self.service_file_name_map, file_name)[0] - - def get_version_config_objects(self): - common_fields = {'scope': 'cluster', - 'config_type': 'dropdown', - 'is_optional': False, - 'priority': 1} - - def has_version_field(service): - return 'versions' in service - - def get_versions(service): - return {'name': '%s Version' % service['name'], - 'applicable_target': service['name'], - 'config_values': [(v, v) for v in service['versions']]} - - def add_common_fields(item): - item.update(common_fields) - return item - - def to_config(item): - return p.Config(**item) - - mapper = fu.chain_function(get_versions, add_common_fields, to_config) - source = self.plugin_spec_dict['services'] - return map(mapper, filter(has_version_field, source)) - - def get_configs(self): - return self.plugin_config_objects + self.get_version_config_objects() diff --git a/sahara/plugins/mapr/util/resources/hadoop_version b/sahara/plugins/mapr/util/resources/hadoop_version deleted file mode 100644 index 861e8b09..00000000 --- a/sahara/plugins/mapr/util/resources/hadoop_version +++ /dev/null @@ -1,3 +0,0 @@ -classic_version=0.20.2 -yarn_version=2.4.1 -default_mode=%(mode)s \ No newline at end of file diff --git a/sahara/plugins/mapr/util/resources/waiting_script.sh b/sahara/plugins/mapr/util/resources/waiting_script.sh deleted file mode 100644 index 6c14452d..00000000 --- a/sahara/plugins/mapr/util/resources/waiting_script.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -while True; do - if [ -f '/tmp/launching-mapr-mfs.lck' ]; then - sleep 5 - else - break - fi -done diff --git a/sahara/plugins/mapr/util/run_scripts.py b/sahara/plugins/mapr/util/run_scripts.py deleted file mode 100644 index 82db86fe..00000000 --- a/sahara/plugins/mapr/util/run_scripts.py +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from oslo_log import log as logging - -from sahara.i18n import _LI - - -LOG = logging.getLogger(__name__) - - -def run_configure_sh(remote, script_string): - LOG.info(_LI("running configure.sh script")) - remote.execute_command(script_string, run_as_root=True) - - -def start_zookeeper(remote): - LOG.info(_LI("Starting mapr-zookeeper")) - remote.execute_command('service mapr-zookeeper start', run_as_root=True) - - -def start_oozie(remote): - LOG.info(_LI("Starting mapr-oozie")) - remote.execute_command('service mapr-oozie start', - run_as_root=True, - raise_when_error=False) - - -def start_hive_metastore(remote): - LOG.info(_LI("Starting mapr-hive-server2")) - remote.execute_command('service mapr-hivemetastore start', - run_as_root=True) - - -def start_hive_server2(remote): - LOG.info(_LI("Starting mapr-hive-server2")) - remote.execute_command('service mapr-hiveserver2 start', run_as_root=True) - - -def start_warden(remote): - LOG.info(_LI("Starting mapr-warden")) - remote.execute_command('service mapr-warden start', run_as_root=True) - - -def start_cldb(remote): - LOG.info(_LI("Starting mapr-cldb")) - remote.execute_command('service mapr-cldb start', run_as_root=True) - - -def start_node_manager(remote): - LOG.info(_LI("Starting nodemanager")) - remote.execute_command(('/opt/mapr/hadoop/hadoop-2.3.0' - '/sbin/yarn-daemon.sh start nodemanager'), - run_as_root=True) - - -def start_resource_manager(remote): - LOG.info(_LI("Starting resourcemanager")) - remote.execute_command(('/opt/mapr/hadoop/hadoop-2.3.0' - '/sbin/yarn-daemon.sh start resourcemanager'), - run_as_root=True) diff --git a/sahara/plugins/mapr/util/scaling.py b/sahara/plugins/mapr/util/scaling.py deleted file mode 100644 index ad46ece3..00000000 --- a/sahara/plugins/mapr/util/scaling.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from oslo_log import log as logging - -from sahara import context -from sahara.i18n import _LI -from sahara.plugins.mapr.util import config -from sahara.plugins.mapr.util import names -from sahara.plugins.mapr.util import run_scripts -from sahara.plugins.mapr.util import start_helper -from sahara.utils import general as gen - - -LOG = logging.getLogger(__name__) - -STOP_WARDEN_CMD = 'service mapr-warden stop' -STOP_ZOOKEEPER_CMD = 'service mapr-zookeeper stop' -GET_SERVER_ID_CMD = ('maprcli node list -json -filter [ip==%s] -columns id' - ' | grep id | grep -o \'[0-9]*\'') -MOVE_NODE_CMD = 'maprcli node move -serverids %s -topology /decommissioned' -GET_HOSTNAME_CMD = ('maprcli node list -json -filter [ip==%s]' - ' -columns hostname | grep hostname' - ' | grep -Po \'(?<=("hostname":")).*?(?=")\'') -REMOVE_NODE_CMD = 'maprcli node remove -filter [ip==%(ip)s] -nodes %(nodes)s' -REMOVE_MAPR_PACKAGES_CMD = ('python -mplatform | grep Ubuntu ' - '&& apt-get remove mapr-\* -y' - ' || yum remove mapr-\* -y') -REMOVE_MAPR_HOME_CMD = 'rm -rf /opt/mapr' -REMOVE_MAPR_CORES_CMD = 'rm -rf /opt/cores/*.core.*' - - -def scale_cluster(cluster, instances, disk_setup_script_path, waiting_script, - context, configure_sh_string, is_node_awareness): - LOG.info(_LI('START: Cluster scaling. Cluster = %s'), cluster.name) - for inst in instances: - start_helper.install_role_on_instance(inst, context) - config.configure_instances(cluster, instances) - start_services(cluster, instances, disk_setup_script_path, - waiting_script, configure_sh_string) - LOG.info(_LI('END: Cluster scaling. Cluster = %s'), cluster) - - -def decommission_nodes(cluster, instances, configure_sh_string): - LOG.info(_LI('Start decommission . Cluster = %s'), cluster.name) - move_node(cluster, instances) - stop_services(cluster, instances) - context.sleep(names.WAIT_NODE_ALARM_NO_HEARTBEAT) - remove_node(cluster, instances) - remove_services(cluster, instances) - if check_for_cldb_or_zookeeper_service(instances): - all_instances = gen.get_instances(cluster) - current_cluster_instances = [ - x for x in all_instances if x not in instances] - for inst in current_cluster_instances: - start_helper.exec_configure_sh_on_instance( - cluster, inst, configure_sh_string) - LOG.info(_LI('End decommission. Cluster = %s'), cluster.name) - - -def start_services(cluster, instances, disk_setup_script_path, - waiting_script, configure_sh_string): - LOG.info(_LI('START: Starting services.')) - for inst in instances: - start_helper.exec_configure_sh_on_instance( - cluster, inst, configure_sh_string) - start_helper.wait_for_mfs_unlock(cluster, waiting_script) - start_helper.setup_maprfs_on_instance(inst, disk_setup_script_path) - - if check_if_is_zookeeper_node(inst): - run_scripts.start_zookeeper(inst.remote()) - - run_scripts.start_warden(inst.remote()) - - if check_for_cldb_or_zookeeper_service(instances): - start_helper.exec_configure_sh_on_cluster( - cluster, configure_sh_string) - LOG.info(_LI('END: Starting services.')) - - -def stop_services(cluster, instances): - LOG.info(_LI("Stop warden and zookeeper")) - for instance in instances: - with instance.remote() as r: - r.execute_command(STOP_WARDEN_CMD, run_as_root=True) - if check_if_is_zookeeper_node(instance): - r.execute_command(STOP_ZOOKEEPER_CMD, run_as_root=True) - LOG.info(_LI("Warden and zookeeper stoped")) - - -def move_node(cluster, instances): - LOG.info(_LI("Start moving the node to the /decommissioned")) - for instance in instances: - with instance.remote() as r: - command = GET_SERVER_ID_CMD % instance.management_ip - ec, out = r.execute_command(command, run_as_root=True) - command = MOVE_NODE_CMD % out.strip() - r.execute_command(command, run_as_root=True) - LOG.info(_LI("Nodes moved to the /decommissioned")) - - -def remove_node(cluster, instances): - LOG.info("Start removing the nodes") - for instance in instances: - with instance.remote() as r: - command = GET_HOSTNAME_CMD % instance.management_ip - ec, out = r.execute_command(command, run_as_root=True) - command = REMOVE_NODE_CMD % {'ip': instance.management_ip, - 'nodes': out.strip()} - r.execute_command(command, run_as_root=True) - LOG.info("Nodes removed") - - -def remove_services(cluster, instances): - LOG.info(_LI("Start remove all mapr services")) - for instance in instances: - with instance.remote() as r: - r.execute_command(REMOVE_MAPR_PACKAGES_CMD, run_as_root=True) - r.execute_command(REMOVE_MAPR_HOME_CMD, run_as_root=True) - r.execute_command(REMOVE_MAPR_CORES_CMD, run_as_root=True) - LOG.info(_LI("All mapr services removed")) - - -def check_if_is_zookeeper_node(instance): - processes_list = instance.node_group.node_processes - return names.ZOOKEEPER in processes_list - - -def check_for_cldb_or_zookeeper_service(instances): - for inst in instances: - np_list = inst.node_group.node_processes - if names.ZOOKEEPER in np_list or names.CLDB in np_list: - return True - return False diff --git a/sahara/plugins/mapr/util/start_helper.py b/sahara/plugins/mapr/util/start_helper.py deleted file mode 100644 index e85c0438..00000000 --- a/sahara/plugins/mapr/util/start_helper.py +++ /dev/null @@ -1,178 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from oslo_log import log as logging - -from sahara import context -from sahara.i18n import _LI -from sahara.plugins.mapr.util import names -from sahara.plugins.mapr.util import run_scripts -import sahara.plugins.mapr.versions.version_handler_factory as vhf -import sahara.plugins.utils as utils -from sahara.utils import files as files - - -LOG = logging.getLogger(__name__) - - -def exec_configure_sh_on_cluster(cluster, script_string): - inst_list = utils.get_instances(cluster) - for n in inst_list: - exec_configure_sh_on_instance(cluster, n, script_string) - - -def exec_configure_sh_on_instance(cluster, instance, script_string): - LOG.info(_LI('START: Executing configure.sh')) - if check_for_mapr_db(cluster): - script_string += ' -M7' - if not check_if_mapr_user_exist(instance): - script_string += ' --create-user' - LOG.debug('script_string = %s', script_string) - instance.remote().execute_command(script_string, run_as_root=True) - LOG.info(_LI('END: Executing configure.sh')) - - -def check_for_mapr_db(cluster): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - return v_handler.get_context(cluster).is_m7_enabled() - - -def setup_maprfs_on_cluster(cluster, path_to_disk_setup_script): - mapr_node_list = utils.get_instances(cluster, 'FileServer') - for instance in mapr_node_list: - setup_maprfs_on_instance(instance, path_to_disk_setup_script) - - -def setup_maprfs_on_instance(instance, path_to_disk_setup_script): - LOG.info(_LI('START: Setup maprfs on instance %s'), instance.instance_name) - create_disk_list_file(instance, path_to_disk_setup_script) - execute_disksetup(instance) - LOG.info(_LI('END: Setup maprfs on instance.')) - - -def create_disk_list_file(instance, path_to_disk_setup_script): - LOG.info(_LI('START: Creating disk list file.')) - script_path = '/tmp/disk_setup_script.sh' - rmt = instance.remote() - LOG.debug('Writing /tmp/disk_setup_script.sh') - rmt.write_file_to( - script_path, files.get_file_text(path_to_disk_setup_script)) - LOG.debug('Start executing command: chmod +x %s', script_path) - rmt.execute_command('chmod +x ' + script_path, run_as_root=True) - LOG.debug('Done for executing command.') - args = ' '.join(instance.node_group.storage_paths()) - cmd = '%s %s' % (script_path, args) - LOG.debug('Executing %s', cmd) - rmt.execute_command(cmd, run_as_root=True) - LOG.info(_LI('END: Creating disk list file.')) - - -def execute_disksetup(instance): - LOG.info(_LI('START: Executing disksetup.')) - rmt = instance.remote() - rmt.execute_command( - '/opt/mapr/server/disksetup -F /tmp/disk.list', run_as_root=True) - LOG.info(_LI('END: Executing disksetup.')) - - -def wait_for_mfs_unlock(cluster, path_to_waiting_script): - mapr_node_list = utils.get_instances(cluster, names.FILE_SERVER) - for instance in mapr_node_list: - create_waiting_script_file(instance, path_to_waiting_script) - exec_waiting_script_on_instance(instance) - - -def start_zookeeper_nodes_on_cluster(cluster): - zkeeper_node_list = utils.get_instances(cluster, names.ZOOKEEPER) - for z_keeper_node in zkeeper_node_list: - run_scripts.start_zookeeper(z_keeper_node.remote()) - - -def start_warden_on_cluster(cluster): - node_list = utils.get_instances(cluster) - for node in node_list: - run_scripts.start_warden(node.remote()) - - -def start_warden_on_cldb_nodes(cluster): - node_list = utils.get_instances(cluster, names.CLDB) - for node in node_list: - run_scripts.start_warden(node.remote()) - - -def start_warden_on_other_nodes(cluster): - node_list = utils.get_instances(cluster) - for node in node_list: - if names.CLDB not in node.node_group.node_processes: - run_scripts.start_warden(node.remote()) - - -def create_waiting_script_file(instance, path_to_waiting_script): - LOG.info(_LI('START: Creating waiting script file.')) - script_path = '/tmp/waiting_script.sh' - rmt = instance.remote() - rmt.write_file_to(script_path, files.get_file_text(path_to_waiting_script)) - LOG.info(_LI('END: Creating waiting script file.')) - - -def exec_waiting_script_on_instance(instance): - LOG.info(_LI('START: Waiting script')) - rmt = instance.remote() - rmt.execute_command('chmod +x /tmp/waiting_script.sh', run_as_root=True) - rmt.execute_command('/tmp/waiting_script.sh', run_as_root=True) - LOG.info(_LI('END: Waiting script')) - - -def check_if_mapr_user_exist(instance): - ec, out = instance.remote().execute_command('id -u mapr', - run_as_root=True, - raise_when_error=False) - return ec == 0 - - -def check_for_mapr_component(instance, component_name): - component_list = instance.node_group.node_processes - return component_name in component_list - - -def install_role_on_instance(instance, cluster_context): - LOG.info(_LI('START: Installing roles on node ')) - roles_list = instance.node_group.node_processes - exec_str = (cluster_context.get_install_manager() - + cluster_context.get_roles_str(roles_list)) - LOG.debug('Executing "%(command)s" on %(instance)s', - {'command': exec_str, 'instance': instance.instance_id}) - - instance.remote().execute_command(exec_str, run_as_root=True, timeout=900) - LOG.info(_LI('END: Installing roles on node ')) - - -def install_roles(cluster, cluster_context): - LOG.info(_LI('START: Installing roles on cluster')) - instances = utils.get_instances(cluster) - with context.ThreadGroup(len(instances)) as tg: - for instance in instances: - tg.spawn('install_roles_%s' % instance.instance_id, - install_role_on_instance, - instance, - cluster_context) - LOG.info(_LI('END: Installing roles on cluster')) - - -def start_ecosystem(cluster_context): - oozie_inst = cluster_context.get_oozie_instance() - if oozie_inst is not None: - context.sleep(names.WAIT_OOZIE_INTERVAL) - run_scripts.start_oozie(oozie_inst.remote()) diff --git a/sahara/plugins/mapr/util/validation_utils.py b/sahara/plugins/mapr/util/validation_utils.py index 74836500..1b83c269 100644 --- a/sahara/plugins/mapr/util/validation_utils.py +++ b/sahara/plugins/mapr/util/validation_utils.py @@ -1,135 +1,175 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + import functools as ft +from sahara.conductor import resource as r +import sahara.exceptions as ex from sahara.i18n import _ import sahara.plugins.exceptions as e -import sahara.plugins.mapr.util.cluster_info as ci -import sahara.plugins.mapr.util.wrapper as w class LessThanCountException(e.InvalidComponentCountException): + MESSAGE = _("Hadoop cluster should contain at least" + " %(expected_count)d %(component)s component(s)." + " Actual %(component)s count is %(actual_count)d") def __init__(self, component, expected_count, count): super(LessThanCountException, self).__init__( component, expected_count, count) - self.message = (_("Hadoop cluster should contain at least" - " %(expected_count)d %(component)s component(s)." - " Actual %(component)s count is %(count)d") - % {'expected_count': expected_count, - 'component': component, 'count': count}) + args = { + 'expected_count': expected_count, + 'component': component, + 'actual_count': count, + } + self.message = LessThanCountException.MESSAGE % args -class MoreThanCountException(e.InvalidComponentCountException): +class EvenCountException(ex.SaharaException): + MESSAGE = _("Hadoop cluster should contain odd number of %(component)s" + " but %(actual_count)s found.") - def __init__(self, component, expected_count, count): - super(MoreThanCountException, self).__init__( - component, expected_count, count) - self.message = (_("Hadoop cluster should contain not more than" - " %(expected_count)d %(component)s component(s)." - " Actual %(component)s count is %(count)d") - % {'expected_count': expected_count, - 'component': component, 'count': count}) + def __init__(self, component, count): + super(EvenCountException, self).__init__() + args = {'component': component, 'actual_count': count} + self.message = EvenCountException.MESSAGE % args class NodeRequiredServiceMissingException(e.RequiredServiceMissingException): + MISSING_MSG = _('Node "%(ng_name)s" is missing component %(component)s') + REQUIRED_MSG = _('%(message)s, required by %(required_by)s') - def __init__(self, service_name, required_by=None): + def __init__(self, service_name, ng_name, required_by=None): super(NodeRequiredServiceMissingException, self).__init__( service_name, required_by) - self.message = _('Node is missing a service: %s') % service_name + args = {'ng_name': ng_name, 'component': service_name} + self.message = ( + NodeRequiredServiceMissingException.MISSING_MSG % args) if required_by: - self.message = (_('%(message)s, required by service:' - ' %(required_by)s') - % {'message': self.message, - 'required_by': required_by}) + args = {'message': self.message, 'required_by': required_by} + self.message = ( + NodeRequiredServiceMissingException.REQUIRED_MSG % args) -def not_less_than_count_component_vr(component, count): - def validate(cluster, component, count): - c_info = ci.ClusterInfo(cluster, None) - actual_count = c_info.get_instances_count(component) +class NodeServiceConflictException(ex.SaharaException): + MESSAGE = _('%(service)s service cannot be installed alongside' + ' %(package)s package') + ERROR_CODE = "NODE_PROCESS_CONFLICT" + + def __init__(self, service_name, conflicted_package): + super(NodeServiceConflictException, self).__init__() + args = { + 'service': service_name, + 'package': conflicted_package, + } + self.message = NodeServiceConflictException.MESSAGE % args + self.code = NodeServiceConflictException.ERROR_CODE + + +def at_least(count, component): + def validate(cluster_context, component, count): + actual_count = cluster_context.get_instances_count(component) if not actual_count >= count: - raise LessThanCountException(component, count, actual_count) + raise LessThanCountException( + component.ui_name, count, actual_count) + return ft.partial(validate, component=component, count=count) -def not_more_than_count_component_vr(component, count): - def validate(cluster, component, count): - c_info = ci.ClusterInfo(cluster, None) - actual_count = c_info.get_instances_count(component) - if not actual_count <= count: - raise MoreThanCountException(component, count, actual_count) - return ft.partial(validate, component=component, count=count) - - -def equal_count_component_vr(component, count): - def validate(cluster, component, count): - c_info = ci.ClusterInfo(cluster, None) - actual_count = c_info.get_instances_count(component) +def exactly(count, component): + def validate(cluster_context, component, count): + actual_count = cluster_context.get_instances_count(component) if not actual_count == count: raise e.InvalidComponentCountException( - component, count, actual_count) + component.ui_name, count, actual_count) + return ft.partial(validate, component=component, count=count) -def require_component_vr(component): - def validate(instance, component): - if component not in instance.node_group.node_processes: - raise NodeRequiredServiceMissingException(component) - return ft.partial(validate, component=component) - - -def require_of_listed_components(components): - def validate(instance, components): - if (False in (c in instance.node_group.node_processes - for c in components)): - raise NodeRequiredServiceMissingException(components) - return ft.partial(validate, components=components) - - -def each_node_has_component_vr(component): - def validate(cluster, component): - rc_vr = require_component_vr(component) - c_info = ci.ClusterInfo(cluster, None) - for i in c_info.get_instances(): - rc_vr(i) - return ft.partial(validate, component=component) - - -def each_node_has_at_least_one_of_listed_components(components): - def validate(cluster, components): - rc_vr = require_of_listed_components(components) - c_info = ci.ClusterInfo(cluster, None) - for i in c_info.get_instances(): - rc_vr(i) - return ft.partial(validate, components=components) - - -def node_dependency_satisfied_vr(component, dependency): - def validate(cluster, component, dependency): - c_info = ci.ClusterInfo(cluster, None) - for ng in c_info.get_node_groups(component): - if dependency not in ng.node_processes: +def each_node_has(component): + def validate(cluster_context, component): + for node_group in cluster_context.cluster.node_groups: + if component.ui_name not in node_group.node_processes: raise NodeRequiredServiceMissingException( - component, dependency) + component.ui_name, node_group.name) + + return ft.partial(validate, component=component) + + +def odd_count_of(component): + def validate(cluster_context, component): + actual_count = cluster_context.get_instances_count(component) + if actual_count > 1 and actual_count % 2 == 0: + raise EvenCountException(component.ui_name, actual_count) + + return ft.partial(validate, component=component) + + +def on_same_node(component, dependency): + def validate(cluster_context, component, dependency): + for ng in cluster_context.get_node_groups(component): + if dependency.ui_name not in ng.node_processes: + raise NodeRequiredServiceMissingException( + dependency.ui_name, ng.name, component.ui_name) + return ft.partial(validate, component=component, dependency=dependency) +def depends_on(service, required_by=None): + def validate(cluster_context, service, required_by): + if not cluster_context.is_present(service): + raise e.RequiredServiceMissingException( + service.ui_name, required_by.ui_name) + + return ft.partial(validate, service=service, required_by=required_by) + + +def node_client_package_conflict_vr(components, client_component): + def validate(cluster_context, components): + for ng in cluster_context.get_node_groups(): + for c in components: + nps = ng.node_processes + if c in nps and client_component in nps: + raise NodeServiceConflictException(c, client_component) + + return ft.partial(validate, components=components) + + +def assert_present(service, cluster_context): + if not cluster_context.is_present(service): + raise e.RequiredServiceMissingException(service.ui_name) + + def create_fake_cluster(cluster, existing, additional): - w_node_groups = [w.Wrapper(ng, count=existing[ng.id]) - if ng.id in existing else ng - for ng in cluster.node_groups] - return w.Wrapper(cluster, node_groups=w_node_groups) + counts = existing.copy() + counts.update(additional) + + def update_ng(node_group): + ng_dict = node_group.to_dict() + count = counts[node_group.id] + ng_dict.update(dict(count=count)) + return r.NodeGroupResource(ng_dict) + + def need_upd(node_group): + return node_group.id in counts and counts[node_group.id] > 0 + + updated = map(update_ng, filter(need_upd, cluster.node_groups)) + not_updated = filter(lambda ng: + not need_upd(ng) and ng is not None, + cluster.node_groups) + cluster_dict = cluster.to_dict() + cluster_dict.update({'node_groups': updated + not_updated}) + fake = r.ClusterResource(cluster_dict) + return fake diff --git a/sahara/plugins/mapr/util/wrapper.py b/sahara/plugins/mapr/util/wrapper.py deleted file mode 100644 index 757db4bc..00000000 --- a/sahara/plugins/mapr/util/wrapper.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - - -class Wrapper(object): - WRAPPED = '__wrapped__' - - def __init__(self, wrapped, **kargs): - object.__getattribute__(self, '__dict__').update(kargs) - object.__setattr__(self, Wrapper.WRAPPED, wrapped) - - def __getattribute__(self, name): - wrapped = object.__getattribute__(self, Wrapper.WRAPPED) - try: - return object.__getattribute__(self, name) - except AttributeError: - return object.__getattribute__(wrapped, name) diff --git a/sahara/plugins/mapr/versions/base_cluster_configurer.py b/sahara/plugins/mapr/versions/base_cluster_configurer.py deleted file mode 100644 index d0588d03..00000000 --- a/sahara/plugins/mapr/versions/base_cluster_configurer.py +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import abc -import collections as c -import os - -from oslo_log import log as logging -import six - -from sahara.i18n import _LI -import sahara.plugins.mapr.util.cluster_helper as ch -import sahara.plugins.mapr.util.cluster_info as ci -from sahara.plugins.mapr.util import config -import sahara.plugins.mapr.util.config_file_utils as cfu -import sahara.plugins.mapr.util.dict_utils as du -import sahara.plugins.mapr.versions.version_handler_factory as vhf -import sahara.plugins.utils as u -import sahara.swift.swift_helper as sh - - -LOG = logging.getLogger(__name__) - - -@six.add_metaclass(abc.ABCMeta) -class BaseClusterConfigurer(object): - - def get_topology_configs(self): - result = c.defaultdict(dict) - if config.is_data_locality_enabled(self.cluster): - if self.is_node_awareness_enabled(): - LOG.debug('Node group awareness is set to True') - - file_name = '%s/core-site.xml' % self.get_hadoop_conf_dir() - service = self.plugin_spec.get_service_for_file_name(file_name) - data = {} - data['net.topology.impl'] = ( - 'org.apache.hadoop.net.NetworkTopologyWithNodeGroup') - data['net.topology.nodegroup.aware'] = True - data['dfs.block.replicator.classname'] = ( - 'org.apache.hadoop.hdfs.server.namenode' - '.BlockPlacementPolicyWithNodeGroup') - result[service][file_name] = data - - file_name = '%s/mapred-site.xml' % self.get_hadoop_conf_dir() - service = self.plugin_spec.get_service_for_file_name(file_name) - data = {} - data['mapred.jobtracker.nodegroup.aware'] = True - data['mapred.task.cache.levels'] = 3 - result[service][file_name] = data - - file_name = '/opt/mapr/conf/cldb.conf' - service = self.plugin_spec.get_service_for_file_name(file_name) - data = {} - data['net.topology.script.file.name'] = '/opt/mapr/topology.sh' - result[service][file_name] = data - else: - LOG.debug('Node group awareness is not implemented in YARN' - ' yet so enable_hypervisor_awareness set to' - ' False explicitly') - return result - - def get_swift_configs(self): - mapper = lambda i: (i['name'], i['value']) - file_name = '%s/core-site.xml' % self.get_hadoop_conf_dir() - service = self.plugin_spec.get_service_for_file_name(file_name) - data = dict(map(mapper, sh.get_swift_configs())) - return {service: {file_name: data}} - - def get_cluster_configs(self): - default_configs = self.cluster_info.get_default_configs() - user_configs = self.cluster_info.get_user_configs() - result = du.deep_update(default_configs, user_configs) - file_name = '/opt/mapr/conf/cldb.conf' - service = self.plugin_spec.get_service_for_file_name(file_name) - if file_name not in result[service]: - result[service][file_name] = {} - data = result[service][file_name] - data['cldb.zookeeper.servers'] = ch.get_zookeeper_nodes_ip_with_port( - self.cluster) - return result - - def get_cluster_configs_template(self): - template = {} - du.deep_update(template, self.get_topology_configs(), False) - du.deep_update(template, self.get_swift_configs(), False) - du.deep_update(template, self.get_cluster_configs(), False) - return template - - def get_node_group_configs(self, node_groups=None): - ng_configs = {} - if not node_groups: - node_groups = self.cluster.node_groups - cc_template = self.cluster_configs_template - p_spec = self.plugin_spec - for ng in node_groups: - ng_services = self.cluster_info.get_services(ng) - d_configs = dict(filter(lambda i: i[0] in ng_services, - six.iteritems(cc_template))) - u_configs = self.cluster_info.get_user_configs(ng) - nc_template = du.deep_update(d_configs, u_configs) - nc_data = {} - for files in nc_template.values(): - for f_name, f_data in six.iteritems(files): - if f_name: - f_type = p_spec.get_file_type(f_name) - f_content = cfu.to_file_content(f_data, f_type) - if f_content: - nc_data[f_name] = f_content - ng_configs[ng.id] = nc_data - return ng_configs - - def configure_instances(self, instances=None): - if not instances: - instances = u.get_instances(self.cluster) - for i in instances: - i_files = self.node_group_files[i.node_group_id] - LOG.info(_LI('Writing files %(f_names)s to node %(node)s'), - {'f_names': i_files.keys(), 'node': i.management_ip}) - with i.remote() as r: - for f_name in i_files: - r.execute_command('mkdir -p ' + os.path.dirname(f_name), - run_as_root=True) - LOG.debug('Created dir: %s', os.path.dirname(f_name)) - r.write_files_to(i_files, run_as_root=True) - config.post_configure_instance(i) - - def __init__(self, cluster, plugin_spec): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - self.context = v_handler.get_context(cluster) - self.cluster = cluster - self.plugin_spec = plugin_spec - self.cluster_info = ci.ClusterInfo(self.cluster, self.plugin_spec) - self.cluster_configs_template = self.get_cluster_configs_template() - self.node_group_files = self.get_node_group_configs() - - def configure(self, instances=None): - self.configure_topology_data(self.cluster) - self.configure_instances(instances) - - @staticmethod - def _post_configure_instance(instance): - config.post_configure_instance(instance) - - def configure_topology_data(self, cluster): - config.configure_topology_data( - cluster, self.is_node_awareness_enabled()) - - @abc.abstractmethod - def get_hadoop_conf_dir(self): - return - - @abc.abstractmethod - def is_node_awareness_enabled(self): - return diff --git a/sahara/plugins/mapr/versions/base_context.py b/sahara/plugins/mapr/versions/base_context.py deleted file mode 100644 index 4ebbf3d2..00000000 --- a/sahara/plugins/mapr/versions/base_context.py +++ /dev/null @@ -1,173 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import abc - -import six - -import sahara.plugins.mapr.util.config_utils as cu -import sahara.plugins.mapr.util.names as n -import sahara.plugins.utils as u - - -@six.add_metaclass(abc.ABCMeta) -class BaseContext(object): - - hive_version_config = 'Hive Version' - oozie_version_config = 'Oozie Version' - - @abc.abstractmethod - def get_cluster(self): - return - - @abc.abstractmethod - def is_m7_enabled(self): - return - - @abc.abstractmethod - def get_hadoop_version(self): - return - - def get_linux_distro_version(self): - return self.get_zk_instances()[0].remote().execute_command( - 'lsb_release -is', run_as_root=True)[1].rstrip() - - def get_install_manager(self): - install_manager_map = {'Ubuntu': 'apt-get install --force-yes -y ', - 'CentOS': 'yum install -y ', - 'RedHatEnterpriseServer': 'yum install -y ', - 'Suse': 'zypper '} - return install_manager_map.get(self.get_linux_distro_version()) - - def get_install_manager_version_separator(self): - install_manager_map = {'Ubuntu': '=', - 'CentOS': '-', - 'RedHatEnterpriseServer': '-', - 'Suse': ':'} - return install_manager_map.get(self.get_linux_distro_version()) - - def get_fs_instances(self): - return u.get_instances(self.get_cluster(), n.FILE_SERVER) - - def get_zk_instances(self): - return u.get_instances(self.get_cluster(), n.ZOOKEEPER) - - def get_zk_uris(self): - mapper = lambda i: '%s' % i.management_ip - return map(mapper, self.get_zk_instances()) - - def get_cldb_instances(self): - return u.get_instances(self.get_cluster(), n.CLDB) - - def get_cldb_uris(self): - mapper = lambda i: '%s' % i.management_ip - return map(mapper, self.get_cldb_instances()) - - def get_cldb_uri(self): - return 'maprfs:///' - - def get_rm_instance(self): - return u.get_instance(self.get_cluster(), n.RESOURCE_MANAGER) - - def get_rm_port(self): - return '8032' - - def get_rm_uri(self): - port = self.get_rm_port() - ip = self.get_rm_instance().management_ip - return '%s:%s' % (ip, port) if port else ip - - def get_hs_instance(self): - return u.get_instance(self.get_cluster(), n.HISTORY_SERVER) - - def get_hs_uri(self): - return self.get_hs_instance().management_ip - - def get_oozie_instance(self): - return u.get_instance(self.get_cluster(), n.OOZIE) - - def get_hive_metastore_instances(self): - return u.get_instances(self.get_cluster(), n.HIVE_METASTORE) - - def get_hive_server2_instances(self): - return u.get_instances(self.get_cluster(), n.HIVE_SERVER2) - - def get_oozie_uri(self): - ip = self.get_oozie_instance().management_ip - return 'http://%s:11000/oozie' % ip - - def get_roles_str(self, comp_list): - component_list_str = 'mapr-core ' + ' '.join(['mapr-' + role + ' ' - for role in comp_list]) - if 'HBase-Client' in comp_list: - component_list_str = component_list_str.replace( - 'HBase-Client', 'hbase') - if 'Oozie' in comp_list: - component_list_str = component_list_str.replace( - 'Oozie', 'oozie' + self.get_oozie_version()) - if 'HiveMetastore' in comp_list: - component_list_str = component_list_str.replace( - 'HiveMetastore', 'HiveMetastore' + self.get_hive_version()) - if 'HiveServer2' in comp_list: - component_list_str = component_list_str.replace( - 'HiveServer2', 'HiveServer2' + self.get_hive_version()) - - return component_list_str.lower() - - def user_exists(self): - return - - def get_plain_instances(self): - fs = self.get_fs_instances() - zk = self.get_zk_instances() - cldb = self.get_cldb_instances() - zk_fs_cldb = zk + fs + cldb - instances = u.get_instances(self.get_cluster()) - return [i for i in instances if i not in zk_fs_cldb] - - def get_configure_command(self): - kargs = {'path': self.get_configure_sh_path(), - 'cldb_nodes': ','.join(self.get_cldb_uris()), - 'zk_nodes': ','.join(self.get_cldb_uris()), - 'rm_node': self.get_rm_uri(), - 'hs_node': self.get_hs_uri()} - command = ('{path} -C {cldb_nodes} -Z {zk_nodes} -RM {rm_node}' - ' -HS {hs_node} -f').format(**kargs) - if self.is_m7_enabled(): - command += ' -M7' - if not self.user_exists(): - command += ' --create-user' - return command - - def get_fs_wait_command(self): - return '/tmp/waiting_script.sh' - - def get_disk_setup_command(self): - return '/opt/mapr/server/disksetup -F /tmp/disk.list' - - def get_configure_sh_path(self): - return '/opt/mapr/server/configure.sh' - - def get_oozie_version(self): - configs = cu.get_cluster_configs(self.get_cluster()) - return (self.get_install_manager_version_separator() - + configs[n.OOZIE][BaseContext.oozie_version_config] + '*') - - def get_hive_version(self): - configs = cu.get_cluster_configs(self.get_cluster()) - return (self.get_install_manager_version_separator() - + configs[n.HIVE][BaseContext.hive_version_config] + "*") - - def get_scripts(self): - return diff --git a/sahara/plugins/mapr/versions/base_version_handler.py b/sahara/plugins/mapr/versions/base_version_handler.py deleted file mode 100644 index a6335e39..00000000 --- a/sahara/plugins/mapr/versions/base_version_handler.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import abc - -import six - -import sahara.plugins.mapr.util.plugin_spec as ps -import sahara.plugins.mapr.util.start_helper as sh -import sahara.plugins.mapr.util.validation_utils as vu -import sahara.plugins.mapr.versions.edp_engine as edp - - -@six.add_metaclass(abc.ABCMeta) -class BaseVersionHandler(object): - - def __init__(self): - self.plugin_spec = ps.PluginSpec(self.get_plugin_spec_path()) - - def get_plugin_spec(self): - return self.plugin_spec - - def get_configs(self): - return self.plugin_spec.get_configs() - - def get_node_processes(self): - return self.plugin_spec.service_node_process_map - - def get_disk_setup_script(self): - return 'plugins/mapr/util/resources/create_disk_list_file.sh' - - def validate(self, cluster): - rules = self.get_cluster_validation_rules(cluster) - for rule in rules: - rule(cluster) - - def validate_scaling(self, cluster, existing, additional): - fake_cluster = vu.create_fake_cluster(cluster, existing, additional) - self.validate(fake_cluster) - - def validate_edp(self, cluster): - for rule in self.get_edp_validation_rules(): - rule(cluster) - - def configure_cluster(self, cluster): - sh.install_roles(cluster, self.get_context(cluster)) - self.get_cluster_configurer(cluster, self.plugin_spec).configure() - - def get_name_node_uri(self, cluster): - return self.get_context(cluster).get_cldb_uri() - - def get_oozie_server(self, cluster): - return self.get_context(cluster).get_oozie_instance() - - def get_oozie_server_uri(self, cluster): - return self.get_context(cluster).get_oozie_uri() - - def get_resource_manager_uri(self, cluster): - return self.get_context(cluster).get_rm_uri() - - def get_home_dir(self): - return ('plugins/mapr/versions/v%s' - % self.get_plugin_version().replace('.', '_').lower()) - - def get_plugin_spec_path(self): - return '%s/resources/plugin_spec.json' % self.get_home_dir() - - def get_edp_engine(self, cluster, job_type): - if job_type in edp.MapROozieJobEngine.get_supported_job_types(): - return edp.MapROozieJobEngine(cluster) - return None - - # Astract methods - - @abc.abstractmethod - def get_plugin_version(self): - return - - @abc.abstractmethod - def get_cluster_validation_rules(self, cluster): - return - - @abc.abstractmethod - def get_scaling_validation_rules(self): - return - - def get_waiting_script(self): - return - - @abc.abstractmethod - def get_edp_validation_rules(self): - return - - @abc.abstractmethod - def get_cluster_configurer(self, cluster, plugin_spec): - return - - @abc.abstractmethod - def get_configure_sh_string(self, cluster): - return - - @abc.abstractmethod - def get_context(self, cluster): - return diff --git a/sahara/plugins/mapr/versions/edp_engine.py b/sahara/plugins/mapr/versions/edp_engine.py deleted file mode 100644 index 5d2e3adb..00000000 --- a/sahara/plugins/mapr/versions/edp_engine.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.util.maprfs_helper as mfs -import sahara.plugins.mapr.versions.version_handler_factory as vhf -import sahara.service.edp.binary_retrievers.dispatch as d -import sahara.service.edp.oozie.engine as e - - -class MapROozieJobEngine(e.OozieJobEngine): - - def get_hdfs_user(self): - return 'mapr' - - def create_hdfs_dir(self, remote, dir_name): - mfs.create_maprfs_dir(remote, dir_name, self.get_hdfs_user()) - - def _upload_workflow_file(self, where, job_dir, wf_xml, hdfs_user): - f_name = 'workflow.xml' - with where.remote() as r: - mfs.put_file_to_maprfs(r, wf_xml, f_name, job_dir, hdfs_user) - return job_dir + '/' + f_name - - def _upload_job_files_to_hdfs(self, where, job_dir, job): - mains = job.mains or [] - libs = job.libs or [] - uploaded_paths = [] - hdfs_user = self.get_hdfs_user() - with where.remote() as r: - for m in mains: - raw_data = d.get_raw_binary(m) - mfs.put_file_to_maprfs(r, raw_data, m.name, job_dir, hdfs_user) - uploaded_paths.append(job_dir + '/' + m.name) - for l in libs: - raw_data = d.get_raw_binary(l) - lib_dir = job_dir + '/lib/' - self.create_hdfs_dir(r, lib_dir) - mfs.put_file_to_maprfs(r, raw_data, l.name, lib_dir, - hdfs_user) - uploaded_paths.append(lib_dir + l.name) - return uploaded_paths - - def get_name_node_uri(self, cluster): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - uri = v_handler.get_name_node_uri(cluster) - return uri - - def get_oozie_server_uri(self, cluster): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - uri = v_handler.get_oozie_server_uri(cluster) - return uri - - def get_oozie_server(self, cluster): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - server = v_handler.get_oozie_server(cluster) - return server - - def get_resource_manager_uri(self, cluster): - h_version = cluster.hadoop_version - v_handler = vhf.VersionHandlerFactory.get().get_handler(h_version) - uri = v_handler.get_resource_manager_uri(cluster) - return uri diff --git a/sahara/plugins/mapr/versions/v3_1_1/cluster_configurer.py b/sahara/plugins/mapr/versions/v3_1_1/cluster_configurer.py deleted file mode 100644 index 6c749cff..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/cluster_configurer.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.versions.base_cluster_configurer as bcc - - -class ClusterConfigurer(bcc.BaseClusterConfigurer): - - def get_hadoop_conf_dir(self): - return '/opt/mapr/hadoop/hadoop-0.20.2/conf' - - def is_node_awareness_enabled(self): - return True diff --git a/sahara/plugins/mapr/versions/v3_1_1/context.py b/sahara/plugins/mapr/versions/v3_1_1/context.py new file mode 100644 index 00000000..c9a772a9 --- /dev/null +++ b/sahara/plugins/mapr/versions/v3_1_1/context.py @@ -0,0 +1,81 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import sahara.plugins.mapr.base.base_cluster_context as bc +import sahara.plugins.mapr.services.mapreduce.mapreduce as mr +import sahara.plugins.mapr.services.maprfs.maprfs as maprfs +from sahara.utils import files as f + + +class Context(bc.BaseClusterContext): + UBUNTU_MAPR_BASE_REPO = ('http://package.mapr.com/releases/v3.1.1/ubuntu/ ' + 'mapr optional') + UBUNTU_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem/ubuntu binary/') + CENTOS_MAPR_BASE_REPO = 'http://package.mapr.com/releases/v3.1.1/redhat/' + CENTOS_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem/redhat') + + def __init__(self, cluster, version_handler, added=None, removed=None): + super(Context, self).__init__(cluster, version_handler, added, removed) + self._hadoop_version = mr.MapReduce().version + self._hadoop_lib = None + self._hadoop_conf = None + self._resource_manager_uri = 'maprfs:///' + self._cluster_mode = None + self._node_aware = False + + @property + def hadoop_lib(self): + if not self._hadoop_lib: + f = '%(hadoop_home)s/lib' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_lib = f % args + return self._hadoop_lib + + @property + def hadoop_conf(self): + if not self._hadoop_conf: + f = '%(hadoop_home)s/conf' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_conf = f % args + return self._hadoop_conf + + @property + def resource_manager_uri(self): + return self._resource_manager_uri + + @property + def mapr_db(self): + if self._mapr_db is None: + mapr_db = maprfs.MapRFS.ENABLE_MAPR_DB_CONFIG + mapr_db = self._get_cluster_config_value(mapr_db) + self._mapr_db = '-M7' if mapr_db else '' + return self._mapr_db + + def get_install_repo_script_data(self): + script_template = 'plugins/mapr/resources/add_mapr_repo.sh' + script_template = f.get_file_text(script_template) + args = { + "ubuntu_mapr_base_repo": Context.UBUNTU_MAPR_BASE_REPO, + "ubuntu_mapr_ecosystem_repo": Context.UBUNTU_MAPR_ECOSYSTEM_REPO, + "centos_mapr_repo": Context.CENTOS_MAPR_BASE_REPO, + "centos_mapr_ecosystem_repo": Context.CENTOS_MAPR_ECOSYSTEM_REPO, + } + return script_template % args diff --git a/sahara/plugins/mapr/versions/v3_1_1/edp_engine.py b/sahara/plugins/mapr/versions/v3_1_1/edp_engine.py new file mode 100644 index 00000000..13e33af4 --- /dev/null +++ b/sahara/plugins/mapr/versions/v3_1_1/edp_engine.py @@ -0,0 +1,22 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import sahara.plugins.mapr.base.base_edp_engine as edp +import sahara.plugins.mapr.util.maprfs_helper as mfs + + +class MapR3OozieJobEngine(edp.MapROozieJobEngine): + def create_hdfs_dir(self, remote, dir_name): + mfs.create_maprfs3_dir(remote, dir_name, self.get_hdfs_user()) diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/core-site.xml b/sahara/plugins/mapr/versions/v3_1_1/resources/default/core-site.xml deleted file mode 100644 index 506080a6..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/default/core-site.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - fs.default.name - maprfs:/// - The name of the default file system. A URI whose - scheme and authority determine the FileSystem implementation. The - uri's scheme determines the config property (fs.SCHEME.impl) naming - the FileSystem implementation class. The uri's authority is used to - determine the host, port, etc. for a filesystem. - - - - fs.mapr.working.dir - /user/$USERNAME/ - The default directory to be used with relative paths. - Note that $USERNAME is NOT an enviromental variable, but just a placeholder - to indicate that it will be expanded to the corresponding username. - Other example default directories could be "/", "/home/$USERNAME", "/$USERNAME" etc. - - - - - fs.s3n.block.size - 33554432 - - - fs.s3n.blockSize - 33554432 - - - fs.s3.block.size - 33554432 - - - fs.s3.blockSize - 33554432 - - - hadoop.proxyuser.mapr.groups - * - - - hadoop.proxyuser.mapr.hosts - * - - diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/exports b/sahara/plugins/mapr/versions/v3_1_1/resources/default/exports deleted file mode 100644 index 96111856..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/default/exports +++ /dev/null @@ -1,30 +0,0 @@ -# Sample Exports file - -# for /mapr exports -# - -#access_control -> order is specific to default -# list the hosts before specifying a default for all -# a.b.c.d,1.2.3.4(ro) d.e.f.g(ro) (rw) -# enforces ro for a.b.c.d & 1.2.3.4 and everybody else is rw - -# special path to export clusters in mapr-clusters.conf. To disable exporting, -# comment it out. to restrict access use the exports_control -# -/mapr (rw) - -#to export only certain clusters, comment out the /mapr & uncomment. -# Note: this will cause /mapr to be unexported -#/mapr/clustername (rw) - -#to export /mapr only to certain hosts (using exports_control) -#/mapr a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster1 rw to a.b.c.d & ro to e.f.g.h (denied for others) -#/mapr/cluster1 a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster2 only to e.f.g.h (denied for others) -#/mapr/cluster2 e.f.g.h(rw) - -# export /mapr/cluster3 rw to e.f.g.h & ro to others -#/mapr/cluster2 e.f.g.h(rw) (ro) diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/hadoop-metrics.properties b/sahara/plugins/mapr/versions/v3_1_1/resources/default/hadoop-metrics.properties deleted file mode 100644 index b65260ce..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/default/hadoop-metrics.properties +++ /dev/null @@ -1,41 +0,0 @@ -#CLDB metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send cldb metrics to that context - -# Configuration of the "cldb" context for null -#cldb.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#cldb.period=10 - -# Configuration of the "cldb" context for file -#cldb.class=org.apache.hadoop.metrics.file.FileContext -#cldb.period=60 -#cldb.fileName=/tmp/cldbmetrics.log - -# Configuration of the "cldb" context for ganglia -cldb.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -cldb.period=10 -cldb.servers=localhost:8649 -cldb.spoof=1 - -#FileServer metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send fileserver metrics to that context - -# Configuration of the "fileserver" context for null -#fileserver.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#fileserver.period=10 - -# Configuration of the "fileserver" context for file -#fileserver.class=org.apache.hadoop.metrics.file.FileContext -#fileserver.period=60 -#fileserver.fileName=/tmp/fsmetrics.log - -# Configuration of the "fileserver" context for ganglia -fileserver.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -fileserver.period=37 -fileserver.servers=localhost:8649 -fileserver.spoof=1 - -maprmepredvariant.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContext -maprmepredvariant.period=10 -maprmapred.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContextFinal -maprmapred.period=10 - diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/mfs.conf b/sahara/plugins/mapr/versions/v3_1_1/resources/default/mfs.conf deleted file mode 100644 index 5288dffd..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/default/mfs.conf +++ /dev/null @@ -1,16 +0,0 @@ -#mfs.num.compress.threads=1 -#mfs.max.aio.events=5000 -#mfs.disable.periodic.flush=0 -#mfs.io.disk.timeout=60 -#mfs.server.ip=127.0.0.1 -#mfs.max.resync.count=16 -#mfs.max.restore.count=16 -#mfs.ignore.container.delete=0 -#mfs.ignore.readdir.pattern=0 -mfs.server.port=5660 -#mfs.subnets.whitelist=127.0.0.1/8 -#UNCOMMENT this line to disable bulk writes -#mfs.bulk.writes.enabled=0 -#UNCOMMENT this to set the topology of this node -#For e.g., to set this node's topology to /compute-only uncomment the below line -#mfs.network.location=/compute-only diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/default/nfsserver.conf b/sahara/plugins/mapr/versions/v3_1_1/resources/default/nfsserver.conf deleted file mode 100644 index fa28d369..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/default/nfsserver.conf +++ /dev/null @@ -1,43 +0,0 @@ -# Configuration for nfsserver - -# -# The system defaults are in the comments -# - -# Default compression is true -#Compression = true - -# chunksize is 64M -#ChunkSize = 67108864 - -# Number of threads for compression/decompression: default=2 -#CompThreads = 2 - -#Mount point for the ramfs file for mmap -#RamfsMntDir = /ramfs/mapr - -# Size of the ramfile to use (percent of total physical memory) default=0.25 -# 0: disables the use of ramfs -#RamfsSize = 0.25 - -# Loglevel = DEBUG | INFO | WARN | ERROR | CRITICAL | OFF -#Loglevel = INFO - -#Duplicate Request cache size & timeout in seconds -#DrCacheSize = 20480 -#DrCacheTimeout = 62 -# To keep the drcache lean, we only cache the response if the -# time we took to populate is greater than 50% of DrCacheTimeout. -# Set it to 0 to disable this optimization, Note that the DrCacheSize or -# DrCacheTimeout will also need to be changed. Ex: if the nfsserver supports -# 10,000 ops/sec (modification ops): then DrCacheSize will need to change -# to: 10,000*DrCacheTimeout = 620,000 -#DRCacheTimeOutOpt = 0.5 - -#NFS fileid, by default the fileid is of 32 bit size. -#Set Use32BitFileId=0 to use 64 bit fileid (inode number) -#Use32BitFileId=0 - -#Auto refresh exports time interval in mins. -#default is 0, means there is no auto refresh. -#AutoRefreshExportsTimeInterval = 5 diff --git a/sahara/plugins/mapr/versions/v3_1_1/resources/plugin_spec.json b/sahara/plugins/mapr/versions/v3_1_1/resources/plugin_spec.json deleted file mode 100644 index 8f06a5e2..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/resources/plugin_spec.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "files": [ - { - "remote": null, - "type": null, - "configs": { - "required": { - "cluster": [ - { - "name": "Enable MapR-DB", - "config_type": "bool", - "default_value": false, - "priority": 1 - } - ] - } - } - }, - { - "remote": "/opt/mapr/conf/cldb.conf", - "local": "default/cldb.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/hadoop-metrics.properties", - "local": "default/hadoop-metrics.properties", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/mfs.conf", - "local": "default/mfs.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/nfsserver.conf", - "local": "default/nfsserver.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/exports", - "local": "default/exports", - "type": "raw" - }, - { - "remote": "/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml", - "local": "default/core-site.xml", - "type": "xml", - "configs": { - "optional": { - "cluster": [ - { - "name": "fs.swift.impl", - "default_value": "org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem" - }, - { - "name": "fs.swift.connect.timeout", - "config_type": "int", - "default_value": 15000 - }, - { - "name": "fs.swift.socket.timeout", - "config_type": "int", - "default_value": 60000 - }, - { - "name": "fs.swift.connect.retry.count", - "config_type": "int", - "default_value": 3 - }, - { - "name": "fs.swift.connect.throttle.delay", - "config_type": "int", - "default_value": 0 - }, - { - "name": "fs.swift.blocksize", - "config_type": "int", - "default_value": 32768 - }, - { - "name": "fs.swift.partsize", - "config_type": "int", - "default_value": 4718592 - }, - { - "name": "fs.swift.requestsize", - "config_type": "int", - "default_value": 64 - }, - { - "name": "fs.swift.service.sahara.public", - "config_type": "bool", - "default_value": true - }, - { - "name": "fs.swift.service.sahara.http.port", - "config_type": "int", - "default_value": 8080 - }, - { - "name": "fs.swift.service.sahara.https.port", - "config_type": "int", - "default_value": 443 - }, - { - "name": "fs.swift.service.sahara.auth.endpoint.prefix", - "default_value": "/endpoints/AUTH_" - } - ] - } - } - }, - { - "remote": "/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml", - "type": "xml" - } - ], - "services": [ - { - "name": "general", - "files": [ - null - ] - }, - { - "name": "Management", - "node_processes": [ - "ZooKeeper", - "Webserver", - "MapR-Client", - "Metrics" - ] - }, - { - "name": "MapReduce", - "node_processes": [ - "TaskTracker", - "JobTracker" - ], - "files": [ - "/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml" - ] - }, - { - "name": "MapR FS", - "node_processes": [ - "CLDB", - "FileServer", - "NFS" - ], - "files": [ - "/opt/mapr/conf/cldb.conf", - "/opt/mapr/conf/hadoop-metrics.properties", - "/opt/mapr/conf/mfs.conf", - "/opt/mapr/conf/nfsserver.conf", - "/opt/mapr/conf/exports", - "/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml" - ] - }, - { - "name": "HBase", - "node_processes": [ - "HBase-Master", - "HBase-RegionServer", - "HBase-Client" - ] - }, - { - "name": "Hive", - "node_processes": [ - "HiveMetastore", - "HiveServer2" - ], - "versions": [ - "0.13", - "0.12" - ] - }, - { - "name": "Oozie", - "node_processes": [ - "Oozie" - ], - "versions": [ - "4.0.1", - "4.0.0", - "3.3.2" - ] - }, - { - "name": "Pig", - "node_processes": [ - "Pig" - ] - }, - { - "name": "Mahout", - "node_processes": [ - "Mahout" - ] - } - ] -} \ No newline at end of file diff --git a/sahara/plugins/mapr/versions/v3_1_1/start_utils.py b/sahara/plugins/mapr/versions/v3_1_1/start_utils.py deleted file mode 100644 index 63992613..00000000 --- a/sahara/plugins/mapr/versions/v3_1_1/start_utils.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from sahara.plugins.mapr.util import cluster_helper as clh_utils -from sahara.plugins.mapr.util import start_helper as start_helper -import sahara.plugins.utils as utils - - -def exec_configure_sh_on_cluster(cluster): - inst_list = utils.get_instances(cluster) - for n in inst_list: - exec_configure_sh_on_instance(cluster, n) - - -def exec_configure_sh_on_instance(cluster, instance): - script_string = ('/opt/mapr/server/configure.sh' - + ' -C ' + clh_utils.get_cldb_nodes_ip(cluster) - + ' -Z ' + clh_utils.get_zookeeper_nodes_ip(cluster) - + ' -f') - if not start_helper.check_if_mapr_user_exist(instance): - script_string = script_string + ' --create-user' - - instance.remote().execute_command(script_string, True) diff --git a/sahara/plugins/mapr/versions/v3_1_1/version_handler.py b/sahara/plugins/mapr/versions/v3_1_1/version_handler.py index c4a28d7d..89d12095 100644 --- a/sahara/plugins/mapr/versions/v3_1_1/version_handler.py +++ b/sahara/plugins/mapr/versions/v3_1_1/version_handler.py @@ -1,112 +1,65 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. -from sahara import context -from sahara.plugins.mapr.util import cluster_helper as clh_utils -import sahara.plugins.mapr.util.config_utils as cu -import sahara.plugins.mapr.util.names as n -from sahara.plugins.mapr.util import scaling -from sahara.plugins.mapr.util import start_helper as start_helper -import sahara.plugins.mapr.util.validation_utils as vu -import sahara.plugins.mapr.versions.base_context as bc -from sahara.plugins.mapr.versions import base_version_handler as bvh -import sahara.plugins.mapr.versions.v3_1_1.cluster_configurer as cc -import sahara.plugins.utils as u + +from sahara.plugins.mapr.base import base_version_handler as bvh +from sahara.plugins.mapr.services.hbase import hbase +from sahara.plugins.mapr.services.hive import hive +from sahara.plugins.mapr.services.httpfs import httpfs +from sahara.plugins.mapr.services.mahout import mahout +from sahara.plugins.mapr.services.management import management +from sahara.plugins.mapr.services.mapreduce import mapreduce +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.oozie import oozie +from sahara.plugins.mapr.services.pig import pig +from sahara.plugins.mapr.services.swift import swift +import sahara.plugins.mapr.versions.v3_1_1.context as c +import sahara.plugins.mapr.versions.v3_1_1.edp_engine as edp version = '3.1.1' -SIXTY_SECONDS = 60 class VersionHandler(bvh.BaseVersionHandler): + def __init__(self): + super(VersionHandler, self).__init__() + self._version = version + self._required_services = [ + mapreduce.MapReduce(), + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + ] + self._services = [ + mapreduce.MapReduce(), + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + hive.HiveV012(), + hive.HiveV013(), + hbase.HBaseV094(), + hbase.HBaseV098(), + httpfs.HttpFS(), + mahout.Mahout(), + pig.Pig(), + swift.Swift(), + ] - def get_plugin_version(self): - return version + def get_context(self, cluster, added=None, removed=None): + return c.Context(cluster, self, added, removed) - def start_cluster(self, cluster): - start_helper.exec_configure_sh_on_cluster( - cluster, self.get_configure_sh_string(cluster)) - start_helper.wait_for_mfs_unlock(cluster, self.get_waiting_script()) - start_helper.setup_maprfs_on_cluster( - cluster, self.get_disk_setup_script()) - start_helper.start_zookeeper_nodes_on_cluster(cluster) - start_helper.start_warden_on_cldb_nodes(cluster) - context.sleep(SIXTY_SECONDS) - start_helper.start_warden_on_other_nodes(cluster) - start_helper.start_ecosystem(self.get_context(cluster)) - - def get_waiting_script(self): - return 'plugins/mapr/util/resources/waiting_script.sh' - - def get_configure_sh_string(self, cluster): - return ('/opt/mapr/server/configure.sh' - + ' -C ' + clh_utils.get_cldb_nodes_ip(cluster) - + ' -Z ' + clh_utils.get_zookeeper_nodes_ip(cluster) + ' -f') - - def scale_cluster(self, cluster, instances): - scaling.scale_cluster(cluster, instances, self.get_disk_setup_script(), - self.get_waiting_script(), - self.get_context(cluster), - self.get_configure_sh_string(cluster), True) - - def decommission_nodes(self, cluster, instances): - scaling.decommission_nodes( - cluster, instances, self.get_configure_sh_string(cluster)) - - def get_cluster_validation_rules(self, cluster): - return [vu.not_less_than_count_component_vr(n.ZOOKEEPER, 1), - vu.not_less_than_count_component_vr(n.CLDB, 1), - vu.not_less_than_count_component_vr(n.TASK_TRACKER, 1), - vu.not_less_than_count_component_vr(n.FILE_SERVER, 1), - vu.not_more_than_count_component_vr(n.OOZIE, 1), - vu.not_less_than_count_component_vr(n.JOBTRACKER, 1), - vu.node_dependency_satisfied_vr(n.TASK_TRACKER, n.FILE_SERVER), - vu.node_dependency_satisfied_vr(n.CLDB, n.FILE_SERVER)] - - def get_scaling_validation_rules(self): - return [] - - def get_edp_validation_rules(self): - return [] - - def get_cluster_configurer(self, cluster, plugin_spec): - return cc.ClusterConfigurer(cluster, plugin_spec) - - def get_context(self, cluster): - return Context(cluster) - - -class Context(bc.BaseContext): - m7_enabled_config = n.IS_M7_ENABLED - hive_version_config = 'Hive Version' - oozie_version_config = 'Oozie Version' - - def __init__(self, cluster): - self.cluster = cluster - - def get_cluster(self): - return self.cluster - - def is_m7_enabled(self): - configs = cu.get_cluster_configs(self.get_cluster()) - return configs[n.GENERAL][Context.m7_enabled_config] - - def get_hadoop_version(self): - return '0.20.2' - - def get_rm_instance(self): - return u.get_instance(self.get_cluster(), n.JOBTRACKER) - - def get_rm_port(self): - return '9001' + def get_edp_engine(self, cluster, job_type): + if job_type in edp.MapR3OozieJobEngine.get_supported_job_types(): + return edp.MapR3OozieJobEngine(cluster) + return None diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/cluster_configurer.py b/sahara/plugins/mapr/versions/v4_0_1_mrv1/cluster_configurer.py deleted file mode 100644 index b93bdf42..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/cluster_configurer.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from oslo_log import log as logging - -from sahara.i18n import _LI -import sahara.plugins.mapr.versions.base_cluster_configurer as bcc -import sahara.plugins.utils as u -from sahara.utils import files as f - -LOG = logging.getLogger(__name__) - - -class ClusterConfigurer(bcc.BaseClusterConfigurer): - hadoop_version_path = '/opt/mapr/conf/hadoop_version' - hadoop_mode = 'classic' - hadoop_version_local = 'plugins/mapr/util/resources/hadoop_version' - - def get_hadoop_conf_dir(self): - return '/opt/mapr/hadoop/hadoop-0.20.2/conf' - - def is_node_awareness_enabled(self): - return True - - def set_cluster_mode(self, instances): - if not instances: - instances = u.get_instances(self.cluster) - LOG.info(_LI('Setting cluster mode to classic')) - hv_template = f.get_file_text(self.hadoop_version_local) - hv = hv_template % {"mode": self.hadoop_mode} - for i in instances: - with i.remote() as r: - LOG.debug('Writing file %(f_name)s to node %(node)s', - {'f_name': self.hadoop_version_path, - 'node': i.management_ip}) - r.write_file_to(self.hadoop_version_path, hv, - run_as_root=True) - - def configure_instances(self, instances=None): - super(ClusterConfigurer, self).configure_instances(instances) - self.set_cluster_mode(instances) diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/context.py b/sahara/plugins/mapr/versions/v4_0_1_mrv1/context.py new file mode 100644 index 00000000..dd980741 --- /dev/null +++ b/sahara/plugins/mapr/versions/v4_0_1_mrv1/context.py @@ -0,0 +1,72 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import sahara.plugins.mapr.base.base_cluster_context as bc +import sahara.plugins.mapr.services.mapreduce.mapreduce as mr +from sahara.utils import files as f + + +class Context(bc.BaseClusterContext): + UBUNTU_MAPR_BASE_REPO = ('http://package.mapr.com/releases/v4.0.1/ubuntu/ ' + 'mapr optional') + UBUNTU_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem-4.x/ubuntu binary/') + CENTOS_MAPR_BASE_REPO = 'http://package.mapr.com/releases/v4.0.1/redhat/' + CENTOS_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem-4.x/redhat') + + def __init__(self, cluster, version_handler, added=None, removed=None): + super(Context, self).__init__(cluster, version_handler, added, removed) + self._hadoop_version = mr.MapReduce().version + self._hadoop_lib = None + self._hadoop_conf = None + self._resource_manager_uri = 'maprfs:///' + self._cluster_mode = mr.MapReduce.cluster_mode + self._node_aware = False + + @property + def hadoop_lib(self): + if not self._hadoop_lib: + f = '%(hadoop_home)s/lib' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_lib = f % args + return self._hadoop_lib + + @property + def hadoop_conf(self): + if not self._hadoop_conf: + f = '%(hadoop_home)s/conf' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_conf = f % args + return self._hadoop_conf + + @property + def resource_manager_uri(self): + return self._resource_manager_uri + + def get_install_repo_script_data(self): + script_template = 'plugins/mapr/resources/add_mapr_repo.sh' + script_template = f.get_file_text(script_template) + args = { + "ubuntu_mapr_base_repo": Context.UBUNTU_MAPR_BASE_REPO, + "ubuntu_mapr_ecosystem_repo": Context.UBUNTU_MAPR_ECOSYSTEM_REPO, + "centos_mapr_repo": Context.CENTOS_MAPR_BASE_REPO, + "centos_mapr_ecosystem_repo": Context.CENTOS_MAPR_ECOSYSTEM_REPO, + } + return script_template % args diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/cldb.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/cldb.conf deleted file mode 100644 index 7f501d8c..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/cldb.conf +++ /dev/null @@ -1,63 +0,0 @@ -# -# CLDB Config file. -# Properties defined in this file are loaded during startup -# and are valid for only CLDB which loaded the config. -# These parameters are not persisted anywhere else. -# -# Wait until minimum number of fileserver register with -# CLDB before creating Root Volume -cldb.min.fileservers=1 -# CLDB listening port -cldb.port=7222 -# Number of worker threads -cldb.numthreads=10 -# CLDB webport -cldb.web.port=7221 -# CLDB https port -cldb.web.https.port=7443 -# Disable duplicate hostid detection -cldb.detect.dup.hostid.enabled=false -# Deprecated: This param is no longer supported. To configure -# the container cache, use the param cldb.containers.cache.percent -# Number of RW containers in cache -#cldb.containers.cache.entries=1000000 -# -# Percentage (integer) of Xmx setting to be used for container cache -#cldb.containers.cache.percent=20 -# -# Topology script to be used to determine -# Rack topology of node -# Script should take an IP address as input and print rack path -# on STDOUT. eg -# $>/home/mapr/topo.pl 10.10.10.10 -# $>/mapr-rack1 -# $>/home/mapr/topo.pl 10.10.10.20 -# $>/mapr-rack2 -#net.topology.script.file.name=/home/mapr/topo.pl -# -# Topology mapping file used to determine -# Rack topology of node -# File is of a 2 column format (space separated) -# 1st column is an IP address or hostname -# 2nd column is the rack path -# Line starting with '#' is a comment -# Example file contents -# 10.10.10.10 /mapr-rack1 -# 10.10.10.20 /mapr-rack2 -# host.foo.com /mapr-rack3 -#net.topology.table.file.name=/home/mapr/topo.txt -# -# ZooKeeper address -#cldb.zookeeper.servers=10.250.1.91:5181 -# Hadoop metrics jar version -#hadoop.version=0.20.2 -# CLDB JMX remote port -cldb.jmxremote.port=7220 -num.volmirror.threads=1 -# Set this to set the default topology for all volumes and nodes -# The default for all volumes is /data by default -# UNCOMMENT the below to change the default topology. -# For e.g., set cldb.default.topology=/mydata to create volumes -# in /mydata topology and to place all nodes in /mydata topology -# by default -#cldb.default.topology=/mydata diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/core-site.xml b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/core-site.xml deleted file mode 100644 index 506080a6..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/core-site.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - fs.default.name - maprfs:/// - The name of the default file system. A URI whose - scheme and authority determine the FileSystem implementation. The - uri's scheme determines the config property (fs.SCHEME.impl) naming - the FileSystem implementation class. The uri's authority is used to - determine the host, port, etc. for a filesystem. - - - - fs.mapr.working.dir - /user/$USERNAME/ - The default directory to be used with relative paths. - Note that $USERNAME is NOT an enviromental variable, but just a placeholder - to indicate that it will be expanded to the corresponding username. - Other example default directories could be "/", "/home/$USERNAME", "/$USERNAME" etc. - - - - - fs.s3n.block.size - 33554432 - - - fs.s3n.blockSize - 33554432 - - - fs.s3.block.size - 33554432 - - - fs.s3.blockSize - 33554432 - - - hadoop.proxyuser.mapr.groups - * - - - hadoop.proxyuser.mapr.hosts - * - - diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/exports b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/exports deleted file mode 100644 index 96111856..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/exports +++ /dev/null @@ -1,30 +0,0 @@ -# Sample Exports file - -# for /mapr exports -# - -#access_control -> order is specific to default -# list the hosts before specifying a default for all -# a.b.c.d,1.2.3.4(ro) d.e.f.g(ro) (rw) -# enforces ro for a.b.c.d & 1.2.3.4 and everybody else is rw - -# special path to export clusters in mapr-clusters.conf. To disable exporting, -# comment it out. to restrict access use the exports_control -# -/mapr (rw) - -#to export only certain clusters, comment out the /mapr & uncomment. -# Note: this will cause /mapr to be unexported -#/mapr/clustername (rw) - -#to export /mapr only to certain hosts (using exports_control) -#/mapr a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster1 rw to a.b.c.d & ro to e.f.g.h (denied for others) -#/mapr/cluster1 a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster2 only to e.f.g.h (denied for others) -#/mapr/cluster2 e.f.g.h(rw) - -# export /mapr/cluster3 rw to e.f.g.h & ro to others -#/mapr/cluster2 e.f.g.h(rw) (ro) diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/hadoop-metrics.properties b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/hadoop-metrics.properties deleted file mode 100644 index b65260ce..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/hadoop-metrics.properties +++ /dev/null @@ -1,41 +0,0 @@ -#CLDB metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send cldb metrics to that context - -# Configuration of the "cldb" context for null -#cldb.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#cldb.period=10 - -# Configuration of the "cldb" context for file -#cldb.class=org.apache.hadoop.metrics.file.FileContext -#cldb.period=60 -#cldb.fileName=/tmp/cldbmetrics.log - -# Configuration of the "cldb" context for ganglia -cldb.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -cldb.period=10 -cldb.servers=localhost:8649 -cldb.spoof=1 - -#FileServer metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send fileserver metrics to that context - -# Configuration of the "fileserver" context for null -#fileserver.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#fileserver.period=10 - -# Configuration of the "fileserver" context for file -#fileserver.class=org.apache.hadoop.metrics.file.FileContext -#fileserver.period=60 -#fileserver.fileName=/tmp/fsmetrics.log - -# Configuration of the "fileserver" context for ganglia -fileserver.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -fileserver.period=37 -fileserver.servers=localhost:8649 -fileserver.spoof=1 - -maprmepredvariant.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContext -maprmepredvariant.period=10 -maprmapred.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContextFinal -maprmapred.period=10 - diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/mfs.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/mfs.conf deleted file mode 100644 index 5288dffd..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/mfs.conf +++ /dev/null @@ -1,16 +0,0 @@ -#mfs.num.compress.threads=1 -#mfs.max.aio.events=5000 -#mfs.disable.periodic.flush=0 -#mfs.io.disk.timeout=60 -#mfs.server.ip=127.0.0.1 -#mfs.max.resync.count=16 -#mfs.max.restore.count=16 -#mfs.ignore.container.delete=0 -#mfs.ignore.readdir.pattern=0 -mfs.server.port=5660 -#mfs.subnets.whitelist=127.0.0.1/8 -#UNCOMMENT this line to disable bulk writes -#mfs.bulk.writes.enabled=0 -#UNCOMMENT this to set the topology of this node -#For e.g., to set this node's topology to /compute-only uncomment the below line -#mfs.network.location=/compute-only diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/nfsserver.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/nfsserver.conf deleted file mode 100644 index fa28d369..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/default/nfsserver.conf +++ /dev/null @@ -1,43 +0,0 @@ -# Configuration for nfsserver - -# -# The system defaults are in the comments -# - -# Default compression is true -#Compression = true - -# chunksize is 64M -#ChunkSize = 67108864 - -# Number of threads for compression/decompression: default=2 -#CompThreads = 2 - -#Mount point for the ramfs file for mmap -#RamfsMntDir = /ramfs/mapr - -# Size of the ramfile to use (percent of total physical memory) default=0.25 -# 0: disables the use of ramfs -#RamfsSize = 0.25 - -# Loglevel = DEBUG | INFO | WARN | ERROR | CRITICAL | OFF -#Loglevel = INFO - -#Duplicate Request cache size & timeout in seconds -#DrCacheSize = 20480 -#DrCacheTimeout = 62 -# To keep the drcache lean, we only cache the response if the -# time we took to populate is greater than 50% of DrCacheTimeout. -# Set it to 0 to disable this optimization, Note that the DrCacheSize or -# DrCacheTimeout will also need to be changed. Ex: if the nfsserver supports -# 10,000 ops/sec (modification ops): then DrCacheSize will need to change -# to: 10,000*DrCacheTimeout = 620,000 -#DRCacheTimeOutOpt = 0.5 - -#NFS fileid, by default the fileid is of 32 bit size. -#Set Use32BitFileId=0 to use 64 bit fileid (inode number) -#Use32BitFileId=0 - -#Auto refresh exports time interval in mins. -#default is 0, means there is no auto refresh. -#AutoRefreshExportsTimeInterval = 5 diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/plugin_spec.json b/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/plugin_spec.json deleted file mode 100644 index 0b8806f6..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/resources/plugin_spec.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "files": [ - { - "remote": null, - "type": null, - "configs": { - "required": { - "cluster": [ - { - "name": "Enable MapR-DB", - "config_type": "bool", - "default_value": false, - "priority": 1 - } - ] - } - } - }, - { - "remote": "/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml", - "local": "default/core-site.xml", - "type": "xml", - "configs": { - "optional": { - "cluster": [ - { - "name": "fs.swift.impl", - "default_value": "org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem" - }, - { - "name": "fs.swift.connect.timeout", - "config_type": "int", - "default_value": 15000 - }, - { - "name": "fs.swift.socket.timeout", - "config_type": "int", - "default_value": 60000 - }, - { - "name": "fs.swift.connect.retry.count", - "config_type": "int", - "default_value": 3 - }, - { - "name": "fs.swift.connect.throttle.delay", - "config_type": "int", - "default_value": 0 - }, - { - "name": "fs.swift.blocksize", - "config_type": "int", - "default_value": 32768 - }, - { - "name": "fs.swift.partsize", - "config_type": "int", - "default_value": 4718592 - }, - { - "name": "fs.swift.requestsize", - "config_type": "int", - "default_value": 64 - }, - { - "name": "fs.swift.service.sahara.public", - "config_type": "bool", - "default_value": true - }, - { - "name": "fs.swift.service.sahara.http.port", - "config_type": "int", - "default_value": 8080 - }, - { - "name": "fs.swift.service.sahara.https.port", - "config_type": "int", - "default_value": 443 - }, - { - "name": "fs.swift.service.sahara.auth.endpoint.prefix", - "default_value": "/endpoints/AUTH_" - } - ] - } - } - }, - { - "remote": "/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml", - "type": "xml" - }, - { - "remote": "/opt/mapr/conf/cldb.conf", - "local": "default/cldb.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/hadoop-metrics.properties", - "local": "default/hadoop-metrics.properties", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/mfs.conf", - "local": "default/mfs.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/nfsserver.conf", - "local": "default/nfsserver.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/exports", - "local": "default/exports", - "type": "raw" - } - ], - "services": [ - { - "name": "general", - "files": [ - null - ] - }, - { - "name": "Management", - "node_processes": [ - "ZooKeeper", - "Webserver", - "MapR-Client", - "Metrics" - ] - }, - { - "name": "MapReduce", - "node_processes": [ - "TaskTracker", - "JobTracker" - ], - "files": [ - "/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml" - ] - }, - { - "name": "MapR FS", - "node_processes": [ - "CLDB", - "FileServer", - "NFS" - ], - "files": [ - "/opt/mapr/conf/cldb.conf", - "/opt/mapr/conf/hadoop-metrics.properties", - "/opt/mapr/conf/mfs.conf", - "/opt/mapr/conf/nfsserver.conf", - "/opt/mapr/conf/exports", - "/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml" - ] - }, - { - "name": "HBase", - "node_processes": [ - "HBase-Master", - "HBase-RegionServer", - "HBase-Client" - ] - }, - { - "name": "Hive", - "node_processes": [ - "HiveMetastore", - "HiveServer2" - ], - "versions": [ - "0.13", - "0.12" - ] - }, - { - "name": "Oozie", - "node_processes": [ - "Oozie" - ], - "versions": [ - "4.0.1", - "4.0.0", - "3.3.2" - ] - }, - { - "name": "Pig", - "node_processes": [ - "Pig" - ] - }, - { - "name": "Mahout", - "node_processes": [ - "Mahout" - ] - } - ] -} \ No newline at end of file diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv1/version_handler.py b/sahara/plugins/mapr/versions/v4_0_1_mrv1/version_handler.py index c4bb9f52..7f02bdca 100644 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv1/version_handler.py +++ b/sahara/plugins/mapr/versions/v4_0_1_mrv1/version_handler.py @@ -1,114 +1,59 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. -from sahara import context -from sahara.plugins.mapr.util import cluster_helper as clh_utils -import sahara.plugins.mapr.util.config_utils as cu -import sahara.plugins.mapr.util.names as n -from sahara.plugins.mapr.util import scaling -from sahara.plugins.mapr.util import start_helper as start_helper -import sahara.plugins.mapr.util.validation_utils as vu -import sahara.plugins.mapr.versions.base_context as bc -from sahara.plugins.mapr.versions import base_version_handler as bvh -import sahara.plugins.mapr.versions.v4_0_1_mrv1.cluster_configurer as cc -import sahara.plugins.utils as u + +from sahara.plugins.mapr.base import base_version_handler as bvh +from sahara.plugins.mapr.services.hbase import hbase +from sahara.plugins.mapr.services.hive import hive +from sahara.plugins.mapr.services.httpfs import httpfs +from sahara.plugins.mapr.services.mahout import mahout +from sahara.plugins.mapr.services.management import management +from sahara.plugins.mapr.services.mapreduce import mapreduce +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.oozie import oozie +from sahara.plugins.mapr.services.pig import pig +from sahara.plugins.mapr.services.swift import swift +import sahara.plugins.mapr.versions.v4_0_1_mrv1.context as c version = '4.0.1.mrv1' -SIXTY_SECONDS = 60 class VersionHandler(bvh.BaseVersionHandler): + def __init__(self): + super(VersionHandler, self).__init__() + self._version = version + self._required_services = [ + mapreduce.MapReduce(), + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + ] + self._services = [ + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + hive.HiveV012(), + hive.HiveV013(), + hbase.HBaseV094(), + hbase.HBaseV098(), + httpfs.HttpFS(), + mahout.Mahout(), + pig.Pig(), + swift.Swift(), + mapreduce.MapReduce(), + ] - def get_plugin_version(self): - return version - - def start_cluster(self, cluster): - start_helper.exec_configure_sh_on_cluster( - cluster, self.get_configure_sh_string(cluster)) - start_helper.wait_for_mfs_unlock(cluster, self.get_waiting_script()) - start_helper.setup_maprfs_on_cluster( - cluster, self.get_disk_setup_script()) - start_helper.start_zookeeper_nodes_on_cluster(cluster) - start_helper.start_warden_on_cldb_nodes(cluster) - context.sleep(SIXTY_SECONDS) - start_helper.start_warden_on_other_nodes(cluster) - start_helper.start_ecosystem(self.get_context(cluster)) - - def get_waiting_script(self): - return 'plugins/mapr/util/resources/waiting_script.sh' - - def scale_cluster(self, cluster, instances): - scaling.scale_cluster(cluster, instances, self.get_disk_setup_script(), - self.get_waiting_script(), - self.get_context(cluster), - self.get_configure_sh_string(cluster), True) - - def decommission_nodes(self, cluster, instances): - scaling.decommission_nodes( - cluster, instances, self.get_configure_sh_string(cluster)) - - def get_cluster_configurer(self, cluster, plugin_spec): - return cc.ClusterConfigurer(cluster, plugin_spec) - - def get_cluster_validation_rules(self, cluster): - return [vu.not_less_than_count_component_vr(n.ZOOKEEPER, 1), - vu.not_less_than_count_component_vr(n.CLDB, 1), - vu.not_less_than_count_component_vr(n.TASK_TRACKER, 1), - vu.not_less_than_count_component_vr(n.FILE_SERVER, 1), - vu.not_more_than_count_component_vr(n.OOZIE, 1), - vu.not_more_than_count_component_vr(n.WEB_SERVER, 1), - vu.equal_count_component_vr(n.JOBTRACKER, 1), - vu.node_dependency_satisfied_vr(n.TASK_TRACKER, n.FILE_SERVER), - vu.node_dependency_satisfied_vr(n.CLDB, n.FILE_SERVER)] - - def get_scaling_validation_rules(self): - return [] - - def get_edp_validation_rules(self): - return [] - - def get_configure_sh_string(self, cluster): - return ('/opt/mapr/server/configure.sh' - ' -C ' + clh_utils.get_cldb_nodes_ip(cluster) - + ' -Z ' + clh_utils.get_zookeeper_nodes_ip(cluster) - + ' -f') - - def get_context(self, cluster): - return Context(cluster) - - -class Context(bc.BaseContext): - m7_enabled_config = n.IS_M7_ENABLED - hive_version_config = 'Hive Version' - oozie_version_config = 'Oozie Version' - - def __init__(self, cluster): - self.cluster = cluster - - def get_cluster(self): - return self.cluster - - def is_m7_enabled(self): - configs = cu.get_cluster_configs(self.get_cluster()) - return configs[n.GENERAL][Context.m7_enabled_config] - - def get_hadoop_version(self): - return '0.20.2' - - def get_rm_instance(self): - return u.get_instance(self.get_cluster(), n.JOBTRACKER) - - def get_rm_port(self): - return '9001' + def get_context(self, cluster, added=None, removed=None): + return c.Context(cluster, self, added, removed) diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/cluster_configurer.py b/sahara/plugins/mapr/versions/v4_0_1_mrv2/cluster_configurer.py deleted file mode 100644 index 723986b6..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/cluster_configurer.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.versions.base_cluster_configurer as bcc - - -class ClusterConfigurer(bcc.BaseClusterConfigurer): - - def get_hadoop_conf_dir(self): - return '/opt/mapr/hadoop/hadoop-2.4.1/etc/hadoop' - - def is_node_awareness_enabled(self): - return False diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/context.py b/sahara/plugins/mapr/versions/v4_0_1_mrv2/context.py new file mode 100644 index 00000000..2ae11fac --- /dev/null +++ b/sahara/plugins/mapr/versions/v4_0_1_mrv2/context.py @@ -0,0 +1,87 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +import sahara.plugins.mapr.base.base_cluster_context as bc +import sahara.plugins.mapr.services.yarn.yarn as yarn +from sahara.utils import files as f + + +class Context(bc.BaseClusterContext): + UBUNTU_MAPR_BASE_REPO = ('http://package.mapr.com/releases/v4.0.1/ubuntu/' + ' mapr optional') + UBUNTU_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem-4.x/ubuntu binary/') + CENTOS_MAPR_BASE_REPO = 'http://package.mapr.com/releases/v4.0.1/redhat/' + CENTOS_MAPR_ECOSYSTEM_REPO = ('http://package.mapr.com/releases/' + 'ecosystem-4.x/redhat') + + def __init__(self, cluster, version_handler, added=None, removed=None): + super(Context, self).__init__(cluster, version_handler, added, removed) + self._hadoop_version = yarn.YARNv241().version + self._hadoop_lib = None + self._hadoop_conf = None + self._resource_manager_uri = None + self._cluster_mode = yarn.YARNv241.cluster_mode + self._node_aware = False + + @property + def hadoop_lib(self): + if not self._hadoop_lib: + f = '%(hadoop_home)s/share/hadoop/common' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_lib = f % args + return self._hadoop_lib + + @property + def hadoop_conf(self): + if not self._hadoop_conf: + f = '%(hadoop_home)s/etc/hadoop' + args = { + 'hadoop_home': self.hadoop_home, + } + self._hadoop_conf = f % args + return self._hadoop_conf + + @property + def resource_manager_uri(self): + if not self._resource_manager_uri: + ip = self.get_instance(yarn.RESOURCE_MANAGER).management_ip + self._resource_manager_uri = '%s:8032' % ip + return self._resource_manager_uri + + @property + def configure_sh(self): + if not self._configure_sh: + f = '%(base)s -RM %(resource_manager)s -HS %(history_server)s' + args = { + 'base': super(Context, self).configure_sh, + 'resource_manager': self.get_resourcemanager_ip(), + 'history_server': self.get_historyserver_ip(), + } + self._configure_sh = f % args + return self._configure_sh + + def get_install_repo_script_data(self): + script_template = 'plugins/mapr/resources/add_mapr_repo.sh' + script_template = f.get_file_text(script_template) + args = { + "ubuntu_mapr_base_repo": Context.UBUNTU_MAPR_BASE_REPO, + "ubuntu_mapr_ecosystem_repo": Context.UBUNTU_MAPR_ECOSYSTEM_REPO, + "centos_mapr_repo": Context.CENTOS_MAPR_BASE_REPO, + "centos_mapr_ecosystem_repo": Context.CENTOS_MAPR_ECOSYSTEM_REPO, + } + return script_template % args diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/cldb.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/cldb.conf deleted file mode 100644 index 7f501d8c..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/cldb.conf +++ /dev/null @@ -1,63 +0,0 @@ -# -# CLDB Config file. -# Properties defined in this file are loaded during startup -# and are valid for only CLDB which loaded the config. -# These parameters are not persisted anywhere else. -# -# Wait until minimum number of fileserver register with -# CLDB before creating Root Volume -cldb.min.fileservers=1 -# CLDB listening port -cldb.port=7222 -# Number of worker threads -cldb.numthreads=10 -# CLDB webport -cldb.web.port=7221 -# CLDB https port -cldb.web.https.port=7443 -# Disable duplicate hostid detection -cldb.detect.dup.hostid.enabled=false -# Deprecated: This param is no longer supported. To configure -# the container cache, use the param cldb.containers.cache.percent -# Number of RW containers in cache -#cldb.containers.cache.entries=1000000 -# -# Percentage (integer) of Xmx setting to be used for container cache -#cldb.containers.cache.percent=20 -# -# Topology script to be used to determine -# Rack topology of node -# Script should take an IP address as input and print rack path -# on STDOUT. eg -# $>/home/mapr/topo.pl 10.10.10.10 -# $>/mapr-rack1 -# $>/home/mapr/topo.pl 10.10.10.20 -# $>/mapr-rack2 -#net.topology.script.file.name=/home/mapr/topo.pl -# -# Topology mapping file used to determine -# Rack topology of node -# File is of a 2 column format (space separated) -# 1st column is an IP address or hostname -# 2nd column is the rack path -# Line starting with '#' is a comment -# Example file contents -# 10.10.10.10 /mapr-rack1 -# 10.10.10.20 /mapr-rack2 -# host.foo.com /mapr-rack3 -#net.topology.table.file.name=/home/mapr/topo.txt -# -# ZooKeeper address -#cldb.zookeeper.servers=10.250.1.91:5181 -# Hadoop metrics jar version -#hadoop.version=0.20.2 -# CLDB JMX remote port -cldb.jmxremote.port=7220 -num.volmirror.threads=1 -# Set this to set the default topology for all volumes and nodes -# The default for all volumes is /data by default -# UNCOMMENT the below to change the default topology. -# For e.g., set cldb.default.topology=/mydata to create volumes -# in /mydata topology and to place all nodes in /mydata topology -# by default -#cldb.default.topology=/mydata diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/core-site.xml b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/core-site.xml deleted file mode 100644 index 506080a6..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/core-site.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - fs.default.name - maprfs:/// - The name of the default file system. A URI whose - scheme and authority determine the FileSystem implementation. The - uri's scheme determines the config property (fs.SCHEME.impl) naming - the FileSystem implementation class. The uri's authority is used to - determine the host, port, etc. for a filesystem. - - - - fs.mapr.working.dir - /user/$USERNAME/ - The default directory to be used with relative paths. - Note that $USERNAME is NOT an enviromental variable, but just a placeholder - to indicate that it will be expanded to the corresponding username. - Other example default directories could be "/", "/home/$USERNAME", "/$USERNAME" etc. - - - - - fs.s3n.block.size - 33554432 - - - fs.s3n.blockSize - 33554432 - - - fs.s3.block.size - 33554432 - - - fs.s3.blockSize - 33554432 - - - hadoop.proxyuser.mapr.groups - * - - - hadoop.proxyuser.mapr.hosts - * - - diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/exports b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/exports deleted file mode 100644 index 96111856..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/exports +++ /dev/null @@ -1,30 +0,0 @@ -# Sample Exports file - -# for /mapr exports -# - -#access_control -> order is specific to default -# list the hosts before specifying a default for all -# a.b.c.d,1.2.3.4(ro) d.e.f.g(ro) (rw) -# enforces ro for a.b.c.d & 1.2.3.4 and everybody else is rw - -# special path to export clusters in mapr-clusters.conf. To disable exporting, -# comment it out. to restrict access use the exports_control -# -/mapr (rw) - -#to export only certain clusters, comment out the /mapr & uncomment. -# Note: this will cause /mapr to be unexported -#/mapr/clustername (rw) - -#to export /mapr only to certain hosts (using exports_control) -#/mapr a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster1 rw to a.b.c.d & ro to e.f.g.h (denied for others) -#/mapr/cluster1 a.b.c.d(rw),e.f.g.h(ro) - -# export /mapr/cluster2 only to e.f.g.h (denied for others) -#/mapr/cluster2 e.f.g.h(rw) - -# export /mapr/cluster3 rw to e.f.g.h & ro to others -#/mapr/cluster2 e.f.g.h(rw) (ro) diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/hadoop-metrics.properties b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/hadoop-metrics.properties deleted file mode 100644 index b65260ce..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/hadoop-metrics.properties +++ /dev/null @@ -1,41 +0,0 @@ -#CLDB metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send cldb metrics to that context - -# Configuration of the "cldb" context for null -#cldb.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#cldb.period=10 - -# Configuration of the "cldb" context for file -#cldb.class=org.apache.hadoop.metrics.file.FileContext -#cldb.period=60 -#cldb.fileName=/tmp/cldbmetrics.log - -# Configuration of the "cldb" context for ganglia -cldb.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -cldb.period=10 -cldb.servers=localhost:8649 -cldb.spoof=1 - -#FileServer metrics config - Pick one out of null,file or ganglia. -#Uncomment all properties in null, file or ganglia context, to send fileserver metrics to that context - -# Configuration of the "fileserver" context for null -#fileserver.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread -#fileserver.period=10 - -# Configuration of the "fileserver" context for file -#fileserver.class=org.apache.hadoop.metrics.file.FileContext -#fileserver.period=60 -#fileserver.fileName=/tmp/fsmetrics.log - -# Configuration of the "fileserver" context for ganglia -fileserver.class=com.mapr.fs.cldb.counters.MapRGangliaContext31 -fileserver.period=37 -fileserver.servers=localhost:8649 -fileserver.spoof=1 - -maprmepredvariant.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContext -maprmepredvariant.period=10 -maprmapred.class=com.mapr.job.mngmnt.hadoop.metrics.MaprRPCContextFinal -maprmapred.period=10 - diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/mfs.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/mfs.conf deleted file mode 100644 index 5288dffd..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/mfs.conf +++ /dev/null @@ -1,16 +0,0 @@ -#mfs.num.compress.threads=1 -#mfs.max.aio.events=5000 -#mfs.disable.periodic.flush=0 -#mfs.io.disk.timeout=60 -#mfs.server.ip=127.0.0.1 -#mfs.max.resync.count=16 -#mfs.max.restore.count=16 -#mfs.ignore.container.delete=0 -#mfs.ignore.readdir.pattern=0 -mfs.server.port=5660 -#mfs.subnets.whitelist=127.0.0.1/8 -#UNCOMMENT this line to disable bulk writes -#mfs.bulk.writes.enabled=0 -#UNCOMMENT this to set the topology of this node -#For e.g., to set this node's topology to /compute-only uncomment the below line -#mfs.network.location=/compute-only diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/nfsserver.conf b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/nfsserver.conf deleted file mode 100644 index fa28d369..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/default/nfsserver.conf +++ /dev/null @@ -1,43 +0,0 @@ -# Configuration for nfsserver - -# -# The system defaults are in the comments -# - -# Default compression is true -#Compression = true - -# chunksize is 64M -#ChunkSize = 67108864 - -# Number of threads for compression/decompression: default=2 -#CompThreads = 2 - -#Mount point for the ramfs file for mmap -#RamfsMntDir = /ramfs/mapr - -# Size of the ramfile to use (percent of total physical memory) default=0.25 -# 0: disables the use of ramfs -#RamfsSize = 0.25 - -# Loglevel = DEBUG | INFO | WARN | ERROR | CRITICAL | OFF -#Loglevel = INFO - -#Duplicate Request cache size & timeout in seconds -#DrCacheSize = 20480 -#DrCacheTimeout = 62 -# To keep the drcache lean, we only cache the response if the -# time we took to populate is greater than 50% of DrCacheTimeout. -# Set it to 0 to disable this optimization, Note that the DrCacheSize or -# DrCacheTimeout will also need to be changed. Ex: if the nfsserver supports -# 10,000 ops/sec (modification ops): then DrCacheSize will need to change -# to: 10,000*DrCacheTimeout = 620,000 -#DRCacheTimeOutOpt = 0.5 - -#NFS fileid, by default the fileid is of 32 bit size. -#Set Use32BitFileId=0 to use 64 bit fileid (inode number) -#Use32BitFileId=0 - -#Auto refresh exports time interval in mins. -#default is 0, means there is no auto refresh. -#AutoRefreshExportsTimeInterval = 5 diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/plugin_spec.json b/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/plugin_spec.json deleted file mode 100644 index 2022f403..00000000 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/resources/plugin_spec.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "files": [ - { - "remote": null, - "type": null, - "configs": { - "required": { - "cluster": [ - { - "name": "Enable MapR-DB", - "config_type": "bool", - "default_value": false, - "priority": 1 - } - ] - } - } - }, - { - "remote": "/opt/mapr/hadoop/hadoop-2.4.1/etc/hadoop/core-site.xml", - "local": "default/core-site.xml", - "type": "xml", - "configs": { - "optional": { - "cluster": [ - { - "name": "fs.swift.impl", - "default_value": "org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem" - }, - { - "name": "fs.swift.connect.timeout", - "config_type": "int", - "default_value": 15000 - }, - { - "name": "fs.swift.socket.timeout", - "config_type": "int", - "default_value": 60000 - }, - { - "name": "fs.swift.connect.retry.count", - "config_type": "int", - "default_value": 3 - }, - { - "name": "fs.swift.connect.throttle.delay", - "config_type": "int", - "default_value": 0 - }, - { - "name": "fs.swift.blocksize", - "config_type": "int", - "default_value": 32768 - }, - { - "name": "fs.swift.partsize", - "config_type": "int", - "default_value": 4718592 - }, - { - "name": "fs.swift.requestsize", - "config_type": "int", - "default_value": 64 - }, - { - "name": "fs.swift.service.sahara.public", - "config_type": "bool", - "default_value": true - }, - { - "name": "fs.swift.service.sahara.http.port", - "config_type": "int", - "default_value": 8080 - }, - { - "name": "fs.swift.service.sahara.https.port", - "config_type": "int", - "default_value": 443 - }, - { - "name": "fs.swift.service.sahara.auth.endpoint.prefix", - "default_value": "/endpoints/AUTH_" - } - ] - } - } - }, - { - "remote": "/opt/mapr/hadoop/hadoop-2.4.1/etc/hadoop/mapred-site.xml", - "type": "xml" - }, - { - "remote": "/opt/mapr/conf/hadoop-metrics.properties", - "local": "default/hadoop-metrics.properties", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/cldb.conf", - "local": "default/cldb.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/mfs.conf", - "local": "default/mfs.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/nfsserver.conf", - "local": "default/nfsserver.conf", - "type": "properties" - }, - { - "remote": "/opt/mapr/conf/exports", - "local": "default/exports", - "type": "raw" - } - ], - "services": [ - { - "name": "general", - "files": [ - null - ] - }, - { - "name": "Management", - "node_processes": [ - "ZooKeeper", - "Webserver", - "MapR-Client", - "Metrics" - ] - }, - { - "name": "YARN", - "node_processes": [ - "HistoryServer", - "ResourceManager", - "NodeManager" - ], - "files": [ - "/opt/mapr/hadoop/hadoop-2.4.1/etc/hadoop/mapred-site.xml" - ] - }, - { - "name": "MapR FS", - "node_processes": [ - "CLDB", - "FileServer", - "NFS" - ], - "files": [ - "/opt/mapr/conf/cldb.conf", - "/opt/mapr/conf/hadoop-metrics.properties", - "/opt/mapr/conf/mfs.conf", - "/opt/mapr/conf/nfsserver.conf", - "/opt/mapr/conf/exports", - "/opt/mapr/hadoop/hadoop-2.4.1/etc/hadoop/core-site.xml" - ] - }, - { - "name": "HBase", - "node_processes": [ - "HBase-Master", - "HBase-RegionServer", - "HBase-Client" - ] - }, - { - "name": "Hive", - "node_processes": [ - "HiveMetastore", - "HiveServer2" - ], - "versions": [ - "0.13", - "0.12" - ] - }, - { - "name": "Oozie", - "node_processes": [ - "Oozie" - ], - "versions": [ - "4.0.1", - "4.0.0" - ] - }, - { - "name": "Pig", - "node_processes": [ - "Pig" - ] - }, - { - "name": "Mahout", - "node_processes": [ - "Mahout" - ] - } - ] -} \ No newline at end of file diff --git a/sahara/plugins/mapr/versions/v4_0_1_mrv2/version_handler.py b/sahara/plugins/mapr/versions/v4_0_1_mrv2/version_handler.py old mode 100755 new mode 100644 index 1b15f2f0..79756e86 --- a/sahara/plugins/mapr/versions/v4_0_1_mrv2/version_handler.py +++ b/sahara/plugins/mapr/versions/v4_0_1_mrv2/version_handler.py @@ -1,112 +1,59 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from sahara import context -from sahara.plugins.mapr.util import cluster_helper as clh_utils -import sahara.plugins.mapr.util.config_utils as cu -import sahara.plugins.mapr.util.names as n -from sahara.plugins.mapr.util import scaling -from sahara.plugins.mapr.util import start_helper as start_helper -import sahara.plugins.mapr.util.validation_utils as vu -import sahara.plugins.mapr.versions.base_context as bc -from sahara.plugins.mapr.versions import base_version_handler as bvh -import sahara.plugins.mapr.versions.v4_0_1_mrv2.cluster_configurer as cc +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. -SIXTY_SECONDS = 60 -WAIT_OOZIE_INTERVAL = 300 +from sahara.plugins.mapr.base import base_version_handler as bvh +from sahara.plugins.mapr.services.hbase import hbase +from sahara.plugins.mapr.services.hive import hive +from sahara.plugins.mapr.services.httpfs import httpfs +from sahara.plugins.mapr.services.mahout import mahout +from sahara.plugins.mapr.services.management import management +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.oozie import oozie +from sahara.plugins.mapr.services.pig import pig +from sahara.plugins.mapr.services.swift import swift +from sahara.plugins.mapr.services.yarn import yarn +import sahara.plugins.mapr.versions.v4_0_1_mrv2.context as c version = '4.0.1.mrv2' class VersionHandler(bvh.BaseVersionHandler): + def __init__(self): + super(VersionHandler, self).__init__() + self._version = version + self._required_services = [ + yarn.YARNv241(), + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + ] + self._services = [ + maprfs.MapRFS(), + management.Management(), + oozie.Oozie(), + hive.HiveV012(), + hive.HiveV013(), + hbase.HBaseV094(), + hbase.HBaseV098(), + httpfs.HttpFS(), + mahout.Mahout(), + pig.Pig(), + swift.Swift(), + yarn.YARNv241(), + ] - def get_plugin_version(self): - return version - - def start_cluster(self, cluster): - start_helper.exec_configure_sh_on_cluster( - cluster, self.get_configure_sh_string(cluster)) - start_helper.wait_for_mfs_unlock(cluster, self.get_waiting_script()) - start_helper.setup_maprfs_on_cluster( - cluster, self.get_disk_setup_script()) - start_helper.start_zookeeper_nodes_on_cluster(cluster) - start_helper.start_warden_on_cldb_nodes(cluster) - context.sleep(SIXTY_SECONDS) - start_helper.start_warden_on_other_nodes(cluster) - start_helper.start_ecosystem(self.get_context(cluster)) - - def get_cluster_configurer(self, cluster, plugin_spec): - return cc.ClusterConfigurer(cluster, plugin_spec) - - def get_configure_sh_string(self, cluster): - return ('/opt/mapr/server/configure.sh' - + ' -C ' + clh_utils.get_cldb_nodes_ip(cluster) - + ' -Z ' + clh_utils.get_zookeeper_nodes_ip(cluster) - + ' -RM ' + clh_utils.get_resourcemanager_ip(cluster) - + ' -HS ' + clh_utils.get_historyserver_ip(cluster) + ' -f') - - def scale_cluster(self, cluster, instances): - scaling.scale_cluster(cluster, instances, self.get_disk_setup_script(), - self.get_waiting_script(), - self.get_context(cluster), - self.get_configure_sh_string(cluster), False) - - def decommission_nodes(self, cluster, instances): - scaling.decommission_nodes( - cluster, instances, self.get_configure_sh_string(cluster)) - - def get_waiting_script(self): - return 'plugins/mapr/util/resources/waiting_script.sh' - - def get_cluster_validation_rules(self, cluster): - return [vu.not_less_than_count_component_vr(n.ZOOKEEPER, 1), - vu.not_less_than_count_component_vr(n.CLDB, 1), - vu.not_less_than_count_component_vr(n.NODE_MANAGER, 1), - vu.not_less_than_count_component_vr(n.FILE_SERVER, 1), - vu.not_more_than_count_component_vr(n.OOZIE, 1), - vu.not_more_than_count_component_vr(n.WEB_SERVER, 1), - vu.equal_count_component_vr(n.RESOURCE_MANAGER, 1), - vu.equal_count_component_vr(n.HISTORY_SERVER, 1), - vu.node_dependency_satisfied_vr(n.NODE_MANAGER, n.FILE_SERVER), - vu.node_dependency_satisfied_vr(n.CLDB, n.FILE_SERVER)] - - def get_scaling_validation_rules(self): - return [] - - def get_edp_validation_rules(self): - return [] - - def get_context(self, cluster): - return Context(cluster) - - -class Context(bc.BaseContext): - m7_enabled_config = n.IS_M7_ENABLED - hive_version_config = 'Hive Version' - oozie_version_config = 'Oozie Version' - - def __init__(self, cluster): - self.cluster = cluster - - def get_cluster(self): - return self.cluster - - def is_m7_enabled(self): - configs = cu.get_cluster_configs(self.get_cluster()) - return configs[n.GENERAL][Context.m7_enabled_config] - - def get_hadoop_version(self): - return '2.4.1' + def get_context(self, cluster, added=None, removed=None): + return c.Context(cluster, self, added, removed) diff --git a/sahara/plugins/mapr/versions/version_handler_factory.py b/sahara/plugins/mapr/versions/version_handler_factory.py index 8156d2fa..2e48c384 100644 --- a/sahara/plugins/mapr/versions/version_handler_factory.py +++ b/sahara/plugins/mapr/versions/version_handler_factory.py @@ -1,16 +1,17 @@ -# Copyright (c) 2014, MapR Technologies +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + import os diff --git a/sahara/tests/integration/configs/config.py b/sahara/tests/integration/configs/config.py index 9a98026a..009ae81c 100644 --- a/sahara/tests/integration/configs/config.py +++ b/sahara/tests/integration/configs/config.py @@ -555,251 +555,6 @@ HDP2_CONFIG_OPTS = [ ] -MAPR_CONFIG_GROUP = cfg.OptGroup(name='MAPR') -MAPR_CONFIG_OPTS = [ - cfg.StrOpt('PLUGIN_NAME', - default='mapr', - help='Name of plugin.'), - cfg.StrOpt('IMAGE_ID', - help='ID for image which is used for cluster creation. Also ' - 'you can specify image name or tag of image instead of ' - 'image ID. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_NAME', - help='Name for image which is used for cluster creation. Also ' - 'you can specify image ID or tag of image instead of ' - 'image name. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_TAG', - help='Tag for image which is used for cluster creation. Also ' - 'you can specify image ID or image name instead of tag of ' - 'image. If you do not specify image related parameters, ' - 'then image for cluster creation will be chosen by ' - 'tag "sahara_i_tests".'), - cfg.ListOpt('MASTER_NODE_PROCESSES', - default=['CLDB', 'FileServer', 'ZooKeeper', - 'TaskTracker', 'JobTracker', 'Oozie'], - help='A list of processes that will be launched ' - 'on master node'), - cfg.ListOpt('WORKER_NODE_PROCESSES', - default=['FileServer', 'TaskTracker', 'Pig'], - help='A list of processes that will be launched ' - 'on worker nodes'), - cfg.StrOpt('HADOOP_VERSION', - default='1.0.3', - help='Version of Hadoop.'), - cfg.StrOpt('HADOOP_USER', - default='mapr', - help='Username which is used for access to Hadoop services.'), - cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', - default=('/opt/mapr/hadoop/hadoop-0.20.2' - '/hadoop-0.20.2-dev-examples.jar'), - help='Path to hadoop examples jar file.'), - cfg.StrOpt('HADOOP_LOG_DIRECTORY', - default='/opt/mapr/hadoop/hadoop-0.20.2/logs/userlogs', - help='Directory where logs of completed jobs are located.'), - cfg.StrOpt('HADOOP_LOG_DIRECTORY_ON_VOLUME', - default=('/volumes/disk1/mapr/hadoop/' - 'hadoop-0.20.2/logs/userlogs'), - help='Directory where logs of completed jobs on volume mounted ' - 'to node are located.'), - cfg.IntOpt('SCALE_EXISTING_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'an existing node group.'), - cfg.IntOpt('SCALE_NEW_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'a new node group.'), - cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', - default={ - 'JobTracker': 50030, - 'CLDB': 7222, - 'TaskTracker': 50060, - 'OOZIE': 11000 - }, - help='Hadoop process map with ports for MAPR plugin.' - ), - cfg.DictOpt('PROCESS_NAMES', - default={ - 'nn': 'CLDB', - 'tt': 'TaskTracker', - 'dn': 'FileServer' - }, - help='Names for namenode, tasktracker and datanode ' - 'processes.'), - cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', - default=True, - help='If this flag is True, then all tests for MAPR plugin ' - 'will be skipped.'), - cfg.BoolOpt('SKIP_CINDER_TEST', default=False), - cfg.BoolOpt('SKIP_EDP_TEST', default=False), - cfg.BoolOpt('SKIP_MAP_REDUCE_TEST', default=False), - cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), - cfg.BoolOpt('SKIP_SCALING_TEST', default=False) -] - -MAPR4_1_CONFIG_GROUP = cfg.OptGroup(name='MAPR4_1') -MAPR4_1_CONFIG_OPTS = [ - cfg.StrOpt('PLUGIN_NAME', - default='mapr4_1', - help='Name of plugin.'), - cfg.StrOpt('IMAGE_ID', - default=None, - help='ID for image which is used for cluster creation. Also ' - 'you can specify image name or tag of image instead of ' - 'image ID. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_NAME', - default=None, - help='Name for image which is used for cluster creation. Also ' - 'you can specify image ID or tag of image instead of ' - 'image name. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_TAG', - default=None, - help='Tag for image which is used for cluster creation. Also ' - 'you can specify image ID or image name instead of tag of ' - 'image. If you do not specify image related parameters, ' - 'then image for cluster creation will be chosen by ' - 'tag "sahara_i_tests".'), - cfg.ListOpt('MASTER_NODE_PROCESSES', - default=['CLDB', 'FileServer', 'ZooKeeper', - 'TaskTracker', 'JobTracker', 'Oozie'], - help='A list of processes that will be launched ' - 'on master node'), - cfg.ListOpt('WORKER_NODE_PROCESSES', - default=['FileServer', 'TaskTracker', 'Pig'], - help='A list of processes that will be launched ' - 'on worker nodes'), - cfg.StrOpt('HADOOP_VERSION', - default='2.4.0', - help='Version of Hadoop.'), - cfg.StrOpt('HADOOP_USER', - default='mapr', - help='Username which is used for access to Hadoop services.'), - cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', - default=('/opt/mapr/hadoop/hadoop-2.3.0/share/hadoop' - '/hadoop-mapreduce-examples-2.3.0-mapr-4.0.0-FCS.jar'), - help='Path to hadoop examples jar file.'), - cfg.IntOpt('SCALE_EXISTING_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'an existing node group.'), - cfg.IntOpt('SCALE_NEW_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'a new node group.'), - cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', - default={ - 'JobTracker': 50030, - 'CLDB': 7222, - 'TaskTracker': 50060, - 'OOZIE': 11000 - }, - help='Hadoop process map with ports for MAPR plugin.' - ), - cfg.DictOpt('PROCESS_NAMES', - default={ - 'nn': 'CLDB', - 'tt': 'TaskTracker', - 'dn': 'FileServer' - }, - help='Names for namenode, tasktracker and datanode ' - 'processes.'), - cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', - default=True, - help='If this flag is True, then all tests for MAPR plugin ' - 'will be skipped.'), - cfg.BoolOpt('SKIP_EDP_TEST', default=False), - cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), - cfg.BoolOpt('SKIP_SCALING_TEST', default=False) -] - -MAPR4_2_CONFIG_GROUP = cfg.OptGroup(name='MAPR4_2') -MAPR4_2_CONFIG_OPTS = [ - cfg.StrOpt('PLUGIN_NAME', - default='mapr4_2', - help='Name of plugin.'), - cfg.StrOpt('IMAGE_ID', - default=None, - help='ID for image which is used for cluster creation. Also ' - 'you can specify image name or tag of image instead of ' - 'image ID. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_NAME', - default=None, - help='Name for image which is used for cluster creation. Also ' - 'you can specify image ID or tag of image instead of ' - 'image name. If you do not specify image related ' - 'parameters, then image for cluster creation will be ' - 'chosen by tag "sahara_i_tests".'), - cfg.StrOpt('IMAGE_TAG', - default=None, - help='Tag for image which is used for cluster creation. Also ' - 'you can specify image ID or image name instead of tag of ' - 'image. If you do not specify image related parameters, ' - 'then image for cluster creation will be chosen by ' - 'tag "sahara_i_tests".'), - cfg.ListOpt('MASTER_NODE_PROCESSES', - default=['CLDB', 'FileServer', 'ZooKeeper', 'NodeManager', - 'ResourceManager', 'HistoryServer', 'Oozie'], - help='A list of processes that will be launched ' - 'on master node'), - cfg.ListOpt('WORKER_NODE_PROCESSES', - default=['FileServer', 'NodeManager', 'Pig'], - help='A list of processes that will be launched ' - 'on worker nodes'), - cfg.StrOpt('HADOOP_VERSION', - default='2.4.0', - help='Version of Hadoop.'), - cfg.StrOpt('HADOOP_USER', - default='mapr', - help='Username which is used for access to Hadoop services.'), - cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', - default=('/opt/mapr/hadoop/hadoop-2.3.0/share/hadoop' - '/hadoop-mapreduce-examples-2.3.0-mapr-4.0.0-FCS.jar'), - help='Path to hadoop examples jar file.'), - cfg.IntOpt('SCALE_EXISTING_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'an existing node group.'), - cfg.IntOpt('SCALE_NEW_NG_COUNT', - default=1, - help='The number of hosts to add while scaling ' - 'a new node group.'), - cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', - default={ - 'ResourceManager': 8032, - 'CLDB': 7222, - 'HistoryServer': 19888, - 'OOZIE': 11000 - }, - help='Hadoop process map with ports for MAPR plugin.' - ), - cfg.DictOpt('PROCESS_NAMES', - default={ - 'nn': 'CLDB', - 'tt': 'NodeManager', - 'dn': 'FileServer' - }, - help='Names for namenode, tasktracker and datanode ' - 'processes.'), - cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', - default=True, - help='If this flag is True, then all tests for MAPR plugin ' - 'will be skipped.'), - cfg.BoolOpt('SKIP_EDP_TEST', default=False), - cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), - cfg.BoolOpt('SKIP_SCALING_TEST', default=False) -] - - SPARK_CONFIG_GROUP = cfg.OptGroup(name='SPARK') SPARK_CONFIG_OPTS = [ cfg.StrOpt('PLUGIN_NAME', @@ -865,6 +620,225 @@ SPARK_CONFIG_OPTS = [ ] +MAPR_311_CONFIG_GROUP = cfg.OptGroup(name='MAPR_311') +MAPR_311_CONFIG_OPTS = [ + cfg.StrOpt('PLUGIN_NAME', + default='mapr', + help='Name of plugin.'), + cfg.StrOpt('IMAGE_ID', + help='ID for image which is used for cluster creation. Also ' + 'you can specify image name or tag of image instead of ' + 'image ID. If you do not specify image related parameters ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_NAME', + help='Name for image which is used for cluster creation. Also ' + 'you can specify image ID or tag of image instead of ' + 'image name. If you do not specify image related ' + 'parameters, then the image for cluster creation will be ' + 'chosen by tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_TAG', + help='Tag for image which is used for cluster creation. Also ' + 'you can specify image ID or image name instead of tag of ' + 'image. If you do not specify image related parameters, ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('HADOOP_VERSION', + default='3.1.1', + help='Version of Hadoop.'), + cfg.StrOpt('HADOOP_USER', + default='mapr', + help='Username which is used for access to Hadoop services.'), + cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', + default='/opt/mapr/hadoop/hadoop-0.20.2/' + 'hadoop-0.20.2-dev-examples.jar', + help='Path to hadoop examples jar file.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY', + default='/opt/mapr/hadoop/hadoop-0.20.2/logs/userlogs', + help='Directory where logs of completed jobs are located.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY_ON_VOLUME', + default='/opt/mapr/hadoop/hadoop-0.20.2/logs/userlogs', + help='Directory where logs of completed jobs on volume mounted ' + 'to node are located.'), + cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', + default={ + 'JobTracker': 50030, + 'CLDB': 7221, + 'TaskTracker': 50060, + 'Oozie': 11000 + }, + help='Hadoop process map with ports for MapR plugin.'), + cfg.DictOpt('PROCESS_NAMES', + default={ + 'nn': 'CLDB', + 'tt': 'TaskTracker', + 'dn': 'FileServer' + }, + help='Names for namenode, tasktracker and datanode ' + 'processes.'), + cfg.ListOpt('SKIP_EDP_JOB_TYPES', + default=[], + help='List of skipped EDP job types.'), + cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', + default=True, + help='If this flag is True, then all tests for MapR plugin ' + 'will be skipped.'), + cfg.BoolOpt('SKIP_CINDER_TEST', default=False), + cfg.BoolOpt('SKIP_CLUSTER_CONFIG_TEST', default=False), + cfg.BoolOpt('SKIP_EDP_TEST', default=False), + cfg.BoolOpt('SKIP_MAP_REDUCE_TEST', default=False), + cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), + cfg.BoolOpt('SKIP_SCALING_TEST', default=False), + cfg.BoolOpt('SKIP_DECOMISSION_TEST', default=False), +] + + +MAPR_401MRV1_CONFIG_GROUP = cfg.OptGroup(name='MAPR_401MRV1') +MAPR_401MRV1_CONFIG_OPTS = [ + cfg.StrOpt('PLUGIN_NAME', + default='mapr', + help='Name of plugin.'), + cfg.StrOpt('IMAGE_ID', + help='ID for image which is used for cluster creation. Also ' + 'you can specify image name or tag of image instead of ' + 'image ID. If you do not specify image related parameters ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_NAME', + help='Name for image which is used for cluster creation. Also ' + 'you can specify image ID or tag of image instead of ' + 'image name. If you do not specify image related ' + 'parameters, then the image for cluster creation will be ' + 'chosen by tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_TAG', + help='Tag for image which is used for cluster creation. Also ' + 'you can specify image ID or image name instead of tag of ' + 'image. If you do not specify image related parameters, ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('HADOOP_VERSION', + default='4.0.1.mrv1', + help='Version of Hadoop.'), + cfg.StrOpt('HADOOP_USER', + default='mapr', + help='Username which is used for access to Hadoop services.'), + cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', + default='/opt/mapr/hadoop/hadoop-0.20.2/' + 'hadoop-0.20.2-dev-examples.jar', + help='Path to hadoop examples jar file.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY', + default='/opt/mapr/hadoop/hadoop-0.20.2/logs/userlogs', + help='Directory where logs of completed jobs are located.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY_ON_VOLUME', + default='/opt/mapr/hadoop/hadoop-0.20.2/logs/userlogs', + help='Directory where logs of completed jobs on volume mounted ' + 'to node are located.'), + cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', + default={ + 'JobTracker': 50030, + 'CLDB': 7221, + 'TaskTracker': 50060, + 'Oozie': 11000 + }, + help='Hadoop process map with ports for MapR plugin.'), + cfg.DictOpt('PROCESS_NAMES', + default={ + 'nn': 'CLDB', + 'tt': 'TaskTracker', + 'dn': 'FileServer' + }, + help='Names for namenode, tasktracker and datanode ' + 'processes.'), + cfg.ListOpt('SKIP_EDP_JOB_TYPES', + default=[], + help='List of skipped EDP job types.'), + cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', + default=True, + help='If this flag is True, then all tests for MapR plugin ' + 'will be skipped.'), + cfg.BoolOpt('SKIP_CINDER_TEST', default=False), + cfg.BoolOpt('SKIP_CLUSTER_CONFIG_TEST', default=False), + cfg.BoolOpt('SKIP_EDP_TEST', default=False), + cfg.BoolOpt('SKIP_MAP_REDUCE_TEST', default=False), + cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), + cfg.BoolOpt('SKIP_SCALING_TEST', default=False), + cfg.BoolOpt('SKIP_DECOMISSION_TEST', default=False), +] + + +MAPR_401MRV2_CONFIG_GROUP = cfg.OptGroup(name='MAPR_401MRV2') +MAPR_401MRV2_CONFIG_OPTS = [ + cfg.StrOpt('PLUGIN_NAME', + default='mapr', + help='Name of plugin.'), + cfg.StrOpt('IMAGE_ID', + help='ID for image which is used for cluster creation. Also ' + 'you can specify image name or tag of image instead of ' + 'image ID. If you do not specify image related parameters ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_NAME', + help='Name for image which is used for cluster creation. Also ' + 'you can specify image ID or tag of image instead of ' + 'image name. If you do not specify image related ' + 'parameters, then the image for cluster creation will be ' + 'chosen by tag "sahara_i_tests".'), + cfg.StrOpt('IMAGE_TAG', + help='Tag for image which is used for cluster creation. Also ' + 'you can specify image ID or image name instead of tag of ' + 'image. If you do not specify image related parameters, ' + 'then image for cluster creation will be chosen by ' + 'tag "sahara_i_tests".'), + cfg.StrOpt('HADOOP_VERSION', + default='4.0.1.mrv2', + help='Version of Hadoop.'), + cfg.StrOpt('HADOOP_USER', + default='mapr', + help='Username which is used for access to Hadoop services.'), + cfg.StrOpt('HADOOP_EXAMPLES_JAR_PATH', + default='/opt/mapr/hadoop/hadoop-2.4.1/share/hadoop/mapreduce' + '/hadoop-mapreduce-examples-2.4.1-mapr-1408.jar', + help='Path to hadoop examples jar file.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY', + default='/opt/mapr/hadoop/hadoop-2.4.1/logs/userlogs', + help='Directory where logs of completed jobs are located.'), + cfg.StrOpt('HADOOP_LOG_DIRECTORY_ON_VOLUME', + default='/opt/mapr/hadoop/hadoop-2.4.1/logs/userlogs', + help='Directory where logs of completed jobs on volume mounted ' + 'to node are located.'), + cfg.DictOpt('HADOOP_PROCESSES_WITH_PORTS', + default={ + 'ResourceManager': 8088, + 'CLDB': 7221, + 'NodeManager': 8042, + 'Oozie': 11000 + }, + help='Hadoop process map with ports for MapR plugin.'), + cfg.DictOpt('PROCESS_NAMES', + default={ + 'nn': 'CLDB', + 'tt': 'NodeManager', + 'dn': 'FileServer' + }, + help='Names for namenode, tasktracker and datanode ' + 'processes.'), + cfg.ListOpt('SKIP_EDP_JOB_TYPES', + default=[], + help='List of skipped EDP job types.'), + cfg.BoolOpt('SKIP_ALL_TESTS_FOR_PLUGIN', + default=True, + help='If this flag is True, then all tests for MapR plugin ' + 'will be skipped.'), + cfg.BoolOpt('SKIP_CINDER_TEST', default=False), + cfg.BoolOpt('SKIP_CLUSTER_CONFIG_TEST', default=False), + cfg.BoolOpt('SKIP_EDP_TEST', default=False), + cfg.BoolOpt('SKIP_MAP_REDUCE_TEST', default=False), + cfg.BoolOpt('SKIP_SWIFT_TEST', default=False), + cfg.BoolOpt('SKIP_SCALING_TEST', default=False), + cfg.BoolOpt('SKIP_DECOMISSION_TEST', default=False), +] + + def register_config(config, config_group, config_opts): config.register_group(config_group) config.register_opts(config_opts, config_group) @@ -896,10 +870,12 @@ class ITConfig(object): register_config(cfg.CONF, HDP2_CONFIG_GROUP, HDP2_CONFIG_OPTS) register_config( cfg.CONF, VANILLA_TWO_CONFIG_GROUP, VANILLA_TWO_CONFIG_OPTS) - register_config(cfg.CONF, MAPR_CONFIG_GROUP, MAPR_CONFIG_OPTS) - register_config(cfg.CONF, MAPR4_1_CONFIG_GROUP, MAPR4_1_CONFIG_OPTS) - register_config(cfg.CONF, MAPR4_2_CONFIG_GROUP, MAPR4_2_CONFIG_OPTS) register_config(cfg.CONF, SPARK_CONFIG_GROUP, SPARK_CONFIG_OPTS) + register_config(cfg.CONF, MAPR_311_CONFIG_GROUP, MAPR_311_CONFIG_OPTS) + register_config( + cfg.CONF, MAPR_401MRV1_CONFIG_GROUP, MAPR_401MRV1_CONFIG_OPTS) + register_config( + cfg.CONF, MAPR_401MRV2_CONFIG_GROUP, MAPR_401MRV2_CONFIG_OPTS) cfg.CONF( [], project='Sahara_integration_tests', @@ -912,7 +888,7 @@ class ITConfig(object): self.cdh_config = cfg.CONF.CDH self.hdp_config = cfg.CONF.HDP self.hdp2_config = cfg.CONF.HDP2 - self.mapr_config = cfg.CONF.MAPR - self.mapr4_1_config = cfg.CONF.MAPR4_1 - self.mapr4_2_config = cfg.CONF.MAPR4_2 self.spark_config = cfg.CONF.SPARK + self.mapr_311_config = cfg.CONF.MAPR_311 + self.mapr_401mrv1_config = cfg.CONF.MAPR_401MRV1 + self.mapr_401mrv2_config = cfg.CONF.MAPR_401MRV2 diff --git a/sahara/tests/integration/tests/gating/test_mapr4_1_gating.py b/sahara/tests/integration/tests/gating/test_mapr4_1_gating.py deleted file mode 100644 index 49f81fba..00000000 --- a/sahara/tests/integration/tests/gating/test_mapr4_1_gating.py +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright (c) 2014 Mirantis Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from testtools import testcase - -from sahara.tests.integration.configs import config as cfg -from sahara.tests.integration.tests import base as b -from sahara.tests.integration.tests import edp -from sahara.tests.integration.tests import scaling -from sahara.tests.integration.tests import swift -from sahara.utils import edp as utils_edp - - -class Mapr4_1GatingTest(swift.SwiftTest, scaling.ScalingTest, - edp.EDPTest): - - config = cfg.ITConfig().mapr4_1_config - SKIP_EDP_TEST = config.SKIP_EDP_TEST - SKIP_SWIFT_TEST = config.SKIP_SWIFT_TEST - SKIP_SCALING_TEST = config.SKIP_SCALING_TEST - - def setUp(self): - super(Mapr4_1GatingTest, self).setUp() - self.cluster_id = None - self.cluster_template_id = None - - def get_plugin_config(self): - return cfg.ITConfig().mapr4_1_config - - @b.errormsg("Failure while 'jt-nn' node group template creation: ") - def _create_jt_nn_ng_template(self): - template = { - 'name': 'test-node-group-template-mapr4_1-jt-nn', - 'plugin_config': self.plugin_config, - 'description': 'test node group template for MAPR plugin', - # NEED CHANGES MASTER_NODE - 'node_processes': self.plugin_config.MASTER_NODE_PROCESSES, - 'floating_ip_pool': self.floating_ip_pool, - 'node_configs': {} - } - self.ng_tmpl_jt_nn_id = self.create_node_group_template(**template) - self.addCleanup(self.delete_objects, - node_group_template_id_list=[self.ng_tmpl_jt_nn_id]) - - @b.errormsg("Failure while 'nm-dn' node group template creation: ") - def _create_nm_dn_ng_template(self): - template = { - 'name': 'test-node-group-template-mapr4_1-nm-dn', - 'plugin_config': self.plugin_config, - 'description': 'test node group template for MAPR plugin', - # NEED CHANGES WORKER - 'node_processes': self.plugin_config.WORKER_NODE_PROCESSES, - 'floating_ip_pool': self.floating_ip_pool, - 'node_configs': {} - } - self.ng_tmpl_nm_dn_id = self.create_node_group_template(**template) - self.addCleanup(self.delete_objects, - node_group_template_id_list=[self.ng_tmpl_nm_dn_id]) - - @b.errormsg("Failure while cluster template creation: ") - def _create_cluster_template(self): - template = { - 'name': 'test-cluster-template-mapr4_1', - 'plugin_config': self.plugin_config, - 'description': 'test cluster template for MAPR plugin', - 'cluster_configs': { - 'YARN': { - 'yarn.log-aggregation-enable': False - } - }, - 'node_groups': [ - { - 'name': 'master-node-dn', - 'node_group_template_id': self.ng_tmpl_jt_nn_id, - 'count': 1 - }, - { - 'name': 'worker-node-nm', - 'node_group_template_id': self.ng_tmpl_nm_dn_id, - 'count': 3 - } - ], - 'net_id': self.internal_neutron_net - } - self.cluster_template_id = self.create_cluster_template(**template) - self.addCleanup(self.delete_objects, - cluster_template_id=self.cluster_template_id) - - @b.errormsg("Failure while cluster creation: ") - def _create_cluster(self): - cluster_name = '%s-%s-v2' % (self.common_config.CLUSTER_NAME, - self.plugin_config.PLUGIN_NAME) - cluster = { - 'name': cluster_name, - 'plugin_config': self.plugin_config, - 'cluster_template_id': self.cluster_template_id, - 'description': 'test cluster', - 'cluster_configs': {} - } - cluster_id = self.create_cluster(**cluster) - self.addCleanup(self.delete_objects, cluster_id=cluster_id) - self.poll_cluster_state(cluster_id) - self.cluster_info = self.get_cluster_info(self.plugin_config) - self.await_active_tasktracker( - self.cluster_info['node_info'], self.plugin_config) - - @b.errormsg("Failure during check of Swift availability: ") - def _check_swift(self): - self.check_swift_availability(self.cluster_info) - - @b.errormsg("Failure while EDP testing: ") - def _check_edp(self): - self.poll_jobs_status(list(self._run_edp_tests())) - - def _run_edp_tests(self): - skipped_edp_job_types = self.plugin_config.SKIP_EDP_JOB_TYPES - - if utils_edp.JOB_TYPE_PIG not in skipped_edp_job_types: - yield self._edp_pig_test() - if utils_edp.JOB_TYPE_MAPREDUCE not in skipped_edp_job_types: - yield self._edp_mapreduce_test() - if utils_edp.JOB_TYPE_MAPREDUCE_STREAMING not in skipped_edp_job_types: - yield self._edp_mapreduce_streaming_test() - if utils_edp.JOB_TYPE_JAVA not in skipped_edp_job_types: - yield self._edp_java_test() - - def _edp_pig_test(self): - pig_job = self.edp_info.read_pig_example_script() - pig_lib = self.edp_info.read_pig_example_jar() - - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_PIG, - job_data_list=[{'pig': pig_job}], - lib_data_list=[{'jar': pig_lib}], - swift_binaries=True, - hdfs_local_output=True) - - def _edp_mapreduce_test(self): - mapreduce_jar = self.edp_info.read_mapreduce_example_jar() - mapreduce_configs = self.edp_info.mapreduce_example_configs() - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_MAPREDUCE, - job_data_list=[], - lib_data_list=[{'jar': mapreduce_jar}], - configs=mapreduce_configs, - swift_binaries=True, - hdfs_local_output=True) - - def _edp_mapreduce_streaming_test(self): - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_MAPREDUCE_STREAMING, - job_data_list=[], - lib_data_list=[], - configs=self.edp_info.mapreduce_streaming_configs()) - - def _edp_java_test(self): - java_jar = self.edp_info.read_java_example_lib(1) - java_configs = self.edp_info.java_example_configs(1) - return self.edp_testing( - utils_edp.JOB_TYPE_JAVA, - job_data_list=[], - lib_data_list=[{'jar': java_jar}], - configs=java_configs) - - @b.errormsg("Failure while cluster scaling: ") - def _check_scaling(self): - datanode_count_after_resizing = ( - self.cluster_info['node_info']['datanode_count'] - + self.plugin_config.SCALE_EXISTING_NG_COUNT) - change_list = [ - { - 'operation': 'resize', - 'info': ['worker-node-nm', - datanode_count_after_resizing] - }, - { - 'operation': 'add', - 'info': ['new-worker-node-tt-dn', - self.plugin_config.SCALE_NEW_NG_COUNT, - '%s' % self.ng_tmpl_nm_dn_id] - } - ] - - self.cluster_info = self.cluster_scaling(self.cluster_info, - change_list) - self.await_active_tasktracker( - self.cluster_info['node_info'], self.plugin_config) - - @b.errormsg( - "Failure during check of Swift availability after cluster scaling: ") - def _check_swift_after_scaling(self): - self.check_swift_availability(self.cluster_info) - - @b.errormsg("Failure while EDP testing after cluster scaling: ") - def _check_edp_after_scaling(self): - self._check_edp() - - @testcase.attr('mapr4_1') - def test_mapr4_1_plugin_gating(self): - self._create_jt_nn_ng_template() - self._create_nm_dn_ng_template() - self._create_cluster_template() - self._create_cluster() - - self._check_swift() - self._check_edp() - - if not self.plugin_config.SKIP_SCALING_TEST: - self._check_scaling() - self._check_swift_after_scaling() - self._check_edp_after_scaling() diff --git a/sahara/tests/integration/tests/gating/test_mapr4_2_gating.py b/sahara/tests/integration/tests/gating/test_mapr4_2_gating.py deleted file mode 100644 index d556de60..00000000 --- a/sahara/tests/integration/tests/gating/test_mapr4_2_gating.py +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright (c) 2014 Mirantis Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from testtools import testcase - -from sahara.tests.integration.configs import config as cfg -from sahara.tests.integration.tests import base as b -from sahara.tests.integration.tests import edp -from sahara.tests.integration.tests import scaling -from sahara.tests.integration.tests import swift -from sahara.utils import edp as utils_edp - - -class Mapr4_2GatingTest(swift.SwiftTest, scaling.ScalingTest, - edp.EDPTest): - - config = cfg.ITConfig().mapr4_2_config - SKIP_EDP_TEST = config.SKIP_EDP_TEST - SKIP_SWIFT_TEST = config.SKIP_SWIFT_TEST - SKIP_SCALING_TEST = config.SKIP_SCALING_TEST - - def setUp(self): - super(Mapr4_2GatingTest, self).setUp() - self.cluster_id = None - self.cluster_template_id = None - - def get_plugin_config(self): - return cfg.ITConfig().mapr4_2_config - - @b.errormsg("Failure while 'rm-nn' node group template creation: ") - def _create_rm_nn_ng_template(self): - template = { - 'name': 'test-node-group-template-mapr4_2-rm-nn', - 'plugin_config': self.plugin_config, - 'description': 'test node group template for MAPR plugin', - # NEED CHANGES MASTER_NODE - 'node_processes': self.plugin_config.MASTER_NODE_PROCESSES, - 'floating_ip_pool': self.floating_ip_pool, - 'node_configs': {} - } - self.ng_tmpl_rm_nn_id = self.create_node_group_template(**template) - self.addCleanup(self.delete_objects, - node_group_template_id_list=[self.ng_tmpl_rm_nn_id]) - - @b.errormsg("Failure while 'nm-dn' node group template creation: ") - def _create_nm_dn_ng_template(self): - template = { - 'name': 'test-node-group-template-mapr4_2-nm-dn', - 'plugin_config': self.plugin_config, - 'description': 'test node group template for MAPR plugin', - # NEED CHANGES WORKER - 'node_processes': self.plugin_config.WORKER_NODE_PROCESSES, - 'floating_ip_pool': self.floating_ip_pool, - 'node_configs': {} - } - self.ng_tmpl_nm_dn_id = self.create_node_group_template(**template) - self.addCleanup(self.delete_objects, - node_group_template_id_list=[self.ng_tmpl_nm_dn_id]) - - @b.errormsg("Failure while cluster template creation: ") - def _create_cluster_template(self): - template = { - 'name': 'test-cluster-template-mapr4_2', - 'plugin_config': self.plugin_config, - 'description': 'test cluster template for MAPR plugin', - 'cluster_configs': { - 'YARN': { - 'yarn.log-aggregation-enable': False - } - }, - 'node_groups': [ - { - 'name': 'master-node-dn', - 'node_group_template_id': self.ng_tmpl_rm_nn_id, - 'count': 1 - }, - { - 'name': 'worker-node-nm', - 'node_group_template_id': self.ng_tmpl_nm_dn_id, - 'count': 3 - } - ], - 'net_id': self.internal_neutron_net - } - self.cluster_template_id = self.create_cluster_template(**template) - self.addCleanup(self.delete_objects, - cluster_template_id=self.cluster_template_id) - - @b.errormsg("Failure while cluster creation: ") - def _create_cluster(self): - cluster_name = '%s-%s-v2' % (self.common_config.CLUSTER_NAME, - self.plugin_config.PLUGIN_NAME) - cluster = { - 'name': cluster_name, - 'plugin_config': self.plugin_config, - 'cluster_template_id': self.cluster_template_id, - 'description': 'test cluster', - 'cluster_configs': {} - } - cluster_id = self.create_cluster(**cluster) - self.addCleanup(self.delete_objects, cluster_id=cluster_id) - self.poll_cluster_state(cluster_id) - self.cluster_info = self.get_cluster_info(self.plugin_config) - self.await_active_tasktracker( - self.cluster_info['node_info'], self.plugin_config) - - @b.errormsg("Failure during check of Swift availability: ") - def _check_swift(self): - self.check_swift_availability(self.cluster_info) - - @b.errormsg("Failure while EDP testing: ") - def _check_edp(self): - self.poll_jobs_status(list(self._run_edp_tests())) - - def _run_edp_tests(self): - skipped_edp_job_types = self.plugin_config.SKIP_EDP_JOB_TYPES - - if utils_edp.JOB_TYPE_PIG not in skipped_edp_job_types: - yield self._edp_pig_test() - if utils_edp.JOB_TYPE_MAPREDUCE not in skipped_edp_job_types: - yield self._edp_mapreduce_test() - if utils_edp.JOB_TYPE_MAPREDUCE_STREAMING not in skipped_edp_job_types: - yield self._edp_mapreduce_streaming_test() - if utils_edp.JOB_TYPE_JAVA not in skipped_edp_job_types: - yield self._edp_java_test() - - def _edp_pig_test(self): - pig_job = self.edp_info.read_pig_example_script() - pig_lib = self.edp_info.read_pig_example_jar() - - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_PIG, - job_data_list=[{'pig': pig_job}], - lib_data_list=[{'jar': pig_lib}], - swift_binaries=True, - hdfs_local_output=True) - - def _edp_mapreduce_test(self): - mapreduce_jar = self.edp_info.read_mapreduce_example_jar() - mapreduce_configs = self.edp_info.mapreduce_example_configs() - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_MAPREDUCE, - job_data_list=[], - lib_data_list=[{'jar': mapreduce_jar}], - configs=mapreduce_configs, - swift_binaries=True, - hdfs_local_output=True) - - def _edp_mapreduce_streaming_test(self): - return self.edp_testing( - job_type=utils_edp.JOB_TYPE_MAPREDUCE_STREAMING, - job_data_list=[], - lib_data_list=[], - configs=self.edp_info.mapreduce_streaming_configs()) - - def _edp_java_test(self): - java_jar = self.edp_info.read_java_example_lib(2) - java_configs = self.edp_info.java_example_configs(2) - return self.edp_testing( - utils_edp.JOB_TYPE_JAVA, - job_data_list=[], - lib_data_list=[{'jar': java_jar}], - configs=java_configs) - - @b.errormsg("Failure while cluster scaling: ") - def _check_scaling(self): - datanode_count_after_resizing = ( - self.cluster_info['node_info']['datanode_count'] - + self.plugin_config.SCALE_EXISTING_NG_COUNT) - change_list = [ - { - 'operation': 'resize', - 'info': ['worker-node-nm', - datanode_count_after_resizing] - }, - { - 'operation': 'add', - 'info': ['new-worker-node-tt-dn', - self.plugin_config.SCALE_NEW_NG_COUNT, - '%s' % self.ng_tmpl_nm_dn_id] - } - ] - - self.cluster_info = self.cluster_scaling(self.cluster_info, - change_list) - self.await_active_tasktracker( - self.cluster_info['node_info'], self.plugin_config) - - @b.errormsg( - "Failure during check of Swift availability after cluster scaling: ") - def _check_swift_after_scaling(self): - self.check_swift_availability(self.cluster_info) - - @b.errormsg("Failure while EDP testing after cluster scaling: ") - def _check_edp_after_scaling(self): - self._check_edp() - - @testcase.attr('mapr4_2') - def test_mapr4_2_plugin_gating(self): - self._create_rm_nn_ng_template() - self._create_nm_dn_ng_template() - self._create_cluster_template() - self._create_cluster() - - self._check_swift() - self._check_edp() - - if not self.plugin_config.SKIP_SCALING_TEST: - self._check_scaling() - self._check_swift_after_scaling() - self._check_edp_after_scaling() diff --git a/sahara/tests/integration/tests/gating/test_mapr_311_gating.py b/sahara/tests/integration/tests/gating/test_mapr_311_gating.py new file mode 100644 index 00000000..39e86747 --- /dev/null +++ b/sahara/tests/integration/tests/gating/test_mapr_311_gating.py @@ -0,0 +1,70 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from testtools import testcase + +from sahara.tests.integration.configs import config as cfg +import sahara.tests.integration.tests.gating.test_mapr_gating as mapr_test + + +class MapR311GatingTest(mapr_test.MapRGatingTest): + mapr_config = cfg.ITConfig().mapr_311_config + SKIP_MAP_REDUCE_TEST = mapr_config.SKIP_MAP_REDUCE_TEST + SKIP_SWIFT_TEST = mapr_config.SKIP_SWIFT_TEST + SKIP_SCALING_TEST = mapr_config.SKIP_SCALING_TEST + SKIP_CINDER_TEST = mapr_config.SKIP_CINDER_TEST + SKIP_EDP_TEST = mapr_config.SKIP_EDP_TEST + + def get_plugin_config(self): + return cfg.ITConfig().mapr_311_config + + def setUp(self): + super(MapR311GatingTest, self).setUp() + self._tt_name = 'tasktracker' + self._mr_version = 1 + self._mkdir_cmd = 'sudo -u %(user)s hadoop fs -mkdir %(path)s' + self._node_processes = [ + 'TaskTracker', + 'JobTracker', + 'FileServer', + 'CLDB', + 'ZooKeeper', + 'Oozie', + 'Webserver' + ] + self._master_node_processes = [ + 'Metrics', + 'Webserver', + 'ZooKeeper', + 'HTTPFS', + 'TaskTracker', + 'JobTracker', + 'Oozie', + 'FileServer', + 'CLDB', + ] + self._worker_node_processes = [ + 'TaskTracker', + 'HiveServer2', + 'HiveMetastore', + 'FileServer', + ] + + @testcase.skipIf( + cfg.ITConfig().mapr_311_config.SKIP_ALL_TESTS_FOR_PLUGIN, + "All tests for MapR plugin were skipped") + @testcase.attr('mapr311') + def test_mapr_plugin_gating(self): + super(MapR311GatingTest, self).test_mapr_plugin_gating() diff --git a/sahara/tests/integration/tests/gating/test_mapr_401mrv1_gating.py b/sahara/tests/integration/tests/gating/test_mapr_401mrv1_gating.py new file mode 100644 index 00000000..65652446 --- /dev/null +++ b/sahara/tests/integration/tests/gating/test_mapr_401mrv1_gating.py @@ -0,0 +1,66 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from testtools import testcase + +from sahara.tests.integration.configs import config as cfg +import sahara.tests.integration.tests.gating.test_mapr_gating as mapr_test + + +class MapR401MRv1GatingTest(mapr_test.MapRGatingTest): + mapr_config = cfg.ITConfig().mapr_401mrv1_config + SKIP_MAP_REDUCE_TEST = mapr_config.SKIP_MAP_REDUCE_TEST + SKIP_SWIFT_TEST = mapr_config.SKIP_SWIFT_TEST + SKIP_SCALING_TEST = mapr_config.SKIP_SCALING_TEST + SKIP_CINDER_TEST = mapr_config.SKIP_CINDER_TEST + SKIP_EDP_TEST = mapr_config.SKIP_EDP_TEST + + def get_plugin_config(self): + return MapR401MRv1GatingTest.mapr_config + + def setUp(self): + super(MapR401MRv1GatingTest, self).setUp() + self._tt_name = 'tasktracker' + self._mr_version = 1 + self._node_processes = [ + 'TaskTracker', + 'JobTracker', + 'FileServer', + 'CLDB', + 'ZooKeeper', + 'Oozie', + 'Webserver' + ] + self._master_node_processes = [ + 'Metrics', + 'Webserver', + 'ZooKeeper', + 'TaskTracker', + 'JobTracker', + 'Oozie', + 'FileServer', + 'CLDB', + ] + self._worker_node_processes = [ + 'TaskTracker', + 'FileServer', + ] + + @testcase.skipIf( + cfg.ITConfig().mapr_401mrv1_config.SKIP_ALL_TESTS_FOR_PLUGIN, + "All tests for MapR plugin were skipped") + @testcase.attr('mapr401mrv1') + def test_mapr_plugin_gating(self): + super(MapR401MRv1GatingTest, self).test_mapr_plugin_gating() diff --git a/sahara/tests/integration/tests/gating/test_mapr_401mrv2_gating.py b/sahara/tests/integration/tests/gating/test_mapr_401mrv2_gating.py new file mode 100644 index 00000000..5cd67e59 --- /dev/null +++ b/sahara/tests/integration/tests/gating/test_mapr_401mrv2_gating.py @@ -0,0 +1,53 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from testtools import testcase + +from sahara.tests.integration.configs import config as cfg +import sahara.tests.integration.tests.gating.test_mapr_gating as mapr_test + + +class MapR401MRv2GatingTest(mapr_test.MapRGatingTest): + mapr_config = cfg.ITConfig().mapr_401mrv2_config + SKIP_MAP_REDUCE_TEST = mapr_config.SKIP_MAP_REDUCE_TEST + SKIP_SWIFT_TEST = mapr_config.SKIP_SWIFT_TEST + SKIP_SCALING_TEST = mapr_config.SKIP_SCALING_TEST + SKIP_CINDER_TEST = mapr_config.SKIP_CINDER_TEST + SKIP_EDP_TEST = mapr_config.SKIP_EDP_TEST + + def get_plugin_config(self): + return MapR401MRv2GatingTest.mapr_config + + def setUp(self): + super(MapR401MRv2GatingTest, self).setUp() + self._tt_name = 'nodemanager' + self._mr_version = 2 + self._node_processes = [ + 'NodeManager', + 'ResourceManager', + 'HistoryServer', + 'FileServer', + 'CLDB', + 'ZooKeeper', + 'Oozie', + 'Webserver' + ] + + @testcase.skipIf( + cfg.ITConfig().mapr_401mrv2_config.SKIP_ALL_TESTS_FOR_PLUGIN, + "All tests for MapR plugin were skipped") + @testcase.attr('mapr401mrv2') + def test_mapr_plugin_gating(self): + super(MapR401MRv2GatingTest, self).test_mapr_plugin_gating() diff --git a/sahara/tests/integration/tests/gating/test_mapr_gating.py b/sahara/tests/integration/tests/gating/test_mapr_gating.py index ebcb7698..08c57629 100644 --- a/sahara/tests/integration/tests/gating/test_mapr_gating.py +++ b/sahara/tests/integration/tests/gating/test_mapr_gating.py @@ -1,22 +1,27 @@ -# Copyright (c) 2013 Mirantis Inc. +# Copyright (c) 2015, MapR Technologies # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. -from oslo_utils import excutils -from testtools import testcase +import fixtures +import json +import random +import string +import time +import uuid -from sahara.tests.integration.configs import config as cfg +import six + +from sahara.tests.integration.tests import base as b from sahara.tests.integration.tests import cinder from sahara.tests.integration.tests import edp from sahara.tests.integration.tests import map_reduce @@ -25,293 +30,460 @@ from sahara.tests.integration.tests import swift from sahara.utils import edp as utils_edp -class MaprGatingTest(cinder.CinderVolumeTest, edp.EDPTest, - map_reduce.MapReduceTest, swift.SwiftTest, - scaling.ScalingTest): - config = cfg.ITConfig().mapr_config - SKIP_CINDER_TEST = config.SKIP_CINDER_TEST - SKIP_EDP_TEST = config.SKIP_EDP_TEST - SKIP_MAP_REDUCE_TEST = config.SKIP_MAP_REDUCE_TEST - SKIP_SWIFT_TEST = config.SKIP_SWIFT_TEST - SKIP_SCALING_TEST = config.SKIP_SCALING_TEST +SERVICES_COUNT_CMD = 'maprcli dashboard info -json' - def get_plugin_config(self): - return cfg.ITConfig().mapr_config - @testcase.skipIf(config.SKIP_ALL_TESTS_FOR_PLUGIN, - 'All tests for MAPR plugin were skipped') - @testcase.attr('mapr1') +class MapRGatingTest(map_reduce.MapReduceTest, swift.SwiftTest, + scaling.ScalingTest, cinder.CinderVolumeTest, + edp.EDPTest): + def _get_mapr_cluster_info(self): + return json.loads(self.execute_command(SERVICES_COUNT_CMD)[1]) + + def _get_active_count(self, service): + info = self._get_mapr_cluster_info() + services = info['data'][0]['services'] + return services[service]['active'] if service in services else -1 + + def _get_tasktracker_count(self): + return self._get_active_count(self._tt_name) + + def _get_datanode_count(self): + return self._get_active_count('fileserver') + + def await_active_workers_for_namenode(self, node_info, plugin_config): + tt_count = node_info['tasktracker_count'] + dn_count = node_info['datanode_count'] + self.open_ssh_connection(node_info['namenode_ip']) + timeout = self.common_config.HDFS_INITIALIZATION_TIMEOUT * 60 + try: + with fixtures.Timeout(timeout, gentle=True): + while True: + active_tt_count = self._get_tasktracker_count() + active_dn_count = self._get_datanode_count() + + all_tt_started = active_tt_count == tt_count + all_dn_started = active_dn_count == dn_count + + if all_tt_started and all_dn_started: + break + + time.sleep(10) + + except fixtures.TimeoutException: + self.fail( + 'Tasktracker or datanode cannot be started within ' + '%s minute(s) for namenode.' + % self.common_config.HDFS_INITIALIZATION_TIMEOUT + ) + finally: + self.close_ssh_connection() + + def create_mapr_fs_dir(self, ip, path): + args = {'user': self.plugin_config.HADOOP_USER, 'path': path} + self.open_ssh_connection(ip) + self.execute_command(self._mkdir_cmd % args) + self.close_ssh_connection() + + def put_file_to_mapr_fs(self, ip, path, data): + local = '/tmp/%s' % six.text_type(uuid.uuid4()) + args = { + 'user': self.plugin_config.HADOOP_USER, + 'mfs': path, + 'local': local, + } + command = 'sudo -u %(user)s hadoop fs -put %(local)s %(mfs)s' % args + self.open_ssh_connection(ip) + self.write_file_to(local, data) + self.execute_command(command) + self.execute_command('rm -fr %s' % local) + self.close_ssh_connection() + + @b.skip_test('SKIP_EDP_TEST', 'Test for EDP was skipped.') + def edp_testing(self, job_type, job_data_list, lib_data_list=None, + configs=None, pass_input_output_args=False, + swift_binaries=False, hdfs_local_output=False): + + job_data_list = job_data_list or [] + lib_data_list = lib_data_list or [] + configs = configs or {} + + test_id = 'edp-mapr-test-%s' % str(uuid.uuid4())[:8] + swift = self.connect_to_swift() + container = test_id + swift.put_container(container) + + input_folder = '/%s' % test_id + cldb_ip = self.cluster_info['node_info']['namenode_ip'] + self.create_mapr_fs_dir(cldb_ip, input_folder) + + if not self.common_config.RETAIN_EDP_AFTER_TEST: + self.addCleanup(self.delete_swift_container, swift, container) + + input_data = ''.join( + random.choice(':' + ' ' + '\n' + string.ascii_lowercase) + for x in six.moves.range(10000) + ) + input_file = '%s/input' % input_folder + self.put_file_to_mapr_fs(cldb_ip, input_file, input_data) + + input_id = None + output_id = None + job_binary_list = [] + lib_binary_list = [] + job_binary_internal_list = [] + + maprfs_input_url = 'maprfs://%s' % input_file + maprfs_output_url = 'maprfs://%s/output' % (input_folder + '-out') + + if not utils_edp.compare_job_type(job_type, + utils_edp.JOB_TYPE_JAVA, + utils_edp.JOB_TYPE_SPARK): + input_id = self._create_data_source( + 'input-%s' % str(uuid.uuid4())[:8], 'maprfs', + maprfs_input_url) + output_id = self._create_data_source( + 'output-%s' % str(uuid.uuid4())[:8], 'maprfs', + maprfs_output_url) + + if job_data_list: + if swift_binaries: + self._create_job_binaries(job_data_list, + job_binary_internal_list, + job_binary_list, + swift_connection=swift, + container_name=container) + else: + self._create_job_binaries(job_data_list, + job_binary_internal_list, + job_binary_list) + + if lib_data_list: + if swift_binaries: + self._create_job_binaries(lib_data_list, + job_binary_internal_list, + lib_binary_list, + swift_connection=swift, + container_name=container) + else: + self._create_job_binaries(lib_data_list, + job_binary_internal_list, + lib_binary_list) + + job_id = self._create_job( + 'edp-test-job-%s' % str(uuid.uuid4())[:8], job_type, + job_binary_list, lib_binary_list) + if not configs: + configs = {} + + if utils_edp.compare_job_type( + job_type, utils_edp.JOB_TYPE_JAVA) and pass_input_output_args: + self._enable_substitution(configs) + if "args" in configs: + configs["args"].extend([maprfs_input_url, maprfs_output_url]) + else: + configs["args"] = [maprfs_input_url, maprfs_output_url] + + job_execution = self.sahara.job_executions.create( + job_id, self.cluster_id, input_id, output_id, + configs=configs) + if not self.common_config.RETAIN_EDP_AFTER_TEST: + self.addCleanup(self.sahara.job_executions.delete, + job_execution.id) + + return job_execution.id + + def setUp(self): + super(MapRGatingTest, self).setUp() + self.cluster_id = None + self.cluster_template_id = None + self.ng_template_ids = [] + self._mkdir_cmd = 'sudo -u %(user)s hadoop fs -mkdir -p %(path)s' + self._tt_name = None + self._mr_version = None + self._node_processes = None + self._master_node_processes = None + self._worker_node_processes = None + + ng_params = { + } + + @b.errormsg("Failure while 'single' node group template creation: ") + def _create_single_ng_template(self): + template = { + 'name': 'test-node-group-template-mapr-single', + 'plugin_config': self.plugin_config, + 'description': 'test node group template for MapR plugin', + 'node_processes': self._node_processes, + 'floating_ip_pool': self.floating_ip_pool, + 'node_configs': self.ng_params + } + self.ng_tmpl_single_id = self.create_node_group_template(**template) + self.ng_template_ids.append(self.ng_tmpl_single_id) + + @b.errormsg("Failure while 'master' node group template creation: ") + def _create_master_ng_template(self): + plugin_version = self.plugin_config.HADOOP_VERSION.replace('.', '') + template = { + 'name': 'mapr-%s-master' % plugin_version, + 'plugin_config': self.plugin_config, + 'description': 'Master node group template for MapR plugin', + 'node_processes': self._master_node_processes, + 'floating_ip_pool': self.floating_ip_pool, + 'auto_security_group': False, + 'node_configs': {} + } + self.ng_tmpl_master_id = self.create_node_group_template(**template) + self.ng_template_ids.append(self.ng_tmpl_master_id) + self.addCleanup(self.delete_objects, + node_group_template_id_list=[self.ng_tmpl_master_id]) + + @b.errormsg("Failure while 'worker' node group template creation: ") + def _create_worker_ng_template(self): + plugin_version = self.plugin_config.HADOOP_VERSION.replace('.', '') + template = { + 'name': 'mapr-%s-worker' % plugin_version, + 'plugin_config': self.plugin_config, + 'description': 'Worker node group template for MapR plugin', + 'node_processes': self._worker_node_processes, + 'floating_ip_pool': self.floating_ip_pool, + 'auto_security_group': False, + 'node_configs': {} + } + self.ng_tmpl_worker_id = self.create_node_group_template(**template) + self.ng_template_ids.append(self.ng_tmpl_worker_id) + self.addCleanup(self.delete_objects, + node_group_template_id_list=[self.ng_tmpl_worker_id]) + + @b.errormsg("Failure while cluster template creation: ") + def _create_master_worker_cluster_template(self): + plugin_version = self.plugin_config.HADOOP_VERSION.replace('.', '') + template = { + 'name': 'mapr-%s-master-worker' % plugin_version, + 'plugin_config': self.plugin_config, + 'description': 'test cluster template for MapR plugin', + 'cluster_configs': { + 'Hive': { + 'Hive Version': '0.13', + } + }, + 'node_groups': [ + { + 'name': 'mapr-%s-master' % plugin_version, + 'node_group_template_id': self.ng_tmpl_master_id, + 'count': 1 + }, + ], + 'net_id': self.internal_neutron_net + } + self.cluster_template_id = self.create_cluster_template(**template) + self.addCleanup(self.delete_objects, + cluster_template_id=self.cluster_template_id) + + @b.errormsg("Failure while cluster template creation: ") + def _create_single_node_cluster_template(self): + template = { + 'name': 'test-cluster-template-mapr-single', + 'plugin_config': self.plugin_config, + 'description': 'test cluster template for MapR plugin', + 'cluster_configs': { + 'Hive': { + 'Hive Version': '0.13', + } + }, + 'node_groups': [ + { + 'name': 'single', + 'node_group_template_id': self.ng_tmpl_single_id, + 'count': 1 + }, + ], + 'net_id': self.internal_neutron_net + } + self.cluster_template_id = self.create_cluster_template(**template) + self.addCleanup(self.delete_objects, + cluster_template_id=self.cluster_template_id) + + @b.errormsg("Failure while cluster creation: ") + def _create_cluster(self): + cluster_name = '%s-%s-v2' % (self.common_config.CLUSTER_NAME, + self.plugin_config.PLUGIN_NAME) + cluster = { + 'name': cluster_name, + 'plugin_config': self.plugin_config, + 'cluster_template_id': self.cluster_template_id, + 'description': 'test cluster', + 'cluster_configs': {} + } + cluster_id = self.create_cluster(**cluster) + self.addCleanup(self.delete_objects, cluster_id=cluster_id) + self.poll_cluster_state(cluster_id) + self.cluster_info = self.get_cluster_info(self.plugin_config) + self.await_active_workers_for_namenode(self.cluster_info['node_info'], + self.plugin_config) + + @b.errormsg("Failure while Cinder testing: ") + def _check_cinder(self): + self.cinder_volume_testing(self.cluster_info) + + @b.errormsg("Failure while Map Reduce testing: ") + def _check_mapreduce(self): + self.map_reduce_testing( + self.cluster_info, script='mapr/map_reduce_test_script.sh') + + @b.errormsg("Failure during check of Swift availability: ") + def _check_swift(self): + self.check_swift_availability( + self.cluster_info, script='mapr/swift_test_script.sh') + + @b.skip_test('SKIP_EDP_TEST', + message='Test for EDP was skipped.') + @b.errormsg("Failure while EDP testing: ") + def _check_edp(self): + for edp_job in self._run_edp_tests(): + self.poll_jobs_status([edp_job]) + + def _run_edp_tests(self): + skipped_edp_job_types = self.plugin_config.SKIP_EDP_JOB_TYPES + + if utils_edp.JOB_TYPE_PIG not in skipped_edp_job_types: + yield self._edp_pig_test() + if utils_edp.JOB_TYPE_MAPREDUCE not in skipped_edp_job_types: + yield self._edp_mapreduce_test() + if utils_edp.JOB_TYPE_MAPREDUCE_STREAMING not in skipped_edp_job_types: + yield self._edp_mapreduce_streaming_test() + if utils_edp.JOB_TYPE_JAVA not in skipped_edp_job_types: + yield self._edp_java_test() + + def _edp_pig_test(self): + pig_job = self.edp_info.read_pig_example_script() + pig_lib = self.edp_info.read_pig_example_jar() + + return self.edp_testing( + job_type=utils_edp.JOB_TYPE_PIG, + job_data_list=[{'pig': pig_job}], + lib_data_list=[{'jar': pig_lib}], + swift_binaries=True + ) + + def _edp_mapreduce_test(self): + mapreduce_jar = self.edp_info.read_mapreduce_example_jar() + mapreduce_configs = self.edp_info.mapreduce_example_configs() + return self.edp_testing( + job_type=utils_edp.JOB_TYPE_MAPREDUCE, + job_data_list=[], + lib_data_list=[{'jar': mapreduce_jar}], + configs=mapreduce_configs, + swift_binaries=True + ) + + def _edp_mapreduce_streaming_test(self): + return self.edp_testing( + job_type=utils_edp.JOB_TYPE_MAPREDUCE_STREAMING, + job_data_list=[], + lib_data_list=[], + configs=self.edp_info.mapreduce_streaming_configs() + ) + + def _edp_java_test(self): + java_jar = self.edp_info.read_java_example_lib(self._mr_version) + java_configs = self.edp_info.java_example_configs(self._mr_version) + return self.edp_testing( + utils_edp.JOB_TYPE_JAVA, + job_data_list=[], + lib_data_list=[{'jar': java_jar}], + configs=java_configs, + pass_input_output_args=False + ) + + @b.errormsg("Failure while cluster scaling: ") + def _check_scaling(self): + plugin_version = self.plugin_config.HADOOP_VERSION.replace('.', '') + change_list = [ + { + 'operation': 'add', + 'info': ['mapr-%s-worker' % plugin_version, + 1, '%s' % self.ng_tmpl_worker_id] + } + ] + + self.cluster_info = self.cluster_scaling(self.cluster_info, + change_list) + self.await_active_workers_for_namenode(self.cluster_info['node_info'], + self.plugin_config) + + @b.errormsg("Failure while Cinder testing after cluster scaling: ") + def _check_cinder_after_scaling(self): + self.cinder_volume_testing(self.cluster_info) + + @b.errormsg("Failure while Map Reduce testing after cluster scaling: ") + def _check_mapreduce_after_scaling(self): + self.map_reduce_testing(self.cluster_info) + + @b.errormsg( + "Failure during check of Swift availability after cluster scaling: ") + def _check_swift_after_scaling(self): + self.check_swift_availability(self.cluster_info) + + @b.errormsg("Failure while EDP testing after cluster scaling: ") + def _check_edp_after_scaling(self): + self._check_edp() + + @b.errormsg("Failure while cluster decomission: ") + def _check_decomission(self): + plugin_version = self.plugin_config.HADOOP_VERSION.replace('.', '') + change_list = [ + { + 'operation': 'resize', + 'info': ['mapr-%s-worker' % plugin_version, 1] + } + ] + + self.cluster_info = self.cluster_scaling(self.cluster_info, + change_list) + self.await_active_workers_for_namenode(self.cluster_info['node_info'], + self.plugin_config) + + @b.errormsg("Failure while Cinder testing after cluster decomission: ") + def _check_cinder_after_decomission(self): + self.cinder_volume_testing(self.cluster_info) + + @b.errormsg("Failure while Map Reduce testing after cluster decomission: ") + def _check_mapreduce_after_decomission(self): + self.map_reduce_testing(self.cluster_info) + + @b.errormsg("Failure during check of Swift availability after" + " cluster decomission: ") + def _check_swift_after_decomission(self): + self.check_swift_availability(self.cluster_info) + + @b.errormsg("Failure while EDP testing after cluster decomission: ") + def _check_edp_after_decomission(self): + self._check_edp() + def test_mapr_plugin_gating(self): - node_group_template_id_list = [] + self._create_master_ng_template() + self._create_worker_ng_template() + self._create_master_worker_cluster_template() + self._create_cluster() -# ------------------------------CLUSTER CREATION------------------------------- - -# ----------------------"tt-dn" node group template creation------------------- - - try: - node_group_template_tt_dn_id = self.create_node_group_template( - name='test-node-group-template-mapr-tt-dn', - plugin_config=self.plugin_config, - description='test node group template for MAPR plugin', - volumes_per_node=self.volumes_per_node, - node_processes=self.plugin_config.WORKER_NODE_PROCESSES, - # NEED CREATE WORKER_NODE_PROCESSES - node_configs={}, - floating_ip_pool=self.floating_ip_pool - ) - node_group_template_id_list.append(node_group_template_tt_dn_id) - - except Exception as e: - with excutils.save_and_reraise_exception(): - message = ('Failure while \'tt-dn\' node group ' - 'template creation: ') - self.print_error_log(message, e) - -# --------------------------Cluster template creation-------------------------- - - try: - cluster_template_id = self.create_cluster_template( - name='test-cluster-template-mapr', - plugin_config=self.plugin_config, - description='test cluster template for MAPR plugin', - cluster_configs={}, - node_groups=[ - dict( - name='master-node-jt-nn', - flavor_id=self.flavor_id, - node_processes=( - self.plugin_config.MASTER_NODE_PROCESSES), - # NEED CREATE MASTER_NODE_PROCESSES - node_configs={}, - floating_ip_pool=self.floating_ip_pool, - count=1), - dict( - name='worker-node-tt-dn', - node_group_template_id=node_group_template_tt_dn_id, - count=3) - ], - net_id=self.internal_neutron_net - ) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - node_group_template_id_list=node_group_template_id_list - ) - message = 'Failure while cluster template creation: ' - self.print_error_log(message, e) - -# ------------------------------Cluster creation------------------------------- - - cluster_name = (self.common_config.CLUSTER_NAME + '-' + - self.plugin_config.PLUGIN_NAME) - try: - self.create_cluster( - name=cluster_name, - plugin_config=self.plugin_config, - cluster_template_id=cluster_template_id, - description='test cluster', - cluster_configs={} - ) - - cluster_info = self.get_cluster_info(self.plugin_config) - self.await_active_tasktracker( - cluster_info['node_info'], self.plugin_config) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - self.cluster_id, cluster_template_id, - node_group_template_id_list - ) - message = 'Failure while cluster creation: ' - self.print_error_log(message, e) - -# --------------------------------CINDER TESTING------------------------------- - - try: - self.cinder_volume_testing(cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = 'Failure while Cinder testing: ' - self.print_error_log(message, e) - -# ---------------------------------EDP TESTING--------------------------------- - - path = 'sahara/tests/integration/tests/resources/' - pig_job_data = open(path + 'edp-job.pig').read() - pig_lib_data = open(path + 'edp-lib.jar').read() - mapreduce_jar_data = open(path + 'edp-mapreduce.jar').read() - - # This is a modified version of WordCount that takes swift configs - java_lib_data = open(path + 'edp-java/edp-java.jar').read() - java_configs = { - "configs": { - "edp.java.main_class": ("org.openstack.sahara.examples" - ".WordCount") - } - } - - mapreduce_configs = { - "configs": { - "mapred.mapper.class": "org.apache.oozie.example.SampleMapper", - "mapred.reducer.class": ("org.apache.oozie.example" - ".SampleReducer") - } - } - mapreduce_streaming_configs = { - "configs": { - "edp.streaming.mapper": "/bin/cat", - "edp.streaming.reducer": "/usr/bin/wc" - } - } - try: - self.edp_testing(job_type=utils_edp.JOB_TYPE_PIG, - job_data_list=[{'pig': pig_job_data}], - lib_data_list=[{'jar': pig_lib_data}], - swift_binaries=True, - hdfs_local_output=True) - self.edp_testing(job_type=utils_edp.JOB_TYPE_MAPREDUCE, - job_data_list=[], - lib_data_list=[{'jar': mapreduce_jar_data}], - configs=mapreduce_configs, - swift_binaries=True, - hdfs_local_output=True) - self.edp_testing(job_type=utils_edp.JOB_TYPE_MAPREDUCE_STREAMING, - job_data_list=[], - lib_data_list=[], - configs=mapreduce_streaming_configs) - self.edp_testing(job_type=utils_edp.JOB_TYPE_JAVA, - job_data_list=[], - lib_data_list=[{'jar': java_lib_data}], - configs=java_configs, - pass_input_output_args=True) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = 'Failure while EDP testing: ' - self.print_error_log(message, e) - -# -----------------------------MAP REDUCE TESTING------------------------------ - - try: - self.map_reduce_testing(cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = 'Failure while Map Reduce testing: ' - self.print_error_log(message, e) - -# --------------------------CHECK SWIFT AVAILABILITY--------------------------- - - try: - self.check_swift_availability(cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = 'Failure during check of Swift availability: ' - self.print_error_log(message, e) - -# -------------------------------CLUSTER SCALING------------------------------- + self._check_cinder() + self._check_mapreduce() + self._check_swift() + self._check_edp() if not self.plugin_config.SKIP_SCALING_TEST: - datanode_count_after_resizing = ( - cluster_info['node_info']['datanode_count'] - + self.plugin_config.SCALE_EXISTING_NG_COUNT) - change_list = [ - { - 'operation': 'resize', - 'info': ['worker-node-tt-dn', - datanode_count_after_resizing] - }, - { - 'operation': 'add', - 'info': [ - 'new-worker-node-tt-dn', - self.plugin_config.SCALE_NEW_NG_COUNT, - '%s' % node_group_template_tt_dn_id - ] - } - ] - try: - new_cluster_info = self.cluster_scaling(cluster_info, - change_list) - self.await_active_tasktracker( - new_cluster_info['node_info'], self.plugin_config) - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = 'Failure while cluster scaling: ' - self.print_error_log(message, e) + self._check_scaling() + self._check_cinder_after_scaling() + self._check_mapreduce_after_scaling() + self._check_swift_after_scaling() + self._check_edp_after_scaling() -# -------------------------CINDER TESTING AFTER SCALING------------------------ + if not self.plugin_config.SKIP_DECOMISSION_TEST: + self._check_decomission() + self._check_cinder_after_decomission() + self._check_mapreduce_after_decomission() + self._check_swift_after_decomission() + self._check_edp_after_decomission() - try: - self.cinder_volume_testing(new_cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - new_cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = ('Failure while Cinder testing after cluster ' - 'scaling: ') - self.print_error_log(message, e) - -# ----------------------MAP REDUCE TESTING AFTER SCALING----------------------- - - try: - self.map_reduce_testing(new_cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - new_cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = ('Failure while Map Reduce testing after ' - 'cluster scaling: ') - self.print_error_log(message, e) - -# -------------------CHECK SWIFT AVAILABILITY AFTER SCALING-------------------- - - try: - self.check_swift_availability(new_cluster_info) - - except Exception as e: - with excutils.save_and_reraise_exception(): - self.delete_objects( - new_cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) - message = ('Failure during check of Swift availability ' - 'after cluster scaling: ') - self.print_error_log(message, e) - -# ---------------------------DELETE CREATED OBJECTS---------------------------- - - self.delete_objects( - cluster_info['cluster_id'], cluster_template_id, - node_group_template_id_list - ) + def tearDown(self): + super(MapRGatingTest, self).tearDown() diff --git a/sahara/tests/integration/tests/map_reduce.py b/sahara/tests/integration/tests/map_reduce.py index 85e5e550..0845228a 100644 --- a/sahara/tests/integration/tests/map_reduce.py +++ b/sahara/tests/integration/tests/map_reduce.py @@ -19,6 +19,8 @@ from sahara.tests.integration.tests import base class MapReduceTest(base.ITestCase): + DEFAULT_TEST_SCRIPT = 'map_reduce_test_script.sh' + def _run_pi_job(self): self.execute_command('./script.sh run_pi_job') @@ -48,20 +50,24 @@ class MapReduceTest(base.ITestCase): '/tmp/MapReduceTestOutput/log.txt' ) - def _transfer_helper_script_to_nodes(self, cluster_info): + def _transfer_helper_script_to_nodes(self, cluster_info, script=None): + script = script or MapReduceTest.DEFAULT_TEST_SCRIPT data = self.sahara.clusters.get(cluster_info['cluster_id']) node_groups = data.node_groups for node_group in node_groups: if node_group['volumes_per_node'] != 0: self._add_params_to_script_and_transfer_to_node( - cluster_info, node_group, node_with_volumes=True) + cluster_info, node_group, node_with_volumes=True, + script=script) else: self._add_params_to_script_and_transfer_to_node( - cluster_info, node_group) + cluster_info, node_group, script=script) def _add_params_to_script_and_transfer_to_node(self, cluster_info, node_group, - node_with_volumes=False): + node_with_volumes=False, + script=None): + script = script or MapReduceTest.DEFAULT_TEST_SCRIPT plugin_config = cluster_info['plugin_config'] hadoop_log_directory = plugin_config.HADOOP_LOG_DIRECTORY if node_with_volumes: @@ -77,7 +83,7 @@ class MapReduceTest(base.ITestCase): try: self.open_ssh_connection(instance['management_ip']) self.transfer_helper_script_to_node( - 'map_reduce_test_script.sh', extra_script_parameters + script, extra_script_parameters ) self.close_ssh_connection() @@ -87,8 +93,9 @@ class MapReduceTest(base.ITestCase): @base.skip_test('SKIP_MAP_REDUCE_TEST', message='Test for Map Reduce was skipped.') - def map_reduce_testing(self, cluster_info, check_log=True): - self._transfer_helper_script_to_nodes(cluster_info) + def map_reduce_testing(self, cluster_info, check_log=True, script=None): + script = script or MapReduceTest.DEFAULT_TEST_SCRIPT + self._transfer_helper_script_to_nodes(cluster_info, script) plugin_config = cluster_info['plugin_config'] namenode_ip = cluster_info['node_info']['namenode_ip'] self.open_ssh_connection(namenode_ip) diff --git a/sahara/tests/integration/tests/resources/mapr/ecosystem_test_script.sh b/sahara/tests/integration/tests/resources/mapr/ecosystem_test_script.sh new file mode 100644 index 00000000..9e7748a7 --- /dev/null +++ b/sahara/tests/integration/tests/resources/mapr/ecosystem_test_script.sh @@ -0,0 +1,141 @@ +#!/bin/bash -x + +dir=/tmp/MapReduceTestOutput +log=$dir/log.txt + +HADOOP_EXAMPLES_JAR_PATH="" +HADOOP_LOG_DIRECTORY="" +HADOOP_USER="" + +NODE_COUNT="" + +case $1 in + run_pi_job) + FUNC="run_pi_job" + ;; + + get_pi_job_name) + FUNC="get_pi_job_name" + ;; + + check_directory) + FUNC="check_job_directory_existence" + ;; + + run_wordcount_job) + FUNC="run_wordcount_job" + ;; +esac +shift + +if [ "$1" = "-job_name" ]; then + JOB_NAME="$2" +fi +shift + +check_submitted_parameter() { + + case "$1" in + job_name) + if [ -z "$JOB_NAME" ]; then + echo "Job name not specified" + exit 1 + fi + ;; + esac +} + +check_job_directory_existence() { + + check_submitted_parameter job_name + + app_name=${JOB_NAME/"job"/"application"} + if ! [ -d $HADOOP_LOG_DIRECTORY/$JOB_NAME -o -d $HADOOP_LOG_DIRECTORY/$app_name ]; then + echo "Log file of \"PI\" job not found" + exit 1 + fi +} + +create_log_directory() { + + if ! [ -d $dir ]; then + mkdir $dir + chmod -R 777 $dir + touch $log + fi +} + +run_pi_job() { + + create_log_directory + + echo -e "****************************** NETSTAT ***************************\n" >> $log + + echo -e "`sudo netstat -plten | grep java` \n\n\n" >> $log + + echo -e "************************ START OF \"PI\" JOB *********************\n" >> $log + + sudo -u $HADOOP_USER bash -lc "hadoop jar $HADOOP_EXAMPLES_JAR_PATH pi $(($NODE_COUNT*10)) $(($NODE_COUNT*1000))" >> $log + + echo -e "************************ END OF \"PI\" JOB ***********************" >> $log +} + +get_pi_job_name() { + + #This sleep needs here for obtaining correct job name. Not always job name may immediately appear in job list. + sleep 60 + + job_name=`sudo -u $HADOOP_USER bash -lc "hadoop job -list all | grep '^[[:space:]]*job_' | sort | tail -n1" | awk '{print $1}'` + + if [ $job_name = "JobId" ]; then + echo "\"PI\" job name has not been obtained since \"PI\" job was not launched" >> $log + exit 1 + fi + + echo "$job_name" +} + +check_return_code_after_command_execution() { + + if [ "$1" = "-exit" ]; then + if [ "$2" -ne 0 ]; then + exit 1 + fi + fi + + if [ "$1" = "-clean_hdfs" ]; then + if [ "$2" -ne 0 ]; then + sudo -u $HADOOP_USER bash -lc "hadoop fs -rmr /map-reduce-test" && exit 1 + fi + fi +} + +run_wordcount_job() { + + create_log_directory + + dmesg > $dir/input + + sudo -u $HADOOP_USER bash -lc "hadoop fs -ls /" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -mkdir /map-reduce-test" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyFromLocal $dir/input /map-reduce-test/mydata" + check_return_code_after_command_execution -clean_hdfs `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop jar $HADOOP_EXAMPLES_JAR_PATH wordcount /map-reduce-test/mydata /map-reduce-test/output" + check_return_code_after_command_execution -clean_hdfs `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyToLocal /map-reduce-test/output $dir/output" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -rmr /map-reduce-test" + check_return_code_after_command_execution -exit `echo "$?"` +} + +run_hive_job() { + # Implement +} +$FUNC diff --git a/sahara/tests/integration/tests/resources/mapr/map_reduce_test_script.sh b/sahara/tests/integration/tests/resources/mapr/map_reduce_test_script.sh new file mode 100644 index 00000000..f5ea1bc9 --- /dev/null +++ b/sahara/tests/integration/tests/resources/mapr/map_reduce_test_script.sh @@ -0,0 +1,138 @@ +#!/bin/bash -x + +dir=/tmp/MapReduceTestOutput +log=$dir/log.txt + +HADOOP_EXAMPLES_JAR_PATH="" +HADOOP_LOG_DIRECTORY="" +HADOOP_USER="" + +NODE_COUNT="" + +case $1 in + run_pi_job) + FUNC="run_pi_job" + ;; + + get_pi_job_name) + FUNC="get_pi_job_name" + ;; + + check_directory) + FUNC="check_job_directory_existence" + ;; + + run_wordcount_job) + FUNC="run_wordcount_job" + ;; +esac +shift + +if [ "$1" = "-job_name" ]; then + JOB_NAME="$2" +fi +shift + +check_submitted_parameter() { + + case "$1" in + job_name) + if [ -z "$JOB_NAME" ]; then + echo "Job name not specified" + exit 1 + fi + ;; + esac +} + +check_job_directory_existence() { + + check_submitted_parameter job_name + + app_name=${JOB_NAME/"job"/"application"} + if ! [ -d $HADOOP_LOG_DIRECTORY/$JOB_NAME -o -d $HADOOP_LOG_DIRECTORY/$app_name ]; then + echo "Log file of \"PI\" job not found" + exit 1 + fi +} + +create_log_directory() { + + if ! [ -d $dir ]; then + mkdir $dir + chmod -R 777 $dir + touch $log + fi +} + +run_pi_job() { + + create_log_directory + + echo -e "****************************** NETSTAT ***************************\n" >> $log + + echo -e "`sudo netstat -plten | grep java` \n\n\n" >> $log + + echo -e "************************ START OF \"PI\" JOB *********************\n" >> $log + + sudo -u $HADOOP_USER bash -lc "hadoop jar $HADOOP_EXAMPLES_JAR_PATH pi $(($NODE_COUNT*10)) $(($NODE_COUNT*1000))" >> $log + + echo -e "************************ END OF \"PI\" JOB ***********************" >> $log +} + +get_pi_job_name() { + + #This sleep needs here for obtaining correct job name. Not always job name may immediately appear in job list. + sleep 60 + + job_name=`sudo -u $HADOOP_USER bash -lc "hadoop job -list all | grep '^[[:space:]]*job_' | sort | tail -n1" | awk '{print $1}'` + + if [ $job_name = "JobId" ]; then + echo "\"PI\" job name has not been obtained since \"PI\" job was not launched" >> $log + exit 1 + fi + + echo "$job_name" +} + +check_return_code_after_command_execution() { + + if [ "$1" = "-exit" ]; then + if [ "$2" -ne 0 ]; then + exit 1 + fi + fi + + if [ "$1" = "-clean_hdfs" ]; then + if [ "$2" -ne 0 ]; then + sudo -u $HADOOP_USER bash -lc "hadoop fs -rmr /map-reduce-test" && exit 1 + fi + fi +} + +run_wordcount_job() { + + create_log_directory + + dmesg > $dir/input + + sudo -u $HADOOP_USER bash -lc "hadoop fs -ls /" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -mkdir /map-reduce-test" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyFromLocal $dir/input /map-reduce-test/mydata" + check_return_code_after_command_execution -clean_hdfs `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop jar $HADOOP_EXAMPLES_JAR_PATH wordcount /map-reduce-test/mydata /map-reduce-test/output" + check_return_code_after_command_execution -clean_hdfs `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyToLocal /map-reduce-test/output $dir/output" + check_return_code_after_command_execution -exit `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -rmr /map-reduce-test" + check_return_code_after_command_execution -exit `echo "$?"` +} + +$FUNC diff --git a/sahara/tests/integration/tests/resources/mapr/swift_test_script.sh b/sahara/tests/integration/tests/resources/mapr/swift_test_script.sh new file mode 100644 index 00000000..0768c965 --- /dev/null +++ b/sahara/tests/integration/tests/resources/mapr/swift_test_script.sh @@ -0,0 +1,69 @@ +#!/bin/bash -x + +OS_TENANT_NAME="" +OS_USERNAME="" +OS_PASSWORD="" + +HADOOP_USER="" + +SWIFT_CONTAINER_NAME="" + +SWIFT_PARAMS="-D fs.swift.service.sahara.username=$OS_USERNAME" +SWIFT_PARAMS+=" -D fs.swift.service.sahara.tenant=$OS_TENANT_NAME" +SWIFT_PARAMS+=" -D fs.swift.service.sahara.password=$OS_PASSWORD" + + +compare_files() { + a=`md5sum $1 | awk {'print \$1'}` + b=`md5sum $2 | awk {'print \$1'}` + + if [ "$a" = "$b" ]; then + echo "md5-sums of files $1 and $2 are equal" + else + echo -e "\nUpload file to Swift: $1 \n" + echo -e "Download file from Swift: $2 \n" + echo -e "md5-sums of files $1 and $2 are not equal \n" + echo "$1 != $2"; cleanup; exit 1 + fi +} + +clean_local() { + sudo rm -rf /tmp/test-file /tmp/swift-test-file +} + +clean_mapr_fs() { + sudo -u $HADOOP_USER bash -lc "hadoop fs -rmr /swift-test" +} + +cleanup() { + clean_local; clean_mapr_fs +} + +check_return_code_after_command_execution() { + if [ "$1" -ne 0 ]; then + cleanup; exit 1; + fi +} + +check_swift_availability() { + dd if=/dev/urandom of=/tmp/test-file bs=1048576 count=1 + + sudo -u $HADOOP_USER bash -lc "hadoop fs -mkdir /swift-test" + check_return_code_after_command_execution `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyFromLocal /tmp/test-file /swift-test/test-file" + check_return_code_after_command_execution `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs $SWIFT_PARAMS -cp /swift-test/test-file swift://$SWIFT_CONTAINER_NAME.sahara/test-file" + check_return_code_after_command_execution `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs $SWIFT_PARAMS -cp swift://$SWIFT_CONTAINER_NAME.sahara/test-file /swift-test/swift-test-file" + check_return_code_after_command_execution `echo "$?"` + + sudo -u $HADOOP_USER bash -lc "hadoop fs -copyToLocal /swift-test/swift-test-file /tmp/swift-test-file" + check_return_code_after_command_execution `echo "$?"` + + compare_files /tmp/test-file /tmp/swift-test-file; cleanup +} + +check_swift_availability diff --git a/sahara/tests/integration/tests/scaling.py b/sahara/tests/integration/tests/scaling.py index ac0ebc83..01f972e8 100644 --- a/sahara/tests/integration/tests/scaling.py +++ b/sahara/tests/integration/tests/scaling.py @@ -88,6 +88,7 @@ class ScalingTest(base.ITestCase): self._change_node_info_while_ng_adding( node_group_id, node_group_size, cluster_info ) + scale_body = {key: value for key, value in scale_body.items() if value} self.sahara.clusters.scale(cluster_info['cluster_id'], scale_body) self.poll_cluster_state(cluster_info['cluster_id']) new_node_ip_list = self.get_cluster_node_ip_list_with_node_processes( diff --git a/sahara/tests/integration/tests/swift.py b/sahara/tests/integration/tests/swift.py index 0b7fe6fa..6fd5f00f 100644 --- a/sahara/tests/integration/tests/swift.py +++ b/sahara/tests/integration/tests/swift.py @@ -21,10 +21,13 @@ from sahara.tests.integration.tests import base class SwiftTest(base.ITestCase): + DEFAULT_TEST_SCRIPT = 'swift_test_script.sh' + @base.skip_test( 'SKIP_SWIFT_TEST', message='Test for check of Swift availability was skipped.') - def check_swift_availability(self, cluster_info): + def check_swift_availability(self, cluster_info, script=None): + script = script or SwiftTest.DEFAULT_TEST_SCRIPT plugin_config = cluster_info['plugin_config'] # Make unique name of Swift container during Swift testing swift_container_name = 'Swift-test-' + str(uuid.uuid4())[:8] @@ -39,7 +42,7 @@ class SwiftTest(base.ITestCase): self.open_ssh_connection(namenode_ip) try: self.transfer_helper_script_to_node( - 'swift_test_script.sh', parameter_list=extra_script_parameters + script, parameter_list=extra_script_parameters ) except Exception as e: diff --git a/sahara/tests/unit/plugins/mapr/stubs.py b/sahara/tests/unit/plugins/mapr/stubs.py deleted file mode 100644 index 5f8daf23..00000000 --- a/sahara/tests/unit/plugins/mapr/stubs.py +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.utils.configs as c - -import six - - -class AttrDict(dict): - - def __init__(self, *args, **kwargs): - super(AttrDict, self).__init__(*args, **kwargs) - self.__dict__ = self - -node_domain = None - - -class Cluster(AttrDict): - fields = ['id', 'name', 'description', 'tenant_id', 'trust_id', - 'is_transient', 'plugin_name', 'hadoop_version', - 'cluster_configs', 'default_image_id', 'anti_affinity', - 'management_private_key', 'management_public_key', - 'user_keypair_id', 'status', 'status_description', 'info', - 'extra', 'node_groups', 'cluster_template_id', - 'cluster_template'] - - def __init__(self, mapping=None, **kwargs): - self.id = None - self.cluster_template_id = None - self.cluster_template = None - self.node_groups = [] - d = dict((f, None) for f in Cluster.fields) - if mapping: - d.update(mapping) - if kwargs: - d.update(kwargs) - AttrDict.__init__(self, d) - if self.node_groups: - for ng in self.node_groups: - ng.cluster_id = self.id - ng.cluster = self - ng.cluster_template_id = self.cluster_template_id - ng.cluster_template = self.cluster_template - - -class NodeGroup(AttrDict): - fields = ['id', 'name', 'flavor_id', 'image_id', 'image_username', - 'node_processes', 'node_configs', 'volumes_per_node', - 'volumes_size', 'volume_mount_prefix', 'floating_ip_pool', - 'count', 'instances', 'node_group_template_id', - 'node_group_template', 'cluster_id', 'cluster', - 'cluster_template_id', 'cluster_template'] - - def __init__(self, mapping=None, **kwargs): - self.id = None - self.instances = [] - d = dict((f, None) for f in NodeGroup.fields) - if mapping: - d.update(mapping) - if kwargs: - d.update(kwargs) - AttrDict.__init__(self, d) - if self.instances: - for i in self.instances: - i.node_group_id = self.id - i.node_group = self - - def configuration(self): - return c.merge_configs(self.cluster.cluster_configs, self.node_configs) - - def storage_paths(self): - mp = [self.volume_mount_prefix + str(idx) - for idx in range(1, self.volumes_per_node + 1)] - if not mp: - mp = ['/mnt'] - return mp - - def get_image_id(self): - return self.image_id or self.cluster.default_image_id - - -class Instance(AttrDict): - fields = ['id', 'node_group_id', 'node_group', 'instance_id', - 'instance_name', 'internal_ip', 'management_ip', 'volumes'] - - def __init__(self, mapping=None, **kwargs): - d = dict((f, None) for f in Instance.fields) - p = lambda i: i[0] in Instance.fields - if mapping: - d.update(dict(filter(p, six.iteritems(mapping)))) - if kwargs: - d.update(dict(filter(p, six.iteritems(kwargs)))) - AttrDict.__init__(self, d) - results = kwargs['results'] if 'results' in kwargs else [] - default_result = (kwargs['default_result'] - if 'default_result' in kwargs - else Remote.DEFAULT_RESULT) - self._remote = Remote(results, default_result) - - def hostname(self): - return self.instance_name - - def fqdn(self): - return self.instance_name + '.' + node_domain - - def remote(self): - return self._remote - - -class Remote(object): - DEFAULT_RESULT = (0, '', '') - - def __init__(self, results=[], default_result=None): - self.fs = [] - self.history = [] - self.results = results - self.default_result = (default_result - if default_result - else Remote.DEFAULT_RESULT) - - def register_result(self, command, result): - result += [(command, result)] - - def get_result(self, command): - for r_command, result in self.results: - if r_command == command: - return result - return (self.default_result - if command['get_stderr'] - else self.default_result[:-1]) - - def __exit__(self, *args): - pass - - def __enter__(self): - return self - - def write_file_to(self, remote_file, data, run_as_root=False, timeout=120): - self.fs += [{'file': remote_file, 'data': data, 'root': run_as_root, - 'timeout': timeout}] - - def write_files_to(self, files, run_as_root=False, timeout=120): - self.fs += [{'file': f, 'data': d, 'root': run_as_root, - 'timeout': timeout} - for f, d in six.iteritems(files)] - - def read_file_from(self, remote_file, run_as_root=False, timeout=120): - for f in self.fs: - if f['file'] == remote_file: - return f['data'] - return None - - def replace_remote_string(self, remote_file, old_str, - new_str, timeout=120): - pass - - def get_neutron_info(self): - return - - def get_http_client(self, port, info=None): - return - - def close_http_sessions(self): - pass - - def execute_command(self, cmd, run_as_root=False, get_stderr=False, - raise_when_error=True, timeout=300): - command = {'cmd': cmd, - 'run_as_root': run_as_root, - 'get_stderr': get_stderr, - 'raise_when_error': raise_when_error, - 'timeout': timeout} - self.history += [command] - return self.get_result(command) diff --git a/sahara/tests/unit/plugins/mapr/test_base_handler.py b/sahara/tests/unit/plugins/mapr/test_base_handler.py new file mode 100644 index 00000000..4b3a4709 --- /dev/null +++ b/sahara/tests/unit/plugins/mapr/test_base_handler.py @@ -0,0 +1,112 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import six + +import sahara.plugins.mapr.abstract.cluster_context as abstract_context +from sahara.plugins.mapr.domain import service as bs +from sahara.plugins.mapr.services.management import management +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.oozie import oozie +from sahara.plugins.mapr.services.yarn import yarn +import sahara.plugins.mapr.versions.v4_0_1_mrv2.version_handler as handler +from sahara.plugins import provisioning as p +from sahara.tests.unit import base as b +from sahara.tests.unit import testutils as tu + + +class TestHandler(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestHandler, self).__init__(*args, **kwds) + self.handler = handler.VersionHandler() + self.cluster = self._get_cluster() + + def _get_cluster(self): + i1 = tu.make_inst_dict('id_1', 'instance_1', '1.1.1.1') + master_proc = [ + yarn.RESOURCE_MANAGER.ui_name, + yarn.NODE_MANAGER.ui_name, + yarn.HISTORY_SERVER.ui_name, + maprfs.CLDB.ui_name, + maprfs.FILE_SERVER.ui_name, + oozie.OOZIE.ui_name, + management.ZOOKEEPER.ui_name, + ] + + master_ng = tu.make_ng_dict('master', 'large', master_proc, 1, [i1]) + cluster_configs = { + 'Service': { + 'key': 'value', + 'Service Version': '1.1', + }, + } + + cluster = tu.create_cluster( + name='test_cluster', + tenant='large', + plugin='mapr', + version='4.0.1.mrv1', + node_groups=[master_ng], + cluster_configs=cluster_configs, + ) + self.ng = cluster.node_groups[0] + self.instance = self.ng.instances[0] + return cluster + + def test_get_context(self): + self.assertIsInstance(self.handler.get_context(self._get_cluster()), + abstract_context.AbstractClusterContext) + + def test_get_services(self): + services = self.handler.get_services() + for service in services: + self.assertIsInstance(service, bs.Service) + + def test_get_np_dict(self): + np_dict = self.handler.get_node_processes() + self.assertIsNotNone(np_dict) + self.assertIsInstance(np_dict, dict) + for k, v in six.iteritems(np_dict): + self.assertIsInstance(k, basestring) + self.assertIsInstance(v, list) + self.assertNotEqual(0, len(v)) + + def test_get_configs(self): + configs = self.handler.get_configs() + self.assertIsInstance(configs, list) + for config in configs: + self.assertIsInstance(config, p.Config) + + def test_get_version_configs(self): + version_configs = self.handler._get_version_configs() + self.assertIsInstance(version_configs, list) + for conf in version_configs: + self.assertIsInstance(conf, p.Config) + self.assertNotEqual(0, len(conf.config_values)) + self.assertNotEqual(1, len(conf.config_values)) + self.assertEqual('dropdown', conf.config_type) + + def test_get_configs_dict(self): + configs_dict = self.handler.get_configs_dict() + self.assertIsInstance(configs_dict, dict) + for k, v in six.iteritems(configs_dict): + self.assertIsInstance(k, basestring) + self.assertIsInstance(v, dict) + + def test_get_open_ports(self): + ports_list = self.handler.get_open_ports(self.ng) + self.assertIsNotNone(ports_list) + self.assertIsInstance(ports_list, list) + for port in ports_list: + self.assertIsInstance(port, int) diff --git a/sahara/tests/unit/plugins/mapr/test_cluster_context.py b/sahara/tests/unit/plugins/mapr/test_cluster_context.py new file mode 100644 index 00000000..37c2e5f8 --- /dev/null +++ b/sahara/tests/unit/plugins/mapr/test_cluster_context.py @@ -0,0 +1,265 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import testtools + +import sahara.exceptions as e +from sahara.plugins.mapr.domain import node_process as np +from sahara.plugins.mapr.services.management import management +from sahara.plugins.mapr.services.maprfs import maprfs +from sahara.plugins.mapr.services.oozie import oozie +from sahara.plugins.mapr.services.swift import swift +from sahara.plugins.mapr.services.yarn import yarn +import sahara.plugins.mapr.versions.v4_0_1_mrv2.context as cc +import sahara.plugins.mapr.versions.v4_0_1_mrv2.version_handler as handler +from sahara.plugins import provisioning as p +from sahara.tests.unit import base as b +from sahara.tests.unit import testutils as tu + + +class TestClusterContext(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestClusterContext, self).__init__(*args, **kwds) + self.fake_np = np.NodeProcess('fake', 'foo', 'bar') + + def _get_context(self): + i1 = tu.make_inst_dict('id_1', 'instance_1', '1.1.1.1') + master_proc = [ + yarn.RESOURCE_MANAGER.ui_name, + yarn.NODE_MANAGER.ui_name, + yarn.HISTORY_SERVER.ui_name, + maprfs.CLDB.ui_name, + maprfs.FILE_SERVER.ui_name, + oozie.OOZIE.ui_name, + management.ZOOKEEPER.ui_name, + ] + master_ng = tu.make_ng_dict('master', 'large', master_proc, 1, [i1]) + cluster_configs = { + 'Service': { + 'key': 'value', + 'Service Version': '1.1', + }, + } + cluster = tu.create_cluster( + name='test_cluster', + tenant='large', + plugin='mapr', + version='4.0.1.mrv1', + node_groups=[master_ng], + cluster_configs=cluster_configs, + ) + self.ng = cluster.node_groups[0] + self.instance = self.ng.instances[0] + return cc.Context(cluster, handler.VersionHandler()) + + def test_get_oozie_server_uri(self): + ctx = self._get_context() + self.assertEqual('http://1.1.1.1:11000/oozie', ctx.oozie_server_uri) + + def test_oozie_server(self): + ctx = self._get_context() + node_processes = ctx.oozie_server.node_group.node_processes + self.assertIn(oozie.OOZIE.ui_name, node_processes) + + def test_oozie_http(self): + ctx = self._get_context() + self.assertEqual('1.1.1.1:11000', ctx.oozie_http) + + def test_configure_sh(self): + ctx = self._get_context() + conf_sh = ctx.configure_sh + pattern = (r'^(\S+)\s+(-N (\S+))\s+(-C (\S+))\s+(-Z (\S+))\s+' + r'(-no-autostart)\s+(-f)\s+(-RM (\S+))\s(-HS (\S+))') + self.assertRegex(conf_sh, pattern) + self.assertIn('/opt/mapr/server/configure.sh', conf_sh) + self.assertIn('-C 1.1.1.1', conf_sh) + self.assertIn('-Z 1.1.1.1', conf_sh) + self.assertIn('-RM 1.1.1.1', conf_sh) + self.assertIn('-HS 1.1.1.1', conf_sh) + self.assertIn('-no-autostart', conf_sh) + self.assertIn('-N ' + ctx.cluster.name, conf_sh) + + def test_get_cluster_config_value(self): + ctx = self._get_context() + conf = p.Config('key', 'Service', 'cluster') + self.assertEqual('value', ctx._get_cluster_config_value(conf)) + not_set = p.Config('nonset', 'Service', 'cluster') + self.assertIsNone(ctx._get_cluster_config_value(not_set)) + + def test_get_instances(self): + ctx = self._get_context() + instances = ctx.get_instances() + self.assertEqual(1, len(instances)) + rms1 = ctx.get_instances(yarn.RESOURCE_MANAGER) + self.assertEqual(1, len(rms1)) + rms2 = ctx.get_instances(yarn.RESOURCE_MANAGER.ui_name) + self.assertEqual(1, len(rms2)) + not_existing_1 = ctx.get_instances(self.fake_np) + self.assertEqual(0, len(not_existing_1)) + not_existing_2 = ctx.get_instances(self.fake_np.ui_name) + self.assertEqual(0, len(not_existing_2)) + + def test_get_instance(self): + ctx = self._get_context() + instance_1 = ctx.get_instance(yarn.RESOURCE_MANAGER) + self.assertIn(yarn.RESOURCE_MANAGER.ui_name, + instance_1.node_group.node_processes) + instance_2 = ctx.get_instance(yarn.RESOURCE_MANAGER) + self.assertIn(yarn.RESOURCE_MANAGER.ui_name, + instance_2.node_group.node_processes) + self.assertIsNone(ctx.get_instance(self.fake_np)) + + def test_get_instances_ip(self): + ctx = self._get_context() + ip_list_1 = ctx.get_instances_ip(yarn.RESOURCE_MANAGER) + self.assertEqual(1, len(ip_list_1)) + self.assertIn('1.1.1.1', ip_list_1) + ip_list_2 = ctx.get_instances_ip(yarn.RESOURCE_MANAGER.ui_name) + self.assertEqual(1, len(ip_list_2)) + self.assertIn('1.1.1.1', ip_list_2) + empty_list = ctx.get_instances_ip(self.fake_np) + self.assertEqual(0, len(empty_list)) + + def test_get_instance_ip(self): + ctx = self._get_context() + ip_1 = ctx.get_instance_ip(yarn.RESOURCE_MANAGER) + self.assertEqual('1.1.1.1', ip_1) + ip_2 = ctx.get_instance_ip(yarn.RESOURCE_MANAGER.ui_name) + self.assertEqual('1.1.1.1', ip_2) + none_ip = ctx.get_instance_ip(self.fake_np) + self.assertIsNone(none_ip) + + def test_get_zookeeper_nodes_ip_with_port(self): + ctx = self._get_context() + self.assertEqual('1.1.1.1:5181', + ctx.get_zookeeper_nodes_ip_with_port()) + management.ZK_CLIENT_PORT = '0000' + self.assertEqual('1.1.1.1:0000', + ctx.get_zookeeper_nodes_ip_with_port()) + + def test_filter_instances(self): + ctx = self._get_context() + instances = ctx.get_instances() + rsmngs = ctx.filter_instances(instances, yarn.RESOURCE_MANAGER) + self.assertEqual(1, len(rsmngs)) + not_existing_i = ctx.filter_instances(instances, self.fake_np) + self.assertEqual(0, len(not_existing_i)) + + def test_check_for_process(self): + ctx = self._get_context() + instance = ctx.get_instance(yarn.RESOURCE_MANAGER) + self.assertTrue(ctx.check_for_process(instance, yarn.RESOURCE_MANAGER)) + self.assertTrue(ctx.check_for_process(instance, + yarn.RESOURCE_MANAGER.ui_name)) + self.assertFalse(ctx.check_for_process(instance, maprfs.NFS)) + self.assertFalse(ctx.check_for_process(instance, maprfs.NFS.ui_name)) + + def test_get_chosen_service_version(self): + ctx = self._get_context() + version = ctx.get_chosen_service_version('Service') + self.assertEqual('1.1', version) + + def test_get_cluster_services(self): + pass + ctx = self._get_context() + actual_services = ctx.get_cluster_services() + actual_services_names = map(lambda s: s.ui_name, actual_services) + expected_services_names = [ + yarn.YARN().ui_name, + management.Management().ui_name, + maprfs.MapRFS().ui_name, + oozie.Oozie().ui_name, + swift.Swift().ui_name, + ] + self.assertListEqual(sorted(actual_services_names), + sorted(expected_services_names)) + + def test_get_service(self): + ctx = self._get_context() + service = ctx.get_service(yarn.HISTORY_SERVER) + self.assertEqual(yarn.YARN().ui_name, service.ui_name) + with testtools.ExpectedException(e.InvalidDataException): + ctx.get_service(self.fake_np) + + def test_get_service_name_by_node_process(self): + ctx = self._get_context() + s_name_1 = ctx.get_service_name_by_node_process(yarn.RESOURCE_MANAGER) + self.assertEqual(yarn.YARN().ui_name, s_name_1) + s_name_2 = ctx.get_service_name_by_node_process( + yarn.RESOURCE_MANAGER.ui_name) + self.assertEqual(yarn.YARN().ui_name, s_name_2) + not_existing_np = np.NodeProcess('not_existing', 'NotExisting', 'foo') + self.assertIsNone(ctx.get_service_name_by_node_process( + not_existing_np)) + self.assertIsNone(ctx.get_service_name_by_node_process( + not_existing_np.ui_name)) + + def test_get_instances_count(self): + ctx = self._get_context() + self.assertEqual(1, ctx.get_instances_count()) + self.assertEqual(1, ctx.get_instances_count(yarn.RESOURCE_MANAGER)) + self.assertEqual(1, ctx.get_instances_count( + yarn.RESOURCE_MANAGER.ui_name)) + self.assertEqual(0, ctx.get_instances_count(self.fake_np)) + self.assertEqual(0, ctx.get_instances_count( + self.fake_np.ui_name)) + + def test_get_node_groups(self): + ctx = self._get_context() + all_ngs = ctx.get_node_groups() + self.assertEqual(1, len(all_ngs)) + self.assertEqual([self.ng], all_ngs) + rm_ngs_1 = ctx.get_node_groups(yarn.RESOURCE_MANAGER) + self.assertEqual(1, len(rm_ngs_1)) + self.assertEqual([self.ng], rm_ngs_1) + rm_ngs_2 = ctx.get_node_groups(yarn.RESOURCE_MANAGER.ui_name) + self.assertEqual(1, len(rm_ngs_2)) + self.assertEqual([self.ng], rm_ngs_2) + empty_ngs = ctx.get_node_groups(self.fake_np) + self.assertEqual(0, len(empty_ngs)) + + def test_get_cldb_nodes_ip(self): + ctx = self._get_context() + cldb_list_1 = ctx.get_cldb_nodes_ip() + self.assertEqual(1, len(cldb_list_1.split(','))) + self.assertIn('1.1.1.1', cldb_list_1) + cldb_list_2 = ctx.get_cldb_nodes_ip() + self.assertEqual(1, len(cldb_list_2.split(','))) + self.assertIn('1.1.1.1', cldb_list_2) + sep = ':' + cldb_list_3 = ctx.get_cldb_nodes_ip(sep) + self.assertEqual(1, len(cldb_list_3.split(sep))) + self.assertIn('1.1.1.1', cldb_list_3) + + def test_get_zookeeper_nodes_ip(self): + ctx = self._get_context() + zk_list_1 = ctx.get_zookeeper_nodes_ip() + self.assertEqual(1, len(zk_list_1.split(','))) + self.assertIn('1.1.1.1', zk_list_1) + zk_list_2 = ctx.get_zookeeper_nodes_ip() + self.assertEqual(1, len(zk_list_2.split(','))) + self.assertIn('1.1.1.1', zk_list_2) + sep = ':' + zk_list_3 = ctx.get_zookeeper_nodes_ip(sep) + self.assertEqual(1, len(zk_list_3.split(sep))) + self.assertIn('1.1.1.1', zk_list_3) + + def test_get_resourcemanager_ip(self): + ctx = self._get_context() + ip = ctx.get_resourcemanager_ip() + self.assertEqual('1.1.1.1', ip) + + def test_get_historyserver_ip(self): + ctx = self._get_context() + self.assertTrue(ctx.has_control_nodes([self.instance])) diff --git a/sahara/tests/unit/plugins/mapr/test_config_files.py b/sahara/tests/unit/plugins/mapr/test_config_files.py new file mode 100644 index 00000000..840189ce --- /dev/null +++ b/sahara/tests/unit/plugins/mapr/test_config_files.py @@ -0,0 +1,184 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import sahara.plugins.mapr.domain.configuration_file as conf_f +import sahara.tests.unit.base as b + + +class TestHadoopXML(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestHadoopXML, self).__init__(*args, **kwds) + self.content = ''' + + + + key1 + value1 + + + key2 + value2 + +''' + + def test_remote_path(self): + foo = conf_f.HadoopXML('foo') + foo.remote_path = '/bar' + self.assertEqual('/bar/foo', foo.remote_path) + + def test_parse(self): + foo = conf_f.HadoopXML('foo') + foo.parse(self.content) + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertDictEqual(expected, foo._config_dict) + + def test_render(self): + foo = conf_f.HadoopXML('foo') + expected = {'ke1': 'value1', 'key2': 'value2'} + foo._config_dict = expected + actual = foo.render() + bar = conf_f.HadoopXML('bar') + bar.parse(actual) + self.assertDictEqual(expected, bar._config_dict) + + def test_add_property(self): + foo = conf_f.HadoopXML('foo') + self.assertDictEqual(foo._config_dict, {}) + foo.add_property('key1', 'value1') + self.assertDictEqual(foo._config_dict, {'key1': 'value1'}) + foo.add_property('key2', 'value2') + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertDictEqual(expected, foo._config_dict) + + def test_get_config_value(self): + foo = conf_f.HadoopXML('foo') + foo._config_dict = {'foo': 'bar'} + self.assertEqual('bar', foo._get_config_value('foo')) + self.assertIsNone(foo._get_config_value('bar')) + + +class TestRawFile(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestRawFile, self).__init__(*args, **kwds) + self.content = 'some meaningful text' + + def test_remote_path(self): + foo = conf_f.RawFile('foo') + foo.remote_path = '/bar' + self.assertEqual('/bar/foo', foo.remote_path) + + def test_parse(self): + foo = conf_f.RawFile('foo') + foo.parse(self.content) + expected = {'content': self.content} + self.assertDictEqual(expected, foo._config_dict) + + def test_render(self): + foo = conf_f.RawFile('foo') + expected = {'content': 'foo bar'} + foo._config_dict = expected + actual = foo.render() + bar = conf_f.RawFile('bar') + bar.parse(actual) + self.assertDictEqual(expected, bar._config_dict) + + +class TestPropertiesFile(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestPropertiesFile, self).__init__(*args, **kwds) + self.content = ''' +key1=value1 +key2=value2 +''' + + def test_remote_path(self): + foo = conf_f.PropertiesFile('foo') + foo.remote_path = '/bar' + self.assertEqual('/bar/foo', foo.remote_path) + + def test_parse(self): + foo = conf_f.PropertiesFile('foo') + foo.parse(self.content) + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertDictEqual(expected, foo._config_dict) + + def test_render(self): + foo = conf_f.PropertiesFile('foo') + expected = {'ke1': 'value1', 'key2': 'value2'} + foo._config_dict = expected + actual = foo.render() + bar = conf_f.PropertiesFile('bar') + bar.parse(actual) + self.assertDictEqual(expected, bar._config_dict) + + def test_add_property(self): + foo = conf_f.PropertiesFile('foo') + expected = {} + self.assertDictEqual(expected, foo._config_dict) + + foo.add_property('key1', 'value1') + expected = {'key1': 'value1'} + self.assertDictEqual(expected, foo._config_dict) + + foo.add_property('key2', 'value2') + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertDictEqual(expected, foo._config_dict) + + def test_get_config_value(self): + foo = conf_f.PropertiesFile('foo') + foo._config_dict = {'foo': 'bar'} + self.assertEqual('bar', foo._get_config_value('foo')) + self.assertIsNone(foo._get_config_value('bar')) + + +class TestTemplateFile(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestTemplateFile, self).__init__(*args, **kwds) + self.content = ''' +key1={{ value1 }} +key2={{ value2 }}''' + self.rendered = ''' +key1=value1 +key2=value2''' + + def test_remote_path(self): + foo = conf_f.TemplateFile('foo') + foo.remote_path = '/bar' + self.assertEqual('/bar/foo', foo.remote_path) + + def test_parse(self): + foo = conf_f.TemplateFile('foo') + foo.parse(self.content) + self.assertIsNotNone(foo._template) + + def test_render(self): + foo = conf_f.TemplateFile('foo') + expected = {'value1': 'value1', 'value2': 'value2'} + foo.parse(self.content) + foo._config_dict = expected + actual = foo.render() + self.assertEqual(self.rendered, actual) + + def test_add_property(self): + foo = conf_f.TemplateFile('foo') + expected = {} + self.assertDictEqual(expected, foo._config_dict) + + foo.add_property('key1', 'value1') + expected = {'key1': 'value1'} + self.assertDictEqual(expected, foo._config_dict) + + foo.add_property('key2', 'value2') + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertDictEqual(expected, foo._config_dict) diff --git a/sahara/tests/unit/plugins/mapr/test_distro.py b/sahara/tests/unit/plugins/mapr/test_distro.py new file mode 100644 index 00000000..ea961e8f --- /dev/null +++ b/sahara/tests/unit/plugins/mapr/test_distro.py @@ -0,0 +1,34 @@ +# Copyright (c) 2015, MapR Technologies +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from sahara.plugins.mapr.domain import distro as distro +import sahara.tests.unit.base as b + + +class TestDistro(b.SaharaTestCase): + def __init__(self, *args, **kwds): + super(TestDistro, self).__init__(*args, **kwds) + self.install_cmd = 'foo_bar' + self.separator = '-' + self.distro = distro.Distro('foo', self.install_cmd, self.separator) + + def test_create_install_cmd(self): + pkgs = [('foo',), ('bar', 'version')] + cmd = self.distro.create_install_cmd(pkgs) + self.assertIsNotNone(cmd) + parts = cmd.split(' ') + self.assertEqual(self.install_cmd, parts[0]) + self.assertEqual('foo', parts[1]) + self.assertEqual('bar', parts[2].split(self.separator)[0]) + self.assertEqual('version*', parts[2].split(self.separator)[1]) diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/cldb-1.conf b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/cldb-1.conf deleted file mode 100644 index 680f62a5..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/cldb-1.conf +++ /dev/null @@ -1,2 +0,0 @@ -net.topology.script.file.name=/opt/mapr/topology.sh -cldb.zookeeper.servers=192.168.1.10:5181,192.168.1.11:5181,192.168.1.12:5181 \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-0.xml b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-0.xml deleted file mode 100644 index 34b8300e..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-0.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - fs.swift.impl - org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem - - - - fs.swift.socket.timeout - 60000 - - - fs.swift.blocksize - 32768 - - - fs.swift.connect.retry.count - 3 - - - fs.swift.service.sahara.auth.endpoint.prefix - /endpoints/AUTH_ - - - fs.swift.connect.timeout - 15000 - - - fs.swift.requestsize - 64 - - - fs.swift.connect.throttle.delay - 0 - - - k1 - v1 - - - k0 - v0 - - - fs.swift.service.sahara.https.port - 443 - - - fs.swift.partsize - 4718592 - - - fs.swift.service.sahara.auth.url - http://auth:None/v2.0/tokens/ - - - fs.swift.service.sahara.public - True - - - fs.swift.service.sahara.http.port - 8080 - - - fs.swift.service.sahara.tenant - tenant_0 - - \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-1.xml b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-1.xml deleted file mode 100644 index e9c85a21..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/core-site-1.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - fs.swift.requestsize - 64 - - - fs.swift.impl - org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem - - - - fs.swift.socket.timeout - 60000 - - - fs.swift.blocksize - 32768 - - - net.topology.impl - org.apache.hadoop.net.NetworkTopologyWithNodeGroup - - - fs.swift.connect.retry.count - 3 - - - fs.swift.service.sahara.auth.endpoint.prefix - /endpoints/AUTH_ - - - fs.swift.connect.timeout - 15000 - - - dfs.block.replicator.classname - org.apache.hadoop.hdfs.server.namenode.BlockPlacementPolicyWithNodeGroup - - - - fs.swift.connect.throttle.delay - 0 - - - k1 - v1 - - - k0 - v0 - - - net.topology.nodegroup.aware - True - - - fs.swift.service.sahara.https.port - 443 - - - fs.swift.partsize - 4718592 - - - fs.swift.service.sahara.auth.url - http://auth:None/v2.0/tokens/ - - - fs.swift.service.sahara.public - True - - - fs.swift.service.sahara.http.port - 8080 - - - fs.swift.service.sahara.tenant - tenant_0 - - \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-0.xml b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-0.xml deleted file mode 100644 index e861a8fa..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-0.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - node_config_0 - False - - \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-1.xml b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-1.xml deleted file mode 100644 index 38cad9ef..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/mapred-site-1.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - node_config_0 - False - - - mapred.task.cache.levels - 3 - - - mapred.jobtracker.nodegroup.aware - True - - \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/topology-1.data b/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/topology-1.data deleted file mode 100644 index 1154eb4a..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/bcc_expected/topology-1.data +++ /dev/null @@ -1,9 +0,0 @@ -10.10.1.12 r -10.10.1.10 r -10.10.1.11 r -192.168.1.12 r -i1 r -i0 r -192.168.1.11 r -192.168.1.10 r -i2 r \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/compute.topology b/sahara/tests/unit/plugins/mapr/utils/resources/compute.topology deleted file mode 100644 index e65d9ab4..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/compute.topology +++ /dev/null @@ -1,6 +0,0 @@ -edp-master-0001 /rack1 -10.50.0.8 /rack1 -edp-slave-0002 /rack1 -10.50.0.5 /rack1 -edp-slave-0001 /rack2 -10.50.0.6 /rack2 diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec.json b/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec.json deleted file mode 100644 index b36534aa..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "files": [ - { - "remote": null, - "type": null, - "configs": { - "required": { - "cluster": [ - { - "name": "k4" - } - ] - } - } - }, - { - "remote": "file_0", - "type": "properties" - }, - { - "remote": "file_1", - "local": "test.properties", - "type": "properties", - "configs": { - "required": { - "cluster": [ - { - "name": "k0", - "default_value": "default_value_0", - "description": "description_0", - "priority": 2 - } - ], - "node": [ - { - "name": "k1", - "config_type": "int", - "default_value": 3, - "priority": 1 - } - ] - }, - "optional": { - "cluster": [ - { - "name": "k2", - "config_type": "bool" - } - ], - "node": [ - { - "name": "k3" - } - ] - } - } - }, - { - "remote": "file_2", - "local": "test.xml", - "type": "xml" - }, - { - "remote": "file_3", - "local": "raw.data", - "type": "raw" - } - ], - "services": [ - { - "name": "general", - "files": [ - null, - "file_3" - ] - }, - { - "name": "service_0" - }, - { - "name": "service_1", - "files": [ - - ], - "node_processes": [ - - ] - }, - { - "name": "service_2", - "files": [ - "file_0", - "file_1", - "file_2" - ], - "node_processes": [ - "node_process_0", - "node_process_1" - ], - "versions": [ - "v1", - "v2" - ] - } - ] -} \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json b/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json deleted file mode 100644 index c7b36ade..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "files":[ - { - "remote":null, - "type":null, - "configs":{ - "required":{ - "cluster":[ - { - "name":"Enable Data Locality", - "config_type":"bool", - "default_value":false, - "priority":1 - }, - { - "name":"Enable MapR-DB", - "config_type":"bool", - "default_value":false, - "priority":1 - } - ] - } - } - }, - { - "remote":"/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml", - "type":"xml", - "configs":{ - "required":{ - "node":[ - { - "name":"node_config_0", - "config_type":"bool", - "default_value":false, - "priority":1 - } - ] - } - } - }, - { - "remote":"/opt/mapr/conf/cldb.conf", - "type":"properties" - }, - { - "remote":"/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml", - "local":"test.xml", - "type":"xml", - "configs":{ - "optional":{ - "cluster":[ - { - "name":"fs.swift.impl", - "default_value":"org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem" - }, - { - "name":"fs.swift.connect.timeout", - "config_type":"int", - "default_value":15000 - }, - { - "name":"fs.swift.socket.timeout", - "config_type":"int", - "default_value":60000 - }, - { - "name":"fs.swift.connect.retry.count", - "config_type":"int", - "default_value":3 - }, - { - "name":"fs.swift.connect.throttle.delay", - "config_type":"int", - "default_value":0 - }, - { - "name":"fs.swift.blocksize", - "config_type":"int", - "default_value":32768 - }, - { - "name":"fs.swift.partsize", - "config_type":"int", - "default_value":4718592 - }, - { - "name":"fs.swift.requestsize", - "config_type":"int", - "default_value":64 - }, - { - "name":"fs.swift.service.sahara.public", - "config_type":"bool", - "default_value":true - }, - { - "name":"fs.swift.service.sahara.http.port", - "config_type":"int", - "default_value":8080 - }, - { - "name":"fs.swift.service.sahara.https.port", - "config_type":"int", - "default_value":443 - }, - { - "name":"fs.swift.service.sahara.auth.endpoint.prefix", - "default_value":"/endpoints/AUTH_" - } - ] - } - } - } - ], - "services":[ - { - "name":"general", - "files":[ - null - ] - }, - { - "name":"Management", - "node_processes":[ - "ZooKeeper", - "Webserver", - "MapR Client", - "Metrics" - ] - }, - { - "name":"MapReduce", - "node_processes":[ - "TaskTracker", - "JobTracker" - ], - "files":[ - "/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml" - ] - }, - { - "name":"MapR FS", - "node_processes":[ - "CLDB", - "FileServer", - "NFS" - ], - "files":[ - "/opt/mapr/conf/cldb.conf", - "/opt/mapr/hadoop/hadoop-0.20.2/conf/core-site.xml" - ] - }, - { - "name":"HBase", - "node_processes":[ - "HBase Master", - "HBase RegionServer", - "HBase Client" - ] - }, - { - "name":"Oozie", - "node_processes":[ - "Oozie" - ] - } - ] -} \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/raw.data b/sahara/tests/unit/plugins/mapr/utils/resources/raw.data deleted file mode 100644 index d1553b51..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/raw.data +++ /dev/null @@ -1 +0,0 @@ -Some unparsable data \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/test.properties b/sahara/tests/unit/plugins/mapr/utils/resources/test.properties deleted file mode 100644 index 03d36e41..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/test.properties +++ /dev/null @@ -1,4 +0,0 @@ -k0 = v0 - -# Comment -k1 = v1 \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/resources/test.xml b/sahara/tests/unit/plugins/mapr/utils/resources/test.xml deleted file mode 100644 index 5058ad94..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/resources/test.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - k0 - v0 - - - k1 - v1 - - \ No newline at end of file diff --git a/sahara/tests/unit/plugins/mapr/utils/test_cluster_info.py b/sahara/tests/unit/plugins/mapr/utils/test_cluster_info.py deleted file mode 100644 index 638d4e46..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/test_cluster_info.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.util.cluster_info as ci -import sahara.plugins.mapr.util.plugin_spec as ps -import sahara.tests.unit.base as b -import sahara.tests.unit.plugins.mapr.stubs as s - - -class ClusterInfoTest(b.SaharaTestCase): - - def assertItemsEqual(self, expected, actual): - for e in expected: - self.assertIn(e, actual) - for a in actual: - self.assertIn(a, expected) - - def setUp(self): - b.SaharaTestCase.setUp(self) - path = 'tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json' - self.plugin_spec = ps.PluginSpec(path) - - def test_get_node_group_services(self): - node_processes = ['ZooKeeper', 'Webserver', 'CLDB'] - node_group = s.NodeGroup(None, node_processes=node_processes) - cluster_info = ci.ClusterInfo(None, self.plugin_spec) - actual = cluster_info.get_services(node_group) - expected = ['Management', 'MapR FS', 'general'] - self.assertItemsEqual(expected, actual) - - def test_get_cluster_services(self): - np0 = ['ZooKeeper', 'Webserver', 'CLDB'] - ng0 = s.NodeGroup(node_processes=np0) - np1 = ['ZooKeeper', 'TaskTracker', 'FileServer'] - ng1 = s.NodeGroup(node_processes=np1) - cluster = s.Cluster(node_groups=[ng0, ng1]) - cluster_info = ci.ClusterInfo(cluster, self.plugin_spec) - actual = cluster_info.get_services() - expected = ['Management', 'MapR FS', 'general', 'MapReduce'] - self.assertItemsEqual(expected, actual) diff --git a/sahara/tests/unit/plugins/mapr/utils/test_config_file_utils.py b/sahara/tests/unit/plugins/mapr/utils/test_config_file_utils.py deleted file mode 100644 index c3891553..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/test_config_file_utils.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import os -import StringIO as sio - -import sahara.plugins.mapr.util.config_file_utils as cfu -import sahara.tests.unit.base as b - -import mock as m - - -dirname = os.path.dirname(__file__) - - -class ConfigFileUtilsTest(b.SaharaTestCase): - - def assertItemsEqual(self, expected, actual): - for e in expected: - self.assertIn(e, actual) - for a in actual: - self.assertIn(a, expected) - - def test_load_properties_file(self): - path = 'tests/unit/plugins/mapr/utils/resources/test.properties' - actual = cfu.load_properties_file(path) - expected = {'k0': 'v0', 'k1': 'v1'} - self.assertEqual(expected, actual) - - def test_load_xml_file(self): - path = 'tests/unit/plugins/mapr/utils/resources/test.xml' - actual = cfu.load_xml_file(path) - expected = {'k0': 'v0', 'k1': 'v1'} - self.assertEqual(expected, actual) - - def test_load_raw_file(self): - path = 'tests/unit/plugins/mapr/utils/resources/raw.data' - actual = cfu.load_raw_file(path) - expected = {'content': 'Some unparsable data'} - self.assertEqual(expected, actual) - - @m.patch('__builtin__.open') - def test_to_properties_file_content(self, o_mock): - data = {'k0': 'v0', 'k1': 'v1'} - s = sio.StringIO(cfu.to_properties_file_content(data)) - s.flush() - o_mock.return_value = s - actual = cfu.load_properties_file('') - self.assertEqual(data, actual) - - data = {} - actual = cfu.to_properties_file_content(data) - expected = '' - self.assertEqual(expected, actual) - - @m.patch('__builtin__.open') - def test_to_xml_file_content(self, o_mock): - data = {'k0': 'v0', 'k1': 'v1'} - s = sio.StringIO(cfu.to_xml_file_content(data)) - s.flush() - o_mock.return_value = s - actual = cfu.load_xml_file('') - self.assertEqual(data, actual) - - def test_to_raw_file_content(self): - data = {'content': 'Some unparsable data'} - actual = cfu.to_raw_file_content(data) - expected = 'Some unparsable data' - self.assertEqual(expected, actual) - - def test_load_file(self): - path = 'tests/unit/plugins/mapr/utils/resources/test.properties' - actual = cfu.load_file(path, 'properties') - expected = {'k0': 'v0', 'k1': 'v1'} - self.assertEqual(expected, actual) - - path = 'tests/unit/plugins/mapr/utils/resources/test.xml' - actual = cfu.load_file(path, 'xml') - expected = {'k0': 'v0', 'k1': 'v1'} - self.assertEqual(expected, actual) - - path = 'tests/unit/plugins/mapr/utils/resources/raw.data' - actual = cfu.load_file(path, 'raw') - expected = {'content': 'Some unparsable data'} - self.assertEqual(expected, actual) diff --git a/sahara/tests/unit/plugins/mapr/utils/test_dict_utils.py b/sahara/tests/unit/plugins/mapr/utils/test_dict_utils.py deleted file mode 100644 index 35c0f1f3..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/test_dict_utils.py +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.util.dict_utils as du -import sahara.plugins.mapr.util.func_utils as fu -import sahara.tests.unit.base as b - - -class DictUtilsTest(b.SaharaTestCase): - - def assertItemsEqual(self, expected, actual): - for e in expected: - self.assertIn(e, actual) - for a in actual: - self.assertIn(a, expected) - - def assertDictValueItemsEqual(self, expected, actual): - self.assertItemsEqual(expected.keys(), actual.keys()) - for k in actual: - self.assertItemsEqual(expected[k], actual[k]) - - def test_append_to_key(self): - arg_0 = {'k0': ['v0', 'v1'], 'k1': ['v1', 'v2'], 'k3': ['v3']} - arg_1 = {'v0': {'a': 'a'}, 'v1': {'b': 'b'}, - 'v2': {'c': 'c'}, 'v4': {'d': 'd'}} - actual = du.append_to_key(arg_0, arg_1) - expected = {'k0': {'v0': {'a': 'a'}, 'v1': {'b': 'b'}}, - 'k1': {'v1': {'b': 'b'}, 'v2': {'c': 'c'}}, - 'k3': {}} - self.assertEqual(expected, actual) - - def test_iterable_to_values_pair_dict_reducer(self): - vp_dict_r = du.iterable_to_values_pair_dict_reducer - arg = [[{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a1', 'b': 'b1', 'c': 'c1'}], - [{'a': 'a2', 'b': 'b2', 'c': 'c2'}]] - reducer = vp_dict_r('a', 'b') - actual = reduce(reducer, arg, {}) - expected = {'a0': 'b0', 'a1': 'b1', 'a2': 'b2'} - self.assertEqual(expected, actual) - - def test_flatten_to_list_reducer(self): - arg = [[{'a': 'a0'}, {'a': 'a1'}], [{'a': 'a2'}]] - reducer = du.flatten_to_list_reducer() - actual = reduce(reducer, arg, []) - expected = [{'a': 'a0'}, {'a': 'a1'}, {'a': 'a2'}] - self.assertItemsEqual(expected, actual) - - def test_map_by_field_value(self): - arg = [{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a0', 'b': 'b2', 'c': 'c1'}, - {'a': 'a2', 'b': 'b2', 'c': 'c2'}] - - actual = du.map_by_field_value(arg, 'a') - expected = {'a0': [{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a0', 'b': 'b2', 'c': 'c1'}], - 'a2': [{'a': 'a2', 'b': 'b2', 'c': 'c2'}]} - self.assertDictValueItemsEqual(expected, actual) - - actual = du.map_by_field_value(arg, 'c') - expected = {'c0': [{'a': 'a0', 'b': 'b0', 'c': 'c0'}], - 'c1': [{'a': 'a0', 'b': 'b2', 'c': 'c1'}], - 'c2': [{'a': 'a2', 'b': 'b2', 'c': 'c2'}]} - self.assertDictValueItemsEqual(expected, actual) - - def test_map_by_fields_values(self): - arg = [{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a0', 'b': 'b2', 'c': 'c1'}, - {'a': 'a2', 'b': 'b2', 'c': 'c2'}] - actual = du.map_by_fields_values(arg, ['a', 'b', 'c']) - expected = {'a0': {'b0': {'c0': [{'a': 'a0', 'b': 'b0', 'c': 'c0'}]}, - 'b2': {'c1': [{'a': 'a0', 'b': 'b2', 'c': 'c1'}]}}, - 'a2': {'b2': {'c2': [{'a': 'a2', 'b': 'b2', 'c': 'c2'}]}}} - self.assertItemsEqual(expected.keys(), actual.keys()) - for k0 in actual: - self.assertItemsEqual(expected[k0].keys(), actual[k0].keys()) - for k1 in actual[k0]: - self.assertDictValueItemsEqual( - expected[k0][k1], actual[k0][k1]) - - def test_get_keys_by_value_type(self): - arg = {'dict_0': {}, 'list': [], 'set': set(['elem']), - 'str': 'str', 'dict_1': {}} - - actual = du.get_keys_by_value_type(arg, dict) - expected = ['dict_0', 'dict_1'] - self.assertItemsEqual(expected, actual) - - actual = du.get_keys_by_value_type(arg, list) - expected = ['list'] - self.assertItemsEqual(expected, actual) - - def test_deep_update(self): - arg_0 = {'a0': {'b0': {'c0': 'v0', 'c1': 'v1'}}, - 'a1': {'b1': 'v2'}, 'a3': 'v3'} - arg_1 = {'a0': {'b0': {'c0': 'v1', 'c2': 'v2'}, 'b1': 'v4'}, - 'a1': 'v5', 'a3': {'v1': 'v2'}} - actual = du.deep_update(arg_0, arg_1) - expected = {'a0': {'b0': {'c0': 'v1', 'c1': 'v1', 'c2': 'v2'}, - 'b1': 'v4'}, - 'a1': 'v5', 'a3': {'v1': 'v2'}} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg_0) - - def test_get_keys_by_value(self): - arg = {'k0': 'v0', 'k1': 'v0', 'k2': 'v2'} - - actual = du.get_keys_by_value(arg, 'v0') - expected = ['k0', 'k1'] - self.assertItemsEqual(expected, actual) - - actual = du.get_keys_by_value(arg, 'v2') - expected = ['k2'] - self.assertItemsEqual(expected, actual) - - actual = du.get_keys_by_value(arg, 'v') - expected = [] - self.assertItemsEqual(expected, actual) - - def test_get_keys_by_value_2(self): - arg = {'k0': ['v0', 'v1'], 'k1': ['v1', 'v2'], 'k2': ['v2', 'v3']} - - actual = du.get_keys_by_value_2(arg, 'v1') - expected = ['k0', 'k1'] - self.assertItemsEqual(expected, actual) - - actual = du.get_keys_by_value_2(arg, 'v3') - expected = ['k2'] - self.assertItemsEqual(expected, actual) - - actual = du.get_keys_by_value_2(arg, 'v') - expected = [] - self.assertItemsEqual(expected, actual) - - def test_iterable_to_values_list_reducer(self): - arg = [[{'a': 'a0', 'b': 'b0'}, {'a': 'a1', 'b': 'b0'}], [{'a': 'a2'}]] - reducer = du.iterable_to_values_list_reducer('a') - actual = reduce(reducer, arg, []) - expected = ['a0', 'a1', 'a2'] - self.assertTrue(isinstance(actual, list)) - self.assertItemsEqual(expected, actual) - - def test_select(self): - source = [{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a1', 'b': 'b1', 'c': 'c0'}, - {'a': 'a2', 'b': 'b2', 'c': 'c0'}] - - predicate = fu.like_predicate({'c': 'c0'}) - actual = du.select(['a', 'b', 'c'], source, predicate) - expected = [{'a': 'a0', 'b': 'b0', 'c': 'c0'}, - {'a': 'a1', 'b': 'b1', 'c': 'c0'}, - {'a': 'a2', 'b': 'b2', 'c': 'c0'}] - self.assertItemsEqual(expected, actual) - - predicate = fu.in_predicate('b', ['b0', 'b1']) - actual = du.select(['a'], source, predicate) - expected = [{'a': 'a0'}, {'a': 'a1'}] - self.assertItemsEqual(expected, actual) - - def test_list_of_vp_dicts_function(self): - arg = {'a0': 'b0', 'a1': 'b1'} - actual = du.list_of_vp_dicts_function('a', 'b')(arg) - expected = [{'a': 'a0', 'b': 'b0'}, {'a': 'a1', 'b': 'b1'}] - self.assertTrue(isinstance(actual, list)) - for a in actual: - self.assertTrue(isinstance(a, dict)) - self.assertItemsEqual(expected, actual) - - def test_flattened_dict(self): - arg = {'a0': {'b0': {'c0': 'd0'}}, - 'a1': {'b0': {'c1': 'd1', - 'c2': 'd2'}, - 'b1': {'c0': 'd0'}}} - - actual = du.flattened_dict(arg, ['a', 'b', 'c', 'd']) - expected = [{'a': 'a0', 'b': 'b0', 'c': 'c0', 'd': 'd0'}, - {'a': 'a1', 'b': 'b0', 'c': 'c1', 'd': 'd1'}, - {'a': 'a1', 'b': 'b0', 'c': 'c2', 'd': 'd2'}, - {'a': 'a1', 'b': 'b1', 'c': 'c0', 'd': 'd0'}] - self.assertItemsEqual(expected, actual) - - arg = {'a0': 'b0', 'a1': 'b1'} - actual = du.flattened_dict(arg, ['a', 'b']) - expected = [{'a': 'a0', 'b': 'b0'}, {'a': 'a1', 'b': 'b1'}] - self.assertItemsEqual(expected, actual) diff --git a/sahara/tests/unit/plugins/mapr/utils/test_func_utils.py b/sahara/tests/unit/plugins/mapr/utils/test_func_utils.py deleted file mode 100644 index 2e8d37de..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/test_func_utils.py +++ /dev/null @@ -1,202 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import sahara.plugins.mapr.util.func_utils as fu -import sahara.tests.unit.base as b - - -class PredicatesTest(b.SaharaTestCase): - - def test_true_predicate(self): - self.assertTrue(fu.true_predicate(None)) - - def test_false_predicate(self): - self.assertFalse(fu.false_predicate(None)) - - def test_not_predicate(self): - self.assertFalse(fu.not_predicate(fu.true_predicate)(None)) - self.assertTrue(fu.not_predicate(fu.false_predicate)(None)) - - def test_and_predicate(self): - true_p = fu.true_predicate - false_p = fu.false_predicate - and_p = fu.and_predicate - self.assertTrue(and_p(true_p, true_p)(None)) - self.assertFalse(and_p(false_p, true_p)(None)) - self.assertFalse(and_p(true_p, false_p)(None)) - self.assertFalse(and_p(false_p, false_p)(None)) - - def test_or_predicate(self): - true_p = fu.true_predicate - false_p = fu.false_predicate - or_p = fu.or_predicate - self.assertTrue(or_p(true_p, true_p)(None)) - self.assertTrue(or_p(false_p, true_p)(None)) - self.assertTrue(or_p(true_p, false_p)(None)) - self.assertFalse(or_p(false_p, false_p)(None)) - - def test_field_equals_predicate(self): - field_equals_p = fu.field_equals_predicate - arg = {'a': 'a', 'b': 'b'} - self.assertTrue(field_equals_p('a', 'a')(arg)) - self.assertFalse(field_equals_p('b', 'a')(arg)) - - def test_like_predicate(self): - like_p = fu.like_predicate - arg = {'a': 'a', 'b': 'b', 'c': 'c'} - self.assertTrue(like_p({'a': 'a', 'b': 'b', 'c': 'c'})(arg)) - self.assertTrue(like_p({'a': 'a', 'b': 'b'})(arg)) - self.assertTrue(like_p({'a': 'a'})(arg)) - self.assertTrue(like_p({'a': 'a'}, ['a'])(arg)) - self.assertTrue(like_p({})(arg)) - self.assertTrue(like_p({'a': 'a', 'b': 'b', 'c': 'a'}, ['c'])(arg)) - self.assertFalse(like_p({'a': 'a', 'b': 'b', 'c': 'a'})(arg)) - self.assertFalse(like_p({'a': 'a', 'c': 'a'})(arg)) - self.assertFalse(like_p({'c': 'a'}, ['a'])(arg)) - - def test_in_predicate(self): - in_p = fu.in_predicate - arg = {'a': 'a', 'b': 'b'} - self.assertTrue(in_p('a', ['a', 'b'])(arg)) - self.assertFalse(in_p('a', ['c', 'b'])(arg)) - self.assertFalse(in_p('a', [])(arg)) - - -class FunctionsTest(b.SaharaTestCase): - - def test_copy_function(self): - copy_f = fu.copy_function - arg = {'a': 'a'} - - actual = copy_f()(arg) - expected = {'a': 'a'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - def test_append_field_function(self): - append_field_f = fu.append_field_function - arg = {'a': 'a'} - - actual = append_field_f('b', 'b')(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - def test_append_fields_function(self): - append_fields_f = fu.append_fields_function - arg = {'a': 'a'} - - actual = append_fields_f({'b': 'b', 'c': 'c'})(arg) - expected = {'a': 'a', 'b': 'b', 'c': 'c'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - actual = append_fields_f({'b': 'b'})(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - actual = append_fields_f({})(arg) - expected = {'a': 'a'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - def test_get_values_pair_function(self): - get_values_pair_f = fu.get_values_pair_function - arg = {'a': 'a', 'b': 'b'} - - actual = get_values_pair_f('a', 'b')(arg) - expected = ('a', 'b') - self.assertEqual(expected, actual) - - def test_get_field_function(self): - get_field_f = fu.get_field_function - arg = {'a': 'a', 'b': 'b'} - - actual = get_field_f('a')(arg) - expected = ('a', 'a') - self.assertEqual(expected, actual) - - def test_get_fields_function(self): - get_fields_f = fu.get_fields_function - arg = {'a': 'a', 'b': 'b'} - - actual = get_fields_f(['a', 'b'])(arg) - expected = [('a', 'a'), ('b', 'b')] - self.assertEqual(expected, actual) - - actual = get_fields_f(['a'])(arg) - expected = [('a', 'a')] - self.assertEqual(expected, actual) - - def test_extract_fields_function(self): - extract_fields_f = fu.extract_fields_function - arg = {'a': 'a', 'b': 'b'} - - actual = extract_fields_f(['a', 'b'])(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) - - actual = extract_fields_f(['a'])(arg) - expected = {'a': 'a'} - self.assertEqual(expected, actual) - - def test_get_value_function(self): - get_value_f = fu.get_value_function - arg = {'a': 'a', 'b': 'b'} - - actual = get_value_f('a')(arg) - expected = 'a' - self.assertEqual(expected, actual) - - def test_set_default_value_function(self): - set_default_value_f = fu.set_default_value_function - arg = {'a': 'a'} - - actual = set_default_value_f('b', 'b')(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - actual = set_default_value_f('a', 'b')(arg) - expected = {'a': 'a'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - def test_set_default_values_function(self): - set_default_values_f = fu.set_default_values_function - arg = {'a': 'a'} - - actual = set_default_values_f({'a': 'b', 'c': 'c'})(arg) - expected = {'a': 'a', 'c': 'c'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - actual = set_default_values_f({'b': 'b'})(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - actual = set_default_values_f({})(arg) - expected = {'a': 'a'} - self.assertEqual(expected, actual) - self.assertIsNot(actual, arg) - - def test_values_pair_to_dict_function(self): - values_pair_to_dict_f = fu.values_pair_to_dict_function - arg = ('a', 'b') - - actual = values_pair_to_dict_f('a', 'b')(arg) - expected = {'a': 'a', 'b': 'b'} - self.assertEqual(expected, actual) diff --git a/sahara/tests/unit/plugins/mapr/utils/test_plugin_spec.py b/sahara/tests/unit/plugins/mapr/utils/test_plugin_spec.py deleted file mode 100644 index 3854d876..00000000 --- a/sahara/tests/unit/plugins/mapr/utils/test_plugin_spec.py +++ /dev/null @@ -1,324 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - - -import os - -import sahara.plugins.mapr.util.plugin_spec as ps -import sahara.plugins.provisioning as p -import sahara.tests.unit.base as b - -import mock as m - - -class PluginSpecTest(b.SaharaTestCase): - - def assertItemsEqual(self, expected, actual): - for e in expected: - self.assertIn(e, actual) - for a in actual: - self.assertIn(a, expected) - - def assertDictValueItemsEqual(self, expected, actual): - self.assertItemsEqual(expected.keys(), actual.keys()) - for k in actual: - self.assertItemsEqual(expected[k], actual[k]) - - @m.patch.object(ps.PluginSpec, '__init__', new=lambda i: None) - def setUp(self): - super(PluginSpecTest, self).setUp() - path = 'tests/unit/plugins/mapr/utils/resources/plugin_spec.json' - plugin_spec = ps.PluginSpec() - plugin_spec.base_dir = os.path.dirname(path) - plugin_spec.plugin_spec_dict = plugin_spec._load_plugin_spec_dict(path) - self.plugin_spec = plugin_spec - - def test_load_service_file_name_map(self): - plugin_spec = self.plugin_spec - - actual = plugin_spec._load_service_file_name_map() - expected = {'service_2': ['file_0', 'file_1', 'file_2'], - 'general': ['file_3', None]} - self.assertDictValueItemsEqual(expected, actual) - - def test_load_file_name_config_map(self): - plugin_spec = self.plugin_spec - - actual = plugin_spec._load_file_name_config_map() - expected = {'file_1': ['k1', 'k0', 'k3', 'k2'], None: ['k4']} - self.assertDictValueItemsEqual(expected, actual) - - def test_load_default_configs(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - - actual = pls._load_default_configs() - expected = {'service_2': {'file_1': {'k0': 'v0', 'k1': 'v1'}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}, - 'general': {'file_3': {'content': 'Some unparsable data'}}} - self.assertEqual(expected, actual) - - def test_load_service_node_process_map(self): - pls = self.plugin_spec - - actual = pls._load_service_node_process_map() - expected = {'service_2': ['node_process_0', 'node_process_1']} - self.assertDictValueItemsEqual(expected, actual) - - def test_load_plugin_config_items(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.default_configs = pls._load_default_configs() - pls.plugin_config_objects = pls._load_plugin_config_objects() - pls.file_name_config_map = pls._load_file_name_config_map() - - actual = pls._load_plugin_config_items() - expected = [{'default_value': 3, 'name': 'k1', 'config_values': None, - 'priority': 1, 'config_type': 'int', 'file': 'file_1', - 'applicable_target': 'service_2', 'is_optional': False, - 'scope': 'node', 'description': None}, - {'default_value': None, 'name': 'k2', - 'config_values': None, 'priority': 2, - 'config_type': 'bool', 'file': 'file_1', - 'applicable_target': 'service_2', 'is_optional': True, - 'scope': 'cluster', 'description': None}, - {'default_value': 'default_value_0', 'name': 'k0', - 'config_values': None, 'priority': 2, 'file': 'file_1', - 'config_type': 'string', 'applicable_target': 'service_2', - 'is_optional': False, 'scope': 'cluster', - 'description': 'description_0'}, - {'default_value': None, 'name': 'k3', - 'config_values': None, 'priority': 2, - 'config_type': 'string', 'file': 'file_1', - 'applicable_target': 'service_2', 'is_optional': True, - 'scope': 'node', 'description': None}, - {'default_value': None, 'name': 'k4', - 'config_values': None, 'priority': 2, - 'config_type': 'string', 'file': None, - 'applicable_target': 'general', 'is_optional': False, - 'scope': 'cluster', 'description': None}] - self.assertItemsEqual(expected, actual) - - def test_load_plugin_configs(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.plugin_config_objects = pls._load_plugin_config_objects() - pls.file_name_config_map = pls._load_file_name_config_map() - pls.plugin_config_items = pls._load_plugin_config_items() - - actual = pls._load_plugin_configs() - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}}, - 'general': {None: {'k4': None}}} - self.assertEqual(expected, actual) - - def test_load_default_plugin_configs(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.default_configs = pls._load_default_configs() - pls.plugin_config_objects = pls._load_plugin_config_objects() - pls.file_name_config_map = pls._load_file_name_config_map() - pls.plugin_config_items = pls._load_plugin_config_items() - pls.plugin_configs = pls._load_plugin_configs() - - actual = pls._load_default_plugin_configs() - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}, - 'general': {None: {'k4': None}, - 'file_3': {'content': 'Some unparsable data'}}} - self.assertEqual(expected, actual) - - def test_load_plugin_config_objects(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.default_configs = pls._load_default_configs() - - actual = pls._load_plugin_config_objects() - expected = [p.Config('k0', 'service_2', 'cluster', - default_value='default_value_0', - description='description_0'), - p.Config('k1', 'service_2', 'node', - config_type='int', default_value=3, priority=1), - p.Config('k2', 'service_2', 'cluster', - config_type='bool', is_optional=True), - p.Config('k3', 'service_2', 'node', is_optional=True), - p.Config('k4', 'general', 'cluster', is_optional=False)] - m_actual = map(lambda i: i.to_dict(), actual) - m_expected = map(lambda i: i.to_dict(), expected) - self.assertItemsEqual(m_expected, m_actual) - - def test_get_node_process_service(self): - pls = self.plugin_spec - pls.service_node_process_map = pls._load_service_node_process_map() - - actual = pls.get_node_process_service('node_process_0') - expected = 'service_2' - self.assertEqual(expected, actual) - - def test_get_default_plugin_configs(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.default_configs = pls._load_default_configs() - pls.plugin_config_objects = pls._load_plugin_config_objects() - pls.file_name_config_map = pls._load_file_name_config_map() - pls.plugin_config_items = pls._load_plugin_config_items() - pls.plugin_configs = pls._load_plugin_configs() - pls.default_plugin_configs = pls._load_default_plugin_configs() - - actual = pls.get_default_plugin_configs(['service_2']) - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}} - self.assertEqual(expected, actual) - - def test_get_config_file(self): - path = 'tests/unit/plugins/mapr/utils/resources/plugin_spec.json' - plugin_spec = ps.PluginSpec(path) - - arg = {'service': 'service_2', 'scope': 'node', 'name': 'k1'} - actual = plugin_spec.get_config_file(**arg) - expected = 'file_1' - self.assertEqual(expected, actual) - - arg = {'service': 'service_1', 'scope': 'node', 'name': 'k1'} - actual = plugin_spec.get_config_file(**arg) - expected = None - self.assertEqual(expected, actual) - - def test_get_version_config_objects(self): - actual = self.plugin_spec.get_version_config_objects() - expected = [p.Config(name='service_2 Version', - applicable_target='service_2', - scope='cluster', - config_type='dropdown', - config_values=[('v1', 'v1'), ('v2', 'v2')], - is_optional=False, - priority=1)] - m_actual = map(lambda i: i.to_dict(), actual) - m_expected = map(lambda i: i.to_dict(), expected) - self.assertItemsEqual(m_expected, m_actual) - - def test_get_configs(self): - pls = self.plugin_spec - pls.service_file_name_map = pls._load_service_file_name_map() - pls.default_configs = pls._load_default_configs() - pls.plugin_config_objects = pls._load_plugin_config_objects() - - actual = pls.get_configs() - expected = [p.Config('k0', 'service_2', 'cluster', - default_value='default_value_0', - description='description_0'), - p.Config('k1', 'service_2', 'node', - config_type='int', default_value=3, priority=1), - p.Config('k2', 'service_2', 'cluster', - config_type='bool', is_optional=True), - p.Config('k3', 'service_2', 'node', is_optional=True), - p.Config('k4', 'general', 'cluster', is_optional=False), - p.Config('service_2 Version', 'service_2', 'cluster', - config_type='dropdown', - config_values=[('v1', 'v1'), ('v2', 'v2')], - is_optional=False, priority=1)] - m_actual = map(lambda i: i.to_dict(), actual) - m_expected = map(lambda i: i.to_dict(), expected) - self.assertItemsEqual(m_expected, m_actual) - - def test_init(self): - path = 'tests/unit/plugins/mapr/utils/resources/plugin_spec.json' - plugin_spec = ps.PluginSpec(path) - - actual = plugin_spec.service_file_name_map - expected = {'service_2': ['file_0', 'file_1', 'file_2'], - 'general': [None, 'file_3']} - self.assertDictValueItemsEqual(expected, actual) - - actual = plugin_spec.file_name_config_map - expected = {'file_1': ['k1', 'k0', 'k3', 'k2'], None: ['k4']} - self.assertDictValueItemsEqual(expected, actual) - - actual = plugin_spec.default_configs - expected = {'service_2': {'file_1': {'k0': 'v0', 'k1': 'v1'}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}, - 'general': {'file_3': {'content': 'Some unparsable data'}}} - self.assertEqual(expected, actual) - - actual = plugin_spec.service_node_process_map - expected = {'service_2': ['node_process_0', 'node_process_1']} - self.assertDictValueItemsEqual(expected, actual) - - actual = plugin_spec.plugin_config_items - expected = [{'default_value': 3, 'name': 'k1', 'config_values': None, - 'priority': 1, 'config_type': 'int', 'file': 'file_1', - 'applicable_target': 'service_2', 'is_optional': False, - 'scope': 'node', 'description': None}, - {'default_value': None, 'name': 'k2', - 'config_values': None, 'priority': 2, - 'config_type': 'bool', 'file': 'file_1', - 'applicable_target': 'service_2', 'is_optional': True, - 'scope': 'cluster', 'description': None}, - {'default_value': 'default_value_0', 'name': 'k0', - 'config_values': None, 'priority': 2, 'file': u'file_1', - 'config_type': 'string', - 'applicable_target': u'service_2', - 'is_optional': False, 'scope': u'cluster', - 'description': 'description_0'}, - {'default_value': None, 'name': 'k3', - 'config_values': None, 'priority': 2, - 'config_type': 'string', 'file': u'file_1', - 'applicable_target': u'service_2', 'is_optional': True, - 'scope': u'node', 'description': None}, - {'default_value': None, 'name': 'k4', - 'config_values': None, 'priority': 2, - 'config_type': 'string', 'file': None, - 'applicable_target': 'general', 'is_optional': False, - 'scope': 'cluster', 'description': None}] - self.assertItemsEqual(expected, actual) - - actual = plugin_spec.plugin_configs - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}}, - 'general': {None: {'k4': None}}} - self.assertEqual(expected, actual) - - actual = plugin_spec.default_plugin_configs - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}, - 'general': {None: {'k4': None}, - 'file_3': {'content': 'Some unparsable data'}}} - self.assertEqual(expected, actual) - - actual = plugin_spec._load_plugin_config_objects() - expected = [p.Config('k0', 'service_2', 'cluster', - default_value='default_value_0', - description='description_0'), - p.Config('k1', 'service_2', 'node', - config_type='int', default_value=3, priority=1), - p.Config('k2', 'service_2', 'cluster', - config_type='bool', is_optional=True), - p.Config('k3', 'service_2', 'node', is_optional=True), - p.Config('k4', 'general', 'cluster', is_optional=False)] - m_actual = map(lambda i: i.to_dict(), actual) - m_expected = map(lambda i: i.to_dict(), expected) - self.assertItemsEqual(m_expected, m_actual) - - actual = plugin_spec.get_node_process_service('node_process_0') - expected = 'service_2' - self.assertEqual(expected, actual) - - actual = plugin_spec.get_default_plugin_configs(['service_2']) - expected = {'service_2': {'file_1': {'k0': 'default_value_0', 'k1': 3, - 'k2': None, 'k3': None}, - 'file_2': {'k0': 'v0', 'k1': 'v1'}}} - self.assertEqual(expected, actual) diff --git a/sahara/tests/unit/plugins/mapr/versions/test_base_cluster_configurer.py b/sahara/tests/unit/plugins/mapr/versions/test_base_cluster_configurer.py deleted file mode 100644 index 74ae1509..00000000 --- a/sahara/tests/unit/plugins/mapr/versions/test_base_cluster_configurer.py +++ /dev/null @@ -1,207 +0,0 @@ -# Copyright (c) 2014, MapR Technologies -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import os - -import mock as m -import six - -import sahara.plugins.mapr.util.config_file_utils as cfu -import sahara.plugins.mapr.util.plugin_spec as ps -import sahara.plugins.mapr.versions.v4_0_1_mrv1.cluster_configurer as bcc -import sahara.tests.unit.base as b -import sahara.tests.unit.plugins.mapr.stubs as s -import sahara.utils.files as f - - -__dirname__ = os.path.dirname(__file__) - - -class BaseClusterConfigurerTest(b.SaharaTestCase): - - def assertItemsEqual(self, expected, actual): - for e in expected: - self.assertIn(e, actual) - for a in actual: - self.assertIn(a, expected) - - @m.patch('sahara.utils.openstack.base.url_for') - @m.patch('sahara.context.ctx') - @m.patch('sahara.plugins.mapr.util.config.is_data_locality_enabled') - @m.patch('sahara.plugins.mapr.util.config_file_utils.to_file_content') - def test_configure_wo_generals(self, tfc_mock, gtm_mock, cc_mock, - url_for_mock): - def to_file_content(*args, **kargs): - data = args[0] - if isinstance(data, dict): - return dict(map(lambda i: (str(i[0]), str(i[1])), - six.iteritems(args[0]))) - elif isinstance(data, str): - return {None: data} - tfc_mock.side_effect = to_file_content - gtm_mock.return_value = False - url_for_mock.return_value = 'http://auth' - cc_mock.return_value = s.AttrDict(tenant_name='tenant_0', - tenant_id='tenant_id', - service_catalog=None) - - i0 = s.Instance(instance_name='i0', - management_ip='192.168.1.10', - internal_ip='10.10.1.10') - i1 = s.Instance(instance_name='i1', - management_ip='192.168.1.11', - internal_ip='10.10.1.11') - i2 = s.Instance(instance_name='i2', - management_ip='192.168.1.12', - internal_ip='10.10.1.12') - np0 = ['ZooKeeper', 'FileServer', 'TaskTracker'] - np1 = ['ZooKeeper', 'NFS', 'Oozie'] - ng0 = s.NodeGroup(id='ng0', instances=[i0, i1], node_processes=np0) - ng1 = s.NodeGroup(id='ng1', instances=[i2], node_processes=np1) - cc = {'general': {}} - cluster = s.Cluster(node_groups=[ng0, ng1], cluster_configs=cc, - hadoop_version='4.0.1.mrv1') - - plugin_spec = ps.PluginSpec( - 'tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json') - configurer = bcc.ClusterConfigurer(cluster, plugin_spec) - cu_mock = m.MagicMock() - configurer.conductor = m.MagicMock() - configurer.conductor.cluster_update = cu_mock - configurer.configure() - bcc_expected_path = ( - 'tests/unit/plugins/mapr/utils/resources/bcc_expected') - core_site = {'data': cfu.load_xml_file(('%s/core-site-0.xml' - % bcc_expected_path)), - 'file': ('/opt/mapr/hadoop/hadoop-0.20.2' - '/conf/core-site.xml'), - 'root': True, - 'timeout': 120} - mapred_site = {'data': cfu.load_xml_file(('%s/mapred-site-0.xml' - % bcc_expected_path)), - 'root': True, - 'file': ('/opt/mapr/hadoop/hadoop-0.20.2' - '/conf/mapred-site.xml'), - 'timeout': 120} - cldb = {'root': True, - 'data': {'cldb.zookeeper.servers': ('192.168.1.10:5181,' - '192.168.1.11:5181,' - '192.168.1.12:5181')}, - 'timeout': 120, - 'file': '/opt/mapr/conf/cldb.conf'} - hadoop_v = {'root': True, - 'data': f.get_file_text('plugins/mapr/util' - '/resources/' - 'hadoop_version') % - {"mode": 'classic'}, - 'timeout': 120, - 'file': '/opt/mapr/conf/hadoop_version'} - self.assertItemsEqual(i0.remote().fs, [core_site, cldb, mapred_site, - hadoop_v]) - self.assertItemsEqual(i1.remote().fs, [core_site, mapred_site, cldb, - hadoop_v]) - self.assertItemsEqual(i2.remote().fs, [core_site, cldb, - hadoop_v]) - - @m.patch('sahara.utils.openstack.base.url_for') - @m.patch('sahara.context.ctx') - @m.patch('sahara.plugins.mapr.util.config.is_data_locality_enabled') - @m.patch('sahara.topology.topology_helper.generate_topology_map') - @m.patch('sahara.plugins.mapr.util.config_file_utils.to_file_content') - def test_configure_with_topology(self, tfc_mock, gtm_mock, - dle_mock, cc_mock, url_for_mock): - def to_file_content(*args, **kargs): - data = args[0] - if isinstance(data, dict): - return dict(map(lambda i: (str(i[0]), str(i[1])), - six.iteritems(args[0]))) - elif isinstance(data, str): - return {None: data} - tfc_mock.side_effect = to_file_content - dle_mock.return_value = True - gtm_mock.return_value = {'i0': 'r', '192.168.1.10': 'r', - '10.10.1.10': 'r', - 'i1': 'r', '192.168.1.11': 'r', - '10.10.1.11': 'r', - 'i2': 'r', '192.168.1.12': 'r', - '10.10.1.12': 'r'} - url_for_mock.return_value = 'http://auth' - cc_mock.return_value = s.AttrDict(tenant_name='tenant_0', - tenant_id='tenant_id', - service_catalog=None) - - i0 = s.Instance(instance_name='i0', - management_ip='192.168.1.10', - internal_ip='10.10.1.10') - i1 = s.Instance(instance_name='i1', - management_ip='192.168.1.11', - internal_ip='10.10.1.11') - i2 = s.Instance(instance_name='i2', - management_ip='192.168.1.12', - internal_ip='10.10.1.12') - np0 = ['ZooKeeper', 'FileServer', 'TaskTracker'] - np1 = ['ZooKeeper', 'NFS', 'HBase RegionServer'] - ng0 = s.NodeGroup(id='ng0', instances=[i0, i1], node_processes=np0) - ng1 = s.NodeGroup(id='ng1', instances=[i2], node_processes=np1) - cc = {'general': {}} - cluster = s.Cluster(node_groups=[ng0, ng1], cluster_configs=cc, - hadoop_version='4.0.1.mrv1') - plugin_spec = ps.PluginSpec( - 'tests/unit/plugins/mapr/utils/resources/plugin_spec_ci.json') - configurer = bcc.ClusterConfigurer(cluster, plugin_spec) - cu_mock = m.MagicMock() - configurer.conductor = m.MagicMock() - configurer.conductor.cluster_update = cu_mock - configurer.configure() - self.assertEqual(1, gtm_mock.call_count) - bcc_expected_path = ( - 'tests/unit/plugins/mapr/utils/resources/bcc_expected') - core_site = {'data': cfu.load_xml_file(('%s/core-site-1.xml' - % bcc_expected_path)), - 'file': ('/opt/mapr/hadoop/hadoop-0.20.2' - '/conf/core-site.xml'), - 'root': True, - 'timeout': 120} - mapred_site = {'data': cfu.load_xml_file('%s/mapred-site-1.xml' - % bcc_expected_path), - 'root': True, - 'file': ('/opt/mapr/hadoop/hadoop-0.20.2' - '/conf/mapred-site.xml'), - 'timeout': 120} - topology_data = {'data': gtm_mock.return_value, - 'file': '/opt/mapr/topology.data', - 'root': True, 'timeout': 120} - cldb = {'data': cfu.load_properties_file(('%s/cldb-1.conf' - % bcc_expected_path)), - 'file': '/opt/mapr/conf/cldb.conf', - 'root': True, 'timeout': 120} - t_sh = {'data': f.get_file_text('plugins/mapr/util' - '/resources/topology.sh'), - 'file': '/opt/mapr/topology.sh', - 'root': True, 'timeout': 120} - hadoop_v = {'root': True, - 'data': f.get_file_text('plugins/mapr/util' - '/resources/hadoop_version') % - {'mode': 'classic'}, - 'timeout': 120, - 'file': '/opt/mapr/conf/hadoop_version'} - self.assertItemsEqual(i0.remote().fs, - [core_site, mapred_site, - topology_data, cldb, t_sh, hadoop_v]) - self.assertItemsEqual(i1.remote().fs, - [core_site, mapred_site, - topology_data, cldb, t_sh, hadoop_v]) - self.assertItemsEqual(i2.remote().fs, - [core_site, topology_data, cldb, t_sh, - hadoop_v])