Merge branch 'trunk' into branch-feature-AMBARI-12556
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6283ae4f Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6283ae4f Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6283ae4f Branch: refs/heads/trunk Commit: 6283ae4f688fbbe04cbb904d4469d3b0f9203335 Parents: c0201e2 f500c9e Author: Nate Cole <[email protected]> Authored: Mon Jul 24 10:57:08 2017 -0400 Committer: Nate Cole <[email protected]> Committed: Mon Jul 24 11:23:33 2017 -0400 ---------------------------------------------------------------------- .../authentication/AuthenticationMainCtrl.js | 4 +- .../controllers/groups/GroupsEditCtrl.js | 3 + .../stackVersions/StackVersionsCreateCtrl.js | 3 +- .../ui/admin-web/app/scripts/i18n.config.js | 7 - .../resource_management/TestUserResource.py | 2 +- .../python/ambari_commons/get_ambari_version.py | 44 + .../ambari_commons/resources/os_family.json | 3 +- .../python/resource_management/core/base.py | 11 + .../core/providers/accounts.py | 6 +- .../core/resources/accounts.py | 4 +- .../libraries/functions/check_process_status.py | 20 + .../libraries/functions/conf_select.py | 56 +- .../libraries/functions/get_stack_version.py | 4 +- .../libraries/functions/solr_cloud_util.py | 10 + .../libraries/functions/stack_features.py | 41 +- .../libraries/functions/stack_tools.py | 39 + .../libraries/providers/hdfs_resource.py | 48 +- .../libraries/script/script.py | 21 +- .../src/main/resources/solr | 826 ++++++++--- ambari-infra/ambari-infra-solr-client/build.xml | 1 + ambari-infra/ambari-infra-solr-client/pom.xml | 10 + .../ambari/infra/solr/AmbariSolrCloudCLI.java | 14 + .../infra/solr/AmbariSolrCloudClient.java | 8 + .../commands/RemoveAdminHandlersCommand.java | 46 + .../commands/SetClusterPropertyZkCommand.java | 6 +- .../src/main/resources/solrIndexHelper.sh | 156 +++ .../InfraRuleBasedAuthorizationPluginTest.java | 5 + ambari-infra/pom.xml | 2 +- .../api/ShipperConfigElementDescription.java | 59 + .../api/ShipperConfigTypeDescription.java | 44 + .../config/zookeeper/LogSearchConfigZK.java | 39 +- .../model/inputconfig/impl/ConditionsImpl.java | 13 + .../model/inputconfig/impl/FieldsImpl.java | 14 + .../inputconfig/impl/FilterDescriptorImpl.java | 51 + .../impl/FilterGrokDescriptorImpl.java | 24 + .../impl/FilterKeyValueDescriptorImpl.java | 28 + .../model/inputconfig/impl/InputConfigImpl.java | 18 + .../inputconfig/impl/InputDescriptorImpl.java | 101 ++ .../impl/InputFileBaseDescriptorImpl.java | 27 + .../impl/InputS3FileDescriptorImpl.java | 16 + .../impl/MapAnonymizeDescriptorImpl.java | 21 +- .../inputconfig/impl/MapDateDescriptorImpl.java | 20 +- .../impl/MapFieldCopyDescriptorImpl.java | 14 +- .../impl/MapFieldDescriptorImpl.java | 33 + .../impl/MapFieldNameDescriptorImpl.java | 14 +- .../impl/MapFieldValueDescriptorImpl.java | 20 +- .../inputconfig/impl/PostMapValuesAdapter.java | 2 +- .../ambari-logsearch-logfeeder/docs/filter.md | 4 +- .../ambari-logsearch-logfeeder/docs/input.md | 10 +- .../docs/postMapValues.md | 2 +- .../logfeeder/common/LogEntryParseTester.java | 2 +- .../ambari/logfeeder/mapper/MapperDate.java | 42 +- .../ambari/logfeeder/filter/FilterJSONTest.java | 12 +- .../configsets/audit_logs/conf/solrconfig.xml | 3 +- .../configsets/hadoop_logs/conf/solrconfig.xml | 3 +- .../main/configsets/history/conf/solrconfig.xml | 3 +- .../common/ShipperConfigDescriptionStorage.java | 67 + .../logsearch/dao/SolrSchemaFieldDao.java | 2 +- .../ambari/logsearch/doc/DocConstants.java | 1 + .../ambari/logsearch/manager/InfoManager.java | 9 + .../response/ShipperConfigDescriptionData.java | 52 + .../ambari/logsearch/rest/InfoResource.java | 10 + ambari-logsearch/docker/Dockerfile | 2 +- ambari-logsearch/docker/bin/start.sh | 4 +- ambari-logsearch/docker/logsearch-docker.sh | 22 +- ambari-logsearch/pom.xml | 2 +- .../kafka/KafkaTimelineMetricsReporter.java | 6 +- ambari-server/pom.xml | 2 +- ambari-server/sbin/ambari-server | 6 +- .../actionmanager/ExecutionCommandWrapper.java | 34 +- .../server/api/query/JpaPredicateVisitor.java | 8 +- .../server/checks/AbstractCheckDescriptor.java | 8 +- .../server/checks/ConfigurationMergeCheck.java | 2 +- .../checks/HostsMasterMaintenanceCheck.java | 4 +- .../checks/HostsRepositoryVersionCheck.java | 8 +- .../server/checks/InstallPackagesCheck.java | 6 +- .../server/configuration/Configuration.java | 6 +- .../controller/ActionExecutionContext.java | 28 + .../controller/AmbariActionExecutionHelper.java | 27 +- .../AmbariCustomCommandExecutionHelper.java | 28 +- .../AmbariManagementControllerImpl.java | 145 +- .../server/controller/AuthToLocalBuilder.java | 328 +++-- .../controller/DeleteIdentityHandler.java | 77 +- .../server/controller/KerberosHelper.java | 2 +- .../server/controller/KerberosHelperImpl.java | 5 +- .../server/controller/PrereqCheckRequest.java | 39 +- .../internal/AbstractProviderModule.java | 1 + .../BlueprintConfigurationProcessor.java | 123 +- .../internal/ClientConfigResourceProvider.java | 5 +- .../ClusterStackVersionResourceProvider.java | 163 ++- .../internal/HostResourceProvider.java | 1 + .../internal/HttpPropertyProvider.java | 27 +- .../PreUpgradeCheckResourceProvider.java | 80 +- .../internal/ReadOnlyResourceProvider.java | 2 +- .../server/controller/internal/Stack.java | 2 +- .../server/controller/internal/UnitUpdater.java | 150 ++ .../internal/UpgradeResourceProvider.java | 91 +- .../utilities/KerberosIdentityCleaner.java | 88 +- .../utilities/RemovableIdentities.java | 145 ++ .../controller/utilities/UsedIdentities.java | 101 ++ .../ServiceComponentUninstalledEvent.java | 6 + .../server/events/ServiceRemovedEvent.java | 29 +- .../listeners/upgrade/StackVersionListener.java | 33 +- .../ambari/server/orm/dao/ClusterDAO.java | 15 + .../orm/entities/ClusterConfigEntity.java | 3 + .../LdapToPamMigrationHelper.java | 73 + .../server/security/authorization/Users.java | 4 + .../upgrades/UpgradeUserKerberosDescriptor.java | 142 +- .../org/apache/ambari/server/state/Cluster.java | 7 + .../ambari/server/state/ConfigHelper.java | 78 +- .../ambari/server/state/PropertyInfo.java | 2 + .../apache/ambari/server/state/ServiceImpl.java | 14 +- .../ambari/server/state/UpgradeContext.java | 29 +- .../ambari/server/state/UpgradeHelper.java | 59 +- .../server/state/cluster/ClusterImpl.java | 9 + .../AbstractKerberosDescriptorContainer.java | 12 + .../kerberos/KerberosComponentDescriptor.java | 15 - .../KerberosDescriptorUpdateHelper.java | 9 +- .../kerberos/KerberosIdentityDescriptor.java | 14 +- .../ambari/server/topology/AmbariContext.java | 46 +- .../validators/TopologyValidatorFactory.java | 2 +- .../validators/UnitValidatedProperty.java | 95 ++ .../topology/validators/UnitValidator.java | 79 ++ .../server/upgrade/UpgradeCatalog252.java | 62 + .../server/upgrade/UpgradeCatalog300.java | 18 + ambari-server/src/main/python/ambari-server.py | 14 +- .../main/python/ambari_server/setupActions.py | 1 + .../main/python/ambari_server/setupSecurity.py | 119 +- .../0.1.0/package/scripts/params.py | 3 + .../0.1.0/package/scripts/setup_infra_solr.py | 17 +- .../0.1.0.2.3/package/scripts/atlas_client.py | 2 +- .../ATLAS/0.1.0.2.3/package/scripts/params.py | 2 + .../HBASE/0.96.0.2.0/package/scripts/hbase.py | 12 +- .../0.96.0.2.0/package/scripts/params_linux.py | 3 + .../HDFS/2.1.0.2.0/configuration/hdfs-site.xml | 6 + .../HDFS/2.1.0.2.0/package/scripts/hdfs.py | 8 + .../2.1.0.2.0/package/scripts/hdfs_namenode.py | 25 +- .../HDFS/2.1.0.2.0/package/scripts/namenode.py | 4 + .../2.1.0.2.0/package/scripts/params_linux.py | 9 +- .../2.1.0.2.0/package/scripts/params_windows.py | 7 + .../HDFS/2.1.0.2.0/package/scripts/utils.py | 4 + .../2.1.0.2.0/package/scripts/zkfc_slave.py | 8 +- .../package/templates/include_hosts_list.j2 | 21 + .../HDFS/3.0.0.3.0/package/scripts/hdfs.py | 8 + .../3.0.0.3.0/package/scripts/hdfs_namenode.py | 17 +- .../3.0.0.3.0/package/scripts/params_linux.py | 8 +- .../3.0.0.3.0/package/scripts/params_windows.py | 7 + .../HDFS/3.0.0.3.0/package/scripts/utils.py | 2 + .../package/templates/include_hosts_list.j2 | 21 + .../package/alerts/alert_hive_metastore.py | 11 +- .../package/alerts/alert_llap_app_status.py | 12 +- .../HIVE/0.12.0.2.0/package/scripts/hive.py | 3 +- .../0.12.0.2.0/package/scripts/params_linux.py | 6 + .../0.12.0.2.0/package/scripts/service_check.py | 3 +- .../KAFKA/0.10.0.3.0/metainfo.xml | 1 + .../KAFKA/0.10.0.3.0/package/scripts/kafka.py | 10 + .../KAFKA/0.10.0.3.0/package/scripts/params.py | 3 + .../common-services/KAFKA/0.10.0/metainfo.xml | 1 + .../KAFKA/0.8.1/package/scripts/kafka.py | 12 + .../KAFKA/0.8.1/package/scripts/params.py | 3 + .../KAFKA/0.9.0/configuration/kafka-broker.xml | 2 +- .../properties/audit_logs-solrconfig.xml.j2 | 3 +- .../properties/service_logs-solrconfig.xml.j2 | 3 +- .../package/alerts/alert_check_oozie_server.py | 8 +- .../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 44 +- .../package/scripts/oozie_server_upgrade.py | 34 +- .../SPARK/1.2.1/package/scripts/params.py | 11 +- .../SPARK/1.2.1/package/scripts/setup_spark.py | 6 +- .../1.2.1/package/scripts/spark_service.py | 6 +- .../STORM/0.9.1/package/scripts/nimbus.py | 8 +- .../YARN/2.1.0.2.0/configuration/yarn-site.xml | 6 + .../2.1.0.2.0/package/scripts/historyserver.py | 2 +- .../2.1.0.2.0/package/scripts/params_linux.py | 23 +- .../2.1.0.2.0/package/scripts/params_windows.py | 10 +- .../package/scripts/resourcemanager.py | 18 +- .../YARN/2.1.0.2.0/package/scripts/service.py | 4 + .../2.1.0.2.0/package/scripts/service_check.py | 6 +- .../package/templates/include_hosts_list.j2 | 21 + .../YARN/3.0.0.3.0/configuration/yarn-site.xml | 6 + .../3.0.0.3.0/package/scripts/params_linux.py | 11 +- .../3.0.0.3.0/package/scripts/params_windows.py | 10 +- .../package/scripts/resourcemanager.py | 18 +- .../package/templates/include_hosts_list.j2 | 21 + .../YARN/3.0.0.3.0/service_advisor.py | 7 +- .../0.6.0.2.5/configuration/zeppelin-env.xml | 2 +- .../0.6.0.2.5/package/scripts/master.py | 1 + .../3.4.5/package/scripts/params_linux.py | 5 +- .../resources/host_scripts/alert_disk_space.py | 10 +- .../host_scripts/alert_version_select.py | 16 +- .../services/HDFS/configuration/hdfs-site.xml | 6 + .../HDFS/package/scripts/hdfs_namenode.py | 12 +- .../0.8/services/HDFS/package/scripts/params.py | 11 +- .../0.8/services/HDFS/package/scripts/utils.py | 3 + .../package/templates/include_hosts_list.j2 | 21 + .../services/YARN/configuration/yarn-site.xml | 6 + .../0.8/services/YARN/package/scripts/params.py | 10 +- .../YARN/package/scripts/resourcemanager.py | 9 +- .../package/templates/include_hosts_list.j2 | 21 + .../services/YARN/configuration/yarn-site.xml | 6 + .../services/YARN/package/scripts/params.py | 9 +- .../YARN/package/scripts/resourcemanager.py | 9 +- .../package/templates/exclude_hosts_list.j2 | 21 + .../package/templates/include_hosts_list.j2 | 21 + .../HDP/2.0.6/configuration/cluster-env.xml | 16 +- .../hooks/before-ANY/files/changeToSecureUid.sh | 15 +- .../before-ANY/scripts/shared_initialization.py | 40 +- .../HDP/2.0.6/properties/stack_features.json | 852 +++++------ .../HDP/2.0.6/properties/stack_tools.json | 16 +- .../services/YARN/configuration/yarn-site.xml | 6 + .../services/YARN/package/scripts/params.py | 10 +- .../YARN/package/scripts/resourcemanager.py | 9 +- .../package/templates/include_hosts_list.j2 | 21 + .../stacks/HDP/2.5/services/stack_advisor.py | 18 +- .../stacks/HDP/2.5/upgrades/config-upgrade.xml | 6 +- .../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 6 +- .../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 1 + .../resources/stacks/HDP/2.6/repos/repoinfo.xml | 6 +- .../configuration/application-properties.xml | 17 + .../services/HIVE/configuration/hive-env.xml | 78 +- .../HIVE/configuration/hive-interactive-env.xml | 62 +- .../services/HIVE/configuration/hive-site.xml | 35 + .../stacks/HDP/2.6/services/stack_advisor.py | 33 +- .../stacks/HDP/2.6/upgrades/config-upgrade.xml | 4 + .../HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml | 4 + .../stacks/HDP/2.6/upgrades/upgrade-2.6.xml | 1 + .../HDP/3.0/configuration/cluster-env.xml | 4 +- .../HDP/3.0/properties/stack_features.json | 752 +++++----- .../stacks/HDP/3.0/properties/stack_tools.json | 14 +- .../PERF/1.0/configuration/cluster-env.xml | 16 +- .../PERF/1.0/properties/stack_features.json | 38 +- .../stacks/PERF/1.0/properties/stack_tools.json | 16 +- .../src/main/resources/stacks/stack_advisor.py | 20 +- .../checks/AbstractCheckDescriptorTest.java | 11 +- .../server/checks/AtlasPresenceCheckTest.java | 4 +- .../checks/ClientRetryPropertyCheckTest.java | 22 +- .../checks/ComponentsInstallationCheckTest.java | 16 +- .../checks/ConfigurationMergeCheckTest.java | 13 +- .../HiveDynamicServiceDiscoveryCheckTest.java | 23 +- .../checks/HiveMultipleMetastoreCheckTest.java | 26 +- .../server/checks/HostsHeartbeatCheckTest.java | 16 +- .../checks/HostsMasterMaintenanceCheckTest.java | 27 +- .../checks/HostsRepositoryVersionCheckTest.java | 40 +- .../server/checks/InstallPackagesCheckTest.java | 18 +- ...duce2JobHistoryStatePreservingCheckTest.java | 7 +- .../checks/PreviousUpgradeCompletedTest.java | 11 +- .../server/checks/ServicePresenceCheckTest.java | 13 +- .../ServicesMaintenanceModeCheckTest.java | 16 +- .../ServicesNamenodeTruncateCheckTest.java | 19 +- .../server/checks/ServicesUpCheckTest.java | 17 +- ...nTimelineServerStatePreservingCheckTest.java | 7 +- .../AmbariManagementControllerImplTest.java | 67 +- .../AmbariManagementControllerTest.java | 8 +- .../controller/AuthToLocalBuilderTest.java | 45 + .../BlueprintConfigurationProcessorTest.java | 41 +- ...ClusterStackVersionResourceProviderTest.java | 4 +- .../internal/HttpPropertyProviderTest.java | 11 + .../PreUpgradeCheckResourceProviderTest.java | 6 +- .../controller/internal/UnitUpdaterTest.java | 114 ++ .../utilities/KerberosIdentityCleanerTest.java | 102 +- .../upgrade/StackVersionListenerTest.java | 58 +- .../server/orm/dao/ServiceConfigDAOTest.java | 12 + .../UpgradeUserKerberosDescriptorTest.java | 59 +- .../ambari/server/state/ConfigHelperTest.java | 22 + .../ambari/server/state/UpgradeHelperTest.java | 14 +- .../KerberosDescriptorUpdateHelperTest.java | 70 + .../ClusterConfigurationRequestTest.java | 60 +- .../topology/validators/UnitValidatorTest.java | 114 ++ .../server/upgrade/UpgradeCatalog300Test.java | 33 + .../src/test/python/TestStackFeature.py | 105 +- .../common-services/configs/hawq_default.json | 6 +- .../python/host_scripts/TestAlertDiskSpace.py | 16 +- .../2.0.6/HBASE/test_phoenix_queryserver.py | 23 - .../python/stacks/2.0.6/HDFS/test_namenode.py | 2 +- .../stacks/2.0.6/HIVE/test_hive_server.py | 2 + .../stacks/2.0.6/OOZIE/test_oozie_server.py | 32 +- .../stacks/2.0.6/YARN/test_historyserver.py | 21 +- .../stacks/2.0.6/configs/altfs_plus_hdfs.json | 2 +- .../python/stacks/2.0.6/configs/default.json | 2 +- .../2.0.6/configs/default_ams_embedded.json | 2 +- .../2.0.6/configs/default_hive_nn_ha.json | 2 +- .../2.0.6/configs/default_hive_nn_ha_2.json | 2 +- .../2.0.6/configs/default_hive_non_hdfs.json | 2 +- .../2.0.6/configs/default_no_install.json | 2 +- .../2.0.6/configs/default_oozie_mysql.json | 2 +- .../default_update_exclude_file_only.json | 2 +- .../2.0.6/configs/default_with_bucket.json | 2 +- .../python/stacks/2.0.6/configs/flume_22.json | 2 +- .../python/stacks/2.0.6/configs/flume_only.json | 2 +- .../stacks/2.0.6/configs/hbase_no_phx.json | 2 +- .../stacks/2.0.6/configs/hbase_with_phx.json | 2 +- .../test/python/stacks/2.0.6/configs/nn_eu.json | 2 +- .../stacks/2.0.6/configs/nn_eu_standby.json | 2 +- .../2.0.6/configs/oozie_existing_sqla.json | 2 +- .../stacks/2.0.6/configs/repository_file.json | 2 +- .../python/stacks/2.0.6/configs/secured.json | 2 +- .../2.0.6/hooks/before-ANY/test_before_any.py | 309 ++-- .../stacks/2.1/STORM/test_storm_nimbus.py | 60 +- .../stacks/2.1/configs/default-storm-start.json | 14 + .../test/python/stacks/2.1/configs/default.json | 13 + .../2.1/configs/hive-metastore-upgrade.json | 2 +- .../stacks/2.1/configs/secured-storm-start.json | 13 + .../test/python/stacks/2.1/configs/secured.json | 15 +- .../python/stacks/2.2/configs/knox_upgrade.json | 2 +- .../test/python/stacks/2.3/configs/ats_1_5.json | 2 +- .../stacks/2.4/AMBARI_INFRA/test_infra_solr.py | 3 + .../stacks/2.5/common/test_stack_advisor.py | 154 +- .../python/stacks/2.5/configs/hsi_default.json | 2 +- .../2.5/configs/hsi_default_for_restart.json | 2 +- .../test/python/stacks/2.5/configs/hsi_ha.json | 2 +- .../2.5/configs/ranger-admin-default.json | 990 ++++++------- .../2.5/configs/ranger-admin-secured.json | 1108 +++++++-------- .../stacks/2.5/configs/ranger-kms-default.json | 1158 +++++++-------- .../stacks/2.5/configs/ranger-kms-secured.json | 1320 +++++++++--------- .../2.6/configs/ranger-admin-default.json | 953 +++++++------ .../2.6/configs/ranger-admin-secured.json | 1066 +++++++------- .../src/test/python/stacks/utils/RMFTestCase.py | 8 +- .../main/admin/stack_and_upgrade_controller.js | 16 +- .../main/host/bulk_operations_controller.js | 32 +- ambari-web/app/controllers/main/host/details.js | 2 +- ambari-web/app/controllers/main/service.js | 13 +- .../app/controllers/wizard/step7_controller.js | 67 + .../configs/stack_config_properties_mapper.js | 14 +- ambari-web/app/mappers/hosts_mapper.js | 2 +- ambari-web/app/messages.js | 6 +- ambari-web/app/styles/application.less | 15 + .../main/host/delete_hosts_result_popup.hbs | 8 +- ...ontrols_service_config_usergroup_with_id.hbs | 27 + ambari-web/app/utils/ajax/ajax.js | 22 + ambari-web/app/utils/config.js | 3 + ambari-web/app/utils/db.js | 14 +- .../configs/service_configs_by_category_view.js | 6 + ambari-web/app/views/common/controls_view.js | 39 + .../stack_upgrade/upgrade_version_box_view.js | 2 +- ambari-web/app/views/main/host.js | 8 +- .../admin/stack_and_upgrade_controller_test.js | 40 +- .../test/controllers/main/service_test.js | 4 +- .../upgrade_version_box_view_test.js | 11 +- ambari-web/test/views/main/host_test.js | 4 +- .../services/YARN/configuration/yarn-site.xml | 6 + .../YARN/package/scripts/params_linux.py | 9 +- .../YARN/package/scripts/params_windows.py | 10 +- .../YARN/package/scripts/resourcemanager.py | 18 +- .../package/templates/include_hosts_list.j2 | 21 + .../hive20/src/main/resources/ui/package.json | 1 + .../src/main/resources/ui/package.json | 1 + 345 files changed, 10994 insertions(+), 5823 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java ---------------------------------------------------------------------- diff --cc ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java index 79f3598,37a9d2f..f83c39b --- a/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/checks/HostsRepositoryVersionCheck.java @@@ -78,19 -78,12 +78,19 @@@ public class HostsRepositoryVersionChec continue; } - if (null != request.getRepositoryVersion()) { + if (null != request.getTargetVersion()) { boolean found = false; + + Set<RepositoryVersionState> allowed = EnumSet.of(RepositoryVersionState.INSTALLED, + RepositoryVersionState.NOT_REQUIRED); + if (request.isRevert()) { + allowed.add(RepositoryVersionState.CURRENT); + } + for (HostVersionEntity hve : hostVersionDaoProvider.get().findByHost(host.getHostName())) { - if (hve.getRepositoryVersion().getVersion().equals(request.getRepositoryVersion()) + if (hve.getRepositoryVersion().getVersion().equals(request.getTargetVersion()) - && (hve.getState() == RepositoryVersionState.INSTALLED || hve.getState() == RepositoryVersionState.NOT_REQUIRED)) { + && allowed.contains(hve.getState())) { found = true; break; } http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/controller/PrereqCheckRequest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java ---------------------------------------------------------------------- diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java index 7b03912,acf8bc1..7f87d7d --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProvider.java @@@ -52,7 -53,7 +53,8 @@@ import org.apache.ambari.server.state.s import org.apache.ambari.server.state.stack.UpgradePack; import org.apache.ambari.server.state.stack.upgrade.Direction; import org.apache.ambari.server.state.stack.upgrade.UpgradeType; +import org.apache.commons.lang.BooleanUtils; + import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@@ -115,9 -117,8 +120,9 @@@ public class PreUpgradeCheckResourcePro UPGRADE_CHECK_CHECK_TYPE_PROPERTY_ID, UPGRADE_CHECK_CLUSTER_NAME_PROPERTY_ID, UPGRADE_CHECK_UPGRADE_TYPE_PROPERTY_ID, - UPGRADE_CHECK_UPGRADE_PACK_PROPERTY_ID, - UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID, - UPGRADE_CHECK_FOR_REVERT_PROPERTY_ID); ++ UPGRADE_CHECK_FOR_REVERT_PROPERTY_ID, + UPGRADE_CHECK_TARGET_REPOSITORY_VERSION_ID_ID, + UPGRADE_CHECK_UPGRADE_PACK_PROPERTY_ID); @SuppressWarnings("serial") @@@ -165,25 -166,26 +170,31 @@@ throw new NoSuchResourceException(ambariException.getMessage()); } - String stackName = cluster.getCurrentStackVersion().getStackName(); - String sourceStackVersion = cluster.getCurrentStackVersion().getStackVersion(); + String repositoryVersionId = (String) propertyMap.get( + UPGRADE_CHECK_TARGET_REPOSITORY_VERSION_ID_ID); + + if (StringUtils.isBlank(repositoryVersionId)) { + throw new SystemException( + String.format("%s is a required property when executing upgrade checks", + UPGRADE_CHECK_TARGET_REPOSITORY_VERSION_ID_ID)); + } - final PrereqCheckRequest upgradeCheckRequest = new PrereqCheckRequest(clusterName, upgradeType); + final PrereqCheckRequest upgradeCheckRequest = new PrereqCheckRequest(clusterName, + upgradeType); + + StackId sourceStackId = cluster.getCurrentStackVersion(); upgradeCheckRequest.setSourceStackId(cluster.getCurrentStackVersion()); - if (propertyMap.containsKey(UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID)) { - String repositoryVersionId = propertyMap.get(UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID).toString(); - RepositoryVersionEntity repositoryVersionEntity = repositoryVersionDAO.findByStackNameAndVersion(stackName, repositoryVersionId); - // set some required properties on the check request - upgradeCheckRequest.setRepositoryVersion(repositoryVersionId); - upgradeCheckRequest.setTargetStackId(repositoryVersionEntity.getStackId()); - } + RepositoryVersionEntity repositoryVersion = repositoryVersionDAO.findByPK( + Long.valueOf(repositoryVersionId)); + + upgradeCheckRequest.setTargetRepositoryVersion(repositoryVersion); + if (propertyMap.containsKey(UPGRADE_CHECK_FOR_REVERT_PROPERTY_ID)) { + Boolean forRevert = BooleanUtils.toBooleanObject(propertyMap.get(UPGRADE_CHECK_FOR_REVERT_PROPERTY_ID).toString()); + upgradeCheckRequest.setRevert(forRevert); + } + //ambariMetaInfo.getStack(stackName, cluster.getCurrentStackVersion().getStackVersion()).getUpgradePacks() // TODO AMBARI-12698, filter the upgrade checks to run based on the stack and upgrade type, or the upgrade pack. UpgradePack upgradePack = null; http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java ---------------------------------------------------------------------- diff --cc ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java index d2c0ea2,0e02c77..8e7215c --- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeContext.java @@@ -1040,8 -961,7 +1049,7 @@@ public class UpgradeContext Predicate preUpgradeCheckPredicate = new PredicateBuilder().property( PreUpgradeCheckResourceProvider.UPGRADE_CHECK_CLUSTER_NAME_PROPERTY_ID).equals(cluster.getClusterName()).and().property( - PreUpgradeCheckResourceProvider.UPGRADE_CHECK_REPOSITORY_VERSION_PROPERTY_ID).equals(repositoryVersion.getVersion()).and().property( - PreUpgradeCheckResourceProvider.UPGRADE_CHECK_TARGET_REPOSITORY_VERSION_ID_ID).equals(repositoryVersionId).and().property( + PreUpgradeCheckResourceProvider.UPGRADE_CHECK_FOR_REVERT_PROPERTY_ID).equals(m_isRevert).and().property( PreUpgradeCheckResourceProvider.UPGRADE_CHECK_UPGRADE_TYPE_PROPERTY_ID).equals(type).and().property( PreUpgradeCheckResourceProvider.UPGRADE_CHECK_UPGRADE_PACK_PROPERTY_ID).equals(preferredUpgradePack).toPredicate(); @@@ -1199,5 -1119,4 +1207,4 @@@ return hostOrderItems; } } - -} +} http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java ---------------------------------------------------------------------- diff --cc ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java index 578bd38,dee0e6c..fe56760 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java @@@ -102,9 -104,12 +106,15 @@@ public class AmbariContext @Inject ConfigFactory configFactory; + @Inject + RepositoryVersionDAO repositoryVersionDAO; + + /** + * Used for getting configuration property values from stack and services. + */ + @Inject + private Provider<ConfigHelper> configHelper; + private static AmbariManagementController controller; private static ClusterController clusterController; //todo: task id's. Use existing mechanism for getting next task id sequence http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java ---------------------------------------------------------------------- diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java index f35e92e,4024f05..9b92a5f --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java @@@ -2336,4 -2349,60 +2346,59 @@@ public class AmbariManagementController verify(injector, cluster, clusters, ambariMetaInfo, service, serviceComponent, serviceComponentHost, stackId); } + @Test + public void testCreateClusterWithRepository() throws Exception { + Injector injector = createNiceMock(Injector.class); + + RepositoryVersionEntity repoVersion = createNiceMock(RepositoryVersionEntity.class); + RepositoryVersionDAO repoVersionDAO = createNiceMock(RepositoryVersionDAO.class); + expect(repoVersionDAO.findByStackAndVersion(anyObject(StackId.class), + anyObject(String.class))).andReturn(repoVersion).anyTimes(); + + expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).atLeastOnce(); + expect(injector.getInstance(Gson.class)).andReturn(null); + expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)); + + StackId stackId = new StackId("HDP-2.1"); + + Cluster cluster = createNiceMock(Cluster.class); + Service service = createNiceMock(Service.class); + expect(service.getDesiredStackId()).andReturn(stackId).atLeastOnce(); + expect(cluster.getServices()).andReturn(ImmutableMap.<String, Service>builder() + .put("HDFS", service) + .build()); + + expect(clusters.getCluster("c1")).andReturn(cluster).atLeastOnce(); + + + StackInfo stackInfo = createNiceMock(StackInfo.class); + expect(stackInfo.getWidgetsDescriptorFileLocation()).andReturn(null).once(); + + expect(ambariMetaInfo.getStack("HDP", "2.1")).andReturn(stackInfo).atLeastOnce(); + expect(ambariMetaInfo.getStack(stackId)).andReturn(stackInfo).atLeastOnce(); + + replay(injector, clusters, ambariMetaInfo, stackInfo, cluster, service, repoVersionDAO, repoVersion); + + AmbariManagementController controller = new AmbariManagementControllerImpl(null, clusters, injector); + setAmbariMetaInfo(ambariMetaInfo, controller); + Class<?> c = controller.getClass(); + + Field f = c.getDeclaredField("repositoryVersionDAO"); + f.setAccessible(true); + f.set(controller, repoVersionDAO); + + Properties p = new Properties(); + p.setProperty("", ""); + Configuration configuration = new Configuration(p); + f = c.getDeclaredField("configs"); + f.setAccessible(true); + f.set(controller, configuration); + + ClusterRequest cr = new ClusterRequest(null, "c1", "HDP-2.1", null); + cr.setRepositoryVersion("2.1.1.0-1234"); + controller.createCluster(cr); + + // verification + verify(injector, clusters, ambariMetaInfo, stackInfo, cluster, repoVersionDAO, repoVersion); + } - } http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/6283ae4f/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java ----------------------------------------------------------------------
