You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2017/09/26 05:19:52 UTC
[01/50] [abbrv] ambari git commit: AMBARI-22003. Ambari schema
upgrade failure as views destination path dir already exists (aonishuk)
Repository: ambari
Updated Branches:
refs/heads/branch-feature-AMBARI-14714 986b3b1fc -> 530df165d
AMBARI-22003. Ambari schema upgrade failure as views destination path dir already exists (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c8832728
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c8832728
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c8832728
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: c8832728ad0ebb545bd8795de23d0b859af23d1a
Parents: a90f3b3
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Wed Sep 20 11:19:09 2017 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Wed Sep 20 11:19:09 2017 +0300
----------------------------------------------------------------------
ambari-server/src/main/python/ambari_server/serverUpgrade.py | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c8832728/ambari-server/src/main/python/ambari_server/serverUpgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/serverUpgrade.py b/ambari-server/src/main/python/ambari_server/serverUpgrade.py
index 8712da5..b0e0128 100644
--- a/ambari-server/src/main/python/ambari_server/serverUpgrade.py
+++ b/ambari-server/src/main/python/ambari_server/serverUpgrade.py
@@ -267,6 +267,10 @@ def upgrade(args):
# Move files installed by package to default views directory to a custom one
for views_dir in get_views_dir(properties):
root_views_dir = views_dir + "/../"
+
+ if os.path.samefile(root_views_dir, get_default_views_dir()):
+ continue
+
for file in glob.glob(get_default_views_dir()+'/*'):
shutil.move(file, root_views_dir)
[50/50] [abbrv] ambari git commit: Merge remote-tracking branch
'origin/trunk' into branch-feature-AMBARI-14714
Posted by jl...@apache.org.
Merge remote-tracking branch 'origin/trunk' into branch-feature-AMBARI-14714
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/530df165
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/530df165
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/530df165
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 530df165da444c3259f72d7e62339ba7654f5fe3
Parents: 986b3b1 84fed85
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Mon Sep 25 22:19:28 2017 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Mon Sep 25 22:19:28 2017 -0700
----------------------------------------------------------------------
.../stackVersions/StackVersionsCreateCtrl.js | 6 +
.../src/main/python/ambari_agent/HostInfo.py | 29 +-
.../test/python/ambari_agent/TestHostInfo.py | 21 +-
.../libraries/functions/copy_tarball.py | 103 ++-
.../libraries/functions/curl_krb_request.py | 2 +-
.../libraries/functions/repository_util.py | 9 +-
.../libraries/functions/stack_select.py | 65 +-
.../libraries/functions/stack_tools.py | 12 +-
.../libraries/functions/upgrade_summary.py | 16 +
.../libraries/functions/version_select_util.py | 64 +-
.../libraries/script/script.py | 39 +-
.../HDP/2.0.8/services/HDFS/kerberos.json | 12 +-
ambari-infra/ambari-infra-manager/.gitignore | 2 +
.../ambari-infra-manager/docker/bin/start.sh | 2 +-
ambari-infra/ambari-infra-manager/pom.xml | 172 +++--
.../org/apache/ambari/infra/InfraManager.java | 208 +-----
.../infra/common/InfraManagerConstants.java | 31 -
.../infra/conf/InfraManagerDataConfig.java | 37 +
.../conf/InfraManagerJerseyResourceConfig.java | 37 +
.../infra/conf/InfraManagerServletConfig.java | 83 +++
.../infra/conf/StaticResourceConfiguration.java | 49 ++
.../infra/doc/InfraManagerApiDocStorage.java | 90 +++
.../ambari/infra/job/dummy/DummyItemWriter.java | 15 +-
.../ambari/infra/rest/ApiDocResource.java | 56 ++
.../src/main/resources/infra-manager.properties | 4 +-
.../src/main/resources/log4j.xml | 31 -
.../src/main/resources/log4j2.xml | 41 ++
.../src/main/resources/static/index.html | 24 +
.../src/main/resources/swagger/swagger.html | 36 +-
.../src/main/resources/webapp/index.html | 24 -
ambari-infra/ambari-infra-solr-client/build.xml | 1 +
ambari-infra/ambari-infra-solr-client/pom.xml | 5 +
.../ambari/infra/solr/AmbariSolrCloudCLI.java | 12 +-
.../apache/ambari/infra/solr/S3Uploader.java | 64 ++
.../src/main/python/solrDataManager.py | 715 +++++++++++++++++++
.../src/main/resources/log4j.properties | 6 +-
.../src/main/resources/solrCloudCli.sh | 8 +-
.../src/main/resources/solrIndexHelper.sh | 14 +-
.../src/main/resources/grok-patterns | 2 +-
.../ambari/logsearch/conf/SecurityConfig.java | 9 -
.../ambari-logsearch-web/.angular-cli.json | 34 +-
ambari-logsearch/ambari-logsearch-web/README.md | 10 +-
.../ambari-logsearch-web/package.json | 34 +-
ambari-logsearch/ambari-logsearch-web/pom.xml | 4 +-
.../ambari-logsearch-web/src/app/app.module.ts | 14 +-
.../src/app/classes/list-item.class.ts | 25 +
.../queries/audit-logs-query-params.class.ts | 4 -
...service-logs-histogram-query-params.class.ts | 1 -
.../queries/service-logs-query-params.class.ts | 1 -
.../date-picker/date-picker.component.html | 25 +
.../date-picker/date-picker.component.spec.ts | 51 ++
.../date-picker/date-picker.component.ts | 73 ++
.../dropdown-button.component.html | 9 +-
.../dropdown-button.component.less | 4 +
.../dropdown-button.component.spec.ts | 29 +-
.../dropdown-button.component.ts | 14 +-
.../dropdown-list/dropdown-list.component.html | 5 +-
.../dropdown-list/dropdown-list.component.ts | 7 +-
.../filter-button.component.spec.ts | 29 +-
.../filter-button/filter-button.component.ts | 3 +-
.../filter-dropdown.component.spec.ts | 26 +-
.../filters-panel/filters-panel.component.html | 24 +-
.../filters-panel/filters-panel.component.less | 10 +
.../filters-panel.component.spec.ts | 6 +-
.../filters-panel/filters-panel.component.ts | 27 +-
.../logs-container.component.html | 5 +
.../logs-container.component.less | 4 +
.../logs-container.component.spec.ts | 4 +-
.../logs-container/logs-container.component.ts | 10 +
.../logs-list/logs-list.component.html | 57 +-
.../logs-list/logs-list.component.less | 5 +-
.../components/logs-list/logs-list.component.ts | 72 +-
.../menu-button/menu-button.component.html | 2 +-
.../menu-button/menu-button.component.spec.ts | 53 +-
.../menu-button/menu-button.component.ts | 5 +-
.../app/components/modal/modal.component.html | 2 +-
.../src/app/components/modal/modal.component.ts | 2 +-
.../search-box/search-box.component.html | 5 +-
.../search-box/search-box.component.less | 4 +
.../search-box/search-box.component.ts | 64 +-
.../time-range-picker.component.html | 41 ++
.../time-range-picker.component.less | 35 +
.../time-range-picker.component.spec.ts | 73 ++
.../time-range-picker.component.ts | 103 +++
.../timezone-picker.component.spec.ts | 37 +-
.../components/top-menu/top-menu.component.html | 2 +-
.../top-menu/top-menu.component.spec.ts | 2 +
.../src/app/components/variables.less | 6 +-
.../ambari-logsearch-web/src/app/mock-data.ts | 2 +-
.../src/app/pipes/timer-seconds.pipe.spec.ts | 37 +
.../src/app/pipes/timer-seconds.pipe.ts | 41 ++
.../services/component-actions.service.spec.ts | 46 +-
.../app/services/component-actions.service.ts | 21 +-
.../src/app/services/filtering.service.ts | 358 +++++++---
.../src/app/services/logs-container.service.ts | 11 +-
.../src/app/services/mock-api-data.service.ts | 6 +-
.../src/app/services/utils.service.ts | 13 +
.../src/assets/i18n/en.json | 49 +-
.../ambari-logsearch-web/src/polyfills.ts | 2 +-
.../vendor/css/bootstrap-datetimepicker.min.css | 5 +
.../vendor/js/bootstrap-datetimepicker.min.js | 2 +
.../ambari-logsearch-web/webpack.config.js | 539 ++++++++++++++
.../docker/test-config/solr/solr-env-ssl.sh | 1 +
.../docker/test-config/solr/solr-env.sh | 1 +
.../timeline/TimelineMetricConfiguration.java | 13 +
.../metrics/timeline/TimelineMetricsFilter.java | 24 +-
.../timeline/TimelineMetricsFilterTest.java | 3 +
ambari-metrics/pom.xml | 27 +
ambari-server/pom.xml | 8 +-
.../server/actionmanager/ActionScheduler.java | 10 +-
.../actionmanager/ExecutionCommandWrapper.java | 122 ++--
.../ambari/server/agent/CommandRepository.java | 51 +-
.../ambari/server/checks/CheckDescription.java | 12 +
.../checks/DatabaseConsistencyCheckHelper.java | 128 +++-
.../checks/DruidHighAvailabilityCheck.java | 121 ++++
.../checks/ServiceCheckValidityCheck.java | 84 +--
.../AmbariCustomCommandExecutionHelper.java | 17 +-
.../AmbariManagementControllerImpl.java | 16 +-
.../server/controller/ControllerModule.java | 2 +
.../server/controller/RepositoryResponse.java | 23 +-
.../controller/ResourceProviderFactory.java | 6 +-
.../AbstractControllerResourceProvider.java | 2 +-
.../BlueprintConfigurationProcessor.java | 16 +-
.../internal/ClientConfigResourceProvider.java | 2 +
.../ClusterStackVersionResourceProvider.java | 13 +-
.../internal/ComponentResourceProvider.java | 5 +
.../internal/DefaultProviderModule.java | 2 -
.../internal/RepositoryResourceProvider.java | 6 +
.../RepositoryVersionResourceProvider.java | 6 +-
.../VersionDefinitionResourceProvider.java | 4 +
.../events/ClusterConfigFinishedEvent.java | 15 +-
.../DistributeRepositoriesActionListener.java | 8 +
.../listeners/upgrade/StackVersionListener.java | 10 +-
.../CachedRoleCommandOrderProvider.java | 2 +
.../ambari/server/orm/DBAccessorImpl.java | 6 +-
.../server/orm/dao/AlertDefinitionDAO.java | 13 +
.../ambari/server/orm/dao/ClusterDAO.java | 22 +-
.../server/orm/dao/HostRoleCommandDAO.java | 47 ++
.../orm/entities/AlertDefinitionEntity.java | 4 +-
.../orm/entities/ClusterConfigEntity.java | 3 +
.../orm/entities/HostRoleCommandEntity.java | 64 +-
.../server/orm/entities/RepositoryEntity.java | 22 +
.../orm/entities/RepositoryVersionEntity.java | 37 +
.../server/orm/entities/UpgradeItemEntity.java | 2 +-
.../scheduler/ExecutionScheduleManager.java | 23 +-
.../RangerUsersyncConfigCalculation.java | 96 +++
.../apache/ambari/server/stack/RepoUtil.java | 4 +-
.../ambari/server/stack/StackContext.java | 109 ++-
.../apache/ambari/server/stack/StackModule.java | 48 +-
.../server/stack/StackServiceDirectory.java | 7 +-
.../ambari/server/state/RepositoryInfo.java | 27 +-
.../server/state/ServiceComponentImpl.java | 25 +
.../ambari/server/state/ServiceOsSpecific.java | 16 +
.../apache/ambari/server/state/StackInfo.java | 1 -
.../ambari/server/state/UpgradeHelper.java | 109 ++-
.../kerberos/AbstractKerberosDescriptor.java | 4 +-
.../AbstractKerberosDescriptorContainer.java | 25 +-
.../kerberos/KerberosComponentDescriptor.java | 2 +-
.../state/kerberos/KerberosDescriptor.java | 13 +-
.../kerberos/KerberosIdentityDescriptor.java | 78 +-
.../kerberos/KerberosKeytabDescriptor.java | 42 +-
.../kerberos/KerberosPrincipalDescriptor.java | 25 +-
.../kerberos/KerberosServiceDescriptor.java | 12 +-
.../services/AmbariServerAlertService.java | 21 +-
.../server/state/stack/RepoUrlInfoCallable.java | 217 ++++++
.../server/state/stack/RepoVdfCallable.java | 161 +++++
.../server/state/stack/RepositoryXml.java | 11 +
.../stack/upgrade/RepositoryVersionHelper.java | 11 +
.../ambari/server/topology/AmbariContext.java | 2 +-
.../ambari/server/topology/TopologyManager.java | 96 ++-
.../topology/tasks/ConfigureClusterTask.java | 13 +-
.../tasks/ConfigureClusterTaskFactory.java | 3 +-
.../server/upgrade/UpgradeCatalog260.java | 304 +++++++-
.../server/utils/ManagedThreadPoolExecutor.java | 83 +++
.../main/python/ambari_server/serverUpgrade.py | 4 +
.../main/resources/Ambari-DDL-Derby-CREATE.sql | 3 +-
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 3 +-
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 3 +-
.../resources/Ambari-DDL-Postgres-CREATE.sql | 3 +-
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 3 +-
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 3 +-
.../ACCUMULO/1.6.1.2.2.0/kerberos.json | 6 +-
.../0.1.0/configuration/infra-solr-env.xml | 16 +-
.../AMBARI_INFRA/0.1.0/kerberos.json | 6 +-
.../0.1.0/package/scripts/params.py | 4 +
.../0.1.0/properties/infra-solr-env.sh.j2 | 3 +-
.../properties/solr-client-log4j.properties.j2 | 4 +
.../0.1.0/configuration/ams-env.xml | 4 +
.../0.1.0/configuration/ams-hbase-env.xml | 16 +
.../0.1.0/configuration/ams-hbase-site.xml | 24 +-
.../0.1.0/configuration/ams-site.xml | 68 +-
.../0.1.0/configuration/ams-ssl-client.xml | 9 -
.../AMBARI_METRICS/0.1.0/kerberos.json | 6 +-
.../AMBARI_METRICS/0.1.0/metainfo.xml | 7 +
.../AMBARI_METRICS/0.1.0/package/scripts/ams.py | 9 +-
.../0.1.0/package/scripts/params.py | 10 +-
.../AMBARI_METRICS/0.1.0/themes/theme.json | 288 ++++++++
.../ATLAS/0.1.0.2.3/kerberos.json | 6 +-
.../ATLAS/0.1.0.2.3/package/scripts/params.py | 2 +-
.../ATLAS/0.7.0.2.5/kerberos.json | 9 +-
.../ATLAS/0.7.0.3.0/configuration/atlas-env.xml | 6 +
.../ATLAS/0.7.0.3.0/kerberos.json | 9 +-
.../ATLAS/0.7.0.3.0/package/scripts/params.py | 2 +-
.../FALCON/0.5.0.2.1/kerberos.json | 12 +-
.../common-services/HAWQ/2.0.0/kerberos.json | 9 +-
.../HBASE/0.96.0.2.0/kerberos.json | 9 +-
.../HBASE/2.0.0.3.0/kerberos.json | 15 +-
.../HDFS/2.1.0.2.0/kerberos.json | 18 +-
.../2.1.0.2.0/package/scripts/hdfs_datanode.py | 2 +-
.../2.1.0.2.0/package/scripts/params_linux.py | 2 +
.../HDFS/3.0.0.3.0/kerberos.json | 21 +-
.../HIVE/0.12.0.2.0/kerberos.json | 15 +-
.../0.12.0.2.0/package/scripts/hive_service.py | 4 +
.../0.12.0.2.0/package/scripts/params_linux.py | 3 +
.../HIVE/2.1.0.3.0/kerberos.json | 30 +-
.../KAFKA/0.10.0.3.0/kerberos.json | 9 +-
.../common-services/KAFKA/0.10.0/kerberos.json | 9 +-
.../common-services/KAFKA/0.9.0/kerberos.json | 6 +-
.../KERBEROS/1.10.3-10/kerberos.json | 3 +-
.../KERBEROS/1.10.3-30/kerberos.json | 3 +-
.../KNOX/0.5.0.3.0/kerberos.json | 3 +-
.../LOGSEARCH/0.5.0/kerberos.json | 6 +-
.../logfeeder-default_grok_patterns.j2 | 2 +-
.../LOGSEARCH/0.5.0/service_advisor.py | 2 +-
.../MAHOUT/1.0.0.2.3/kerberos.json | 6 +-
.../OOZIE/4.0.0.2.0/kerberos.json | 12 +-
.../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 2 +-
.../4.0.0.2.0/package/scripts/params_linux.py | 20 +-
.../OOZIE/4.2.0.2.3/kerberos.json | 12 +-
.../OOZIE/4.2.0.3.0/kerberos.json | 12 +-
.../PIG/0.12.0.2.0/kerberos.json | 3 +-
.../PIG/0.16.1.3.0/kerberos.json | 3 +-
.../common-services/RANGER/0.6.0/kerberos.json | 18 +-
.../RANGER/0.7.0/configuration/ranger-env.xml | 23 +
.../0.7.0/configuration/ranger-ugsync-site.xml | 7 +
.../RANGER/0.7.0/themes/theme_version_5.json | 40 ++
.../1.0.0.3.0/configuration/ranger-env.xml | 23 +
.../configuration/ranger-ugsync-site.xml | 7 +
.../RANGER/1.0.0.3.0/kerberos.json | 18 +-
.../1.0.0.3.0/themes/theme_version_1.json | 40 ++
.../RANGER_KMS/0.5.0.2.3/kerberos.json | 6 +-
.../RANGER_KMS/1.0.0.3.0/kerberos.json | 9 +-
.../SLIDER/0.60.0.2.2/kerberos.json | 3 +-
.../SLIDER/0.91.0.3.0/kerberos.json | 3 +-
.../common-services/SPARK/1.2.1/kerberos.json | 6 +-
.../common-services/SPARK/1.4.1/kerberos.json | 12 +-
.../common-services/SPARK/2.2.0/kerberos.json | 3 +-
.../common-services/SPARK2/2.0.0/kerberos.json | 12 +-
.../common-services/STORM/0.9.1/kerberos.json | 9 +-
.../STORM/1.0.1.3.0/kerberos.json | 15 +-
.../common-services/STORM/1.0.1/kerberos.json | 15 +-
.../common-services/STORM/1.1.0/kerberos.json | 15 +-
.../common-services/TEZ/0.4.0.2.1/kerberos.json | 3 +-
.../common-services/TEZ/0.9.0.3.0/kerberos.json | 3 +-
.../YARN/2.1.0.2.0/kerberos.json | 30 +-
.../YARN/3.0.0.3.0/configuration/yarn-env.xml | 3 -
.../YARN/3.0.0.3.0/kerberos.json | 36 +-
.../ZEPPELIN/0.6.0.2.5/alerts.json | 18 -
.../0.6.0.2.5/configuration/zeppelin-config.xml | 208 ------
.../0.6.0.2.5/configuration/zeppelin-env.xml | 185 -----
.../configuration/zeppelin-log4j-properties.xml | 37 -
.../configuration/zeppelin-shiro-ini.xml | 97 ---
.../ZEPPELIN/0.6.0.2.5/kerberos.json | 51 --
.../ZEPPELIN/0.6.0.2.5/metainfo.xml | 103 ---
.../package/scripts/alert_check_zeppelin.py | 47 --
.../scripts/interpreter_json_template.py | 361 ----------
.../package/scripts/livy2_config_template.py | 107 ---
.../0.6.0.2.5/package/scripts/master.py | 522 --------------
.../0.6.0.2.5/package/scripts/params.py | 258 -------
.../0.6.0.2.5/package/scripts/service_check.py | 39 -
.../package/scripts/spark2_config_template.py | 84 ---
.../0.6.0.2.5/package/scripts/status_params.py | 29 -
.../templates/input.config-zeppelin.json.j2 | 48 --
.../0.6.0.2.5/quicklinks/quicklinks.json | 35 -
.../ZEPPELIN/0.6.0.2.5/role_command_order.json | 7 -
.../ZEPPELIN/0.6.0.3.0/alerts.json | 18 -
.../0.6.0.3.0/configuration/zeppelin-config.xml | 208 ------
.../0.6.0.3.0/configuration/zeppelin-env.xml | 186 -----
.../configuration/zeppelin-log4j-properties.xml | 37 -
.../configuration/zeppelin-shiro-ini.xml | 97 ---
.../ZEPPELIN/0.6.0.3.0/kerberos.json | 51 --
.../ZEPPELIN/0.6.0.3.0/metainfo.xml | 111 ---
.../package/scripts/alert_check_zeppelin.py | 47 --
.../package/scripts/livy2_config_template.py | 107 ---
.../0.6.0.3.0/package/scripts/master.py | 443 ------------
.../0.6.0.3.0/package/scripts/params.py | 228 ------
.../0.6.0.3.0/package/scripts/service_check.py | 39 -
.../package/scripts/spark2_config_template.py | 84 ---
.../0.6.0.3.0/package/scripts/status_params.py | 29 -
.../templates/input.config-zeppelin.json.j2 | 48 --
.../0.6.0.3.0/quicklinks/quicklinks.json | 35 -
.../ZEPPELIN/0.6.0.3.0/role_command_order.json | 7 -
.../ZEPPELIN/0.6.0.3.0/service_advisor.py | 209 ------
.../common-services/ZEPPELIN/0.6.0/alerts.json | 18 +
.../0.6.0/configuration/zeppelin-config.xml | 208 ++++++
.../0.6.0/configuration/zeppelin-env.xml | 184 +++++
.../configuration/zeppelin-log4j-properties.xml | 37 +
.../0.6.0/configuration/zeppelin-shiro-ini.xml | 97 +++
.../ZEPPELIN/0.6.0/kerberos.json | 52 ++
.../common-services/ZEPPELIN/0.6.0/metainfo.xml | 103 +++
.../package/scripts/alert_check_zeppelin.py | 47 ++
.../scripts/interpreter_json_template.py | 361 ++++++++++
.../package/scripts/livy2_config_template.py | 107 +++
.../ZEPPELIN/0.6.0/package/scripts/master.py | 522 ++++++++++++++
.../ZEPPELIN/0.6.0/package/scripts/params.py | 258 +++++++
.../0.6.0/package/scripts/service_check.py | 39 +
.../package/scripts/spark2_config_template.py | 84 +++
.../0.6.0/package/scripts/status_params.py | 29 +
.../templates/input.config-zeppelin.json.j2 | 48 ++
.../ZEPPELIN/0.6.0/quicklinks/quicklinks.json | 35 +
.../ZEPPELIN/0.6.0/role_command_order.json | 7 +
.../common-services/ZEPPELIN/0.7.0/alerts.json | 18 +
.../0.7.0/configuration/zeppelin-config.xml | 214 ++++++
.../0.7.0/configuration/zeppelin-env.xml | 184 +++++
.../configuration/zeppelin-log4j-properties.xml | 37 +
.../0.7.0/configuration/zeppelin-shiro-ini.xml | 97 +++
.../ZEPPELIN/0.7.0/kerberos.json | 52 ++
.../common-services/ZEPPELIN/0.7.0/metainfo.xml | 103 +++
.../package/scripts/alert_check_zeppelin.py | 47 ++
.../scripts/interpreter_json_template.py | 366 ++++++++++
.../package/scripts/livy2_config_template.py | 112 +++
.../ZEPPELIN/0.7.0/package/scripts/master.py | 563 +++++++++++++++
.../ZEPPELIN/0.7.0/package/scripts/params.py | 258 +++++++
.../0.7.0/package/scripts/service_check.py | 39 +
.../package/scripts/spark2_config_template.py | 84 +++
.../0.7.0/package/scripts/status_params.py | 29 +
.../templates/input.config-zeppelin.json.j2 | 48 ++
.../ZEPPELIN/0.7.0/quicklinks/quicklinks.json | 35 +
.../ZEPPELIN/0.7.0/role_command_order.json | 7 +
.../ZEPPELIN/0.7.0/service_advisor.py | 209 ++++++
.../ZOOKEEPER/3.4.5/kerberos.json | 3 +-
.../custom_actions/scripts/update_repo.py | 7 +-
.../resources/kerberos_descriptor_schema.json | 194 +++++
.../src/main/resources/scripts/configs.py | 219 ++++--
.../src/main/resources/scripts/configs.sh | 272 +------
.../HDP/2.0.6/configuration/cluster-env.xml | 6 +
.../scripts/shared_initialization.py | 19 +-
.../before-ANY/scripts/shared_initialization.py | 29 +-
.../scripts/repo_initialization.py | 3 +-
.../HDP/2.0.6/properties/stack_packages.json | 68 +-
.../stacks/HDP/2.0.6/services/stack_advisor.py | 83 +--
.../stacks/HDP/2.1/services/stack_advisor.py | 4 +
.../stacks/HDP/2.2/services/YARN/kerberos.json | 30 +-
.../HDP/2.3.ECS/services/ECS/kerberos.json | 3 +-
.../HDP/2.3.ECS/services/HBASE/kerberos.json | 9 +-
.../HDP/2.3.ECS/services/YARN/kerberos.json | 33 +-
.../services/ACCUMULO/kerberos.json | 27 +-
.../HDP/2.3/services/ACCUMULO/kerberos.json | 6 +-
.../stacks/HDP/2.3/services/TEZ/kerberos.json | 3 +-
.../stacks/HDP/2.3/services/YARN/kerberos.json | 30 +-
.../HDP/2.5/services/FALCON/kerberos.json | 15 +-
.../stacks/HDP/2.5/services/HBASE/kerberos.json | 15 +-
.../stacks/HDP/2.5/services/HDFS/kerberos.json | 21 +-
.../HIVE/configuration/tez-interactive-site.xml | 11 +
.../stacks/HDP/2.5/services/HIVE/kerberos.json | 30 +-
.../stacks/HDP/2.5/services/KNOX/kerberos.json | 3 +-
.../HDP/2.5/services/RANGER_KMS/kerberos.json | 9 +-
.../stacks/HDP/2.5/services/SPARK/kerberos.json | 18 +-
.../stacks/HDP/2.5/services/YARN/kerberos.json | 36 +-
.../HDP/2.5/services/ZEPPELIN/kerberos.json | 3 +-
.../HDP/2.5/services/ZEPPELIN/metainfo.xml | 4 +-
.../stacks/HDP/2.5/upgrades/config-upgrade.xml | 24 +
.../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml | 12 +
.../HDP/2.5/upgrades/nonrolling-upgrade-2.6.xml | 16 +
.../stacks/HDP/2.5/upgrades/upgrade-2.5.xml | 11 +-
.../stacks/HDP/2.5/upgrades/upgrade-2.6.xml | 10 +-
.../stacks/HDP/2.6/kerberos_preconfigure.json | 2 -
.../services/ATLAS/configuration/atlas-env.xml | 6 +
.../stacks/HDP/2.6/services/ATLAS/kerberos.json | 9 +-
.../stacks/HDP/2.6/services/DRUID/kerberos.json | 24 +-
.../stacks/HDP/2.6/services/HDFS/kerberos.json | 21 +-
.../configuration/hive-interactive-site.xml | 14 +
.../stacks/HDP/2.6/services/OOZIE/kerberos.json | 12 +-
.../stacks/HDP/2.6/services/SPARK/kerberos.json | 3 +-
.../HDP/2.6/services/SPARK2/kerberos.json | 3 +-
.../HDP/2.6/services/SUPERSET/kerberos.json | 6 +-
.../stacks/HDP/2.6/services/YARN/kerberos.json | 36 +-
.../HDP/2.6/services/ZEPPELIN/kerberos.json | 3 +-
.../HDP/2.6/services/ZEPPELIN/metainfo.xml | 21 +-
.../stacks/HDP/2.6/upgrades/config-upgrade.xml | 12 +
.../HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml | 17 +
.../stacks/HDP/2.6/upgrades/upgrade-2.6.xml | 14 +
.../HDP/3.0/properties/stack_packages.json | 50 +-
.../HDP/3.0/services/ZEPPELIN/metainfo.xml | 4 +-
.../PERF/1.0/services/FAKEHBASE/kerberos.json | 15 +-
.../PERF/1.0/services/FAKEHDFS/kerberos.json | 21 +-
.../PERF/1.0/services/FAKEHDFS/widgets.json | 48 +-
.../PERF/1.0/services/FAKEYARN/kerberos.json | 36 +-
.../1.0/services/FAKEZOOKEEPER/kerberos.json | 3 +-
.../PERF/1.0/services/GRUMPY/kerberos.json | 12 +-
.../PERF/1.0/services/HAPPY/kerberos.json | 12 +-
.../PERF/1.0/services/KERBEROS/kerberos.json | 3 +-
.../PERF/1.0/services/SLEEPY/kerberos.json | 12 +-
.../stacks/PERF/1.0/services/SNOW/kerberos.json | 12 +-
.../src/main/resources/version_definition.xsd | 2 +
.../server/agent/TestHeartbeatMonitor.java | 20 +-
.../RepositoryVersionEventCreatorTest.java | 4 +
.../DatabaseConsistencyCheckHelperTest.java | 84 +++
.../checks/DruidHighAvailabilityCheckTest.java | 176 +++++
.../checks/ServiceCheckValidityCheckTest.java | 94 ++-
.../AmbariManagementControllerTest.java | 1 +
.../BlueprintConfigurationProcessorTest.java | 29 +-
...ClusterStackVersionResourceProviderTest.java | 232 +++---
.../internal/ComponentResourceProviderTest.java | 6 +
.../RepositoryResourceProviderTest.java | 20 +-
.../StackUpgradeConfigurationMergeTest.java | 136 ++++
.../upgrade/StackVersionListenerTest.java | 46 ++
.../server/orm/dao/AlertDefinitionDAOTest.java | 6 +
.../scheduler/ExecutionScheduleManagerTest.java | 36 +
.../ComponentVersionCheckActionTest.java | 14 -
.../RangerUsersyncConfigCalculationTest.java | 126 ++++
.../server/stack/KerberosDescriptorTest.java | 164 ++---
.../server/stack/StackServiceDirectoryTest.java | 76 ++
.../server/state/ServiceComponentTest.java | 21 +-
.../ambari/server/state/UpgradeHelperTest.java | 44 ++
.../KerberosComponentDescriptorTest.java | 18 +-
.../KerberosConfigurationDescriptorTest.java | 2 +-
.../state/kerberos/KerberosDescriptorTest.java | 52 +-
.../KerberosDescriptorUpdateHelperTest.java | 2 +-
.../KerberosIdentityDescriptorTest.java | 49 +-
.../kerberos/KerberosKeytabDescriptorTest.java | 28 +-
.../KerberosPrincipalDescriptorTest.java | 24 +-
.../kerberos/KerberosServiceDescriptorTest.java | 24 +-
.../ClusterDeployWithStartOnlyTest.java | 2 +-
...InstallWithoutStartOnComponentLevelTest.java | 2 +-
.../ClusterInstallWithoutStartTest.java | 2 +-
.../topology/ConfigureClusterTaskTest.java | 18 +-
.../server/topology/TopologyManagerTest.java | 2 +-
.../server/upgrade/UpgradeCatalog260Test.java | 335 +++++++--
.../utils/ManagedThreadPoolExecutorTest.java | 51 ++
ambari-server/src/test/python/TestConfigs.py | 38 +-
.../src/test/python/TestStackSelect.py | 67 +-
.../src/test/python/TestVersionSelectUtil.py | 18 +-
.../python/stacks/2.0.6/HDFS/test_datanode.py | 4 +-
.../stacks/2.0.6/OOZIE/test_oozie_server.py | 66 ++
.../stacks/2.0.6/common/test_stack_advisor.py | 4 +-
.../python/stacks/2.0.6/configs/default.json | 2 +-
.../hooks/after-INSTALL/test_after_install.py | 2 +-
.../2.0.6/hooks/before-ANY/test_before_any.py | 85 +--
.../hooks/before-INSTALL/test_before_install.py | 10 +
.../stacks/2.1/common/test_stack_advisor.py | 28 +
.../stacks/2.2/common/test_stack_advisor.py | 232 +++++-
.../2.5/ZEPPELIN/interpreter_json_generated.py | 27 +
.../stacks/2.5/ZEPPELIN/test_zeppelin_060.py | 339 +++++++++
.../stacks/2.5/ZEPPELIN/test_zeppelin_master.py | 330 ---------
.../test/python/stacks/2.5/configs/default.json | 53 +-
.../test/python/stacks/2.5/configs/secured.json | 71 +-
.../2.6/ZEPPELIN/interpreter_json_generated.py | 27 +
.../stacks/2.6/ZEPPELIN/test_zeppelin_070.py | 448 ++++++++++++
.../test/python/stacks/2.6/configs/default.json | 80 ++-
.../src/test/python/stacks/utils/RMFTestCase.py | 30 +-
.../src/test/resources/TestConfigs-content.xml | 28 +
.../test_kerberos_descriptor_ranger_kms.json | 1 +
.../HDP/2.0.8/services/HDFS/kerberos.json | 12 +-
ambari-web/app/config.js | 1 -
.../global/background_operations_controller.js | 9 +-
.../controllers/global/cluster_controller.js | 1 +
.../app/controllers/global/update_controller.js | 2 +-
ambari-web/app/controllers/installer.js | 37 +-
.../progress_popup_controller.js | 8 +-
.../rangerAdmin/step4_controller.js | 2 +-
.../main/admin/stack_and_upgrade_controller.js | 29 +-
ambari-web/app/controllers/main/host/details.js | 153 +++-
ambari-web/app/controllers/main/service/item.js | 12 +-
.../service/manage_config_groups_controller.js | 63 +-
.../main/service/reassign/step4_controller.js | 8 +-
.../main/service/reassign_controller.js | 7 +-
.../app/controllers/wizard/step2_controller.js | 4 +-
.../wizard/step7/assign_master_controller.js | 5 +-
.../app/controllers/wizard/step7_controller.js | 10 +-
.../app/controllers/wizard/step8_controller.js | 4 +-
.../configs/services/ambari_infra_properties.js | 31 +-
.../app/mappers/repository_version_mapper.js | 2 +-
ambari-web/app/mappers/service_mapper.js | 6 +-
.../app/mappers/service_metrics_mapper.js | 3 +-
ambari-web/app/mappers/stack_mapper.js | 5 +-
ambari-web/app/mappers/stack_version_mapper.js | 6 +-
ambari-web/app/messages.js | 24 +-
.../configs/config_recommendation_parser.js | 29 +-
...onfig_with_override_recommendation_parser.js | 7 +-
.../main/host/details/actions/check_host.js | 4 +-
.../configs/component_actions_by_configs.js | 10 +-
.../mixins/wizard/assign_master_components.js | 23 +-
.../wizard/wizardProgressPageController.js | 20 +-
ambari-web/app/models/operating_system.js | 3 +-
ambari-web/app/models/repository.js | 4 +-
ambari-web/app/models/service.js | 1 +
ambari-web/app/models/stack_version/version.js | 2 +
ambari-web/app/routes/stack_upgrade_routes.js | 11 +-
ambari-web/app/styles/application.less | 12 +
ambari-web/app/styles/modal_popups.less | 11 +
ambari-web/app/styles/stack_versions.less | 128 ++--
ambari-web/app/templates/common/breadcrumbs.hbs | 6 +-
.../common/configs/overriddenProperty.hbs | 4 +-
.../templates/common/host_progress_popup.hbs | 27 +-
.../stack_upgrade/stack_upgrade_wizard.hbs | 174 +++--
.../main/admin/stack_upgrade/upgrade_group.hbs | 18 +-
.../admin/stack_upgrade/upgrade_options.hbs | 2 +-
.../admin/stack_upgrade/upgrade_version_box.hbs | 6 +-
.../stack_upgrade/upgrade_version_column.hbs | 26 +
ambari-web/app/templates/main/host/details.hbs | 3 +
.../main/host/details/recoverHostErrorPopup.hbs | 23 +
.../main/host/details/recoverHostPopup.hbs | 22 +
ambari-web/app/templates/wizard/step2.hbs | 5 +
.../app/utils/batch_scheduled_requests.js | 2 +-
ambari-web/app/utils/host_progress_popup.js | 121 +++-
ambari-web/app/utils/hosts.js | 5 +-
ambari-web/app/views/common/breadcrumbs_view.js | 24 +-
.../views/common/configs/config_history_flow.js | 5 +-
.../app/views/common/configs/controls_view.js | 2 +-
.../views/common/configs/service_config_view.js | 3 +-
.../configs/service_configs_by_category_view.js | 16 +-
ambari-web/app/views/common/controls_view.js | 4 +-
.../views/common/helpers/status_icon_view.js | 1 +
.../common/host_progress_popup_body_view.js | 316 +++++---
.../stack_upgrade/upgrade_version_box_view.js | 21 +-
.../upgrade_version_column_view.js | 54 +-
.../admin/stack_upgrade/upgrade_wizard_view.js | 7 +-
.../views/main/dashboard/config_history_view.js | 25 +-
.../views/main/service/reassign/step1_view.js | 25 +-
ambari-web/app/views/wizard/step2_view.js | 21 +
.../global/background_operations_test.js | 4 +-
.../global/cluster_controller_test.js | 16 +-
.../progress_popup_controller_test.js | 4 +
.../admin/stack_and_upgrade_controller_test.js | 60 +-
.../manage_config_groups_controller_test.js | 89 ++-
.../service/reassign/step4_controller_test.js | 12 +-
.../step7/assign_master_controller_test.js | 23 +
.../test/controllers/wizard/step7_test.js | 11 +
.../mixins/common/configs/configs_saver_test.js | 4 +-
.../component_actions_by_configs_test.js | 10 +-
.../service/configs/config_overridable_test.js | 2 +
.../test/utils/host_progress_popup_test.js | 7 +-
ambari-web/test/utils/hosts_test.js | 3 +-
.../test/views/common/breadcrumbs_view_test.js | 30 +-
.../host_progress_popup_body_view_test.js | 641 ++++++++++-------
.../upgrade_version_box_view_test.js | 57 +-
.../upgrade_version_column_view_test.js | 72 +-
.../stack_upgrade/upgrade_wizard_view_test.js | 18 +-
.../main/dashboard/config_history_view_test.js | 1 +
.../common-services/NIFI/1.0.0/kerberos.json | 6 +-
.../stacks/HDF/2.0/services/KAFKA/kerberos.json | 6 +-
.../MICROSOFT_R_SERVER/8.0.5/kerberos.json | 6 +-
.../stacks/ODPi/2.0/services/HIVE/kerberos.json | 18 +-
.../stacks/ODPi/2.0/services/YARN/kerberos.json | 30 +-
.../stacks/ODPi/2.0/services/stack_advisor.py | 7 +
docs/pom.xml | 12 +
547 files changed, 17340 insertions(+), 8165 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelper.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
----------------------------------------------------------------------
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
index c4ab66c,2e86b2d..c01b901
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
@@@ -81,27 -76,24 +81,30 @@@ public class ComponentResourceProvider
// ----- Property ID constants ---------------------------------------------
// Components
- protected static final String COMPONENT_CLUSTER_NAME_PROPERTY_ID = "ServiceComponentInfo/cluster_name";
- protected static final String COMPONENT_SERVICE_NAME_PROPERTY_ID = "ServiceComponentInfo/service_name";
- protected static final String COMPONENT_COMPONENT_NAME_PROPERTY_ID = "ServiceComponentInfo/component_name";
- protected static final String COMPONENT_DISPLAY_NAME_PROPERTY_ID = "ServiceComponentInfo/display_name";
- protected static final String COMPONENT_STATE_PROPERTY_ID = "ServiceComponentInfo/state";
- protected static final String COMPONENT_CATEGORY_PROPERTY_ID = "ServiceComponentInfo/category";
- protected static final String COMPONENT_TOTAL_COUNT_PROPERTY_ID = "ServiceComponentInfo/total_count";
- protected static final String COMPONENT_STARTED_COUNT_PROPERTY_ID = "ServiceComponentInfo/started_count";
- protected static final String COMPONENT_INSTALLED_COUNT_PROPERTY_ID = "ServiceComponentInfo/installed_count";
- protected static final String COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID
- = "ServiceComponentInfo/installed_and_maintenance_off_count";
- protected static final String COMPONENT_INIT_COUNT_PROPERTY_ID = "ServiceComponentInfo/init_count";
- protected static final String COMPONENT_UNKNOWN_COUNT_PROPERTY_ID = "ServiceComponentInfo/unknown_count";
- protected static final String COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID = "ServiceComponentInfo/install_failed_count";
- protected static final String COMPONENT_RECOVERY_ENABLED_ID = "ServiceComponentInfo/recovery_enabled";
- protected static final String COMPONENT_DESIRED_STACK = "ServiceComponentInfo/desired_stack";
- protected static final String COMPONENT_DESIRED_VERSION = "ServiceComponentInfo/desired_version";
- protected static final String COMPONENT_REPOSITORY_STATE = "ServiceComponentInfo/repository_state";
++
+ protected static final String COMPONENT_CLUSTER_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_id";
+ protected static final String COMPONENT_CLUSTER_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_name";
+ protected static final String COMPONENT_SERVICE_GROUP_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_id";
+ protected static final String COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_name";
+ protected static final String COMPONENT_SERVICE_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_id";
+ protected static final String COMPONENT_SERVICE_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_name";
+ protected static final String COMPONENT_SERVICE_DISPLAY_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_display_name";
+ protected static final String COMPONENT_COMPONENT_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "component_name";
+ protected static final String COMPONENT_DISPLAY_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "display_name";
+ protected static final String COMPONENT_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "state";
+ protected static final String COMPONENT_CATEGORY_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "category";
+ protected static final String COMPONENT_TOTAL_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "total_count";
+ protected static final String COMPONENT_STARTED_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "started_count";
+ protected static final String COMPONENT_INSTALLED_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "installed_count";
++ protected static final String COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "installed_and_maintenance_off_count";
++
+ protected static final String COMPONENT_INIT_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "init_count";
+ protected static final String COMPONENT_UNKNOWN_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "unknown_count";
+ protected static final String COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "install_failed_count";
+ protected static final String COMPONENT_RECOVERY_ENABLED_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "recovery_enabled";
+ protected static final String COMPONENT_DESIRED_STACK = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_stack";
+ protected static final String COMPONENT_DESIRED_VERSION = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_version";
+ protected static final String COMPONENT_REPOSITORY_STATE = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "repository_state";
private static final String TRUE = "true";
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
----------------------------------------------------------------------
diff --cc ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
index 15d0539,6dc2b93..8382a05
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java
@@@ -1144,8 -1144,8 +1146,8 @@@ public class StackModule extends BaseMo
Set<RepositoryInfo> serviceRepos = getUniqueServiceRepos(stackRepos);
stackInfo.getRepositories().addAll(serviceRepos);
- if (null != rxml && null != rxml.getLatestURI() && stackRepos.size() > 0) {
+ if (null != rxml && null != rxml.getLatestURI() && stackRepos.size() > 0 && stackContext != null) {
- stackContext.registerRepoUpdateTask(rxml.getLatestURI(), this);
+ registerRepoUpdateTask(rxml);
}
}
@@@ -1234,8 -1276,8 +1278,8 @@@
RepositoryXml serviceRepoXml = ssd.getRepoFile();
if (null != serviceRepoXml) {
repos.addAll(serviceRepoXml.getRepositories());
- if (null != serviceRepoXml.getLatestURI()) {
+ if (null != serviceRepoXml.getLatestURI() && stackContext != null) {
- stackContext.registerRepoUpdateTask(serviceRepoXml.getLatestURI(), this);
+ registerRepoUpdateTask(serviceRepoXml);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --cc ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index aa9b3ef,22c97ed..7e66734
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@@ -30,8 -30,8 +30,9 @@@ import java.util.concurrent.locks.Reent
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ObjectNotFoundException;
import org.apache.ambari.server.ServiceComponentHostNotFoundException;
+import org.apache.ambari.server.ServiceGroupNotFoundException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+ import org.apache.ambari.server.controller.MaintenanceStateHelper;
import org.apache.ambari.server.controller.ServiceComponentResponse;
import org.apache.ambari.server.events.ServiceComponentRecoveryChangedEvent;
import org.apache.ambari.server.events.listeners.upgrade.StackVersionListener;
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/service_advisor.py
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/service_advisor.py
----------------------------------------------------------------------
diff --cc ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/service_advisor.py
index 0000000,4548961..834b21e
mode 000000,100644..100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/service_advisor.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/service_advisor.py
@@@ -1,0 -1,209 +1,209 @@@
+ #!/usr/bin/env ambari-python-wrap
+ """
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+ """
+
+ # Python imports
+ import imp
+ import os
+ import traceback
+ import re
+ import socket
+ import fnmatch
+
+
+ from resource_management.core.logger import Logger
+
+ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
-STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../stacks/')
++STACKS_DIR = os.path.join(SCRIPT_DIR, '/var/lib/ambari-server/resources/stacks/')
+ PARENT_FILE = os.path.join(STACKS_DIR, 'service_advisor.py')
+
+ try:
+ with open(PARENT_FILE, 'rb') as fp:
+ service_advisor = imp.load_module('service_advisor', fp, PARENT_FILE, ('.py', 'rb', imp.PY_SOURCE))
+ except Exception as e:
+ traceback.print_exc()
+ print "Failed to load parent"
+
+ class ZeppelinServiceAdvisor(service_advisor.ServiceAdvisor):
+
+ def __init__(self, *args, **kwargs):
+ self.as_super = super(ZeppelinServiceAdvisor, self)
+ self.as_super.__init__(*args, **kwargs)
+
+ # Always call these methods
+ self.modifyMastersWithMultipleInstances()
+ self.modifyCardinalitiesDict()
+ self.modifyHeapSizeProperties()
+ self.modifyNotValuableComponents()
+ self.modifyComponentsNotPreferableOnServer()
+ self.modifyComponentLayoutSchemes()
+
+ def modifyMastersWithMultipleInstances(self):
+ """
+ Modify the set of masters with multiple instances.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyCardinalitiesDict(self):
+ """
+ Modify the dictionary of cardinalities.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyHeapSizeProperties(self):
+ """
+ Modify the dictionary of heap size properties.
+ Must be overriden in child class.
+ """
+ pass
+
+ def modifyNotValuableComponents(self):
+ """
+ Modify the set of components whose host assignment is based on other services.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyComponentsNotPreferableOnServer(self):
+ """
+ Modify the set of components that are not preferable on the server.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def modifyComponentLayoutSchemes(self):
+ """
+ Modify layout scheme dictionaries for components.
+ The scheme dictionary basically maps the number of hosts to
+ host index where component should exist.
+ Must be overriden in child class.
+ """
+ # Nothing to do
+ pass
+
+ def getServiceComponentLayoutValidations(self, services, hosts):
+ """
+ Get a list of errors.
+ Must be overriden in child class.
+ """
+
+ return []
+
+ def getServiceConfigurationRecommendations(self, configurations, clusterData, services, hosts):
+ """
+ Entry point.
+ Must be overriden in child class.
+ """
+ #Logger.info("Class: %s, Method: %s. Recommending Service Configurations." %
+ # (self.__class__.__name__, inspect.stack()[0][3]))
+
+ recommender = ZeppelinRecommender()
+ recommender.recommendZeppelinConfigurationsFromHDP25(configurations, clusterData, services, hosts)
+
+ def getServiceConfigurationsValidationItems(self, configurations, recommendedDefaults, services, hosts):
+ """
+ Entry point.
+ Validate configurations for the service. Return a list of errors.
+ The code for this function should be the same for each Service Advisor.
+ """
+ #Logger.info("Class: %s, Method: %s. Validating Configurations." %
+ # (self.__class__.__name__, inspect.stack()[0][3]))
+
+ validator = ZeppelinValidator()
+ # Calls the methods of the validator using arguments,
+ # method(siteProperties, siteRecommendations, configurations, services, hosts)
+ return validator.validateListOfConfigUsingMethod(configurations, recommendedDefaults, services, hosts, validator.validators)
+
+
+
+ class ZeppelinRecommender(service_advisor.ServiceAdvisor):
+ """
+ Zeppelin Recommender suggests properties when adding the service for the first time or modifying configs via the UI.
+ """
+
+ def __init__(self, *args, **kwargs):
+ self.as_super = super(ZeppelinRecommender, self)
+ self.as_super.__init__(*args, **kwargs)
+
+ def recommendZeppelinConfigurationsFromHDP25(self, configurations, clusterData, services, hosts):
+ """
+ :type configurations dict
+ :type clusterData dict
+ :type services dict
+ :type hosts dict
+ """
+ self.__recommendLivySuperUsers(configurations, services)
+
+ def __recommendLivySuperUsers(self, configurations, services):
+ """
+ If Kerberos is enabled AND Zeppelin is installed and Spark Livy Server is installed, then set
+ livy-conf/livy.superusers to contain the Zeppelin principal name from
+ zeppelin-env/zeppelin.server.kerberos.principal
+
+ :param configurations:
+ :param services:
+ """
+ if self.isSecurityEnabled(services):
+ zeppelin_env = self.getServicesSiteProperties(services, "zeppelin-env")
+
+ if zeppelin_env and 'zeppelin.server.kerberos.principal' in zeppelin_env:
+ zeppelin_principal = zeppelin_env['zeppelin.server.kerberos.principal']
+ zeppelin_user = zeppelin_principal.split('@')[0] if zeppelin_principal else None
+
+ if zeppelin_user:
+ livy_conf = self.getServicesSiteProperties(services, 'livy-conf')
+
+ if livy_conf:
+ superusers = livy_conf['livy.superusers'] if livy_conf and 'livy.superusers' in livy_conf else None
+
+ # add the Zeppelin user to the set of users
+ if superusers:
+ _superusers = superusers.split(',')
+ _superusers = [x.strip() for x in _superusers]
+ _superusers = filter(None, _superusers) # Removes empty string elements from array
+ else:
+ _superusers = []
+
+ if zeppelin_user not in _superusers:
+ _superusers.append(zeppelin_user)
+
+ putLivyProperty = self.putProperty(configurations, 'livy-conf', services)
+ putLivyProperty('livy.superusers', ','.join(_superusers))
+
+ class ZeppelinValidator(service_advisor.ServiceAdvisor):
+ """
+ Zeppelin Validator checks the correctness of properties whenever the service is first added or the user attempts to
+ change configs via the UI.
+ """
+
+ def __init__(self, *args, **kwargs):
+ self.as_super = super(ZeppelinValidator, self)
+ self.as_super.__init__(*args, **kwargs)
+
+ self.validators = []
+
+
+
+
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
----------------------------------------------------------------------
diff --cc ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
index 0ad53c5,3db174c..795fd1a
--- a/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/DatabaseConsistencyCheckHelperTest.java
@@@ -40,9 -46,11 +46,12 @@@ import javax.persistence.TypedQuery
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.mpack.MpackManagerFactory;
import org.apache.ambari.server.orm.DBAccessor;
+ import org.apache.ambari.server.orm.dao.ClusterDAO;
+ import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
import org.apache.ambari.server.stack.StackManagerFactory;
+ import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.ServiceInfo;
import org.apache.ambari.server.state.stack.OsFamily;
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
----------------------------------------------------------------------
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
index 6f3fe79,39ab1d7..51be08b
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
@@@ -326,7 -460,7 +461,8 @@@ public class StackUpgradeConfigurationM
binder.bind(ServiceConfigDAO.class).toInstance(createNiceMock(ServiceConfigDAO.class));
binder.install(new FactoryModuleBuilder().build(UpgradeContextFactory.class));
binder.bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class);
+ binder.bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
+ binder.bind(AmbariMetaInfo.class).toInstance(m_metainfo);
binder.requestStaticInjection(UpgradeResourceProvider.class);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-server/src/test/java/org/apache/ambari/server/state/kerberos/KerberosDescriptorUpdateHelperTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-web/app/controllers/global/update_controller.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-web/app/controllers/wizard/step8_controller.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-web/app/mappers/service_mapper.js
----------------------------------------------------------------------
diff --cc ambari-web/app/mappers/service_mapper.js
index 79036d0,24130dd..38d2724
--- a/ambari-web/app/mappers/service_mapper.js
+++ b/ambari-web/app/mappers/service_mapper.js
@@@ -21,9 -21,10 +21,10 @@@ var misc = require('utils/misc')
App.serviceMapper = App.QuickDataMapper.create({
model: App.Service,
config: {
- id: 'ServiceInfo.service_name',
- service_name: 'ServiceInfo.service_name',
+ id: 'ServiceInfo.service_display_name',
+ service_name: 'ServiceInfo.service_display_name',
- work_status: 'ServiceInfo.state'
+ work_status: 'ServiceInfo.state',
+ desired_repository_version_id: 'ServiceInfo.desired_repository_version_id'
},
initialAppLoad: false,
passiveStateMap: {},
@@@ -40,8 -41,9 +41,9 @@@
} else {
var serviceData = {
ServiceInfo: {
- service_name: service.ServiceInfo.service_name,
+ service_display_name: service.ServiceInfo.service_display_name,
- state: service.ServiceInfo.state
+ state: service.ServiceInfo.state,
+ desired_repository_version_id: service.ServiceInfo.desired_repository_version_id
},
host_components: [],
components: []
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-web/app/mappers/service_metrics_mapper.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/530df165/ambari-web/app/mixins/wizard/wizardProgressPageController.js
----------------------------------------------------------------------
diff --cc ambari-web/app/mixins/wizard/wizardProgressPageController.js
index 0a91c58,3dcde74..7e3aa1f
--- a/ambari-web/app/mixins/wizard/wizardProgressPageController.js
+++ b/ambari-web/app/mixins/wizard/wizardProgressPageController.js
@@@ -449,9 -457,7 +457,7 @@@ App.wizardProgressPageControllerMixin
}).join(',');
}
data.context = "Stop required services";
- data.urlParams = "ServiceInfo/service_name.in(" + servicesList + ")";
+ data.urlParams = "ServiceInfo/service_display_name.in(" + servicesList + ")";
- } else {
- data.context = "Stop all services";
}
return App.ajax.send({
name: 'common.services.update',
[03/50] [abbrv] ambari git commit: AMBARI-22004 Log Search UI:
implement 'Excluded' filter. (ababiichuk)
Posted by jl...@apache.org.
AMBARI-22004 Log Search UI: implement 'Excluded' filter. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/260c75fc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/260c75fc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/260c75fc
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 260c75fc81891d9df219e64ed9dbd3cc8bc5e140
Parents: 8467a20
Author: ababiichuk <ab...@hortonworks.com>
Authored: Wed Sep 20 13:11:48 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Wed Sep 20 13:11:48 2017 +0300
----------------------------------------------------------------------
.../dropdown-button.component.html | 9 ++++--
.../dropdown-button.component.less | 4 +++
.../dropdown-button.component.spec.ts | 12 +++++--
.../dropdown-button.component.ts | 9 ++++++
.../filter-button.component.spec.ts | 12 +++++--
.../filters-panel/filters-panel.component.html | 8 ++---
.../filters-panel/filters-panel.component.ts | 15 ++++++++-
.../menu-button/menu-button.component.spec.ts | 18 +++++++++--
.../search-box/search-box.component.html | 3 +-
.../search-box/search-box.component.less | 4 +++
.../search-box/search-box.component.ts | 33 ++++++++++++++------
.../timezone-picker.component.spec.ts | 20 ++++++++++--
.../src/app/components/variables.less | 3 +-
.../services/component-actions.service.spec.ts | 29 +++++++++++++++--
.../app/services/component-actions.service.ts | 8 ++++-
.../src/app/services/filtering.service.ts | 3 ++
16 files changed, 161 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.html
index a16b205..9536573 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.html
@@ -15,10 +15,15 @@
limitations under the License.
-->
-<div class="filter-label" *ngIf="label">{{label | translate}}</div>
<div [ngClass]="{'dropup': isDropup}">
<button class="btn btn-link dropdown-toggle" data-toggle="dropdown">
- <span *ngIf="!isMultipleChoice">{{selectedLabel | translate}}</span> <span class="caret"></span>
+ <span *ngIf="iconClass || label"
+ [ngClass]="{'filter-label': true, 'plain': !isMultipleChoice && !hideCaret && showSelectedValue}">
+ <span *ngIf="iconClass" [ngClass]="iconClass"></span>
+ <span *ngIf="label">{{label | translate}}</span>
+ </span>
+ <span *ngIf="showSelectedValue && !isMultipleChoice">{{selectedLabel | translate}}</span>
+ <span *ngIf="!hideCaret" class="caret"></span>
</button>
<ul data-component="dropdown-list" [ngClass]="{'dropdown-menu': true, 'dropdown-menu-right': isRightAlign}"
[items]="options" [isMultipleChoice]="isMultipleChoice" (selectedItemChange)="updateValue($event)"></ul>
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.less
index 55699b4..a5da7f5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.less
@@ -24,6 +24,10 @@
.filter-label {
padding: @input-group-addon-padding;
+
+ &.plain {
+ color: initial;
+ }
}
.btn {
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
index c5845b3..04730ef 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
@@ -23,9 +23,12 @@ import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
import {ComponentsService, components} from '@app/services/storage/components.service';
+import {AppStateService, appState} from '@app/services/storage/app-state.service';
+import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {FilteringService} from '@app/services/filtering.service';
import {UtilsService} from '@app/services/utils.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {DropdownButtonComponent} from './dropdown-button.component';
@@ -40,7 +43,9 @@ describe('DropdownButtonComponent', () => {
StoreModule.provideStore({
appSettings,
clusters,
- components
+ components,
+ appState,
+ hosts
}),
...TranslationModules
],
@@ -48,9 +53,12 @@ describe('DropdownButtonComponent', () => {
AppSettingsService,
ClustersService,
ComponentsService,
+ AppStateService,
+ HostsService,
FilteringService,
UtilsService,
- ComponentActionsService
+ ComponentActionsService,
+ HttpClientService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
index 5800190..42b9451 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
@@ -38,6 +38,15 @@ export class DropdownButtonComponent implements OnInit {
label?: string;
@Input()
+ iconClass?: string;
+
+ @Input()
+ hideCaret: boolean = false;
+
+ @Input()
+ showSelectedValue: boolean = true;
+
+ @Input()
options?: any[];
@Input()
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
index 22e4fca..fddf645 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
@@ -23,9 +23,12 @@ import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
import {ComponentsService, components} from '@app/services/storage/components.service';
+import {AppStateService, appState} from '@app/services/storage/app-state.service';
+import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
import {UtilsService} from '@app/services/utils.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {FilterButtonComponent} from './filter-button.component';
@@ -40,7 +43,9 @@ describe('FilterButtonComponent', () => {
StoreModule.provideStore({
appSettings,
clusters,
- components
+ components,
+ appState,
+ hosts
}),
...TranslationModules
],
@@ -48,9 +53,12 @@ describe('FilterButtonComponent', () => {
AppSettingsService,
ClustersService,
ComponentsService,
+ AppStateService,
+ HostsService,
ComponentActionsService,
FilteringService,
- UtilsService
+ UtilsService,
+ HttpClientService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
index fb40a1c..dc76e79 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
@@ -20,7 +20,8 @@
<filter-dropdown [label]="filters.clusters.label" formControlName="clusters" [options]="filters.clusters.options"
[defaultLabel]="filters.clusters.defaultLabel" [isMultipleChoice]="true"
class="filter-input"></filter-dropdown>
- <search-box formControlName="query" [items]="searchBoxItems" class="filter-input"></search-box>
+ <search-box formControlName="query" [items]="searchBoxItemsTranslated" class="filter-input"
+ [parameterNameChangeSubject]="queryParameterNameChange"></search-box>
<time-range-picker formControlName="timeRange" [defaultLabel]="filters.timeRange.defaultLabel"
class="filter-input"></time-range-picker>
<timezone-picker class="filter-input"></timezone-picker>
@@ -29,9 +30,8 @@
</button-->
</div>
<div class="default-flex col-md-4">
- <a href="#">
- <span class="fa fa-search-minus"></span> {{'filter.excluded' | translate}}
- </a>
+ <dropdown-button [options]="searchBoxItems" iconClass="fa fa-search-minus" label="filter.excluded"
+ [hideCaret]="true" [showSelectedValue]="false" action="proceedWithExclude"></dropdown-button>
<filter-button formControlName="hosts" [label]="filters.hosts.label"
[iconClass]="filters.hosts.iconClass" [subItems]="filters.hosts.options"
[isMultipleChoice]="true" [isRightAlign]="true"
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
index 644048f..72ab222 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
@@ -18,6 +18,7 @@
import {Component} from '@angular/core';
import {FormGroup} from '@angular/forms';
+import {Subject} from 'rxjs/Subject';
import {TranslateService} from '@ngx-translate/core';
import {FilteringService} from '@app/services/filtering.service';
import {LogsContainerService} from '@app/services/logs-container.service';
@@ -42,7 +43,13 @@ export class FiltersPanelComponent {
};
}),
labelKeys = items.map(item => item.name);
- translate.get(labelKeys).first().subscribe(translation => this.searchBoxItems = items.map(item => {
+ this.searchBoxItems = items.map(item => {
+ return {
+ label: item.name,
+ value: item.value
+ };
+ });
+ translate.get(labelKeys).first().subscribe(translation => this.searchBoxItemsTranslated = items.map(item => {
return {
name: translation[item.name],
value: item.value
@@ -62,6 +69,8 @@ export class FiltersPanelComponent {
searchBoxItems: any[] = [];
+ searchBoxItemsTranslated: any[] = [];
+
get filters(): any {
return this.filtering.filters;
}
@@ -70,4 +79,8 @@ export class FiltersPanelComponent {
return this.filtering.filtersForm;
}
+ get queryParameterNameChange(): Subject<any> {
+ return this.filtering.queryParameterNameChange;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
index c57c11d..65f0ee6 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
@@ -21,8 +21,13 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
+import {AppStateService, appState} from '@app/services/storage/app-state.service';
+import {ClustersService, clusters} from '@app/services/storage/clusters.service';
+import {ComponentsService, components} from '@app/services/storage/components.service';
+import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {MenuButtonComponent} from './menu-button.component';
@@ -35,14 +40,23 @@ describe('MenuButtonComponent', () => {
declarations: [MenuButtonComponent],
imports: [
StoreModule.provideStore({
- appSettings
+ appSettings,
+ appState,
+ clusters,
+ components,
+ hosts
}),
...TranslationModules
],
providers: [
AppSettingsService,
+ AppStateService,
+ ClustersService,
+ ComponentsService,
+ HostsService,
ComponentActionsService,
- FilteringService
+ FilteringService,
+ HttpClientService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
index 64e15dc..e88159c 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
@@ -16,6 +16,7 @@
-->
<label class="parameter-label" *ngFor="let parameter of parameters">
+ <span *ngIf="parameter.isExclude" class="fa fa-search-minus exclude-icon"></span>
{{parameter.label | translate}}:
<span class="parameter-value">{{parameter.value}}</span>
<span class="remove-parameter" (click)="removeParameter($event, parameter.id)">×</span>
@@ -23,7 +24,7 @@
<span class="active-parameter-label" *ngIf="isActive && activeItem">{{activeItem.name | translate}}:</span>
<div [ngClass]="{'search-item-container': true, 'active': isActive, 'value': isValueInput}">
<input #parameterInput auto-complete [(ngModel)]="currentValue" [source]="items" [list-formatter]="itemsListFormatter"
- display-property-name="name" (valueChanged)="onParameterNameChange($event)"
+ display-property-name="name" (valueChanged)="changeParameterName({item: $event, isExclude: false})"
class="search-item-input parameter-input form-control">
<input #valueInput type="text" [(ngModel)]="currentValue" class="search-item-input value-input form-control"
(keyup)="onParameterValueChange($event)">
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.less
index cccf5d5..6d4378b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.less
@@ -41,6 +41,10 @@
background-color: @main-background-color;
font-size: 0.8em;
+ .exclude-icon {
+ color: @exclude-color;
+ }
+
.parameter-value {
font-weight: normal;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
index 82c455e..4730190 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
@@ -18,6 +18,7 @@
import {Component, OnInit, OnDestroy, Input, ViewChild, ElementRef, forwardRef} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
+import {Subject} from 'rxjs/Subject';
import {UtilsService} from '@app/services/utils.service';
@Component({
@@ -46,6 +47,7 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
this.parameterInput.addEventListener('focus', this.onParameterInputFocus);
this.parameterInput.addEventListener('blur', this.onParameterInputBlur);
this.valueInput.addEventListener('blur', this.onValueInputBlur);
+ this.parameterNameChangeSubject.subscribe(this.onParameterNameChange);
}
ngOnDestroy() {
@@ -54,10 +56,15 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
this.parameterInput.removeEventListener('focus', this.onParameterInputFocus);
this.parameterInput.removeEventListener('blur', this.onParameterInputBlur);
this.valueInput.removeEventListener('blur', this.onValueInputBlur);
+ this.parameterNameChangeSubject.unsubscribe();
}
private currentId: number = 0;
+ private isExclude: boolean = false;
+
+ private defaultSubject: Subject<any> = new Subject();
+
isActive: boolean = false;
isParameterInput: boolean = false;
@@ -69,6 +76,9 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
@Input()
items: any[] = [];
+ @Input()
+ parameterNameChangeSubject: Subject<any> = this.defaultSubject;
+
@ViewChild('parameterInput')
parameterInputRef: ElementRef;
@@ -127,14 +137,19 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
return item.name;
}
- onParameterNameChange(item: any): void {
- if (item) {
- this.isParameterInput = false;
- this.isValueInput = true;
- this.activeItem = item;
- this.currentValue = '';
- setTimeout(() => this.valueInput.focus(), 0);
- }
+ changeParameterName(item: any): void {
+ this.parameterNameChangeSubject.next(item);
+ }
+
+ onParameterNameChange = (options: any): void => {
+ this.activeItem = typeof options.item === 'string' ?
+ this.items.find(field => field.value === options.item) : options.item;
+ this.isExclude = options.isExclude;
+ this.isActive = true;
+ this.isParameterInput = false;
+ this.isValueInput = true;
+ this.currentValue = '';
+ setTimeout(() => this.valueInput.focus(), 0);
}
onParameterValueChange(event: KeyboardEvent): void {
@@ -144,7 +159,7 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
name: this.activeItem.value,
label: this.activeItem.name,
value: this.currentValue,
- isExclude: false
+ isExclude: this.isExclude
});
this.currentValue = '';
this.activeItem = null;
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
index 380f030..abbc9ce 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
@@ -20,7 +20,13 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
+import {AppStateService, appState} from '@app/services/storage/app-state.service';
+import {ClustersService, clusters} from '@app/services/storage/clusters.service';
+import {ComponentsService, components} from '@app/services/storage/components.service';
+import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
+import {FilteringService} from '@app/services/filtering.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
import {ModalComponent} from '@app/components/modal/modal.component';
@@ -39,13 +45,23 @@ describe('TimeZonePickerComponent', () => {
],
imports: [
StoreModule.provideStore({
- appSettings
+ appSettings,
+ appState,
+ clusters,
+ components,
+ hosts
}),
...TranslationModules
],
providers: [
AppSettingsService,
- ComponentActionsService
+ AppStateService,
+ ClustersService,
+ ComponentsService,
+ HostsService,
+ ComponentActionsService,
+ FilteringService,
+ HttpClientService
],
})
.compileComponents();
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
index 8dba5b3..ab95030 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
@@ -23,7 +23,7 @@
@input-border-width: 1px;
@input-border: @input-border-width solid #CFD3D7;
@button-border-radius: 4px;
-@input-group-addon-padding: 6px 0 6px 12px;
+@input-group-addon-padding: 6px 12px 6px 0;
@block-margin-top: 20px;
@link-color: #1491C1;
@link-hover-color: #23527C;
@@ -49,6 +49,7 @@
@unknown-color: #BDBDBD;
@submit-color: #5CB85C;
@submit-hover-color: #449D44;
+@exclude-color: #EF6162;
// Mixins
.flex-vertical-align {
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
index ff0ee37..f961907 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
@@ -19,20 +19,45 @@
import {TestBed, inject} from '@angular/core/testing';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
+import {ClustersService, clusters} from '@app/services/storage/clusters.service';
+import {ComponentsService, components} from '@app/services/storage/components.service';
+import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {FilteringService} from '@app/services/filtering.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {ComponentActionsService} from './component-actions.service';
describe('ComponentActionsService', () => {
+ const httpClient = {
+ get: () => {
+ return {
+ subscribe: () => {
+ }
+ };
+ }
+ };
+
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
StoreModule.provideStore({
- appSettings
+ appSettings,
+ clusters,
+ components,
+ hosts
})
],
providers: [
+ ComponentActionsService,
AppSettingsService,
- ComponentActionsService
+ ClustersService,
+ ComponentsService,
+ HostsService,
+ FilteringService,
+ {
+ provide: HttpClientService,
+ useValue: httpClient
+ }
]
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
index a8235fa..f29705c 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
@@ -19,11 +19,12 @@
import {Injectable} from '@angular/core';
import {AppSettingsService} from '@app/services/storage/app-settings.service';
import {CollectionModelService} from '@app/models/store.model';
+import {FilteringService} from '@app/services/filtering.service';
@Injectable()
export class ComponentActionsService {
- constructor(private appSettings: AppSettingsService) {
+ constructor(private appSettings: AppSettingsService, private filtering: FilteringService) {
}
//TODO implement actions
@@ -50,4 +51,9 @@ export class ComponentActionsService {
}));
}
+ proceedWithExclude = (item: string): void => this.filtering.queryParameterNameChange.next({
+ item: item,
+ isExclude: true
+ });
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/260c75fc/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
index cf82ff6..2d3f640 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
@@ -18,6 +18,7 @@
import {Injectable} from '@angular/core';
import {FormControl, FormGroup} from '@angular/forms';
+import {Subject} from 'rxjs/Subject';
import * as moment from 'moment-timezone';
import {AppSettingsService} from '@app/services/storage/app-settings.service';
import {ClustersService} from '@app/services/storage/clusters.service';
@@ -432,6 +433,8 @@ export class FilteringService {
filtersForm = new FormGroup(this.filtersFormItems);
+ queryParameterNameChange: Subject<any> = new Subject();
+
loadClusters(): void {
this.httpClient.get('clusters').subscribe(response => {
const clusterNames = response.json();
[17/50] [abbrv] ambari git commit: AMBARI-21919. Kerberos identity
references should use the "reference" attribute (rlevas)
Posted by jl...@apache.org.
AMBARI-21919. Kerberos identity references should use the "reference" attribute (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2a060210
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2a060210
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2a060210
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 2a0602104f719d8dec7cc34f9a10fe885d55a551
Parents: 2e170e4
Author: Robert Levas <rl...@hortonworks.com>
Authored: Thu Sep 21 12:01:15 2017 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Thu Sep 21 12:01:29 2017 -0400
----------------------------------------------------------------------
.../HDP/2.0.8/services/HDFS/kerberos.json | 12 +-
.../AbstractKerberosDescriptorContainer.java | 9 +-
.../state/kerberos/KerberosDescriptor.java | 2 +-
.../server/upgrade/UpgradeCatalog260.java | 220 +++++++++++++++++--
.../ACCUMULO/1.6.1.2.2.0/kerberos.json | 6 +-
.../AMBARI_INFRA/0.1.0/kerberos.json | 6 +-
.../AMBARI_METRICS/0.1.0/kerberos.json | 6 +-
.../ATLAS/0.1.0.2.3/kerberos.json | 6 +-
.../ATLAS/0.7.0.2.5/kerberos.json | 9 +-
.../ATLAS/0.7.0.3.0/kerberos.json | 9 +-
.../FALCON/0.5.0.2.1/kerberos.json | 12 +-
.../common-services/HAWQ/2.0.0/kerberos.json | 9 +-
.../HBASE/0.96.0.2.0/kerberos.json | 9 +-
.../HBASE/2.0.0.3.0/kerberos.json | 15 +-
.../HDFS/2.1.0.2.0/kerberos.json | 18 +-
.../HDFS/3.0.0.3.0/kerberos.json | 21 +-
.../HIVE/0.12.0.2.0/kerberos.json | 15 +-
.../HIVE/2.1.0.3.0/kerberos.json | 30 ++-
.../KAFKA/0.10.0.3.0/kerberos.json | 9 +-
.../common-services/KAFKA/0.10.0/kerberos.json | 9 +-
.../common-services/KAFKA/0.9.0/kerberos.json | 6 +-
.../KERBEROS/1.10.3-10/kerberos.json | 3 +-
.../KERBEROS/1.10.3-30/kerberos.json | 3 +-
.../KNOX/0.5.0.3.0/kerberos.json | 3 +-
.../LOGSEARCH/0.5.0/kerberos.json | 6 +-
.../MAHOUT/1.0.0.2.3/kerberos.json | 6 +-
.../OOZIE/4.0.0.2.0/kerberos.json | 12 +-
.../OOZIE/4.2.0.2.3/kerberos.json | 12 +-
.../OOZIE/4.2.0.3.0/kerberos.json | 12 +-
.../PIG/0.12.0.2.0/kerberos.json | 3 +-
.../PIG/0.16.1.3.0/kerberos.json | 3 +-
.../common-services/RANGER/0.6.0/kerberos.json | 18 +-
.../RANGER/1.0.0.3.0/kerberos.json | 18 +-
.../RANGER_KMS/0.5.0.2.3/kerberos.json | 6 +-
.../RANGER_KMS/1.0.0.3.0/kerberos.json | 9 +-
.../SLIDER/0.60.0.2.2/kerberos.json | 3 +-
.../SLIDER/0.91.0.3.0/kerberos.json | 3 +-
.../common-services/SPARK/1.2.1/kerberos.json | 6 +-
.../common-services/SPARK/1.4.1/kerberos.json | 12 +-
.../common-services/SPARK/2.2.0/kerberos.json | 3 +-
.../common-services/SPARK2/2.0.0/kerberos.json | 12 +-
.../common-services/STORM/0.9.1/kerberos.json | 9 +-
.../STORM/1.0.1.3.0/kerberos.json | 15 +-
.../common-services/STORM/1.0.1/kerberos.json | 15 +-
.../common-services/STORM/1.1.0/kerberos.json | 15 +-
.../common-services/TEZ/0.4.0.2.1/kerberos.json | 3 +-
.../common-services/TEZ/0.9.0.3.0/kerberos.json | 3 +-
.../YARN/2.1.0.2.0/kerberos.json | 30 ++-
.../YARN/3.0.0.3.0/kerberos.json | 36 ++-
.../ZEPPELIN/0.6.0/kerberos.json | 3 +-
.../ZEPPELIN/0.7.0/kerberos.json | 3 +-
.../ZOOKEEPER/3.4.5/kerberos.json | 3 +-
.../resources/kerberos_descriptor_schema.json | 5 +-
.../stacks/HDP/2.2/services/YARN/kerberos.json | 30 ++-
.../HDP/2.3.ECS/services/ECS/kerberos.json | 3 +-
.../HDP/2.3.ECS/services/HBASE/kerberos.json | 9 +-
.../HDP/2.3.ECS/services/YARN/kerberos.json | 33 ++-
.../services/ACCUMULO/kerberos.json | 27 ++-
.../HDP/2.3/services/ACCUMULO/kerberos.json | 6 +-
.../stacks/HDP/2.3/services/TEZ/kerberos.json | 3 +-
.../stacks/HDP/2.3/services/YARN/kerberos.json | 30 ++-
.../HDP/2.5/services/FALCON/kerberos.json | 15 +-
.../stacks/HDP/2.5/services/HBASE/kerberos.json | 15 +-
.../stacks/HDP/2.5/services/HDFS/kerberos.json | 21 +-
.../stacks/HDP/2.5/services/HIVE/kerberos.json | 30 ++-
.../stacks/HDP/2.5/services/KNOX/kerberos.json | 3 +-
.../HDP/2.5/services/RANGER_KMS/kerberos.json | 9 +-
.../stacks/HDP/2.5/services/SPARK/kerberos.json | 18 +-
.../stacks/HDP/2.5/services/YARN/kerberos.json | 36 ++-
.../HDP/2.5/services/ZEPPELIN/kerberos.json | 3 +-
.../stacks/HDP/2.6/services/ATLAS/kerberos.json | 9 +-
.../stacks/HDP/2.6/services/DRUID/kerberos.json | 24 +-
.../stacks/HDP/2.6/services/HDFS/kerberos.json | 21 +-
.../stacks/HDP/2.6/services/OOZIE/kerberos.json | 12 +-
.../stacks/HDP/2.6/services/SPARK/kerberos.json | 3 +-
.../HDP/2.6/services/SPARK2/kerberos.json | 3 +-
.../HDP/2.6/services/SUPERSET/kerberos.json | 6 +-
.../stacks/HDP/2.6/services/YARN/kerberos.json | 36 ++-
.../HDP/2.6/services/ZEPPELIN/kerberos.json | 3 +-
.../PERF/1.0/services/FAKEHBASE/kerberos.json | 15 +-
.../PERF/1.0/services/FAKEHDFS/kerberos.json | 21 +-
.../PERF/1.0/services/FAKEYARN/kerberos.json | 36 ++-
.../1.0/services/FAKEZOOKEEPER/kerberos.json | 3 +-
.../PERF/1.0/services/GRUMPY/kerberos.json | 12 +-
.../PERF/1.0/services/HAPPY/kerberos.json | 12 +-
.../PERF/1.0/services/KERBEROS/kerberos.json | 3 +-
.../PERF/1.0/services/SLEEPY/kerberos.json | 12 +-
.../stacks/PERF/1.0/services/SNOW/kerberos.json | 12 +-
.../server/upgrade/UpgradeCatalog260Test.java | 163 ++++++++------
.../test_kerberos_descriptor_ranger_kms.json | 1 +
.../HDP/2.0.8/services/HDFS/kerberos.json | 12 +-
.../common-services/NIFI/1.0.0/kerberos.json | 6 +-
.../stacks/HDF/2.0/services/KAFKA/kerberos.json | 6 +-
.../MICROSOFT_R_SERVER/8.0.5/kerberos.json | 6 +-
.../stacks/ODPi/2.0/services/HIVE/kerberos.json | 18 +-
.../stacks/ODPi/2.0/services/YARN/kerberos.json | 30 ++-
96 files changed, 1039 insertions(+), 468 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-funtest/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-funtest/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json b/ambari-funtest/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
index a555bb5..ecbdfe9 100644
--- a/ambari-funtest/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
+++ b/ambari-funtest/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "hdfs",
@@ -63,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
@@ -128,7 +131,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/AbstractKerberosDescriptorContainer.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/AbstractKerberosDescriptorContainer.java b/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/AbstractKerberosDescriptorContainer.java
index 85d4f69..4255dd1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/AbstractKerberosDescriptorContainer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/AbstractKerberosDescriptorContainer.java
@@ -640,7 +640,7 @@ public abstract class AbstractKerberosDescriptorContainer extends AbstractKerber
* @param path a String declaring the path to a KerberosIdentityDescriptor
* @return a KerberosIdentityDescriptor identified by the path or null if not found
*/
- protected KerberosIdentityDescriptor getReferencedIdentityDescriptor(String path)
+ public KerberosIdentityDescriptor getReferencedIdentityDescriptor(String path)
throws AmbariException {
KerberosIdentityDescriptor identityDescriptor = null;
@@ -855,12 +855,7 @@ public abstract class AbstractKerberosDescriptorContainer extends AbstractKerber
if (identity != null) {
KerberosIdentityDescriptor referencedIdentity;
try {
- if (identity.getReference() != null) {
- referencedIdentity = getReferencedIdentityDescriptor(identity.getReference());
- } else {
- // For backwards compatibility, see if the identity's name indicates a reference...
- referencedIdentity = getReferencedIdentityDescriptor(identity.getName());
- }
+ referencedIdentity = getReferencedIdentityDescriptor(identity.getReference());
} catch (AmbariException e) {
throw new AmbariException(String.format("Invalid Kerberos identity reference: %s", identity.getReference()), e);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptor.java b/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptor.java
index a1d373b..0c7a9a9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/kerberos/KerberosDescriptor.java
@@ -456,7 +456,7 @@ public class KerberosDescriptor extends AbstractKerberosDescriptorContainer {
private static void collectFromIdentities(String service, String component, Collection<KerberosIdentityDescriptor> identities, Map<String, String> result) {
for (KerberosIdentityDescriptor each : identities) {
- if (each.getPrincipalDescriptor() != null && !each.getReferencedServiceName().isPresent() && !each.getName().startsWith("/")) {
+ if (each.getPrincipalDescriptor() != null && !each.getReferencedServiceName().isPresent()) {
String path = StringUtils.isBlank(component)
? String.format("%s/%s", service, each.getName())
: String.format("%s/%s/%s", service, component, each.getName());
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
index c92b3dc..5003c13 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -6,9 +6,9 @@
* to you 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
+ *
+ * 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.
@@ -41,10 +41,13 @@ import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
+import org.apache.ambari.server.state.kerberos.AbstractKerberosDescriptor;
+import org.apache.ambari.server.state.kerberos.AbstractKerberosDescriptorContainer;
import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
import org.apache.ambari.server.state.kerberos.KerberosIdentityDescriptor;
+import org.apache.ambari.server.state.kerberos.KerberosPrincipalDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@@ -541,21 +544,9 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
if (data != null) {
final KerberosDescriptor kerberosDescriptor = new KerberosDescriptorFactory().createInstance(data);
if (kerberosDescriptor != null) {
- KerberosServiceDescriptor rangerKmsServiceDescriptor = kerberosDescriptor.getService("RANGER_KMS");
- if (rangerKmsServiceDescriptor != null) {
+ fixRangerKMSKerberosDescriptor(kerberosDescriptor);
+ fixIdentityReferences(getCluster(artifactEntity), kerberosDescriptor);
- KerberosIdentityDescriptor rangerKmsServiceIdentity = rangerKmsServiceDescriptor.getIdentity("/smokeuser");
- if (rangerKmsServiceIdentity != null) {
- rangerKmsServiceDescriptor.removeIdentity("/smokeuser");
- }
- KerberosComponentDescriptor rangerKmscomponentDescriptor = rangerKmsServiceDescriptor.getComponent("RANGER_KMS_SERVER");
- if (rangerKmscomponentDescriptor != null) {
- KerberosIdentityDescriptor rangerKmsComponentIdentity = rangerKmscomponentDescriptor.getIdentity("/smokeuser");
- if (rangerKmsComponentIdentity != null) {
- rangerKmscomponentDescriptor.removeIdentity("/smokeuser");
- }
- }
- }
artifactEntity.setArtifactData(kerberosDescriptor.toMap());
artifactDAO.merge(artifactEntity);
}
@@ -563,6 +554,24 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
}
}
+ protected void fixRangerKMSKerberosDescriptor(KerberosDescriptor kerberosDescriptor) {
+ KerberosServiceDescriptor rangerKmsServiceDescriptor = kerberosDescriptor.getService("RANGER_KMS");
+ if (rangerKmsServiceDescriptor != null) {
+
+ KerberosIdentityDescriptor rangerKmsServiceIdentity = rangerKmsServiceDescriptor.getIdentity("/smokeuser");
+ if (rangerKmsServiceIdentity != null) {
+ rangerKmsServiceDescriptor.removeIdentity("/smokeuser");
+ }
+ KerberosComponentDescriptor rangerKmscomponentDescriptor = rangerKmsServiceDescriptor.getComponent("RANGER_KMS_SERVER");
+ if (rangerKmscomponentDescriptor != null) {
+ KerberosIdentityDescriptor rangerKmsComponentIdentity = rangerKmscomponentDescriptor.getIdentity("/smokeuser");
+ if (rangerKmsComponentIdentity != null) {
+ rangerKmscomponentDescriptor.removeIdentity("/smokeuser");
+ }
+ }
+ }
+ }
+
protected void updateAmsConfigs() throws AmbariException {
AmbariManagementController ambariManagementController = injector.getInstance(AmbariManagementController.class);
Clusters clusters = ambariManagementController.getClusters();
@@ -602,6 +611,181 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
}
/**
+ * Retrieves the relevant {@link Cluster} given information from the suppliied {@link ArtifactEntity}.
+ * <p>
+ * The cluster id value is taken from the entity's foreign key value and then used to obtain the cluster object.
+ *
+ * @param artifactEntity an {@link ArtifactEntity}
+ * @return a {@link Cluster}
+ */
+ private Cluster getCluster(ArtifactEntity artifactEntity) {
+ if (artifactEntity != null) {
+ Map<String, String> keys = artifactEntity.getForeignKeys();
+ if (keys != null) {
+ String clusterId = keys.get("cluster");
+ if (StringUtils.isNumeric(clusterId)) {
+ Clusters clusters = injector.getInstance(Clusters.class);
+ try {
+ return clusters.getCluster(Long.valueOf(clusterId));
+ } catch (AmbariException e) {
+ LOG.error(String.format("Failed to obtain cluster using cluster id %s - %s", clusterId, e.getMessage()), e);
+ }
+ } else {
+ LOG.error(String.format("Failed to obtain cluster id from artifact entity with foreign keys: %s", keys));
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Recursively traverses the Kerberos descriptor to find and fix the identity references.
+ * <p>
+ * Each found identity descriptor that indicates it is a reference by having a <code>name</code>
+ * value that starts with a "/" or a "./" is fixed by clearing the <code>principal name</code>value,
+ * setting the <code>reference</code> value to the <code>name</code> value and changing the
+ * <code>name</code> value to a name with the following pattern:
+ * <code>SERVICE_COMPONENT_IDENTITY</code>
+ * <p>
+ * For example, if the identity is for the "SERVICE1" service and is a reference to "HDFS/NAMENODE/hdfs";
+ * then the name is set to "<code>service1_hdfs</code>"
+ * <p>
+ * For example, if the identity is for the "COMPONENT21" component of the "SERVICE2" service and is a reference to "HDFS/NAMENODE/hdfs";
+ * then the name is set to "<code>service2_component21_hdfs</code>"
+ * <p>
+ * Once the identity descriptor properties of the identity are fixed, the relevant configuration
+ * value is fixed to match the value if the referenced identity. This may lead to a new version
+ * of the relevant configuration type.
+ *
+ * @param cluster the cluster
+ * @param container the current Kerberos descriptor container
+ * @throws AmbariException if an error occurs
+ */
+ private void fixIdentityReferences(Cluster cluster, AbstractKerberosDescriptorContainer container)
+ throws AmbariException {
+ List<KerberosIdentityDescriptor> identities = container.getIdentities();
+ if (identities != null) {
+ for (KerberosIdentityDescriptor identity : identities) {
+ String name = identity.getName();
+
+ if (!StringUtils.isEmpty(name) && (name.startsWith("/") || name.startsWith("./"))) {
+ String[] parts = name.split("/");
+ String newName = buildName(identity.getParent(), parts[parts.length - 1]);
+
+ identity.setName(newName);
+ identity.setReference(name);
+ }
+
+ String identityReference = identity.getReference();
+ if (!StringUtils.isEmpty(identityReference)) {
+ // If this identity references another identity:
+ // * The principal name needs to be the same as the referenced identity
+ // - ensure that no principal name is being set for this identity
+ // * Any configuration set to contain the reference principal name needs to be fixed to
+ // be the correct principal name
+ KerberosPrincipalDescriptor principal = identity.getPrincipalDescriptor();
+ if (principal != null) {
+ // Fix the value
+ principal.setValue(null);
+
+ // Fix the relative configuration
+ if (!StringUtils.isEmpty(principal.getConfiguration())) {
+ String referencedPrincipalName = getConfiguredPrincipalNameFromReference(cluster, container, identityReference);
+
+ if(!StringUtils.isEmpty(referencedPrincipalName)) {
+ String[] parts = principal.getConfiguration().split("/");
+ if (parts.length == 2) {
+ String type = parts[0];
+ String property = parts[1];
+
+ updateConfigurationPropertiesForCluster(cluster,
+ type,
+ Collections.singletonMap(property, referencedPrincipalName),
+ true,
+ false);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (container instanceof KerberosDescriptor) {
+ Map<String, KerberosServiceDescriptor> services = ((KerberosDescriptor) container).getServices();
+ if (services != null) {
+ for (KerberosServiceDescriptor serviceDescriptor : services.values()) {
+ fixIdentityReferences(cluster, serviceDescriptor);
+ }
+ }
+ } else if (container instanceof KerberosServiceDescriptor) {
+ Map<String, KerberosComponentDescriptor> components = ((KerberosServiceDescriptor) container).getComponents();
+ if (components != null) {
+ for (KerberosComponentDescriptor componentDescriptor : components.values()) {
+ fixIdentityReferences(cluster, componentDescriptor);
+ }
+ }
+ }
+ }
+
+ /**
+ * Finds the value of the configuration found for the principal in the referenced identity
+ * descriptor.
+ *
+ * @param cluster the cluster
+ * @param container the current {@link KerberosIdentityDescriptor}, ideally the identity's parent descriptor
+ * @param identityReference the path to the referenced identity
+ * @return the value of the configuration specified in the referenced identity's principal descriptor
+ * @throws AmbariException if an error occurs
+ */
+ private String getConfiguredPrincipalNameFromReference(Cluster cluster,
+ AbstractKerberosDescriptorContainer container,
+ String identityReference)
+ throws AmbariException {
+ KerberosIdentityDescriptor identityDescriptor = container.getReferencedIdentityDescriptor(identityReference);
+
+ if (identityDescriptor != null) {
+ KerberosPrincipalDescriptor principal = identityDescriptor.getPrincipalDescriptor();
+ if ((principal != null) && (!StringUtils.isEmpty(principal.getConfiguration()))) {
+ String[] parts = principal.getConfiguration().split("/");
+ if (parts.length == 2) {
+ String type = parts[0];
+ String property = parts[1];
+
+ Config config = cluster.getDesiredConfigByType(type);
+
+ if (config != null) {
+ return config.getProperties().get(property);
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Builds the name of an identity based on the identity's container and the referenced identity's name.
+ * <p>
+ * The calculated name will be in the following format and converted to all lowercase characters:
+ * <code>SERVICE_COMPONENT_IDENTITY</code>
+ *
+ * @param container the current {@link KerberosIdentityDescriptor}, ideally the identity's parent descriptor
+ * @param identityName the referenced identity's name
+ * @return a name
+ */
+ private String buildName(AbstractKerberosDescriptor container, String identityName) {
+ if (container instanceof KerberosServiceDescriptor) {
+ return container.getName().toLowerCase() + "_" + identityName;
+ } else if (container instanceof KerberosComponentDescriptor) {
+ return container.getParent().getName().toLowerCase() + "_" + container.getName().toLowerCase() + "_" + identityName;
+ } else {
+ return identityName;
+ }
+ }
+
+ /**
* Sets all existing repository versions to be resolved (we have to assume
* that they are good since they've been using them to run stuff).
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
index 7e3f449..ed9c0fb 100644
--- a/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ACCUMULO/1.6.1.2.2.0/kerberos.json
@@ -47,7 +47,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "accumulo_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -55,7 +56,8 @@
"name": "ACCUMULO_MASTER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "accumulo_accumulo_master_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/kerberos.json b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/kerberos.json
index 94b1b14..46183ee 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "AMBARI_INFRA",
"identities": [
{
- "name": "/smokeuser"
+ "name": "ambari_infra_smokeuser",
+ "reference": "/smokeuser"
},
{
- "name": "/spnego",
+ "name": "ambari_infra_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "infra-solr-env/infra_solr_web_kerberos_principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/kerberos.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/kerberos.json
index a6afda5..675de45 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "AMBARI_METRICS",
"identities": [
{
- "name": "/spnego"
+ "name": "ambari_metrics_spnego",
+ "reference": "/spnego"
}
],
"components": [
@@ -38,7 +39,8 @@
"name": "METRICS_COLLECTOR",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs",
+ "name": "ambari_metrics_metrics_collector_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs",
"when" : {
"contains" : ["services", "HDFS"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/kerberos.json b/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/kerberos.json
index 4fe4d32..3246a83 100644
--- a/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ATLAS/0.1.0.2.3/kerberos.json
@@ -40,7 +40,8 @@
}
},
{
- "name": "/spnego",
+ "name": "atlas_atlas_server_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "application-properties/atlas.http.authentication.kerberos.principal"
@@ -50,7 +51,8 @@
}
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
+ "name": "atlas_atlas_server_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
"when" : {
"contains" : ["services", "AMBARI_INFRA"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.2.5/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.2.5/kerberos.json b/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.2.5/kerberos.json
index e136bcf..22dba86 100644
--- a/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.2.5/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.2.5/kerberos.json
@@ -66,7 +66,8 @@
}
},
{
- "name": "/spnego",
+ "name": "atlas_atlas_server_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "application-properties/atlas.authentication.method.kerberos.principal"
@@ -86,10 +87,12 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker"
+ "name": "atlas_atlas_server_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker"
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
+ "name": "atlas_atlas_server_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
"when" : {
"contains" : ["services", "AMBARI_INFRA"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.3.0/kerberos.json
index 7d10ccc..6600534 100644
--- a/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ATLAS/0.7.0.3.0/kerberos.json
@@ -67,7 +67,8 @@
}
},
{
- "name": "/spnego",
+ "name": "atlas_atlas_server_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "application-properties/atlas.authentication.method.kerberos.principal"
@@ -87,10 +88,12 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker"
+ "name": "atlas_atlas_server_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker"
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr"
+ "name": "atlas_atlas_server_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json
index 08af720..902d9ae 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json
@@ -4,10 +4,12 @@
"name": "FALCON",
"identities": [
{
- "name": "/spnego"
+ "name": "falcon_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "falcon_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -27,7 +29,8 @@
"name": "FALCON_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "falcon_falcon_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "falcon_server",
@@ -51,7 +54,8 @@
}
},
{
- "name": "/spnego",
+ "name": "falcon_falcon_server_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "falcon-startup.properties/*.falcon.http.authentication.kerberos.principal"
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/kerberos.json b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/kerberos.json
index 4ed6b78..0a0fb99 100644
--- a/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HAWQ/2.0.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "HAWQ",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hawq_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hawq_identity",
@@ -53,7 +54,8 @@
"name": "HAWQMASTER",
"identities": [
{
- "name": "/HAWQ/hawq_identity"
+ "name": "hawq_hawqmaster_hawq_identity",
+ "reference": "/HAWQ/hawq_identity"
}
]
},
@@ -61,7 +63,8 @@
"name": "HAWQSTANDBY",
"identities": [
{
- "name": "/HAWQ/hawq_identity"
+ "name": "hawq_hawqstandby_hawq_identity",
+ "reference": "/HAWQ/hawq_identity"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json
index 63e9298..7988801 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "HBASE",
"identities": [
{
- "name": "/spnego"
+ "name": "hbase_spnego",
+ "reference": "/spnego"
},
{
"name": "hbase",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hbase_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -49,7 +51,8 @@
"name": "HBASE_MASTER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hbase_hbase_master_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hbase_master_hbase",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HBASE/2.0.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/2.0.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/HBASE/2.0.0.3.0/kerberos.json
index 011921b..0b06003 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/2.0.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HBASE/2.0.0.3.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "HBASE",
"identities": [
{
- "name": "/spnego"
+ "name": "hbase_spnego",
+ "reference": "/spnego"
},
{
"name": "hbase",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hbase_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -60,7 +62,8 @@
"name": "HBASE_MASTER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hbase_hbase_master_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hbase_master_hbase",
@@ -84,7 +87,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hbase_hbase_master_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
@@ -129,7 +133,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hbase_hbase_regionserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json
index 1cf1603..1cce2cc 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -33,7 +35,8 @@
"name": "HDFS_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hdfs_hdfs_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -83,7 +86,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
@@ -156,7 +160,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
@@ -214,7 +219,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_journalnode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HDFS/3.0.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/3.0.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/HDFS/3.0.0.3.0/kerberos.json
index b5acf92..f8bdc5c 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/3.0.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HDFS/3.0.0.3.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -44,7 +46,8 @@
"name": "HDFS_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hdfs_hdfs_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -94,13 +97,15 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
},
{
- "name": "/HDFS/NAMENODE/namenode_nn",
+ "name": "hdfs_namenode_namenode_nn",
+ "reference": "/HDFS/NAMENODE/namenode_nn",
"principal": {
"configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -176,7 +181,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
@@ -234,7 +240,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_journalnode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json
index c34026a..e25fa03 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "HIVE",
"identities": [
{
- "name": "/spnego"
+ "name": "hive_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "hive_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -49,7 +51,8 @@
"name": "HIVE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hive_server_hive",
@@ -73,7 +76,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hive_hive_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hive-site/hive.server2.authentication.spnego.principal"
},
@@ -87,7 +91,8 @@
"name": "WEBHCAT_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "hive_webhcat_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "webhcat-site/templeton.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/kerberos.json
index af1130d..5650498 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/HIVE/2.1.0.3.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "HIVE",
"identities": [
{
- "name": "/spnego"
+ "name": "hive_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "hive_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -33,7 +35,8 @@
"name": "HIVE_METASTORE",
"identities": [
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "hive_hive_metastore_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-site/hive.metastore.kerberos.principal"
},
@@ -47,7 +50,8 @@
"name": "HIVE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hive_server_hive",
@@ -81,7 +85,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hive_hive_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hive-site/hive.server2.authentication.spnego.principal"
},
@@ -105,16 +110,20 @@
"name": "HIVE_SERVER_INTERACTIVE",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_interactive_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive"
+ "name": "hive_hive_server_interactive_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive"
},
{
- "name": "/HIVE/HIVE_SERVER/spnego"
+ "name": "hive_hive_server_interactive_spnego",
+ "reference": "/HIVE/HIVE_SERVER/spnego"
},
{
- "name": "/YARN/NODEMANAGER/llap_zk_hive"
+ "name": "hive_hive_server_interactive_llap_zk_hive",
+ "reference": "/YARN/NODEMANAGER/llap_zk_hive"
}
]
},
@@ -122,7 +131,8 @@
"name": "WEBHCAT_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "hive_webhcat_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "webhcat-site/templeton.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KAFKA/0.10.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.10.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/KAFKA/0.10.0.3.0/kerberos.json
index b4d0018..2f8d20c 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.10.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.10.0.3.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "KAFKA",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kafka_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -57,7 +58,8 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker",
+ "name": "kafka_kafka_broker_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker",
"principal": {
"configuration": "ranger-kafka-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -66,7 +68,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs",
+ "name": "kafka_kafka_broker_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs",
"when" : {
"contains" : ["services", "HDFS"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KAFKA/0.10.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.10.0/kerberos.json b/ambari-server/src/main/resources/common-services/KAFKA/0.10.0/kerberos.json
index b4d0018..2f8d20c 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.10.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.10.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "KAFKA",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kafka_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -57,7 +58,8 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker",
+ "name": "kafka_kafka_broker_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker",
"principal": {
"configuration": "ranger-kafka-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -66,7 +68,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs",
+ "name": "kafka_kafka_broker_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs",
"when" : {
"contains" : ["services", "HDFS"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/kerberos.json b/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/kerberos.json
index 247a602..7f33abe 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.9.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "KAFKA",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kafka_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -47,7 +48,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs",
+ "name": "kafka_kafka_broker_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs",
"when" : {
"contains" : ["services", "HDFS"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-10/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-10/kerberos.json b/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-10/kerberos.json
index 6ab7610..e5860cf 100644
--- a/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-10/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-10/kerberos.json
@@ -4,7 +4,8 @@
"name": "KERBEROS",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kerberos_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-30/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-30/kerberos.json b/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-30/kerberos.json
index 6ab7610..e5860cf 100644
--- a/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-30/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KERBEROS/1.10.3-30/kerberos.json
@@ -4,7 +4,8 @@
"name": "KERBEROS",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kerberos_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/KNOX/0.5.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.3.0/kerberos.json
index 2d8aa0d..c205d7d 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.3.0/kerberos.json
@@ -29,7 +29,8 @@
}
},
{
- "name": "/KNOX/KNOX_GATEWAY/knox_principal",
+ "name": "knox_knox_gateway_knox_principal",
+ "reference": "/KNOX/KNOX_GATEWAY/knox_principal",
"principal": {
"configuration": "ranger-knox-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/kerberos.json b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/kerberos.json
index 9e0f12d..e4be47f 100644
--- a/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/LOGSEARCH/0.5.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "LOGSEARCH",
"identities": [
{
- "name": "/smokeuser"
+ "name": "logsearch_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -32,7 +33,8 @@
}
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
+ "name": "logsearch_logsearch_server_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
"when" : {
"contains" : ["services", "AMBARI_INFRA"]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/kerberos.json b/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/kerberos.json
index 1f87a6c..bcbc129 100644
--- a/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/kerberos.json
@@ -4,7 +4,8 @@
"name": "MAHOUT",
"identities": [
{
- "name": "/smokeuser"
+ "name": "mahout_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -12,7 +13,8 @@
"name": "MAHOUT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mahout_mahout_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json
index b3f932b..e9419bb 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "OOZIE",
"identities": [
{
- "name": "/spnego"
+ "name": "oozie_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "oozie_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -28,7 +30,8 @@
"name": "OOZIE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "oozie_oozie_server_hdfs",
+ "reference" : "/HDFS/NAMENODE/hdfs"
},
{
"name": "oozie_server",
@@ -52,7 +55,8 @@
}
},
{
- "name": "/spnego",
+ "name": "oozie_oozie_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "oozie-site/oozie.authentication.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/kerberos.json b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/kerberos.json
index d2e2ab8..a322358 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.2.3/kerberos.json
@@ -4,10 +4,12 @@
"name": "OOZIE",
"identities": [
{
- "name": "/spnego"
+ "name": "oozie_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "oozie_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -29,7 +31,8 @@
"name": "OOZIE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "oozie_oozie_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "oozie_server",
@@ -53,7 +56,8 @@
}
},
{
- "name": "/spnego",
+ "name": "oozie_oozie_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "oozie-site/oozie.authentication.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/kerberos.json
index f1092f5..ca21770 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "OOZIE",
"identities": [
{
- "name": "/spnego"
+ "name": "oozie_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "oozie_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -30,7 +32,8 @@
"name": "OOZIE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "oozie_oozie_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "oozie_server",
@@ -54,7 +57,8 @@
}
},
{
- "name": "/spnego",
+ "name": "oozie_oozie_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "oozie-site/oozie.authentication.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/kerberos.json
index 22dd6cb..4599396 100644
--- a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/kerberos.json
@@ -7,7 +7,8 @@
"name": "PIG",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "pig_pig_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/PIG/0.16.1.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/PIG/0.16.1.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/PIG/0.16.1.3.0/kerberos.json
index 22dd6cb..4599396 100644
--- a/ambari-server/src/main/resources/common-services/PIG/0.16.1.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/PIG/0.16.1.3.0/kerberos.json
@@ -7,7 +7,8 @@
"name": "PIG",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "pig_pig_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/RANGER/0.6.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.6.0/kerberos.json b/ambari-server/src/main/resources/common-services/RANGER/0.6.0/kerberos.json
index 1fc8acf..9d86bb4 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.6.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.6.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "RANGER",
"identities": [
{
- "name": "/spnego"
+ "name": "ranger_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "ranger_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -59,13 +61,15 @@
}
},
{
- "name": "/spnego",
+ "name": "ranger_ranger_admin_spnego",
+ "reference": "/spnego",
"keytab": {
"configuration": "ranger-admin-site/ranger.spnego.kerberos.keytab"
}
},
{
- "name": "/RANGER/RANGER_ADMIN/rangeradmin",
+ "name": "ranger_ranger_admin_rangeradmin",
+ "reference": "/RANGER/RANGER_ADMIN/rangeradmin",
"principal": {
"configuration": "ranger-admin-site/xasecure.audit.jaas.Client.option.principal"
},
@@ -74,7 +78,8 @@
}
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
+ "name": "ranger_ranger_admin_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
"when" : {
"contains" : ["services", "AMBARI_INFRA"]
}
@@ -124,7 +129,8 @@
}
},
{
- "name": "/RANGER/RANGER_TAGSYNC/rangertagsync",
+ "name": "ranger_ranger_tagsync_rangertagsync",
+ "reference": "/RANGER/RANGER_TAGSYNC/rangertagsync",
"principal": {
"configuration": "tagsync-application-properties/atlas.jaas.KafkaClient.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/kerberos.json
index 1fc8acf..9d86bb4 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "RANGER",
"identities": [
{
- "name": "/spnego"
+ "name": "ranger_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "ranger_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -59,13 +61,15 @@
}
},
{
- "name": "/spnego",
+ "name": "ranger_ranger_admin_spnego",
+ "reference": "/spnego",
"keytab": {
"configuration": "ranger-admin-site/ranger.spnego.kerberos.keytab"
}
},
{
- "name": "/RANGER/RANGER_ADMIN/rangeradmin",
+ "name": "ranger_ranger_admin_rangeradmin",
+ "reference": "/RANGER/RANGER_ADMIN/rangeradmin",
"principal": {
"configuration": "ranger-admin-site/xasecure.audit.jaas.Client.option.principal"
},
@@ -74,7 +78,8 @@
}
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
+ "name": "ranger_ranger_admin_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr",
"when" : {
"contains" : ["services", "AMBARI_INFRA"]
}
@@ -124,7 +129,8 @@
}
},
{
- "name": "/RANGER/RANGER_TAGSYNC/rangertagsync",
+ "name": "ranger_ranger_tagsync_rangertagsync",
+ "reference": "/RANGER/RANGER_TAGSYNC/rangertagsync",
"principal": {
"configuration": "tagsync-application-properties/atlas.jaas.KafkaClient.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/kerberos.json b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/kerberos.json
index 208a04d..9ff5277 100644
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/kerberos.json
@@ -4,7 +4,8 @@
"name": "RANGER_KMS",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_spnego",
+ "reference": "/spnego",
"keytab": {
"configuration": "kms-site/hadoop.kms.authentication.kerberos.keytab"
}
@@ -23,7 +24,8 @@
"name": "RANGER_KMS_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_ranger_kms_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "kms-site/hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/kerberos.json
index 8bf4cd8..1ef4568 100644
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/1.0.0.3.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "RANGER_KMS",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_spnego",
+ "reference": "/spnego",
"keytab": {
"configuration": "kms-site/hadoop.kms.authentication.kerberos.keytab"
}
@@ -36,7 +37,8 @@
"name": "RANGER_KMS_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_ranger_kms_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "kms-site/hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal"
},
@@ -62,7 +64,8 @@
}
},
{
- "name": "/RANGER_KMS/RANGER_KMS_SERVER/rangerkms",
+ "name": "ranger_kms_ranger_kms_server_rangerkms",
+ "reference": "/RANGER_KMS/RANGER_KMS_SERVER/rangerkms",
"principal": {
"configuration": "ranger-kms-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/kerberos.json b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/kerberos.json
index 0ebeb7d..8f07b42 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/kerberos.json
@@ -7,7 +7,8 @@
"name": "SLIDER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "slider_slider_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SLIDER/0.91.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.91.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/SLIDER/0.91.0.3.0/kerberos.json
index 0ebeb7d..8f07b42 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.91.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.91.0.3.0/kerberos.json
@@ -7,7 +7,8 @@
"name": "SLIDER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "slider_slider_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SPARK/1.2.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/kerberos.json b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/kerberos.json
index 96df126..166adbd 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.1/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "sparkuser",
@@ -40,7 +41,8 @@
"name": "SPARK_JOBHISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_spark_jobhistoryserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SPARK/1.4.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.4.1/kerberos.json b/ambari-server/src/main/resources/common-services/SPARK/1.4.1/kerberos.json
index fb43657..f2dd9e7 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.4.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.4.1/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "sparkuser",
@@ -46,7 +47,8 @@
"name": "SPARK_JOBHISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_spark_jobhistoryserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -57,10 +59,12 @@
"name": "SPARK_THRIFTSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_spark_thriftserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive"
+ "name": "spark_spark_thriftserver_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SPARK/2.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/kerberos.json
index 9912af1..bf763de 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/2.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SPARK/2.2.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "sparkuser",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/kerberos.json b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/kerberos.json
index a787d33..95d735b 100755
--- a/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/SPARK2/2.0.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK2",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark2_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "spark2user",
@@ -46,7 +47,8 @@
"name": "SPARK2_JOBHISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark2_spark2_jobhistoryserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -57,10 +59,12 @@
"name": "SPARK2_THRIFTSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark2_spark2_thriftserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive"
+ "name": "spark2_spark2_thriftserver_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/STORM/0.9.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1/kerberos.json b/ambari-server/src/main/resources/common-services/STORM/0.9.1/kerberos.json
index 692b557..592e4cf 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1/kerberos.json
@@ -4,10 +4,12 @@
"name": "STORM",
"identities": [
{
- "name": "/spnego"
+ "name": "storm_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "storm_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "storm_components",
@@ -51,7 +53,8 @@
"name": "STORM_UI_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "storm_storm_ui_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "storm-env/storm_ui_principal_name"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/STORM/1.0.1.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/1.0.1.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/STORM/1.0.1.3.0/kerberos.json
index a034411..8964c26 100644
--- a/ambari-server/src/main/resources/common-services/STORM/1.0.1.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/STORM/1.0.1.3.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "STORM",
"identities": [
{
- "name": "/spnego"
+ "name": "storm_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "storm_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "storm_components",
@@ -30,7 +32,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "storm-atlas-application.properties/atlas.jaas.KafkaClient.option.principal"
},
@@ -72,7 +75,8 @@
"name": "STORM_UI_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "storm_storm_ui_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "storm-env/storm_ui_principal_name"
},
@@ -106,7 +110,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_nimbus_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "ranger-storm-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/STORM/1.0.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/1.0.1/kerberos.json b/ambari-server/src/main/resources/common-services/STORM/1.0.1/kerberos.json
index a034411..f885500 100644
--- a/ambari-server/src/main/resources/common-services/STORM/1.0.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/STORM/1.0.1/kerberos.json
@@ -4,10 +4,12 @@
"name": "STORM",
"identities": [
{
- "name": "/spnego"
+ "name": "storm_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "storm_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "storm_components",
@@ -30,7 +32,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "storm-atlas-application.properties/atlas.jaas.KafkaClient.option.principal"
},
@@ -72,7 +75,8 @@
"name": "STORM_UI_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "storm_storm_ui_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "storm-env/storm_ui_principal_name"
},
@@ -106,7 +110,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_numbus_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "ranger-storm-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/STORM/1.1.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/1.1.0/kerberos.json b/ambari-server/src/main/resources/common-services/STORM/1.1.0/kerberos.json
index a034411..f885500 100644
--- a/ambari-server/src/main/resources/common-services/STORM/1.1.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/STORM/1.1.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "STORM",
"identities": [
{
- "name": "/spnego"
+ "name": "storm_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "storm_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "storm_components",
@@ -30,7 +32,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "storm-atlas-application.properties/atlas.jaas.KafkaClient.option.principal"
},
@@ -72,7 +75,8 @@
"name": "STORM_UI_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "storm_storm_ui_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "storm-env/storm_ui_principal_name"
},
@@ -106,7 +110,8 @@
}
},
{
- "name": "/STORM/storm_components",
+ "name": "storm_numbus_storm_components",
+ "reference": "/STORM/storm_components",
"principal": {
"configuration": "ranger-storm-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/kerberos.json b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/kerberos.json
index 65dcd33..2a14a65 100644
--- a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/kerberos.json
@@ -7,7 +7,8 @@
"name": "TEZ_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "tez_tez_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/TEZ/0.9.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/TEZ/0.9.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/TEZ/0.9.0.3.0/kerberos.json
index 00c8ac5..6be8292 100644
--- a/ambari-server/src/main/resources/common-services/TEZ/0.9.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/TEZ/0.9.0.3.0/kerberos.json
@@ -7,7 +7,8 @@
"name": "TEZ_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "tez_tez_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
],
"configurations": [
[23/50] [abbrv] ambari git commit: AMBARI-22021.Livy not working with
the default configuration(Prabhjyot Singh via Venkata Sairam)
Posted by jl...@apache.org.
AMBARI-22021.Livy not working with the default configuration(Prabhjyot Singh via Venkata Sairam)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d221ab78
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d221ab78
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d221ab78
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: d221ab786277abf6d8e9e8dbc9442e37423484a4
Parents: 5d5f974
Author: Venkata Sairam <ve...@gmail.com>
Authored: Fri Sep 22 12:46:55 2017 +0530
Committer: Venkata Sairam <ve...@gmail.com>
Committed: Fri Sep 22 12:46:55 2017 +0530
----------------------------------------------------------------------
.../0.7.0/package/scripts/interpreter_json_template.py | 7 ++++++-
.../ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py | 7 ++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d221ab78/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/interpreter_json_template.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/interpreter_json_template.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/interpreter_json_template.py
index 6a98919..d5a70a7 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/interpreter_json_template.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/interpreter_json_template.py
@@ -182,7 +182,7 @@ template = '''
"zeppelin.livy.concurrentSQL": "false",
"zeppelin.livy.spark.sql.field.truncate": "true",
"livy.spark.executor.cores": "",
- "zeppelin.livy.displayAppInfo": "false",
+ "zeppelin.livy.displayAppInfo": "true",
"zeppelin.livy.url": "http://localhost:8998",
"livy.spark.dynamicAllocation.minExecutors": "",
"livy.spark.driver.cores": "",
@@ -240,6 +240,11 @@ template = '''
"language": "r",
"editOnDblClick": false
}
+ },
+ {
+ "name": "shared",
+ "class": "org.apache.zeppelin.livy.LivySharedInterpreter",
+ "defaultInterpreter": false
}
],
"dependencies": [],
http://git-wip-us.apache.org/repos/asf/ambari/blob/d221ab78/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py
index 71d3817..c9030bd 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/livy2_config_template.py
@@ -34,7 +34,7 @@ template = '''
"livy.spark.dynamicAllocation.initialExecutors": "",
"zeppelin.livy.session.create_timeout": "120",
"livy.spark.driver.memory": "",
- "zeppelin.livy.displayAppInfo": "false",
+ "zeppelin.livy.displayAppInfo": "true",
"livy.spark.jars.packages": "",
"livy.spark.dynamicAllocation.maxExecutors": "",
"zeppelin.livy.concurrentSQL": "false",
@@ -90,6 +90,11 @@ template = '''
},
"name": "sparkr",
"defaultInterpreter": false
+ },
+ {
+ "name": "shared",
+ "class": "org.apache.zeppelin.livy.LivySharedInterpreter",
+ "defaultInterpreter": false
}
],
"dependencies": [],
[21/50] [abbrv] ambari git commit: AMBARI-22025. Service auto start
broken due to incomplete execution command
Posted by jl...@apache.org.
AMBARI-22025. Service auto start broken due to incomplete execution command
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7c687bbc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7c687bbc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7c687bbc
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 7c687bbc226b19f85a6f6f292537760e5d6d8048
Parents: f9c0c90
Author: Attila Doroszlai <ad...@hortonworks.com>
Authored: Thu Sep 21 16:24:04 2017 +0200
Committer: Attila Doroszlai <ad...@hortonworks.com>
Committed: Thu Sep 21 23:22:19 2017 +0200
----------------------------------------------------------------------
.../actionmanager/ExecutionCommandWrapper.java | 122 ++++++++++---------
.../AmbariManagementControllerImpl.java | 8 +-
.../server/agent/TestHeartbeatMonitor.java | 20 ++-
3 files changed, 87 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7c687bbc/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
index 5f9300a..47aa093 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ExecutionCommandWrapper.java
@@ -19,6 +19,7 @@ package org.apache.ambari.server.actionmanager;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.VERSION;
import java.util.HashMap;
import java.util.Map;
@@ -30,7 +31,6 @@ import org.apache.ambari.server.RoleCommand;
import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.agent.AgentCommand.AgentCommandType;
import org.apache.ambari.server.agent.ExecutionCommand;
-import org.apache.ambari.server.agent.ExecutionCommand.KeyNames;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
@@ -206,89 +206,93 @@ public class ExecutionCommandWrapper {
}
}
- // set the repository version for the component this command is for -
- // always use the current desired version
- try {
- RepositoryVersionEntity repositoryVersion = null;
- String serviceName = executionCommand.getServiceName();
- if (!StringUtils.isEmpty(serviceName)) {
- Service service = cluster.getService(serviceName);
- if (null != service) {
- repositoryVersion = service.getDesiredRepositoryVersion();
- }
+ setVersions(cluster);
+
+ // provide some basic information about a cluster upgrade if there is one
+ // in progress
+ UpgradeEntity upgrade = cluster.getUpgradeInProgress();
+ if (null != upgrade) {
+ UpgradeContext upgradeContext = upgradeContextFactory.create(cluster, upgrade);
+ UpgradeSummary upgradeSummary = upgradeContext.getUpgradeSummary();
+ executionCommand.setUpgradeSummary(upgradeSummary);
+ }
+
+ } catch (ClusterNotFoundException cnfe) {
+ // it's possible that there are commands without clusters; in such cases,
+ // just return the de-serialized command and don't try to read configs
+ LOG.warn(
+ "Unable to lookup the cluster by ID; assuming that there is no cluster and therefore no configs for this execution command: {}",
+ cnfe.getMessage());
+
+ return executionCommand;
+ } catch (AmbariException e) {
+ throw new RuntimeException(e);
+ }
+
+ return executionCommand;
+ }
+
+ public void setVersions(Cluster cluster) {
+ // set the repository version for the component this command is for -
+ // always use the current desired version
+ String serviceName = executionCommand.getServiceName();
+ try {
+ RepositoryVersionEntity repositoryVersion = null;
+ if (!StringUtils.isEmpty(serviceName)) {
+ Service service = cluster.getService(serviceName);
+ if (null != service) {
+ repositoryVersion = service.getDesiredRepositoryVersion();
String componentName = executionCommand.getComponentName();
if (!StringUtils.isEmpty(componentName)) {
- ServiceComponent serviceComponent = service.getServiceComponent(
- executionCommand.getComponentName());
-
+ ServiceComponent serviceComponent = service.getServiceComponent(componentName);
if (null != serviceComponent) {
repositoryVersion = serviceComponent.getDesiredRepositoryVersion();
}
}
}
+ }
- Map<String, String> commandParams = executionCommand.getCommandParams();
+ Map<String, String> commandParams = executionCommand.getCommandParams();
- if (null != repositoryVersion) {
- // only set the version if it's not set and this is NOT an install
- // command
- if (!commandParams.containsKey(KeyNames.VERSION)
- && executionCommand.getRoleCommand() != RoleCommand.INSTALL) {
- commandParams.put(KeyNames.VERSION, repositoryVersion.getVersion());
- }
+ if (null != repositoryVersion) {
+ // only set the version if it's not set and this is NOT an install
+ // command
+ if (!commandParams.containsKey(VERSION)
+ && executionCommand.getRoleCommand() != RoleCommand.INSTALL) {
+ commandParams.put(VERSION, repositoryVersion.getVersion());
+ }
- StackId stackId = repositoryVersion.getStackId();
- StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(),
- stackId.getStackVersion());
+ StackId stackId = repositoryVersion.getStackId();
+ StackInfo stackInfo = ambariMetaInfo.getStack(stackId.getStackName(),
+ stackId.getStackVersion());
- if (!commandParams.containsKey(HOOKS_FOLDER)) {
- commandParams.put(HOOKS_FOLDER, stackInfo.getStackHooksFolder());
- }
+ if (!commandParams.containsKey(HOOKS_FOLDER)) {
+ commandParams.put(HOOKS_FOLDER, stackInfo.getStackHooksFolder());
+ }
- if (!commandParams.containsKey(SERVICE_PACKAGE_FOLDER)) {
- if (!StringUtils.isEmpty(serviceName)) {
- ServiceInfo serviceInfo = ambariMetaInfo.getService(stackId.getStackName(),
- stackId.getStackVersion(), serviceName);
+ if (!commandParams.containsKey(SERVICE_PACKAGE_FOLDER)) {
+ if (!StringUtils.isEmpty(serviceName)) {
+ ServiceInfo serviceInfo = ambariMetaInfo.getService(stackId.getStackName(),
+ stackId.getStackVersion(), serviceName);
- commandParams.put(SERVICE_PACKAGE_FOLDER, serviceInfo.getServicePackageFolder());
- }
+ commandParams.put(SERVICE_PACKAGE_FOLDER, serviceInfo.getServicePackageFolder());
}
}
- } catch (ServiceNotFoundException serviceNotFoundException) {
- // it's possible that there are commands specified for a service where
- // the service doesn't exist yet
- LOG.warn(
- "The service {} is not installed in the cluster. No repository version will be sent for this command.",
- executionCommand.getServiceName());
}
// set the desired versions of versionable components. This is safe even during an upgrade because
// we are "loading-late": components that have not yet upgraded in an EU will have the correct versions.
executionCommand.setComponentVersions(cluster);
-
- // provide some basic information about a cluster upgrade if there is one
- // in progress
- UpgradeEntity upgrade = cluster.getUpgradeInProgress();
- if (null != upgrade) {
- UpgradeContext upgradeContext = upgradeContextFactory.create(cluster, upgrade);
- UpgradeSummary upgradeSummary = upgradeContext.getUpgradeSummary();
- executionCommand.setUpgradeSummary(upgradeSummary);
- }
-
- } catch (ClusterNotFoundException cnfe) {
- // it's possible that there are commands without clusters; in such cases,
- // just return the de-serialized command and don't try to read configs
+ } catch (ServiceNotFoundException serviceNotFoundException) {
+ // it's possible that there are commands specified for a service where
+ // the service doesn't exist yet
LOG.warn(
- "Unable to lookup the cluster by ID; assuming that there is no cluster and therefore no configs for this execution command: {}",
- cnfe.getMessage());
-
- return executionCommand;
+ "The service {} is not installed in the cluster. No repository version will be sent for this command.",
+ serviceName);
} catch (AmbariException e) {
throw new RuntimeException(e);
}
-
- return executionCommand;
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/7c687bbc/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index d458675..b2993e3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
@@ -82,6 +82,7 @@ import org.apache.ambari.server.ServiceNotFoundException;
import org.apache.ambari.server.StackAccessException;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.actionmanager.CommandExecutionType;
+import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.actionmanager.Stage;
@@ -2323,8 +2324,8 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
stackId.getStackVersion());
Map<String, ServiceInfo> servicesMap = ambariMetaInfo.getServices(stackInfo.getName(), stackInfo.getVersion());
- ExecutionCommand execCmd = stage.getExecutionCommandWrapper(scHost.getHostName(),
- scHost.getServiceComponentName()).getExecutionCommand();
+ ExecutionCommandWrapper execCmdWrapper = stage.getExecutionCommandWrapper(hostname, componentName);
+ ExecutionCommand execCmd = execCmdWrapper.getExecutionCommand();
execCmd.setConfigurations(configurations);
execCmd.setConfigurationAttributes(configurationAttributes);
@@ -2552,8 +2553,9 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
execCmd.setCommandParams(commandParams);
execCmd.setRepositoryFile(customCommandExecutionHelper.getCommandRepository(cluster, component, host));
+ execCmdWrapper.setVersions(cluster);
- if ((execCmd != null) && (execCmd.getConfigurationTags().containsKey("cluster-env"))) {
+ if (execCmd.getConfigurationTags().containsKey("cluster-env")) {
LOG.debug("AmbariManagementControllerImpl.createHostAction: created ExecutionCommand for host {}, role {}, roleCommand {}, and command ID {}, with cluster-env tags {}",
execCmd.getHostname(), execCmd.getRole(), execCmd.getRoleCommand(), execCmd.getCommandId(), execCmd.getConfigurationTags().get("cluster-env").get("tag"));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/7c687bbc/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
index 1021175..374774a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/agent/TestHeartbeatMonitor.java
@@ -17,6 +17,8 @@
*/
package org.apache.ambari.server.agent;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.HOOKS_FOLDER;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.SERVICE_PACKAGE_FOLDER;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -38,6 +40,7 @@ import org.apache.ambari.server.H2DatabaseCleaner;
import org.apache.ambari.server.Role;
import org.apache.ambari.server.actionmanager.ActionManager;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.orm.GuiceJpaInitializer;
import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
import org.apache.ambari.server.orm.OrmTestHelper;
@@ -58,6 +61,8 @@ import org.apache.ambari.server.state.svccomphost.ServiceComponentHostDisableEve
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostInstallEvent;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostOpSucceededEvent;
import org.apache.ambari.server.state.svccomphost.ServiceComponentHostStartedEvent;
+import org.apache.ambari.server.topology.TopologyManager;
+import org.apache.ambari.server.utils.StageUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -89,6 +94,8 @@ public class TestHeartbeatMonitor {
injector.getInstance(GuiceJpaInitializer.class);
helper = injector.getInstance(OrmTestHelper.class);
ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
+ StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
+ StageUtils.setConfiguration(injector.getInstance(Configuration.class));
}
@After
@@ -200,6 +207,8 @@ public class TestHeartbeatMonitor {
hb.setResponseId(12);
handler.handleHeartBeat(hb);
+ hm.getAgentRequests().setExecutionDetailsRequest(hostname1, "DATANODE", Boolean.TRUE.toString());
+
List<StatusCommand> cmds = hm.generateStatusCommands(hostname1);
assertTrue("HeartbeatMonitor should generate StatusCommands for host1", cmds.size() == 3);
assertEquals("HDFS", cmds.get(0).getServiceName());
@@ -208,10 +217,19 @@ public class TestHeartbeatMonitor {
boolean containsSECONDARY_NAMENODEStatus = false;
for (StatusCommand cmd : cmds) {
- containsDATANODEStatus |= cmd.getComponentName().equals("DATANODE");
+ boolean isDataNode = cmd.getComponentName().equals("DATANODE");
+ containsDATANODEStatus |= isDataNode;
containsNAMENODEStatus |= cmd.getComponentName().equals("NAMENODE");
containsSECONDARY_NAMENODEStatus |= cmd.getComponentName().equals("SECONDARY_NAMENODE");
assertTrue(cmd.getConfigurations().size() > 0);
+
+ ExecutionCommand execCmd = cmd.getExecutionCommand();
+ assertEquals(isDataNode, execCmd != null);
+ if (execCmd != null) {
+ Map<String, String> commandParams = execCmd.getCommandParams();
+ assertTrue(SERVICE_PACKAGE_FOLDER + " should be included", commandParams.containsKey(SERVICE_PACKAGE_FOLDER));
+ assertTrue(HOOKS_FOLDER + " should be included", commandParams.containsKey(HOOKS_FOLDER));
+ }
}
assertEquals(true, containsDATANODEStatus);
[31/50] [abbrv] ambari git commit: AMBARI-22035. Stack and Versions
page is stuck while trying to install a new stack (alexantonenko)
Posted by jl...@apache.org.
AMBARI-22035. Stack and Versions page is stuck while trying to install a new stack (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/19b16073
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/19b16073
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/19b16073
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 19b16073c50556de666c17b3749ff6a0c1dae398
Parents: ea89244
Author: Alex Antonenko <aa...@hortonworks.com>
Authored: Fri Sep 22 19:25:38 2017 +0300
Committer: Alex Antonenko <aa...@hortonworks.com>
Committed: Fri Sep 22 19:25:38 2017 +0300
----------------------------------------------------------------------
ambari-web/app/mappers/repository_version_mapper.js | 2 +-
ambari-web/app/mappers/stack_version_mapper.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/19b16073/ambari-web/app/mappers/repository_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/repository_version_mapper.js b/ambari-web/app/mappers/repository_version_mapper.js
index 746fc53..61056ae 100644
--- a/ambari-web/app/mappers/repository_version_mapper.js
+++ b/ambari-web/app/mappers/repository_version_mapper.js
@@ -123,7 +123,7 @@ App.repoVersionMapper = App.QuickDataMapper.create({
display_name: service.display_name,
latest_version: service.versions[0] ? service.versions[0] : '',
is_available: item[repoVersionsKey].services.someProperty('name', service.name),
- is_upgradable: json.stackServices[service.name] && json.stackServices[service.name].upgrade
+ is_upgradable: json.stackServices ? json.stackServices[service.name] && json.stackServices[service.name].upgrade : true
};
resultService.push(serviceObj);
}, this);
http://git-wip-us.apache.org/repos/asf/ambari/blob/19b16073/ambari-web/app/mappers/stack_version_mapper.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mappers/stack_version_mapper.js b/ambari-web/app/mappers/stack_version_mapper.js
index 9fa0b78..7612674 100644
--- a/ambari-web/app/mappers/stack_version_mapper.js
+++ b/ambari-web/app/mappers/stack_version_mapper.js
@@ -81,7 +81,7 @@ App.stackVersionMapper = App.QuickDataMapper.create({
item.repository_versions[0].RepositoryVersions.stackVersionId = item.ClusterStackVersions.id;
App.repoVersionMapper.map({
"items": item.repository_versions,
- "stackServices": item.ClusterStackVersions.repository_summary.services
+ "stackServices": item.ClusterStackVersions.repository_summary && item.ClusterStackVersions.repository_summary.services
}, true, true);
}
resultStack.push(this.parseIt(stack, this.get('modelStack')));
[34/50] [abbrv] ambari git commit: AMBARI-22040. configs.py does not
work properly when dealing with files (aonishuk)
Posted by jl...@apache.org.
AMBARI-22040. configs.py does not work properly when dealing with files (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/12abba0b
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/12abba0b
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/12abba0b
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 12abba0b743ec198067001a64608ccbcc904a869
Parents: 50b6475
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Sep 25 12:38:39 2017 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Sep 25 12:38:39 2017 +0300
----------------------------------------------------------------------
ambari-server/src/test/python/TestConfigs.py | 38 ++++++++++++++++----
.../src/test/resources/TestConfigs-content.xml | 28 +++++++++++++++
2 files changed, 60 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/12abba0b/ambari-server/src/test/python/TestConfigs.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestConfigs.py b/ambari-server/src/test/python/TestConfigs.py
index cc6cb31..6d2ab34 100644
--- a/ambari-server/src/test/python/TestConfigs.py
+++ b/ambari-server/src/test/python/TestConfigs.py
@@ -73,7 +73,7 @@ class TestConfigs(TestCase):
self.assertEquals(config['properties'], {'config1': 'value1', 'config2': 'value2'})
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
to_file_method.return_value = config_assertion
- sys.argv = ['configs.py', 'user', 'password', '8081', 'http', 'get', 'localhost', 'cluster1', 'hdfs-site', '1.conf']
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'http', '-a', 'get', '-l','localhost','-n', 'cluster1', '-c','hdfs-site']
configs.main()
@patch.object(configs, 'output_to_file')
@@ -94,7 +94,7 @@ class TestConfigs(TestCase):
}
}
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
- sys.argv = ['configs.py', 'user', 'password', '8081', 'https', 'set', 'localhost', 'cluster1', 'hdfs-site', 'config1', 'value3']
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'set', '-l','localhost','-n', 'cluster1', '-c','hdfs-site', '-k', 'config1', '-v', 'value3']
configs.main()
@patch.object(configs, 'output_to_file')
@@ -115,7 +115,7 @@ class TestConfigs(TestCase):
}
}
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
- sys.argv = ['configs.py', 'user', 'password', '8081', 'https', 'set', 'localhost', 'cluster1', 'hdfs-site', 'config1', 'value3']
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'set', '-l','localhost','-n', 'cluster1', '-c','hdfs-site', '-k', 'config1', '-v', 'value3']
configs.main()
@patch.object(configs, 'output_to_file')
@@ -138,7 +138,7 @@ class TestConfigs(TestCase):
}
}
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
- sys.argv = ['configs.py', 'user', 'password', '8081', 'https', 'set', 'localhost', 'cluster2', 'hdfs-site', 'config1', 'value4']
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'set', '-l','localhost','-n', 'cluster2', '-c','hdfs-site', '-k', 'config1', '-v', 'value4']
configs.main()
@patch.object(configs, 'output_to_file')
@@ -159,7 +159,8 @@ class TestConfigs(TestCase):
}
}
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
- sys.argv = ['configs.py', 'user', 'password', '8081', 'https', 'delete', 'localhost', 'cluster1', 'hdfs-site', 'config1']
+
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'delete', '-l','localhost','-n', 'cluster1', '-c','hdfs-site', '-k', 'config1']
configs.main()
@patch.object(configs, 'output_to_file')
@@ -182,5 +183,30 @@ class TestConfigs(TestCase):
}
}
urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
- sys.argv = ['configs.py', 'user', 'password', '8081', 'https', 'delete', 'localhost', 'cluster2', 'hdfs-site', 'config1']
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'delete', '-l','localhost','-n', 'cluster2', '-c','hdfs-site', '-k', 'config1']
+ configs.main()
+
+ @patch.object(configs, 'output_to_file')
+ @patch('urllib2.urlopen')
+ def test_set_properties_from_xml(self, urlopen_method, to_file_method):
+ response_mapping = {
+ 'GET': {
+ 'body': {
+ 'https://localhost:8081/api/v1/clusters/cluster1?fields=Clusters/desired_configs' : '{"Clusters":{"desired_configs":{"hdfs-site":{"tag":"version1"}}}}',
+ 'https://localhost:8081/api/v1/clusters/cluster1/configurations?type=hdfs-site&tag=version1': '{"items":[{"properties":{"config3": "value3", "config4": "value4"}}]}'
+ }
+ },
+ 'PUT': {
+ 'request_assertion': {
+ 'https://localhost:8081/api/v1/clusters/cluster1':
+ lambda request_body: self.assertEquals(request_body['Clusters']['desired_configs']['properties'], {"config1": "value1", "config2": "value2"})
+ }
+ }
+ }
+ urlopen_method.side_effect = self.get_url_open_side_effect(response_mapping)
+
+ test_directory = os.path.dirname(os.path.abspath(__file__))
+ configs_path = os.path.join(test_directory, '../resources/TestConfigs-content.xml')
+
+ sys.argv = ['configs.py', '-u', 'user', '-p', 'password', '-t', '8081', '-s', 'https', '-a', 'set', '-l','localhost','-n', 'cluster1', '-c','hdfs-site', '-f', configs_path]
configs.main()
http://git-wip-us.apache.org/repos/asf/ambari/blob/12abba0b/ambari-server/src/test/resources/TestConfigs-content.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/TestConfigs-content.xml b/ambari-server/src/test/resources/TestConfigs-content.xml
new file mode 100644
index 0000000..4039da9
--- /dev/null
+++ b/ambari-server/src/test/resources/TestConfigs-content.xml
@@ -0,0 +1,28 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+
+<configuration>
+ <property>
+ <name>config1</name>
+ <value>value1</value>
+ <final>true</final>
+ </property>
+ <property>
+ <name>config2</name>
+ <value>value2</value>
+ </property>
+</configuration>
\ No newline at end of file
[49/50] [abbrv] ambari git commit: AMBARI-19135 : AMS build artifacts
are not uploaded to maven central. (avijayan)
Posted by jl...@apache.org.
AMBARI-19135 : AMS build artifacts are not uploaded to maven central. (avijayan)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/84fed85a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/84fed85a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/84fed85a
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 84fed85ac9019a9b72d3db1619c7dbdf18e1d078
Parents: 12c9ca7
Author: Aravindan Vijayan <av...@hortonworks.com>
Authored: Mon Sep 25 16:26:28 2017 -0700
Committer: Aravindan Vijayan <av...@hortonworks.com>
Committed: Mon Sep 25 16:26:28 2017 -0700
----------------------------------------------------------------------
ambari-metrics/pom.xml | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/84fed85a/ambari-metrics/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml
index 560ef11..a14b8fd 100644
--- a/ambari-metrics/pom.xml
+++ b/ambari-metrics/pom.xml
@@ -317,5 +317,32 @@
</dependency>
</dependencies>
</profile>
+ <profile>
+ <id>sign-artifacts</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-gpg-plugin</artifactId>
+ <version>1.6</version>
+ <executions>
+ <execution>
+ <id>sign-artifacts</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
[09/50] [abbrv] ambari git commit: AMBARI-22007 - Addition of service
component after patching a service still keeps the component at base version
(jonathanhurley)
Posted by jl...@apache.org.
AMBARI-22007 - Addition of service component after patching a service still keeps the component at base version (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5c0a3546
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5c0a3546
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5c0a3546
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 5c0a3546e70e71366c51ef4e3b3ef9f2319865d8
Parents: 25c1f21
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Sep 20 16:59:48 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Sep 20 17:02:39 2017 -0400
----------------------------------------------------------------------
.../ambari/server/agent/CommandRepository.java | 28 +++++++++++++++
.../AmbariCustomCommandExecutionHelper.java | 1 +
.../RepositoryVersionResourceProvider.java | 6 ++--
.../DistributeRepositoriesActionListener.java | 1 +
.../listeners/upgrade/StackVersionListener.java | 5 +--
.../orm/entities/RepositoryVersionEntity.java | 37 ++++++++++++++++++++
.../stack/upgrade/RepositoryVersionHelper.java | 1 +
.../server/upgrade/UpgradeCatalog260.java | 29 +++++++++++++--
.../main/resources/Ambari-DDL-Derby-CREATE.sql | 1 +
.../main/resources/Ambari-DDL-MySQL-CREATE.sql | 1 +
.../main/resources/Ambari-DDL-Oracle-CREATE.sql | 1 +
.../resources/Ambari-DDL-Postgres-CREATE.sql | 1 +
.../resources/Ambari-DDL-SQLAnywhere-CREATE.sql | 1 +
.../resources/Ambari-DDL-SQLServer-CREATE.sql | 1 +
.../upgrade/StackVersionListenerTest.java | 5 +++
.../server/upgrade/UpgradeCatalog260Test.java | 17 ++++++---
.../src/test/python/TestVersionSelectUtil.py | 14 ++++----
17 files changed, 133 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
index 1351713..301f475 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
@@ -46,6 +46,13 @@ public class CommandRepository {
private String m_stackName;
/**
+ * {@code true} if Ambari believes that this repository has reported back it's
+ * version after distribution.
+ */
+ @SerializedName("resolved")
+ private boolean m_resolved;
+
+ /**
* @param version the repo version
*/
public void setRepositoryVersion(String version) {
@@ -119,6 +126,27 @@ public class CommandRepository {
}
/**
+ * Gets whether this repository has been marked as having its version
+ * resolved.
+ *
+ * @return {@code true} if this repository has been confirmed to have the
+ * right version.
+ */
+ public boolean isResolved() {
+ return m_resolved;
+ }
+
+ /**
+ * Gets whether this repository has had its version resolved.
+ *
+ * @param resolved
+ * {@code true} to mark this repository as being resolved.
+ */
+ public void setResolved(boolean resolved) {
+ m_resolved = resolved;
+ }
+
+ /**
* Minimal information required to generate repo files on the agent. These are copies
* of the repository objects from repo versions that can be changed for URL overrides, etc.
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index 822539f..38a02ef 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -1285,6 +1285,7 @@ public class AmbariCustomCommandExecutionHelper {
public Void apply(RepositoryVersionEntity rve) {
command.setRepositoryVersionId(rve.getId());
command.setRepositoryVersion(rve.getVersion());
+ command.setResolved(rve.isResolved());
command.setStackName(rve.getStackName());
// !!! a repository version entity has all the repos worked out. We shouldn't use
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
index 44ef9f7..6455805 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
@@ -87,6 +87,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
public static final String REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "repository_version");
public static final String REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "display_name");
public static final String REPOSITORY_VERSION_HIDDEN_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "hidden");
+ public static final String REPOSITORY_VERSION_RESOLVED_PROPERTY_ID = PropertyHelper.getPropertyId("RepositoryVersions", "resolved");
public static final String SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID = new OperatingSystemResourceDefinition().getPluralName();
public static final String SUBRESOURCE_REPOSITORIES_PROPERTY_ID = new RepositoryResourceDefinition().getPluralName();
@@ -121,7 +122,8 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
REPOSITORY_VERSION_PARENT_ID,
REPOSITORY_VERSION_HAS_CHILDREN,
REPOSITORY_VERSION_AVAILABLE_SERVICES,
- REPOSITORY_VERSION_STACK_SERVICES);
+ REPOSITORY_VERSION_STACK_SERVICES,
+ REPOSITORY_VERSION_RESOLVED_PROPERTY_ID);
@SuppressWarnings("serial")
public static Map<Type, String> keyPropertyIds = new ImmutableMap.Builder<Type, String>()
@@ -257,7 +259,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
setResourceProperty(resource, REPOSITORY_VERSION_HIDDEN_PROPERTY_ID, entity.isHidden(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, entity.getVersion(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_TYPE_PROPERTY_ID, entity.getType(), requestedIds);
-
+ setResourceProperty(resource, REPOSITORY_VERSION_RESOLVED_PROPERTY_ID, entity.isResolved(), requestedIds);
setResourceProperty(resource, REPOSITORY_VERSION_PARENT_ID, entity.getParentId(), requestedIds);
List<RepositoryVersionEntity> children = entity.getChildren();
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
index aa29894..376e20d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
@@ -124,6 +124,7 @@ public class DistributeRepositoriesActionListener {
if (null != repoVersion && StringUtils.isNotBlank(actualVersion)) {
if (!StringUtils.equals(repoVersion.getVersion(), actualVersion)) {
repoVersion.setVersion(actualVersion);
+ repoVersion.setResolved(true);
repoVersionDAO.merge(repoVersion);
repositoryVersion = actualVersion;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
index 394e9f9..0ce64bf 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
@@ -98,8 +98,9 @@ public class StackVersionListener {
if (null != rve) {
String currentRepoVersion = rve.getVersion();
if (!StringUtils.equals(currentRepoVersion, newVersion)) {
- rve.setVersion(newVersion);
- repositoryVersionDAO.merge(rve);
+ rve.setVersion(newVersion);
+ rve.setResolved(true);
+ repositoryVersionDAO.merge(rve);
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
index bf9e678..2b56b11 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
@@ -147,6 +147,16 @@ public class RepositoryVersionEntity {
@Column(name = "hidden", nullable = false, insertable = true, updatable = true)
private short isHidden = 0;
+ /**
+ * Repositories can't be trusted until they have been deployed and we've
+ * detected their actual version. Most of the time, things match up, but
+ * editing a VDF could causes the version to be misrepresented. Once we have
+ * received the correct version of the repository (normally after it's been
+ * installed), then we can set this flag to {@code true}.
+ */
+ @Column(name = "resolved", nullable = false)
+ private short resolved = 0;
+
@ManyToOne
@JoinColumn(name = "parent_id")
private RepositoryVersionEntity parent;
@@ -217,6 +227,13 @@ public class RepositoryVersionEntity {
return version;
}
+ /**
+ * Sets the version on this repository version entity. If the version is
+ * confirmed as correct, then the called should also set
+ * {@link #setResolved(boolean)}.
+ *
+ * @param version
+ */
public void setVersion(String version) {
this.version = version;
}
@@ -459,4 +476,24 @@ public class RepositoryVersionEntity {
this.isHidden = (short) (isHidden ? 1 : 0);
}
+ /**
+ * Gets whether this repository has been installed and has reported back its
+ * actual version.
+ *
+ * @return {@code true} if the version for this repository can be trusted,
+ * {@code false} otherwise.
+ */
+ public boolean isResolved() {
+ return resolved == 1;
+ }
+
+ /**
+ * Sets whether this repository has been installed and has reported back its
+ * actual version.
+ *
+ * @param resolved
+ */
+ public void setResolved(boolean resolved) {
+ this.resolved = resolved ? (short) 1 : (short) 0;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
index c137515..f540d8d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
@@ -320,6 +320,7 @@ public class RepositoryVersionHelper {
commandRepo.setRepositories(osEntity.getOsType(), osEntity.getRepositories());
commandRepo.setRepositoryVersion(repoVersion.getVersion());
commandRepo.setRepositoryVersionId(repoVersion.getId());
+ commandRepo.setResolved(repoVersion.isResolved());
commandRepo.setStackName(repoVersion.getStackId().getStackName());
if (!osEntity.isAmbariManagedRepos()) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
index 0b9f2c4..c92b3dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
@@ -34,8 +34,10 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.dao.ArtifactDAO;
+import org.apache.ambari.server.orm.dao.RepositoryVersionDAO;
import org.apache.ambari.server.orm.entities.ArtifactEntity;
import org.apache.ambari.server.orm.entities.ClusterConfigEntity;
+import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
import org.apache.ambari.server.state.Cluster;
import org.apache.ambari.server.state.Clusters;
import org.apache.ambari.server.state.Config;
@@ -80,6 +82,7 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
public static final String REPO_VERSION_TABLE = "repo_version";
public static final String REPO_VERSION_ID_COLUMN = "repo_version_id";
+ public static final String REPO_VERSION_RESOLVED_COLUMN = "resolved";
public static final String REPO_VERSION_HIDDEN_COLUMN = "hidden";
public static final String HOST_COMPONENT_DESIRED_STATE_TABLE = "hostcomponentdesiredstate";
@@ -383,14 +386,20 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
}
/**
- * Updates {@value #REPO_VERSION_TABLE} table. Adds
- * {@value #REPO_VERSION_HIDDEN_COLUMN} column.
+ * Updates {@value #REPO_VERSION_TABLE} table. Adds the following columns:
+ * <ul>
+ * <li>{@value #REPO_VERSION_HIDDEN_COLUMN}
+ * <li>{@value #REPO_VERSION_RESOLVED_COLUMN}
+ * </ul>
*
* @throws java.sql.SQLException
*/
private void updateRepositoryVersionTable() throws SQLException {
dbAccessor.addColumn(REPO_VERSION_TABLE,
new DBAccessor.DBColumnInfo(REPO_VERSION_HIDDEN_COLUMN, Short.class, null, 0, false));
+
+ dbAccessor.addColumn(REPO_VERSION_TABLE,
+ new DBAccessor.DBColumnInfo(REPO_VERSION_RESOLVED_COLUMN, Short.class, null, 0, false));
}
/**
@@ -412,6 +421,7 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
updateKerberosDescriptorArtifacts();
updateAmsConfigs();
updateHDFSWidgetDefinition();
+ updateExistingRepositoriesToBeResolved();
}
public int getCurrentVersionID() throws AmbariException, SQLException {
@@ -590,4 +600,19 @@ public class UpgradeCatalog260 extends AbstractUpgradeCatalog {
updateWidgetDefinitionsForService("HDFS", widgetMap, sectionLayoutMap);
}
+
+ /**
+ * Sets all existing repository versions to be resolved (we have to assume
+ * that they are good since they've been using them to run stuff).
+ *
+ * @throws AmbariException
+ */
+ protected void updateExistingRepositoriesToBeResolved() throws AmbariException {
+ RepositoryVersionDAO repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
+ List<RepositoryVersionEntity> repositoryVersions = repositoryVersionDAO.findAll();
+ for (RepositoryVersionEntity repositoryVersion : repositoryVersions) {
+ repositoryVersion.setResolved(true);
+ repositoryVersionDAO.merge(repositoryVersion);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
index 74fff6c..614af1e 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
@@ -155,6 +155,7 @@ CREATE TABLE repo_version (
repositories VARCHAR(3000) NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved SMALLINT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml CLOB,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index beda848..530411a 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@ -175,6 +175,7 @@ CREATE TABLE repo_version (
repositories MEDIUMTEXT NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved TINYINT(1) NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml MEDIUMTEXT,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index 4f27dfb..02f6e3e 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@ -156,6 +156,7 @@ CREATE TABLE repo_version (
repositories CLOB NOT NULL,
repo_type VARCHAR2(255) DEFAULT 'STANDARD' NOT NULL,
hidden NUMBER(1) DEFAULT 0 NOT NULL,
+ resolved NUMBER(1) DEFAULT 0 NOT NULL,
version_url VARCHAR(1024),
version_xml CLOB,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 355ee80..634db95 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -159,6 +159,7 @@ CREATE TABLE repo_version (
version_xml TEXT,
version_xsd VARCHAR(512),
parent_id BIGINT,
+ resolved SMALLINT NOT NULL DEFAULT 0,
CONSTRAINT PK_repo_version PRIMARY KEY (repo_version_id),
CONSTRAINT FK_repoversion_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id),
CONSTRAINT UQ_repo_version_display_name UNIQUE (display_name),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
index 76d4441..f64ff80 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@ -154,6 +154,7 @@ CREATE TABLE repo_version (
repositories TEXT NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved BIT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml TEXT,
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index f54a232..7a3feaf 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@ -168,6 +168,7 @@ CREATE TABLE repo_version (
repositories VARCHAR(MAX) NOT NULL,
repo_type VARCHAR(255) DEFAULT 'STANDARD' NOT NULL,
hidden SMALLINT NOT NULL DEFAULT 0,
+ resolved BIT NOT NULL DEFAULT 0,
version_url VARCHAR(1024),
version_xml VARCHAR(MAX),
version_xsd VARCHAR(512),
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
index ff6fab9..68d9c56 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
@@ -306,6 +306,11 @@ public class StackVersionListenerTest extends EasyMockSupport {
RepositoryVersionDAO dao = createNiceMock(RepositoryVersionDAO.class);
RepositoryVersionEntity entity = createNiceMock(RepositoryVersionEntity.class);
expect(entity.getVersion()).andReturn("2.4.0.0").once();
+
+ // when the version gets reported back, we set this repo to resolved
+ entity.setResolved(true);
+ expectLastCall().once();
+
expect(dao.findByPK(1L)).andReturn(entity).once();
expect(dao.merge(entity)).andReturn(entity).once();
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index d7210c6..c03b400 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -219,7 +219,8 @@ public class UpgradeCatalog260Test {
expectDropStaleTables();
Capture<DBColumnInfo> repoVersionHiddenColumnCapture = newCapture();
- expectUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture);
+ Capture<DBColumnInfo> repoVersionResolvedColumnCapture = newCapture();
+ expectUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture, repoVersionResolvedColumnCapture);
Capture<DBColumnInfo> unapped = newCapture();
expectRenameServiceDeletedColumn(unapped);
@@ -248,7 +249,7 @@ public class UpgradeCatalog260Test {
verifyAddSelectedCollumsToClusterconfigTable(selectedColumnInfo, selectedmappingColumnInfo, selectedTimestampColumnInfo, createTimestampColumnInfo);
verifyUpdateUpgradeTable(rvid, orchestration, revertAllowed);
verifyCreateUpgradeHistoryTable(columns);
- verifyUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture);
+ verifyUpdateRepositoryVersionTableTable(repoVersionHiddenColumnCapture, repoVersionResolvedColumnCapture);
}
public void expectDropStaleTables() throws SQLException {
@@ -581,16 +582,24 @@ public class UpgradeCatalog260Test {
* @param hiddenColumnCapture
* @throws SQLException
*/
- public void expectUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture) throws SQLException {
+ public void expectUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture,
+ Capture<DBColumnInfo> repoVersionResolvedColumnCapture) throws SQLException {
dbAccessor.addColumn(eq(UpgradeCatalog260.REPO_VERSION_TABLE), capture(hiddenColumnCapture));
+ dbAccessor.addColumn(eq(UpgradeCatalog260.REPO_VERSION_TABLE), capture(repoVersionResolvedColumnCapture));
expectLastCall().once();
}
- public void verifyUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture) {
+ public void verifyUpdateRepositoryVersionTableTable(Capture<DBColumnInfo> hiddenColumnCapture,
+ Capture<DBColumnInfo> resolvedColumnCapture) {
DBColumnInfo hiddenColumn = hiddenColumnCapture.getValue();
Assert.assertEquals(0, hiddenColumn.getDefaultValue());
Assert.assertEquals(UpgradeCatalog260.REPO_VERSION_HIDDEN_COLUMN, hiddenColumn.getName());
Assert.assertEquals(false, hiddenColumn.isNullable());
+
+ DBColumnInfo resolvedColumn = resolvedColumnCapture.getValue();
+ Assert.assertEquals(0, resolvedColumn.getDefaultValue());
+ Assert.assertEquals(UpgradeCatalog260.REPO_VERSION_RESOLVED_COLUMN, resolvedColumn.getName());
+ Assert.assertEquals(false, resolvedColumn.isNullable());
}
@Test
http://git-wip-us.apache.org/repos/asf/ambari/blob/5c0a3546/ambari-server/src/test/python/TestVersionSelectUtil.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestVersionSelectUtil.py b/ambari-server/src/test/python/TestVersionSelectUtil.py
index 5097fac..5195dca 100644
--- a/ambari-server/src/test/python/TestVersionSelectUtil.py
+++ b/ambari-server/src/test/python/TestVersionSelectUtil.py
@@ -40,7 +40,7 @@ class TestVersionSelectUtil(TestCase):
@patch("resource_management.core.shell.call")
@patch('os.path.exists')
@patch("resource_management.libraries.functions.stack_tools.get_stack_tool")
- def test_get_component_version(self, get_stack_tool_mock, os_path_exists_mock, call_mock, open_mock):
+ def test_get_component_version_from_symlink(self, get_stack_tool_mock, os_path_exists_mock, call_mock, open_mock):
stack_expected_version = "2.2.1.0-2175"
# Mock classes for reading from a file
@@ -79,23 +79,23 @@ class TestVersionSelectUtil(TestCase):
call_mock.side_effect = [(0, "value will come from MagicFile"), ] * 3
# Missing stack name
- version = self.module.get_component_version(None, "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink(None, "hadoop-hdfs-datanode")
self.assertEquals(version, None)
# Missing component name
- version = self.module.get_component_version("HDP", None)
+ version = self.module.get_component_version_from_symlink("HDP", None)
self.assertEquals(version, None)
# Invalid stack name
- version = self.module.get_component_version("StackDoesNotExist", "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink("StackDoesNotExist", "hadoop-hdfs-datanode")
self.assertEquals(version, None)
# Invalid component name
- version = self.module.get_component_version("HDP", "hadoop-nonexistent-component-name")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-nonexistent-component-name")
self.assertEquals(version, None)
# Pass
- version = self.module.get_component_version("HDP", "hadoop-hdfs-namenode")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-hdfs-namenode")
self.assertEquals(version, stack_expected_version)
- version = self.module.get_component_version("HDP", "hadoop-hdfs-datanode")
+ version = self.module.get_component_version_from_symlink("HDP", "hadoop-hdfs-datanode")
self.assertEquals(version, stack_expected_version)
@patch('__builtin__.open')
[06/50] [abbrv] ambari git commit: AMBARI-22006 Log Search UI:
implement grouping of service logs by day. (ababiichuk)
Posted by jl...@apache.org.
AMBARI-22006 Log Search UI: implement grouping of service logs by day. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0f1099b9
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0f1099b9
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0f1099b9
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 0f1099b9a9887c3a6b05753a00ce88c9d9c4f497
Parents: 56c3da7
Author: ababiichuk <ab...@hortonworks.com>
Authored: Wed Sep 20 17:07:36 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Wed Sep 20 17:37:42 2017 +0300
----------------------------------------------------------------------
.../logs-list/logs-list.component.html | 52 +++++++++++---------
.../logs-list/logs-list.component.less | 1 -
.../components/logs-list/logs-list.component.ts | 11 ++++-
.../ambari-logsearch-web/src/app/mock-data.ts | 2 +-
.../src/app/services/filtering.service.ts | 28 -----------
.../src/app/services/utils.service.ts | 7 +++
.../src/assets/i18n/en.json | 4 --
7 files changed, 46 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
index 888c524..29a85c5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
@@ -25,30 +25,36 @@
<div class="col-md-11">{{'logs.details' | translate}}</div>
</div>
</div>
-<accordion-panel *ngFor="let log of logs; let i = index" [toggleId]="'details-' + i" class="col-md-12">
- <ng-template>
- <div *ngIf="isColumnDisplayed('level')" [ngClass]="'hexagon ' + log.className"></div>
- <div *ngIf="isColumnDisplayed('level')" [ngClass]="'col-md-1 log-status ' + log.className">{{log.level}}</div>
- <div *ngIf="isColumnDisplayed('type') || isColumnDisplayed('logtime')" class="col-md-3">
- <div *ngIf="isColumnDisplayed('type')" class="log-type">{{log.type}}</div>
- <time *ngIf="isColumnDisplayed('logtime')" class="log-time">
- {{log.logtime | amTz: timeZone | amDateFormat: timeFormat}}
- </time>
- </div>
- <div class="col-md-6 log-content-wrapper">
- <div class="collapse log-actions" attr.id="details-{{i}}">
- <span class="action-icon fa fa-search"></span>
- <span class="action-icon fa fa-external-link"></span>
- <span class="action-icon fa fa-bullseye"></span>
+<div *ngFor="let log of logs; let i = index">
+ <div *ngIf="i === 0 || isDifferentDates(log.logtime, logs[i - 1].logtime)" class="col-md-12">
+ <div class="logs-header">{{log.logtime | amTz: timeZone | amDateFormat: dateFormat}}</div>
+ </div>
+ <accordion-panel [toggleId]="'details-' + i" class="col-md-12">
+ <ng-template>
+ <div *ngIf="isColumnDisplayed('level')" [ngClass]="'hexagon ' + log.className"></div>
+ <div *ngIf="isColumnDisplayed('level')" [ngClass]="'col-md-1 log-status ' + log.className">{{log.level}}</div>
+ <div *ngIf="isColumnDisplayed('type') || isColumnDisplayed('logtime')" class="col-md-3">
+ <div *ngIf="isColumnDisplayed('type')" class="log-type">{{log.type}}</div>
+ <time *ngIf="isColumnDisplayed('logtime')" class="log-time">
+ {{log.logtime | amTz: timeZone | amDateFormat: timeFormat}}
+ </time>
+ </div>
+ <div class="col-md-6 log-content-wrapper">
+ <div class="collapse log-actions" attr.id="details-{{i}}">
+ <span class="action-icon fa fa-search"></span>
+ <span class="action-icon fa fa-external-link"></span>
+ <span class="action-icon fa fa-crosshairs"></span>
+ </div>
+ <div class="log-content-inner-wrapper">
+ <div class="log-content" *ngIf="isColumnDisplayed('log_message')">{{log.log_message}}</div>
+ </div>
</div>
- <div class="log-content-inner-wrapper">
- <div class="log-content" *ngIf="isColumnDisplayed('log_message')">{{log.log_message}}</div>
+ <div *ngFor="let column of displayedColumns">
+ <div *ngIf="customStyledColumns.indexOf(column.name) === -1" [innerHTML]="log[column.name]"
+ class="col-md-1"></div>
</div>
- </div>
- <div *ngFor="let column of displayedColumns">
- <div *ngIf="customStyledColumns.indexOf(column.name) === -1" [innerHTML]="log[column.name]" class="col-md-1"></div>
- </div>
- </ng-template>
-</accordion-panel>
+ </ng-template>
+ </accordion-panel>
+</div>
<pagination class="col-md-12" *ngIf="logs && logs.length" [totalCount]="totalCount" [filtersForm]="filtersForm"
[filterInstance]="filters.pageSize" [currentCount]="logs.length"></pagination>
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
index 91d796f..584c1a7 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
@@ -23,7 +23,6 @@
padding: 5px 0;
background-color: @list-header-background-color; // TODO implement actual color
overflow: hidden;
- text-transform: uppercase;
}
/deep/ filter-dropdown {
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
index 6d73dcb..a081e1b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
@@ -19,6 +19,7 @@ import {Component, Input} from '@angular/core';
import {FormGroup} from '@angular/forms';
import 'rxjs/add/operator/map';
import {FilteringService} from '@app/services/filtering.service';
+import {UtilsService} from '@app/services/utils.service';
@Component({
selector: 'logs-list',
@@ -27,7 +28,7 @@ import {FilteringService} from '@app/services/filtering.service';
})
export class LogsListComponent {
- constructor(private filtering: FilteringService) {
+ constructor(private filtering: FilteringService, private utils: UtilsService) {
}
@Input()
@@ -41,7 +42,9 @@ export class LogsListComponent {
readonly customStyledColumns = ['level', 'type', 'logtime', 'log_message'];
- timeFormat: string = 'DD/MM/YYYY HH:mm:ss';
+ readonly dateFormat: string = 'dddd, MMMM Do';
+
+ readonly timeFormat: string = 'h:mm:ss A';
get timeZone(): string {
return this.filtering.timeZone;
@@ -55,6 +58,10 @@ export class LogsListComponent {
return this.filtering.filtersForm;
}
+ isDifferentDates(dateA, dateB): boolean {
+ return this.utils.isDifferentDates(dateA, dateB, this.timeZone);
+ }
+
isColumnDisplayed(key: string): boolean {
return this.displayedColumns.some(column => column.name === key);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts b/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
index f23139b..4325f5b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/mock-data.ts
@@ -322,7 +322,7 @@ export const mockData = {
path: '/var/log/ambari-metrics-collector/ambari-metrics-collector.log',
host: 'h1',
level: 'ERROR',
- logtime: moment().subtract(2, 'd'),
+ logtime: moment().subtract(2, 'd').valueOf(),
ip: '192.168.0.2',
type: 'ams_collector',
_version_: 14,
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
index 2d3f640..718149e 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
@@ -360,34 +360,6 @@ export class FilteringService {
label: 'sorting.title',
options: [
{
- label: 'sorting.level.asc',
- value: {
- key: 'level',
- type: 'asc'
- }
- },
- {
- label: 'sorting.level.desc',
- value: {
- key: 'level',
- type: 'desc'
- }
- },
- {
- label: 'sorting.component.asc',
- value: {
- key: 'type',
- type: 'asc'
- }
- },
- {
- label: 'sorting.component.desc',
- value: {
- key: 'type',
- type: 'desc'
- }
- },
- {
label: 'sorting.time.asc',
value: {
key: 'logtime',
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
index 0f90ba3..773172b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
@@ -17,6 +17,7 @@
*/
import {Injectable} from '@angular/core';
+import * as moment from 'moment-timezone';
@Injectable()
export class UtilsService {
@@ -47,4 +48,10 @@ export class UtilsService {
return event.keyCode === 13;
}
+ isDifferentDates(dateA, dateB, timeZone): boolean {
+ const momentA = moment(dateA).tz(timeZone),
+ momentB = moment(dateB).tz(timeZone);
+ return !momentA.isSame(momentB, 'day');
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0f1099b9/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
index e7126f0..e3f4c69 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
+++ b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
@@ -68,10 +68,6 @@
"levels.unknown": "Unknown",
"sorting.title": "Sort By",
- "sorting.level.asc": "Ascending Level",
- "sorting.level.desc": "Descending Level",
- "sorting.component.asc": "Ascending Component",
- "sorting.component.desc": "Descending Component",
"sorting.time.asc": "Ascending Time",
"sorting.time.desc": "Descending Time",
[02/50] [abbrv] ambari git commit: AMBARI-22002.Ambari Unit Tests
Fail In trunk(Prabhjyot Singh via Venkata Sairam)
Posted by jl...@apache.org.
AMBARI-22002.Ambari Unit Tests Fail In trunk(Prabhjyot Singh via Venkata Sairam)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8467a204
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8467a204
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8467a204
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 8467a2048300ac54caf84ad785a8cc0a96f3cb65
Parents: c883272
Author: Venkata Sairam <ve...@gmail.com>
Authored: Wed Sep 20 15:21:27 2017 +0530
Committer: Venkata Sairam <ve...@gmail.com>
Committed: Wed Sep 20 15:21:27 2017 +0530
----------------------------------------------------------------------
.../stacks/2.6/ZEPPELIN/test_zeppelin_070.py | 135 +++++++++++++++++--
1 file changed, 125 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8467a204/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py b/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
index 9a28e68..b9b34e8 100644
--- a/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
+++ b/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
@@ -21,8 +21,7 @@ from ambari_commons import OSCheck
import glob
-import time
-from mock.mock import MagicMock, patch, call
+from mock.mock import MagicMock, patch
from resource_management.core import sudo
from stacks.utils.RMFTestCase import *
@@ -34,7 +33,7 @@ import interpreter_json_generated
new=MagicMock(return_value=interpreter_json_generated.template))
class TestZeppelin070(RMFTestCase):
COMMON_SERVICES_PACKAGE_DIR = "ZEPPELIN/0.7.0/package"
- STACK_VERSION = "2.5"
+ STACK_VERSION = "2.6"
def assert_configure_default(self):
self.assertResourceCalled('Directory', '/var/log/zeppelin',
@@ -59,7 +58,7 @@ class TestZeppelin070(RMFTestCase):
cd_access='a',
)
self.assertResourceCalled('Execute', (
- 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'), sudo=True)
+ 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'), sudo=True)
self.assertResourceCalled('XmlConfig', 'zeppelin-site.xml',
owner='zeppelin',
group='zeppelin',
@@ -118,7 +117,7 @@ class TestZeppelin070(RMFTestCase):
cd_access='a',
)
self.assertResourceCalled('Execute', (
- 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'), sudo=True)
+ 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'), sudo=True)
self.assertResourceCalled('XmlConfig', 'zeppelin-site.xml',
owner='zeppelin',
group='zeppelin',
@@ -181,7 +180,7 @@ class TestZeppelin070(RMFTestCase):
cd_access='a',
)
self.assertResourceCalled('Execute', (
- 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'),
+ 'chown', '-R', u'zeppelin:zeppelin', '/var/run/zeppelin'),
sudo=True,
)
self.assertResourceCalled('Execute',
@@ -200,7 +199,7 @@ class TestZeppelin070(RMFTestCase):
)
self.assert_configure_default()
self.assertResourceCalled('Execute', (
- 'chown', '-R', u'zeppelin:zeppelin', '/etc/zeppelin'),
+ 'chown', '-R', u'zeppelin:zeppelin', '/etc/zeppelin'),
sudo=True,
)
@@ -215,7 +214,7 @@ class TestZeppelin070(RMFTestCase):
)
self.assert_configure_secured()
self.assertResourceCalled('Execute', (
- 'chown', '-R', u'zeppelin:zeppelin', '/etc/zeppelin'),
+ 'chown', '-R', u'zeppelin:zeppelin', '/etc/zeppelin'),
sudo=True,
)
self.assertResourceCalled('Execute', ('chown', '-R', 'zeppelin:zeppelin',
@@ -305,23 +304,139 @@ class TestZeppelin070(RMFTestCase):
principal_name=UnknownConfigurationMock(),
security_enabled=False,
)
+
+ self.assertResourceCalled('HdfsResource',
+ '/etc/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['download_on_execute'],
+ source="/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json",
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
+
self.assertResourceCalled('File', '/etc/zeppelin/conf/interpreter.json',
content=interpreter_json_generated.template_after_base,
owner='zeppelin',
group='zeppelin',
)
+
+ self.assertResourceCalled('HdfsResource',
+ '/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['create_on_execute'],
+ source="/etc/zeppelin/conf/interpreter.json",
+ replace_existing_files=True,
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
+
+ self.assertResourceCalled('HdfsResource',
+ '/etc/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['download_on_execute'],
+ source="/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json",
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
+
self.assertResourceCalled('File', '/etc/zeppelin/conf/interpreter.json',
content=interpreter_json_generated.template_after_without_spark_and_livy,
owner='zeppelin',
- group='zeppelin')
+ group='zeppelin',
+ )
+
+ self.assertResourceCalled('HdfsResource',
+ '/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['create_on_execute'],
+ source="/etc/zeppelin/conf/interpreter.json",
+ replace_existing_files=True,
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
+
+ self.assertResourceCalled('HdfsResource',
+ '/etc/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['download_on_execute'],
+ source="/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json",
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
self.assertResourceCalled('File', '/etc/zeppelin/conf/interpreter.json',
content=interpreter_json_generated.template_after_kerberos,
owner='zeppelin',
- group='zeppelin')
+ group='zeppelin',
+ )
+
+ self.assertResourceCalled('HdfsResource',
+ '/user/zeppelin/hdfs:///user/zeppelin/conf/interpreter.json',
+ hadoop_bin_dir='/usr/hdp/current/hadoop-client/bin',
+ default_fs=u'hdfs://c6401.ambari.apache.org:8020',
+ hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
+ hdfs_site={u'a': u'b'},
+ kinit_path_local='/usr/bin/kinit',
+ user="zeppelin",
+ group="zeppelin",
+ type='file',
+ action=['create_on_execute'],
+ source="/etc/zeppelin/conf/interpreter.json",
+ replace_existing_files=True,
+ hadoop_conf_dir='/usr/hdp/current/hadoop-client/conf',
+ keytab=UnknownConfigurationMock(),
+ principal_name=UnknownConfigurationMock(),
+ security_enabled=False,
+ )
self.assertResourceCalled('Execute',
'/usr/hdp/current/zeppelin-server/bin/zeppelin-daemon.sh restart >> /var/log/zeppelin/zeppelin-setup.log',
user='zeppelin'
)
+
self.assertNoMoreResources()
[25/50] [abbrv] ambari git commit: AMBARI-22039. File
"hdfs.headless.keytab" has incorrect permission (aonishuk)
Posted by jl...@apache.org.
AMBARI-22039. File "hdfs.headless.keytab" has incorrect permission (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/e4cadbb1
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/e4cadbb1
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/e4cadbb1
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: e4cadbb15876e635b6831d2a488edda80d2d0554
Parents: d966298
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Fri Sep 22 13:42:26 2017 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Fri Sep 22 13:42:26 2017 +0300
----------------------------------------------------------------------
.../common-services/ZEPPELIN/0.7.0/package/scripts/master.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/e4cadbb1/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/master.py b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/master.py
index 7d44d16..382566e 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/master.py
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/package/scripts/master.py
@@ -327,7 +327,7 @@ class Master(Script):
action="download_on_execute",
source=self.getZeppelinConfFS(params),
group=params.zeppelin_group,
- user=params.zeppelin_user)
+ owner=params.zeppelin_user)
except Fail as fail:
if "doesn't exist" not in fail.args[0]:
print "Error getting interpreter.json from HDFS"
@@ -357,7 +357,7 @@ class Master(Script):
action="create_on_execute",
source=interpreter_config,
group=params.zeppelin_group,
- user=params.zeppelin_user,
+ owner=params.zeppelin_user,
replace_existing_files=True)
def update_kerberos_properties(self):
[32/50] [abbrv] ambari git commit: AMBARI-22034. AMS: Add smart
configs support for service. Addendum fix (swagle)
Posted by jl...@apache.org.
AMBARI-22034. AMS: Add smart configs support for service. Addendum fix (swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5d5cc4ff
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5d5cc4ff
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5d5cc4ff
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 5d5cc4ff024965210aaa4fcccb17d694b69c9927
Parents: 19b1607
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Fri Sep 22 14:19:31 2017 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Fri Sep 22 14:19:31 2017 -0700
----------------------------------------------------------------------
.../AMBARI_METRICS/0.1.0/configuration/ams-site.xml | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d5cc4ff/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
index ab14f18..b7ae456 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
@@ -31,8 +31,6 @@
2) distributed: HBase daemons writing to HDFS
</description>
<on-ambari-upgrade add="true"/>
- <display-name>Operation Mode</display-name>
- <description>Metrics service Operation mode</description>
<value-attributes>
<overridable>false</overridable>
<type>value-list</type>
[30/50] [abbrv] ambari git commit: AMBARI-21910 Ranger Usersync
config to support nested group evaluation for LDAP Sync source property
(mugdha)
Posted by jl...@apache.org.
AMBARI-21910 Ranger Usersync config to support nested group evaluation for LDAP Sync source property (mugdha)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ea892443
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ea892443
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ea892443
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: ea892443513fa730dad2ef3af06069ef618e0225
Parents: f067ec8
Author: Mugdha Varadkar <mu...@apache.org>
Authored: Fri Sep 22 18:03:25 2017 +0530
Committer: Mugdha Varadkar <mu...@apache.org>
Committed: Fri Sep 22 18:14:00 2017 +0530
----------------------------------------------------------------------
.../RangerUsersyncConfigCalculation.java | 96 ++++++++++++++
.../RANGER/0.7.0/configuration/ranger-env.xml | 23 ++++
.../0.7.0/configuration/ranger-ugsync-site.xml | 7 ++
.../RANGER/0.7.0/themes/theme_version_5.json | 40 ++++++
.../1.0.0.3.0/configuration/ranger-env.xml | 23 ++++
.../configuration/ranger-ugsync-site.xml | 7 ++
.../1.0.0.3.0/themes/theme_version_1.json | 40 ++++++
.../HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml | 7 ++
.../stacks/HDP/2.6/upgrades/upgrade-2.6.xml | 8 ++
.../RangerUsersyncConfigCalculationTest.java | 126 +++++++++++++++++++
10 files changed, 377 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculation.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculation.java b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculation.java
new file mode 100644
index 0000000..3573748
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculation.java
@@ -0,0 +1,96 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.ambari.server.serveraction.upgrades;
+
+import java.text.MessageFormat;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.actionmanager.HostRoleStatus;
+import org.apache.ambari.server.agent.CommandReport;
+import org.apache.ambari.server.serveraction.AbstractServerAction;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Config;
+
+import com.google.inject.Inject;
+
+/**
+ * Computes Ranger Usersync ldap grouphierarchylevels property. This class is only used when upgrading from
+ * HDP-2.6.x to HDP-2.6.y.
+ */
+
+public class RangerUsersyncConfigCalculation extends AbstractServerAction {
+ private static final String RANGER_USERSYNC_CONFIG_TYPE = "ranger-ugsync-site";
+ private static final String RANGER_ENV_CONFIG_TYPE = "ranger-env";
+
+ @Inject
+ private Clusters m_clusters;
+
+ @Override
+ public CommandReport execute(ConcurrentMap<String, Object> requestSharedDataContext) throws AmbariException, InterruptedException {
+
+ String clusterName = getExecutionCommand().getClusterName();
+ Cluster cluster = m_clusters.getCluster(clusterName);
+ String outputMsg = "";
+
+ Config rangerUsersyncConfig = cluster.getDesiredConfigByType(RANGER_USERSYNC_CONFIG_TYPE);
+
+ if (null == rangerUsersyncConfig) {
+ return createCommandReport(0, HostRoleStatus.COMPLETED, "{}",
+ MessageFormat.format("Config type {0} not found, skipping updating property in same.", RANGER_USERSYNC_CONFIG_TYPE), "");
+ }
+
+ String ldapGroupHierarchy = "0";
+
+ if (rangerUsersyncConfig.getProperties().containsKey("ranger.usersync.ldap.grouphierarchylevels")) {
+ ldapGroupHierarchy = rangerUsersyncConfig.getProperties().get("ranger.usersync.ldap.grouphierarchylevels");
+ } else {
+ Map<String, String> targetRangerUsersyncConfig = rangerUsersyncConfig.getProperties();
+ targetRangerUsersyncConfig.put("ranger.usersync.ldap.grouphierarchylevels", ldapGroupHierarchy);
+ rangerUsersyncConfig.setProperties(targetRangerUsersyncConfig);
+ rangerUsersyncConfig.save();
+
+ outputMsg = outputMsg + MessageFormat.format("Successfully updated {0} config type.\n", RANGER_USERSYNC_CONFIG_TYPE);
+ }
+
+ Config rangerEnvConfig = cluster.getDesiredConfigByType(RANGER_ENV_CONFIG_TYPE);
+
+ if (null == rangerEnvConfig) {
+ return createCommandReport(0, HostRoleStatus.COMPLETED, "{}",
+ MessageFormat.format("Config type {0} not found, skipping updating property in same.", RANGER_ENV_CONFIG_TYPE), "");
+ }
+
+ String enableSyncNestedGroup = "false";
+
+ if (!ldapGroupHierarchy.equals("0") ) {
+ enableSyncNestedGroup = "true";
+ }
+
+ Map<String, String> targetRangerEnvConfig = rangerEnvConfig.getProperties();
+ targetRangerEnvConfig.put("is_nested_groupsync_enabled", enableSyncNestedGroup);
+ rangerEnvConfig.setProperties(targetRangerEnvConfig);
+ rangerEnvConfig.save();
+
+ outputMsg = outputMsg + MessageFormat.format("Successfully updated {0} config type.\n", RANGER_ENV_CONFIG_TYPE);
+
+ return createCommandReport(0, HostRoleStatus.COMPLETED, "{}", outputMsg, "");
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-env.xml b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-env.xml
index 627216e..dfc9ca9 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-env.xml
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-env.xml
@@ -47,4 +47,27 @@
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
+ <property>
+ <name>is_nested_groupsync_enabled</name>
+ <display-name>Sync Nested Groups</display-name>
+ <description/>
+ <value>false</value>
+ <value-attributes>
+ <type>value-list</type>
+ <overridable>false</overridable>
+ <entries>
+ <entry>
+ <value>true</value>
+ <label>Yes</label>
+ </entry>
+ <entry>
+ <value>false</value>
+ <label>No</label>
+ </entry>
+ </entries>
+ <selection-cardinality>1</selection-cardinality>
+ <empty-value-valid>true</empty-value-valid>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-ugsync-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-ugsync-site.xml b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-ugsync-site.xml
index a994856..6c244f2 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-ugsync-site.xml
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/configuration/ranger-ugsync-site.xml
@@ -72,4 +72,11 @@
</depends-on>
<on-ambari-upgrade add="true"/>
</property>
+ <property>
+ <name>ranger.usersync.ldap.grouphierarchylevels</name>
+ <display-name>Group Hierarchy Levels</display-name>
+ <value>0</value>
+ <description/>
+ <on-ambari-upgrade add="false"/>
+ </property>
</configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/0.7.0/themes/theme_version_5.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/themes/theme_version_5.json b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/themes/theme_version_5.json
index 8068a38..ed073b4 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.7.0/themes/theme_version_5.json
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.7.0/themes/theme_version_5.json
@@ -9,6 +9,34 @@
"subsection-tab-name": "ldap-common-configs"
},
{
+ "config": "ranger-env/is_nested_groupsync_enabled",
+ "subsection-name": "subsection-ranger-user-row2-col1",
+ "subsection-tab-name": "ldap-group-configs"
+ },
+ {
+ "config": "ranger-ugsync-site/ranger.usersync.ldap.grouphierarchylevels",
+ "subsection-name": "subsection-ranger-user-row2-col1",
+ "subsection-tab-name": "ldap-group-configs",
+ "depends-on": [
+ {
+ "configs":[
+ "ranger-env/is_nested_groupsync_enabled"
+ ],
+ "if": "${ranger-env/is_nested_groupsync_enabled}",
+ "then": {
+ "property_value_attributes": {
+ "visible": true
+ }
+ },
+ "else": {
+ "property_value_attributes": {
+ "visible": false
+ }
+ }
+ }
+ ]
+ },
+ {
"config": "ranger-env/ranger-nifi-plugin-enabled",
"subsection-name": "section-ranger-plugin-row1-col1",
"depends-on": [
@@ -38,6 +66,18 @@
}
},
{
+ "config": "ranger-env/is_nested_groupsync_enabled",
+ "widget": {
+ "type": "toggle"
+ }
+ },
+ {
+ "config": "ranger-ugsync-site/ranger.usersync.ldap.grouphierarchylevels",
+ "widget": {
+ "type": "text-field"
+ }
+ },
+ {
"config": "ranger-env/ranger-nifi-plugin-enabled",
"widget": {
"type": "toggle"
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-env.xml b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-env.xml
index ff44901..764e73e 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-env.xml
+++ b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-env.xml
@@ -500,4 +500,27 @@
</value-attributes>
<on-ambari-upgrade add="false"/>
</property>
+ <property>
+ <name>is_nested_groupsync_enabled</name>
+ <display-name>Sync Nested Groups</display-name>
+ <description/>
+ <value>false</value>
+ <value-attributes>
+ <type>value-list</type>
+ <overridable>false</overridable>
+ <entries>
+ <entry>
+ <value>true</value>
+ <label>Yes</label>
+ </entry>
+ <entry>
+ <value>false</value>
+ <label>No</label>
+ </entry>
+ </entries>
+ <selection-cardinality>1</selection-cardinality>
+ <empty-value-valid>true</empty-value-valid>
+ </value-attributes>
+ <on-ambari-upgrade add="false"/>
+ </property>
</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-ugsync-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-ugsync-site.xml b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-ugsync-site.xml
index 80babd6..0d3ad26 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-ugsync-site.xml
+++ b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/configuration/ranger-ugsync-site.xml
@@ -568,4 +568,11 @@
<description/>
<on-ambari-upgrade add="false"/>
</property>
+ <property>
+ <name>ranger.usersync.ldap.grouphierarchylevels</name>
+ <display-name>Group Hierarchy Levels</display-name>
+ <value>0</value>
+ <description/>
+ <on-ambari-upgrade add="false"/>
+ </property>
</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/themes/theme_version_1.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/themes/theme_version_1.json b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/themes/theme_version_1.json
index a307f56..679ee3d 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/themes/theme_version_1.json
+++ b/ambari-server/src/main/resources/common-services/RANGER/1.0.0.3.0/themes/theme_version_1.json
@@ -842,6 +842,34 @@
]
},
{
+ "config": "ranger-env/is_nested_groupsync_enabled",
+ "subsection-name": "subsection-ranger-user-row2-col1",
+ "subsection-tab-name": "ldap-group-configs"
+ },
+ {
+ "config": "ranger-ugsync-site/ranger.usersync.ldap.grouphierarchylevels",
+ "subsection-name": "subsection-ranger-user-row2-col1",
+ "subsection-tab-name": "ldap-group-configs",
+ "depends-on": [
+ {
+ "configs":[
+ "ranger-env/is_nested_groupsync_enabled"
+ ],
+ "if": "${ranger-env/is_nested_groupsync_enabled}",
+ "then": {
+ "property_value_attributes": {
+ "visible": true
+ }
+ },
+ "else": {
+ "property_value_attributes": {
+ "visible": false
+ }
+ }
+ }
+ ]
+ },
+ {
"config": "ranger-env/ranger-hdfs-plugin-enabled",
"subsection-name": "section-ranger-plugin-row1-col1",
"depends-on": [
@@ -1643,6 +1671,18 @@
}
},
{
+ "config": "ranger-env/is_nested_groupsync_enabled",
+ "widget": {
+ "type": "toggle"
+ }
+ },
+ {
+ "config": "ranger-ugsync-site/ranger.usersync.ldap.grouphierarchylevels",
+ "widget": {
+ "type": "text-field"
+ }
+ },
+ {
"config": "ranger-env/ranger-hdfs-plugin-enabled",
"widget": {
"type": "toggle"
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml
index bce1e86..ebb81d9 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml
@@ -391,6 +391,13 @@
<task xsi:type="configure" id="hdp_2_6_0_0_spark2_thriftserver"/>
</execute-stage>
+ <!-- RANGER -->
+ <execute-stage service="RANGER" component="RANGER_USERSYNC" title="Enabling Nested Group Sync for Ranger">
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.RangerUsersyncConfigCalculation">
+ <summary>Enabling Nested Group Sync for Ranger</summary>
+ </task>
+ </execute-stage>
+
</group>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml
index d5f2324..ae5972e 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/upgrades/upgrade-2.6.xml
@@ -555,6 +555,14 @@
</component>
<component name="RANGER_USERSYNC">
+ <pre-upgrade>
+ <task xsi:type="server_action" class="org.apache.ambari.server.serveraction.upgrades.RangerUsersyncConfigCalculation">
+ <summary>Enabling Nested Group Sync for Ranger</summary>
+ </task>
+ </pre-upgrade>
+
+ <pre-downgrade /> <!-- no-op to prevent config changes on downgrade -->
+
<upgrade>
<task xsi:type="restart-task" />
</upgrade>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ea892443/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculationTest.java
new file mode 100644
index 0000000..427fb33
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/RangerUsersyncConfigCalculationTest.java
@@ -0,0 +1,126 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.server.serveraction.upgrades;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.ambari.server.actionmanager.ExecutionCommandWrapper;
+import org.apache.ambari.server.actionmanager.HostRoleCommand;
+import org.apache.ambari.server.agent.CommandReport;
+import org.apache.ambari.server.agent.ExecutionCommand;
+import org.apache.ambari.server.state.Cluster;
+import org.apache.ambari.server.state.Clusters;
+import org.apache.ambari.server.state.Config;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.inject.Injector;
+
+public class RangerUsersyncConfigCalculationTest {
+
+ private Injector m_injector;
+ private Clusters m_clusters;
+ private Field m_clusterField;
+
+ @Before
+ public void setup() throws Exception {
+ m_injector = createMock(Injector.class);
+ m_clusters = createMock(Clusters.class);
+ Cluster cluster = createMock(Cluster.class);
+
+ Map<String, String> mockRangerUsersyncProperties = new HashMap<String, String>() {
+ {
+ put("ranger.usersync.ldap.grouphierarchylevels", "2");
+ }
+ };
+
+ Map<String, String> mockRangerEnvProperties = new HashMap<String, String>();
+
+ Config rangerUsersyncConfig = createMock(Config.class);
+ expect(rangerUsersyncConfig.getType()).andReturn("ranger-ugsync-site").anyTimes();
+ expect(rangerUsersyncConfig.getProperties()).andReturn(mockRangerUsersyncProperties).anyTimes();
+
+ Config rangerEnvConfig = createMock(Config.class);
+ expect(rangerEnvConfig.getType()).andReturn("ranger-env").anyTimes();
+ expect(rangerEnvConfig.getProperties()).andReturn(mockRangerEnvProperties).anyTimes();
+
+ rangerEnvConfig.setProperties(anyObject(Map.class));
+ expectLastCall().atLeastOnce();
+
+ rangerEnvConfig.save();
+ expectLastCall().atLeastOnce();
+
+ expect(cluster.getDesiredConfigByType("ranger-ugsync-site")).andReturn(rangerUsersyncConfig).atLeastOnce();
+ expect(cluster.getDesiredConfigByType("ranger-env")).andReturn(rangerEnvConfig).atLeastOnce();
+ expect(m_clusters.getCluster((String) anyObject())).andReturn(cluster).anyTimes();
+ expect(m_injector.getInstance(Clusters.class)).andReturn(m_clusters).atLeastOnce();
+
+ replay(m_injector, m_clusters, cluster, rangerUsersyncConfig, rangerEnvConfig);
+
+ m_clusterField = RangerUsersyncConfigCalculation.class.getDeclaredField("m_clusters");
+ m_clusterField.setAccessible(true);
+
+ }
+
+ @Test
+ public void testAction() throws Exception {
+
+ Map<String, String> commandParams = new HashMap<String, String>();
+ commandParams.put("clusterName", "cl1");
+
+ ExecutionCommand executionCommand = new ExecutionCommand();
+ executionCommand.setCommandParams(commandParams);
+ executionCommand.setClusterName("cl1");
+
+ HostRoleCommand hrc = createMock(HostRoleCommand.class);
+ expect(hrc.getRequestId()).andReturn(1L).anyTimes();
+ expect(hrc.getStageId()).andReturn(2L).anyTimes();
+ expect(hrc.getExecutionCommandWrapper()).andReturn(new ExecutionCommandWrapper(executionCommand)).anyTimes();
+ replay(hrc);
+
+ RangerUsersyncConfigCalculation action = new RangerUsersyncConfigCalculation();
+ m_clusterField.set(action, m_clusters);
+
+ action.setExecutionCommand(executionCommand);
+ action.setHostRoleCommand(hrc);
+
+ CommandReport report = action.execute(null);
+ Assert.assertNotNull(report);
+
+ Cluster cl = m_clusters.getCluster("cl1");
+ Config config = cl.getDesiredConfigByType("ranger-env");
+
+ Map<String, String> map = config.getProperties();
+
+ Assert.assertTrue(map.containsKey("is_nested_groupsync_enabled"));
+ Assert.assertEquals("true", map.get("is_nested_groupsync_enabled"));
+
+ report = action.execute(null);
+ Assert.assertNotNull(report);
+
+ }
+}
\ No newline at end of file
[08/50] [abbrv] ambari git commit: AMBARI-22010 - Incorrect symlink
for storm after patch upgrade (jonathanhurley)
Posted by jl...@apache.org.
AMBARI-22010 - Incorrect symlink for storm after patch upgrade (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/25c1f211
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/25c1f211
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/25c1f211
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 25c1f211ef165611fcf52bd75b7a851c857f04a9
Parents: 73bd428
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Wed Sep 20 15:51:38 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Sep 20 16:24:30 2017 -0400
----------------------------------------------------------------------
.../main/resources/stacks/HDP/2.0.6/properties/stack_packages.json | 2 ++
.../main/resources/stacks/HDP/3.0/properties/stack_packages.json | 2 ++
2 files changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/25c1f211/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_packages.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_packages.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_packages.json
index ec35f2b..2db0a74 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_packages.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_packages.json
@@ -796,9 +796,11 @@
"SUPERVISOR": {
"STACK-SELECT-PACKAGE": "storm-supervisor",
"INSTALL": [
+ "storm-client",
"storm-supervisor"
],
"PATCH": [
+ "storm-client",
"storm-supervisor"
],
"STANDARD": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/25c1f211/ambari-server/src/main/resources/stacks/HDP/3.0/properties/stack_packages.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/3.0/properties/stack_packages.json b/ambari-server/src/main/resources/stacks/HDP/3.0/properties/stack_packages.json
index 9012e92..be4c718 100644
--- a/ambari-server/src/main/resources/stacks/HDP/3.0/properties/stack_packages.json
+++ b/ambari-server/src/main/resources/stacks/HDP/3.0/properties/stack_packages.json
@@ -716,9 +716,11 @@
"SUPERVISOR": {
"STACK-SELECT-PACKAGE": "storm-supervisor",
"INSTALL": [
+ "storm-client",
"storm-supervisor"
],
"PATCH": [
+ "storm-client",
"storm-supervisor"
],
"STANDARD": [
[18/50] [abbrv] ambari git commit: AMBARI-22027. Add UID/GID related
issue with external users not listed in /etc/passwd (echekanskiy)
Posted by jl...@apache.org.
AMBARI-22027. Add UID/GID related issue with external users not listed in /etc/passwd (echekanskiy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f1b53000
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f1b53000
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f1b53000
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: f1b53000c65a97ac7784d51c9a648e7e135acaab
Parents: 2a06021
Author: Eugene Chekanskiy <ec...@apache.org>
Authored: Thu Sep 21 21:07:03 2017 +0300
Committer: Eugene Chekanskiy <ec...@apache.org>
Committed: Thu Sep 21 21:07:03 2017 +0300
----------------------------------------------------------------------
.../before-ANY/scripts/shared_initialization.py | 29 +++++--
.../2.0.6/hooks/before-ANY/test_before_any.py | 85 ++++----------------
2 files changed, 36 insertions(+), 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1b53000/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
index ee950e8..11593fe 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/hooks/before-ANY/scripts/shared_initialization.py
@@ -139,11 +139,19 @@ def set_uid(user, user_dirs):
content=StaticFile("changeToSecureUid.sh"),
mode=0555)
ignore_groupsusers_create_str = str(params.ignore_groupsusers_create).lower()
- uid = get_uid(user)
+ uid = get_uid(user, return_existing=True)
Execute(format("{tmp_dir}/changeUid.sh {user} {user_dirs} {new_uid}", new_uid=0 if uid is None else uid),
not_if = format("(test $(id -u {user}) -gt 1000) || ({ignore_groupsusers_create_str})"))
-def get_uid(user):
+def get_uid(user, return_existing=False):
+ """
+ Tries to get UID for username. It will try to find UID in custom properties in *cluster_env* and, if *return_existing=True*,
+ it will try to return UID of existing *user*.
+
+ :param user: username to get UID for
+ :param return_existing: return UID for existing user
+ :return:
+ """
import params
user_str = str(user) + "_uid"
service_env = [ serviceEnv for serviceEnv in params.config['configurations'] if user_str in params.config['configurations'][serviceEnv]]
@@ -155,13 +163,18 @@ def get_uid(user):
Logger.warning("Multiple values found for %s, using %s" % (user_str, uid))
return uid
else:
- if user == params.smoke_user:
+ if return_existing:
+ # pick up existing UID or try to find available UID in /etc/passwd, see changeToSecureUid.sh for more info
+ if user == params.smoke_user:
+ return None
+ File(format("{tmp_dir}/changeUid.sh"),
+ content=StaticFile("changeToSecureUid.sh"),
+ mode=0555)
+ code, newUid = shell.call(format("{tmp_dir}/changeUid.sh {user}"))
+ return int(newUid)
+ else:
+ # do not return UID for existing user, used in User resource call to let OS to choose UID for us
return None
- File(format("{tmp_dir}/changeUid.sh"),
- content=StaticFile("changeToSecureUid.sh"),
- mode=0555)
- code, newUid = shell.call(format("{tmp_dir}/changeUid.sh {user}"))
- return int(newUid)
def setup_hadoop_env():
import params
http://git-wip-us.apache.org/repos/asf/ambari/blob/f1b53000/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
index a13ac24..9dceb69 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-ANY/test_before_any.py
@@ -52,33 +52,22 @@ class TestHookBeforeInstall(RMFTestCase):
self.assertResourceCalled('Group', 'hadoop',)
self.assertResourceCalled('Group', 'nobody',)
self.assertResourceCalled('Group', 'users',)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
+
self.assertResourceCalled('User', 'hive',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'oozie',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'users'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'nobody',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'nobody'],
fetch_nonlocal_groups = True,
)
@@ -88,113 +77,69 @@ class TestHookBeforeInstall(RMFTestCase):
groups = [u'users'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'flume',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'hdfs',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'storm',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'mapred',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'hbase',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'tez',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'users'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'zookeeper',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'falcon',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'users'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'sqoop',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'yarn',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
- self.assertResourceCalled('File', '/tmp/changeUid.sh',
- content = StaticFile('changeToSecureUid.sh'),
- mode = 0555,
- )
self.assertResourceCalled('User', 'hcat',
gid = 'hadoop',
- uid = 1000,
+ uid = None,
groups = [u'hadoop'],
fetch_nonlocal_groups = True,
)
[11/50] [abbrv] ambari git commit: AMBARI-22022. NullPointerException
in ActionScheduler when using DEPENDENCY_ORDERED execution (magyari_sandor)
Posted by jl...@apache.org.
AMBARI-22022. NullPointerException in ActionScheduler when using DEPENDENCY_ORDERED execution (magyari_sandor)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/3e5f60ab
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/3e5f60ab
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/3e5f60ab
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 3e5f60ab9d30761df08923c4e56dd518fc71d271
Parents: 1a5b494
Author: Sandor Magyari <sm...@hortonworks.com>
Authored: Thu Sep 21 14:35:51 2017 +0200
Committer: Sandor Magyari <sm...@hortonworks.com>
Committed: Thu Sep 21 15:44:54 2017 +0200
----------------------------------------------------------------------
.../ambari/server/actionmanager/ActionScheduler.java | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/3e5f60ab/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
index 00e4184..0157f8b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
@@ -921,12 +921,14 @@ class ActionScheduler implements Runnable {
RoleCommandPair roleCommand = new
RoleCommandPair(Role.valueOf(command.getRole()), command.getRoleCommand());
Set<RoleCommandPair> roleCommandDependencies = rco.getDependencies().get(roleCommand);
- // remove eventual references to the same RoleCommand
- roleCommandDependencies.remove(roleCommand);
// check if there are any dependencies IN_PROGRESS
- if (roleCommandDependencies != null && CollectionUtils.containsAny(rolesCommandsInProgress, roleCommandDependencies)) {
- areCommandDependenciesFinished = false;
+ if (roleCommandDependencies != null) {
+ // remove eventual references to the same RoleCommand
+ roleCommandDependencies.remove(roleCommand);
+ if (CollectionUtils.containsAny(rolesCommandsInProgress, roleCommandDependencies)) {
+ areCommandDependenciesFinished = false;
+ }
}
}
[43/50] [abbrv] ambari git commit: AMBARI-22054 Log Search UI:
implement 'Capture' functionality. (ababiichuk)
Posted by jl...@apache.org.
AMBARI-22054 Log Search UI: implement 'Capture' functionality. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/653d2f26
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/653d2f26
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/653d2f26
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 653d2f260c05ea0e8efa4400b9d5accb5e5b39b7
Parents: 08da961
Author: ababiichuk <ab...@hortonworks.com>
Authored: Mon Sep 25 20:00:41 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Mon Sep 25 20:00:41 2017 +0300
----------------------------------------------------------------------
.../ambari-logsearch-web/src/app/app.module.ts | 6 +-
.../queries/audit-logs-query-params.class.ts | 2 -
.../dropdown-button.component.spec.ts | 21 ++++++-
.../filter-button.component.spec.ts | 21 ++++++-
.../filter-dropdown.component.spec.ts | 26 +++++++-
.../filters-panel/filters-panel.component.html | 11 ++--
.../filters-panel/filters-panel.component.less | 4 ++
.../filters-panel.component.spec.ts | 6 +-
.../filters-panel/filters-panel.component.ts | 4 ++
.../logs-container.component.html | 5 ++
.../logs-container.component.less | 4 ++
.../logs-container.component.spec.ts | 4 +-
.../logs-container/logs-container.component.ts | 10 ++++
.../menu-button/menu-button.component.html | 2 +-
.../menu-button/menu-button.component.spec.ts | 22 ++++++-
.../app/components/modal/modal.component.html | 2 +-
.../search-box/search-box.component.html | 2 +-
.../time-range-picker.component.html | 4 +-
.../time-range-picker.component.ts | 13 ++--
.../timezone-picker.component.spec.ts | 21 ++++++-
.../components/top-menu/top-menu.component.html | 2 +-
.../top-menu/top-menu.component.spec.ts | 2 +
.../src/app/components/variables.less | 2 +-
.../src/app/pipes/timer-seconds.pipe.spec.ts | 37 ++++++++++++
.../src/app/pipes/timer-seconds.pipe.ts | 41 +++++++++++++
.../services/component-actions.service.spec.ts | 21 ++++++-
.../app/services/component-actions.service.ts | 15 ++++-
.../src/app/services/filtering.service.ts | 63 +++++++++++++-------
.../src/app/services/logs-container.service.ts | 6 +-
.../src/app/services/mock-api-data.service.ts | 4 +-
.../src/app/services/utils.service.ts | 6 ++
.../src/assets/i18n/en.json | 10 ++--
32 files changed, 328 insertions(+), 71 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
index fca68b5..c4dc698 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
@@ -78,8 +78,9 @@ import {TimeRangePickerComponent} from '@app/components/time-range-picker/time-r
import {DatePickerComponent} from '@app/components/date-picker/date-picker.component';
import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
+import {TimerSecondsPipe} from '@app/pipes/timer-seconds.pipe';
-export function HttpLoaderFactory(http: Http) {
+export function HttpLoaderFactory(http: Http): TranslateHttpLoader {
// adding 'static' parameter to step over mock data request
return new TranslateHttpLoader(http, 'resources/assets/i18n/', '.json?static=true');
}
@@ -123,7 +124,8 @@ export function getXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSR
SearchBoxComponent,
TimeRangePickerComponent,
DatePickerComponent,
- TimeZoneAbbrPipe
+ TimeZoneAbbrPipe,
+ TimerSecondsPipe
],
imports: [
BrowserModule,
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
index d179376..e36bf18 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
@@ -36,8 +36,6 @@ export class AuditLogsQueryParams extends QueryParams {
startIndex: string;
sortBy?: string;
sortType?: string;
- start_time?: string;
- end_time?: string;
clusters?: string;
mustBe?: string;
mustNot?: string;
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
index 04730ef..f7227b1 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.spec.ts
@@ -25,10 +25,16 @@ import {ClustersService, clusters} from '@app/services/storage/clusters.service'
import {ComponentsService, components} from '@app/services/storage/components.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {FilteringService} from '@app/services/filtering.service';
import {UtilsService} from '@app/services/utils.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {HttpClientService} from '@app/services/http-client.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
import {DropdownButtonComponent} from './dropdown-button.component';
@@ -45,7 +51,12 @@ describe('DropdownButtonComponent', () => {
clusters,
components,
appState,
- hosts
+ hosts,
+ auditLogs,
+ auditLogsFields,
+ serviceLogs,
+ serviceLogsFields,
+ serviceLogsHistogramData
}),
...TranslationModules
],
@@ -55,10 +66,16 @@ describe('DropdownButtonComponent', () => {
ComponentsService,
AppStateService,
HostsService,
+ AuditLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
FilteringService,
UtilsService,
ComponentActionsService,
- HttpClientService
+ HttpClientService,
+ LogsContainerService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
index fddf645..a01a3f3 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.spec.ts
@@ -25,10 +25,16 @@ import {ClustersService, clusters} from '@app/services/storage/clusters.service'
import {ComponentsService, components} from '@app/services/storage/components.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
import {UtilsService} from '@app/services/utils.service';
import {HttpClientService} from '@app/services/http-client.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
import {FilterButtonComponent} from './filter-button.component';
@@ -45,7 +51,12 @@ describe('FilterButtonComponent', () => {
clusters,
components,
appState,
- hosts
+ hosts,
+ auditLogs,
+ auditLogsFields,
+ serviceLogs,
+ serviceLogsFields,
+ serviceLogsHistogramData
}),
...TranslationModules
],
@@ -55,10 +66,16 @@ describe('FilterButtonComponent', () => {
ComponentsService,
AppStateService,
HostsService,
+ AuditLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
ComponentActionsService,
FilteringService,
UtilsService,
- HttpClientService
+ HttpClientService,
+ LogsContainerService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
index 8620607..85e7ecb 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-dropdown/filter-dropdown.component.spec.ts
@@ -20,9 +20,17 @@ import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {TranslationModules} from '@app/test-config.spec';
import {StoreModule} from '@ngrx/store';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
+import {AppStateService, appState} from '@app/services/storage/app-state.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {FilteringService} from '@app/services/filtering.service';
import {UtilsService} from '@app/services/utils.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
+import {HttpClientService} from '@app/services/http-client.service';
import {FilterDropdownComponent} from './filter-dropdown.component';
@@ -51,18 +59,32 @@ describe('FilterDropdownComponent', () => {
declarations: [FilterDropdownComponent],
imports: [
StoreModule.provideStore({
- appSettings
+ appSettings,
+ appState,
+ auditLogs,
+ auditLogsFields,
+ serviceLogs,
+ serviceLogsFields,
+ serviceLogsHistogramData
}),
...TranslationModules
],
providers: [
AppSettingsService,
+ AppStateService,
+ AuditLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
{
provide: FilteringService,
useValue: filtering
},
UtilsService,
- ComponentActionsService
+ ComponentActionsService,
+ LogsContainerService,
+ HttpClientService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
index 99dd43d..fc3dac8 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
@@ -33,15 +33,18 @@
<div class="default-flex col-md-4">
<dropdown-button [options]="searchBoxItems" iconClass="fa fa-search-minus" label="filter.excluded"
[hideCaret]="true" [showSelectedValue]="false" action="proceedWithExclude"></dropdown-button>
- <filter-button formControlName="hosts" [label]="filters.hosts.label"
+ <filter-button formControlName="hosts" label="{{filters.hosts.label | translate}}"
[iconClass]="filters.hosts.iconClass" [subItems]="filters.hosts.options"
[isMultipleChoice]="true" [isRightAlign]="true"
additionalLabelComponentSetter="getDataForHostsNodeBar"></filter-button>
- <filter-button formControlName="components" [label]="filters.components.label"
+ <filter-button formControlName="components" label="{{filters.components.label | translate}}"
[iconClass]="filters.components.iconClass" [subItems]="filters.components.options"
[isMultipleChoice]="true" [isRightAlign]="true"></filter-button>
- <filter-button formControlName="levels" [label]="filters.levels.label" [iconClass]="filters.levels.iconClass"
+ <filter-button formControlName="levels" label="{{filters.levels.label | translate}}" [iconClass]="filters.levels.iconClass"
[subItems]="filters.levels.options" [isMultipleChoice]="true" [isRightAlign]="true"></filter-button>
- <menu-button label="filter.capture" iconClass="fa fa-caret-right"></menu-button>
+ <menu-button *ngIf="!captureSeconds" label="{{'filter.capture' | translate}}" iconClass="fa fa-caret-right"
+ action="startCapture"></menu-button>
+ <menu-button *ngIf="captureSeconds" label="{{captureSeconds | timerSeconds}}" iconClass="fa fa-stop stop-icon"
+ action="stopCapture"></menu-button>
</div>
</form>
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.less
index 9d901ca..4607d34 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.less
@@ -62,4 +62,8 @@
}
}
}
+
+ /deep/ .stop-icon {
+ color: @error-color;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
index fe2e40a..ae5a4af 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.spec.ts
@@ -34,6 +34,7 @@ import {FilteringService} from '@app/services/filtering.service';
import {HttpClientService} from '@app/services/http-client.service';
import {UtilsService} from '@app/services/utils.service';
import {LogsContainerService} from '@app/services/logs-container.service';
+import {TimerSecondsPipe} from '@app/pipes/timer-seconds.pipe';
import {FiltersPanelComponent} from './filters-panel.component';
@@ -51,7 +52,10 @@ describe('FiltersPanelComponent', () => {
}
};
TestBed.configureTestingModule({
- declarations: [FiltersPanelComponent],
+ declarations: [
+ FiltersPanelComponent,
+ TimerSecondsPipe
+ ],
imports: [
StoreModule.provideStore({
appSettings,
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
index 42056c6..c345c81 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
@@ -89,4 +89,8 @@ export class FiltersPanelComponent {
return this.filtering.queryParameterAdd;
}
+ get captureSeconds(): number {
+ return this.filtering.captureSeconds;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
index a43f6c0..5145b76 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.html
@@ -15,6 +15,11 @@
limitations under the License.
-->
+<div *ngIf="autoRefreshRemainingSeconds" class="col-md-12">
+ <div class="auto-refresh-message pull-right">
+ {{'filter.capture.triggeringRefresh' | translate: autoRefreshMessageParams}}
+ </div>
+</div>
<time-histogram class="col-md-12" [data]="histogramData" [customOptions]="histogramOptions"></time-histogram>
<dropdown-button class="pull-right" label="logs.columns" [options]="availableColumns | async" [isRightAlign]="true"
isMultipleChoice="true" action="updateSelectedColumns"
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.less
index 60082d6..cd28efc 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.less
@@ -22,4 +22,8 @@
display: block;
overflow: hidden;
padding-top: @block-margin-top;
+
+ .auto-refresh-message {
+ background-color: @filters-panel-background-color;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
index 30c6a33..811c6e6 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.spec.ts
@@ -19,6 +19,7 @@
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {StoreModule} from '@ngrx/store';
+import {TranslationModules} from '@app/test-config.spec';
import {AppSettingsService, appSettings} from '@app/services/storage/app-settings.service';
import {AppStateService, appState} from '@app/services/storage/app-state.service';
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
@@ -63,7 +64,8 @@ describe('LogsContainerComponent', () => {
serviceLogsFields,
serviceLogsHistogramData,
hosts
- })
+ }),
+ ...TranslationModules
],
providers: [
{
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.ts
index 3e2a6c7..b1fad17 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-container/logs-container.component.ts
@@ -102,4 +102,14 @@ export class LogsContainerComponent implements OnInit {
return this.filtering.filtersForm;
}
+ get autoRefreshRemainingSeconds(): number {
+ return this.filtering.autoRefreshRemainingSeconds;
+ }
+
+ get autoRefreshMessageParams(): any {
+ return {
+ remainingSeconds: this.autoRefreshRemainingSeconds
+ };
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.html
index 2f05656..ca70927 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.html
@@ -21,7 +21,7 @@
<a #dropdownToggle class="dropdown-toggle caret" data-toggle="dropdown" *ngIf="hasCaret"></a>
<br>
<a *ngIf="label" (mousedown)="onMouseDown($event)" [ngClass]="labelClass" (mouseup)="onMouseUp($event)"
- (click)="$event.stopPropagation()">{{label | translate}}</a>
+ (click)="$event.stopPropagation()">{{label}}</a>
<ul data-component="dropdown-list" *ngIf="hasSubItems" [items]="subItems" (selectedItemChange)="updateValue($event)"
[isMultipleChoice]="isMultipleChoice" [additionalLabelComponentSetter]="additionalLabelComponentSetter"
[ngClass]="{'dropdown-menu': true, 'dropdown-menu-right': isRightAlign}"></ul>
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
index f736fd5..f92961e 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
@@ -25,10 +25,15 @@ import {AppStateService, appState} from '@app/services/storage/app-state.service
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
import {ComponentsService, components} from '@app/services/storage/components.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
import {HttpClientService} from '@app/services/http-client.service';
-import {ListItem} from "@app/classes/list-item.class";
+import {LogsContainerService} from '@app/services/logs-container.service';
import {MenuButtonComponent} from './menu-button.component';
@@ -45,7 +50,12 @@ describe('MenuButtonComponent', () => {
appState,
clusters,
components,
- hosts
+ hosts,
+ auditLogs,
+ auditLogsFields,
+ serviceLogs,
+ serviceLogsFields,
+ serviceLogsHistogramData
}),
...TranslationModules
],
@@ -55,9 +65,15 @@ describe('MenuButtonComponent', () => {
ClustersService,
ComponentsService,
HostsService,
+ AuditLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
ComponentActionsService,
FilteringService,
- HttpClientService
+ HttpClientService,
+ LogsContainerService
],
schemas: [NO_ERRORS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/modal/modal.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/modal/modal.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/modal/modal.component.html
index abd7bc8..398a429 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/modal/modal.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/modal/modal.component.html
@@ -21,7 +21,7 @@
<div class="modal-content">
<div *ngIf="showHeader" class="modal-header">
<button *ngIf="showCloseButton" type="button" class="close" data-dismiss="modal" (click)="onClose()">
- <span>×</span>
+ <span class="fa fa-times"></span>
</button>
<h4 *ngIf="title">{{title}}</h4>
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
index e88159c..92f9520 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.html
@@ -19,7 +19,7 @@
<span *ngIf="parameter.isExclude" class="fa fa-search-minus exclude-icon"></span>
{{parameter.label | translate}}:
<span class="parameter-value">{{parameter.value}}</span>
- <span class="remove-parameter" (click)="removeParameter($event, parameter.id)">×</span>
+ <span class="fa fa-times remove-parameter" (click)="removeParameter($event, parameter.id)"></span>
</label>
<span class="active-parameter-label" *ngIf="isActive && activeItem">{{activeItem.name | translate}}:</span>
<div [ngClass]="{'search-item-container': true, 'active': isActive, 'value': isValueInput}">
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.html
index 6921b53..973db61 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.html
@@ -20,7 +20,7 @@
</button>
<div class="dropdown-menu row col-md-12">
<div class="col-md-4" (click)="$event.stopPropagation()">
- <h4>{{'filters.timeRange' | translate}}</h4>
+ <h4>{{'filter.timeRange' | translate}}</h4>
<date-picker (timeChange)="setStartTime($event)"></date-picker>
<date-picker (timeChange)="setEndTime($event)"></date-picker>
<button class="btn btn-success pull-right" type="button" (click)="setCustomTimeRange()"
@@ -29,7 +29,7 @@
</button>
</div>
<div class="col-md-8 row">
- <h4>{{'filters.timeRange.quick' | translate}}</h4>
+ <h4>{{'filter.timeRange.quick' | translate}}</h4>
<div *ngFor="let group of quickRanges" [ngClass]="'col-md-' + 12 / quickRanges.length">
<div *ngFor="let option of group">
<span class="time-range-name" (click)="setTimeRange(option.value, option.label)">
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.ts
index fc740de..fc0f6ae 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/time-range-picker/time-range-picker.component.ts
@@ -18,6 +18,7 @@
import {Component, OnInit, Input, forwardRef} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
+import {Moment} from 'moment';
import {FilteringService} from '@app/services/filtering.service';
@Component({
@@ -46,9 +47,9 @@ export class TimeRangePickerComponent implements OnInit, ControlValueAccessor {
selectedLabel: string;
- startTime: number;
+ startTime: Moment;
- endTime: number;
+ endTime: Moment;
private onChange: (fn: any) => void;
@@ -67,12 +68,12 @@ export class TimeRangePickerComponent implements OnInit, ControlValueAccessor {
this.onChange(newValue);
}
- setStartTime(timeStamp: number): void {
- this.startTime = timeStamp;
+ setStartTime(timeObject: Moment): void {
+ this.startTime = timeObject;
}
- setEndTime(timeStamp: number): void {
- this.endTime = timeStamp;
+ setEndTime(timeObject: Moment): void {
+ this.endTime = timeObject;
}
setTimeRange(value: any, label: string) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
index abbc9ce..7d1e907 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/timezone-picker/timezone-picker.component.spec.ts
@@ -24,9 +24,15 @@ import {AppStateService, appState} from '@app/services/storage/app-state.service
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
import {ComponentsService, components} from '@app/services/storage/components.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
import {HttpClientService} from '@app/services/http-client.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
import {TimeZoneAbbrPipe} from '@app/pipes/timezone-abbr.pipe';
import {ModalComponent} from '@app/components/modal/modal.component';
@@ -49,7 +55,12 @@ describe('TimeZonePickerComponent', () => {
appState,
clusters,
components,
- hosts
+ hosts,
+ auditLogs,
+ auditLogsFields,
+ serviceLogs,
+ serviceLogsFields,
+ serviceLogsHistogramData
}),
...TranslationModules
],
@@ -59,9 +70,15 @@ describe('TimeZonePickerComponent', () => {
ClustersService,
ComponentsService,
HostsService,
+ AuditLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
ComponentActionsService,
FilteringService,
- HttpClientService
+ HttpClientService,
+ LogsContainerService
],
})
.compileComponents();
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.html
index 6898354..3af1a69 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.html
@@ -15,7 +15,7 @@
limitations under the License.
-->
-<menu-button *ngFor="let item of items" [label]="item.label" [action]="item.action"
+<menu-button *ngFor="let item of items" label="{{item.label | translate}}" [action]="item.action"
[iconClass]="item.iconClass" [labelClass]="item.labelClass"
[subItems]="item.subItems" [hideCaret]="item.hideCaret">
</menu-button>
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
index 1649a50..6679ba1 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/top-menu/top-menu.component.spec.ts
@@ -18,6 +18,7 @@
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
+import {TranslationModules} from '@app/test-config.spec';
import {TopMenuComponent} from './top-menu.component';
@@ -27,6 +28,7 @@ describe('TopMenuComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
+ imports: TranslationModules,
declarations: [TopMenuComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
index ab95030..88b0c91 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/variables.less
@@ -34,7 +34,7 @@
@filters-panel-padding: 10px 0;
@list-header-background-color: #F2F2F2;
@checkbox-top: 4px;
-@dropdown-min-width: 200px;
+@dropdown-min-width: 160px;
@dropdown-max-height: 500px; // TODO get rid of magic number, base on actual design
@input-height: 34px;
@input-padding: 10px;
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.spec.ts
new file mode 100644
index 0000000..a81e0cc
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.spec.ts
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 {TestBed, inject} from '@angular/core/testing';
+import {UtilsService} from '@app/services/utils.service';
+
+import {TimerSecondsPipe} from './timer-seconds.pipe';
+
+describe('TimerSecondsPipe', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ providers: [
+ UtilsService
+ ]
+ });
+ });
+
+ it('create an instance', inject([UtilsService], (utils: UtilsService) => {
+ const pipe = new TimerSecondsPipe(utils);
+ expect(pipe).toBeTruthy();
+ }));
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.ts b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.ts
new file mode 100644
index 0000000..1b9dc76
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/pipes/timer-seconds.pipe.ts
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 {Pipe, PipeTransform} from '@angular/core';
+import {UtilsService} from '@app/services/utils.service';
+
+@Pipe({
+ name: 'timerSeconds'
+})
+export class TimerSecondsPipe implements PipeTransform {
+
+ constructor(private utils: UtilsService) {
+ }
+
+ transform(value: number): string {
+ const seconds = value % 60,
+ outputSeconds = this.utils.fitIntegerDigitsCount(seconds),
+ fullMinutes = (value - seconds) / 60,
+ minutes = fullMinutes % 60,
+ outputMinutes = this.utils.fitIntegerDigitsCount(minutes),
+ hours = (fullMinutes - minutes) / 60,
+ outputHours = hours ? `${this.utils.fitIntegerDigitsCount(hours)}:` : '';
+ return `${outputHours}${outputMinutes}:${outputSeconds}`;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
index f961907..e737155 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.spec.ts
@@ -22,8 +22,14 @@ import {AppSettingsService, appSettings} from '@app/services/storage/app-setting
import {ClustersService, clusters} from '@app/services/storage/clusters.service';
import {ComponentsService, components} from '@app/services/storage/components.service';
import {HostsService, hosts} from '@app/services/storage/hosts.service';
+import {AuditLogsService, auditLogs} from '@app/services/storage/audit-logs.service';
+import {ServiceLogsService, serviceLogs} from '@app/services/storage/service-logs.service';
+import {AuditLogsFieldsService, auditLogsFields} from '@app/services/storage/audit-logs-fields.service';
+import {ServiceLogsFieldsService, serviceLogsFields} from '@app/services/storage/service-logs-fields.service';
+import {ServiceLogsHistogramDataService, serviceLogsHistogramData} from '@app/services/storage/service-logs-histogram-data.service';
import {FilteringService} from '@app/services/filtering.service';
import {HttpClientService} from '@app/services/http-client.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
import {ComponentActionsService} from './component-actions.service';
@@ -44,7 +50,12 @@ describe('ComponentActionsService', () => {
appSettings,
clusters,
components,
- hosts
+ hosts,
+ auditLogs,
+ serviceLogs,
+ auditLogsFields,
+ serviceLogsFields,
+ serviceLogsHistogramData
})
],
providers: [
@@ -53,11 +64,17 @@ describe('ComponentActionsService', () => {
ClustersService,
ComponentsService,
HostsService,
+ AuditLogsService,
+ ServiceLogsService,
+ AuditLogsFieldsService,
+ ServiceLogsFieldsService,
+ ServiceLogsHistogramDataService,
FilteringService,
{
provide: HttpClientService,
useValue: httpClient
- }
+ },
+ LogsContainerService
]
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
index f29705c..dba0f8f 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/component-actions.service.ts
@@ -20,11 +20,12 @@ import {Injectable} from '@angular/core';
import {AppSettingsService} from '@app/services/storage/app-settings.service';
import {CollectionModelService} from '@app/models/store.model';
import {FilteringService} from '@app/services/filtering.service';
+import {LogsContainerService} from '@app/services/logs-container.service';
@Injectable()
export class ComponentActionsService {
- constructor(private appSettings: AppSettingsService, private filtering: FilteringService) {
+ constructor(private appSettings: AppSettingsService, private filtering: FilteringService, private logsContainer: LogsContainerService) {
}
//TODO implement actions
@@ -35,12 +36,22 @@ export class ComponentActionsService {
redo() {
}
- refresh() {
+ refresh(): void {
+ // TODO implement dynamic definition of logs type
+ this.logsContainer.loadLogs('serviceLogs');
}
openHistory() {
}
+ startCapture(): void {
+ this.filtering.startCaptureTimer();
+ }
+
+ stopCapture(): void {
+ this.filtering.stopCaptureTimer();
+ }
+
setTimeZone(timeZone: string): void {
this.appSettings.setParameter('timeZone', timeZone);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
index beaf91c..6697c54 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
@@ -19,6 +19,10 @@
import {Injectable} from '@angular/core';
import {FormControl, FormGroup} from '@angular/forms';
import {Subject} from 'rxjs/Subject';
+import {Observable} from 'rxjs/Observable';
+import 'rxjs/add/observable/timer';
+import 'rxjs/add/operator/takeUntil';
+import {Moment} from 'moment';
import * as moment from 'moment-timezone';
import {ListItem} from '@app/classes/list-item.class';
import {AppSettingsService} from '@app/services/storage/app-settings.service';
@@ -190,16 +194,6 @@ export class FilteringService {
unit: 'd'
}
},
- // TODO implement time range calculation
- /*
- {
- label: 'filter.timeRange.todaySoFar',
- value: {
- type: 'CURRENT',
- unit: 'd'
- }
- },
- */
{
label: 'filter.timeRange.thisWeek',
value: {
@@ -207,16 +201,6 @@ export class FilteringService {
unit: 'w'
}
},
- // TODO implement time range calculation
- /*
- {
- label: 'filter.timeRange.thisWeekSoFar',
- value: {
- type: 'CURRENT',
- unit: 'w'
- }
- },
- */
{
label: 'filter.timeRange.thisMonth',
value: {
@@ -406,6 +390,43 @@ export class FilteringService {
queryParameterAdd: Subject<any> = new Subject();
+ private stopTimer: Subject<any> = new Subject();
+
+ private stopAutoRefreshCountdown: Subject<any> = new Subject();
+
+ captureSeconds: number = 0;
+
+ private readonly autoRefreshInterval: number = 30000;
+
+ autoRefreshRemainingSeconds: number = 0;
+
+ private startCaptureMoment: Moment;
+
+ private stopCaptureMoment: Moment;
+
+ startCaptureTimer(): void {
+ this.startCaptureMoment = moment();
+ Observable.timer(0, 1000).takeUntil(this.stopTimer).subscribe(seconds => this.captureSeconds = seconds);
+ }
+
+ stopCaptureTimer(): void {
+ const autoRefreshIntervalSeconds = this.autoRefreshInterval / 1000;
+ this.stopCaptureMoment = moment();
+ this.captureSeconds = 0;
+ this.stopTimer.next();
+ Observable.timer(0, 1000).takeUntil(this.stopAutoRefreshCountdown).subscribe(seconds => {
+ this.autoRefreshRemainingSeconds = autoRefreshIntervalSeconds - seconds;
+ if (!this.autoRefreshRemainingSeconds) {
+ this.stopAutoRefreshCountdown.next();
+ this.filtersForm.controls.timeRange.setValue({
+ type: 'CUSTOM',
+ start: this.startCaptureMoment,
+ end: this.stopCaptureMoment
+ });
+ }
+ });
+ }
+
loadClusters(): void {
this.httpClient.get('clusters').subscribe(response => {
const clusterNames = response.json();
@@ -498,8 +519,6 @@ export class FilteringService {
}
readonly valueGetters = {
- end_time: this.getEndTime,
- start_time: this.getStartTime,
to: this.getEndTime,
from: this.getStartTime,
sortType: value => value && value.type,
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
index 26d1b6b..bef28cf 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
@@ -43,7 +43,7 @@ export class LogsContainerService {
private readonly listFilters = {
clusters: ['clusters'],
- timeRange: ['end_time', 'start_time'],
+ timeRange: ['to', 'from'],
components: ['mustBe'],
levels: ['level'],
hosts: ['hostList'],
@@ -111,9 +111,7 @@ export class LogsContainerService {
let value;
const valueGetter = this.filtering.valueGetters[paramName];
if (valueGetter) {
- if (paramName === 'start_time') {
- value = valueGetter(inputValue, params['end_time']);
- } else if (paramName === 'from') {
+ if (paramName === 'from') {
value = valueGetter(inputValue, params['to']);
} else {
value = valueGetter(inputValue);
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
index 937fae1..8b157df 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
@@ -52,11 +52,11 @@ export class mockApiDataService implements InMemoryDbService {
key: 'log_message',
filterFunction: (value, filterValue) => value.toLowerCase().indexOf(filterValue.toLowerCase()) > -1
},
- start_time: {
+ from: {
key: 'logtime',
filterFunction: (value, filterValue) => value >= moment(filterValue).valueOf()
},
- end_time: {
+ to: {
key: 'logtime',
filterFunction: (value, filterValue) => value < moment(filterValue).valueOf()
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
index 773172b..3448dd4 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/utils.service.ts
@@ -54,4 +54,10 @@ export class UtilsService {
return !momentA.isSame(momentB, 'day');
}
+ fitIntegerDigitsCount(numberToFormat: number, minLength: number = 2): string {
+ return numberToFormat.toLocaleString(undefined, {
+ minimumIntegerDigits: minLength
+ });
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/653d2f26/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
index 8750d64..0d40bc7 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
+++ b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
@@ -20,14 +20,14 @@
"filter.clusters": "Clusters",
"filter.components": "Components",
"filter.levels": "Levels",
- "filter.capture": "Capture",
"filter.excluded": "Excluded",
"filter.hosts": "Hosts",
- "filters.timeRange": "Time Range",
- "filters.timeRange.from": "from",
- "filters.timeRange.to": "to",
- "filters.timeRange.quick": "Quick Ranges",
+ "filter.capture": "Capture",
+ "filter.capture.triggeringRefresh": "Triggering auto-refresh in {{remainingSeconds}} sec",
+
+ "filter.timeRange": "Time Range",
+ "filter.timeRange.quick": "Quick Ranges",
"filter.timeRange.7d": "Last 7 days",
"filter.timeRange.30d": "Last 30 days",
"filter.timeRange.60d": "Last 60 days",
[13/50] [abbrv] ambari git commit: AMBARI-22028 Downgrade button
TypeError. (atkach)
Posted by jl...@apache.org.
AMBARI-22028 Downgrade button TypeError. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/37b84706
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/37b84706
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/37b84706
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 37b847069f1d2a07ed9deb5e580ba23e90b77ade
Parents: 001c77f
Author: Andrii Tkach <at...@apache.org>
Authored: Thu Sep 21 17:50:55 2017 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Thu Sep 21 17:54:24 2017 +0300
----------------------------------------------------------------------
.../app/controllers/global/cluster_controller.js | 1 +
.../controllers/global/cluster_controller_test.js | 16 +++++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/37b84706/ambari-web/app/controllers/global/cluster_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/cluster_controller.js b/ambari-web/app/controllers/global/cluster_controller.js
index d61d61b..3689ba2 100644
--- a/ambari-web/app/controllers/global/cluster_controller.js
+++ b/ambari-web/app/controllers/global/cluster_controller.js
@@ -339,6 +339,7 @@ App.ClusterController = Em.Controller.extend(App.ReloadPopupMixin, {
App.stackUpgradeHistoryMapper.map(data);
upgradeController.loadStackVersionsToModel(true).done(function () {
upgradeController.loadCompatibleVersions();
+ upgradeController.updateCurrentStackVersion();
App.set('stackVersionsAvailable', App.StackVersion.find().content.length > 0);
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/37b84706/ambari-web/test/controllers/global/cluster_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/global/cluster_controller_test.js b/ambari-web/test/controllers/global/cluster_controller_test.js
index 7f68efc..ff8e51c 100644
--- a/ambari-web/test/controllers/global/cluster_controller_test.js
+++ b/ambari-web/test/controllers/global/cluster_controller_test.js
@@ -445,8 +445,10 @@ describe('App.clusterController', function () {
restoreLastUpgrade: Em.K,
initDBProperties: Em.K,
loadUpgradeData: Em.K,
+ loadCompatibleVersions: Em.K,
+ updateCurrentStackVersion: Em.K,
loadStackVersionsToModel: function () {
- return {done: Em.K};
+ return {done: Em.clb};
}
});
@@ -459,6 +461,8 @@ describe('App.clusterController', function () {
sinon.spy(upgradeController, 'initDBProperties');
sinon.spy(upgradeController, 'loadUpgradeData');
sinon.spy(upgradeController, 'loadStackVersionsToModel');
+ sinon.spy(upgradeController, 'loadCompatibleVersions');
+ sinon.spy(upgradeController, 'updateCurrentStackVersion');
sinon.stub(App.stackUpgradeHistoryMapper, 'map');
});
@@ -471,6 +475,8 @@ describe('App.clusterController', function () {
upgradeController.initDBProperties.restore();
upgradeController.loadUpgradeData.restore();
upgradeController.loadStackVersionsToModel.restore();
+ upgradeController.loadCompatibleVersions.restore();
+ upgradeController.updateCurrentStackVersion.restore();
App.stackUpgradeHistoryMapper.map.restore();
});
@@ -503,6 +509,14 @@ describe('App.clusterController', function () {
expect(upgradeController.loadStackVersionsToModel.calledWith(true)).to.be.true;
});
+ it('loadCompatibleVersions should be called', function () {
+ expect(upgradeController.loadCompatibleVersions.calledOnce).to.be.true;
+ });
+
+ it('updateCurrentStackVersion should be called', function () {
+ expect(upgradeController.updateCurrentStackVersion.calledOnce).to.be.true;
+ });
+
it('initDBProperties is not called', function () {
expect(upgradeController.initDBProperties.called).to.be.false;
});
[26/50] [abbrv] ambari git commit: AMBARI-22040. configs.py does not
work properly when dealing with files (aonishuk)
Posted by jl...@apache.org.
AMBARI-22040. configs.py does not work properly when dealing with files (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9e93c476
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9e93c476
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9e93c476
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 9e93c476ddd8d4397f550062fd1645ac5422ed2e
Parents: e4cadbb
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Fri Sep 22 14:06:17 2017 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Fri Sep 22 14:06:17 2017 +0300
----------------------------------------------------------------------
.../src/main/resources/scripts/configs.py | 219 +++++++++++----
.../src/main/resources/scripts/configs.sh | 272 +------------------
2 files changed, 168 insertions(+), 323 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e93c476/ambari-server/src/main/resources/scripts/configs.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/scripts/configs.py b/ambari-server/src/main/resources/scripts/configs.py
index b524461..8d4de1c 100644
--- a/ambari-server/src/main/resources/scripts/configs.py
+++ b/ambari-server/src/main/resources/scripts/configs.py
@@ -18,11 +18,19 @@ See the License for the specific language governing permissions and
limitations under the License.
'''
+import optparse
+from optparse import OptionGroup
import sys
import urllib2
import time
import json
import base64
+import xml
+import xml.etree.ElementTree as ET
+import os
+import logging
+
+logger = logging.getLogger('AmbariConfig')
HTTP_PROTOCOL = 'http'
HTTPS_PROTOCOL = 'https'
@@ -106,14 +114,14 @@ def create_new_desired_config(cluster, config_type, properties, attributes, acce
new_config[CLUSTERS][DESIRED_CONFIGS][ATTRIBUTES] = attributes
request_body = json.dumps(new_config)
new_file = 'doSet_{0}.json'.format(new_tag)
- print '### PUTting json into: {0}'.format(new_file)
+ logger.info('### PUTting json into: {0}'.format(new_file))
output_to_file(new_file)(new_config)
accessor(CLUSTERS_URL.format(cluster), PUT_REQUEST_TYPE, request_body)
- print '### NEW Site:{0}, Tag:{1}'.format(config_type, new_tag)
+ logger.info('### NEW Site:{0}, Tag:{1}'.format(config_type, new_tag))
def get_current_config(cluster, config_type, accessor):
config_tag = get_config_tag(cluster, config_type, accessor)
- print "### on (Site:{0}, Tag:{1})".format(config_type, config_tag)
+ logger.info("### on (Site:{0}, Tag:{1})".format(config_type, config_tag))
response = accessor(CONFIGURATION_URL.format(cluster, config_type, config_tag))
config_by_tag = json.loads(response)
current_config = config_by_tag[ITEMS][0]
@@ -130,6 +138,41 @@ def update_specific_property(config_name, config_value):
return properties, attributes
return update
+def update_from_xml(config_file):
+ def update(cluster, config_type, accessor):
+ return read_xml_data_to_map(config_file)
+ return update
+
+# Used DOM parser to read data into a map
+def read_xml_data_to_map(path):
+ configurations = {}
+ properties_attributes = {}
+ tree = ET.parse(path)
+ root = tree.getroot()
+ for properties in root.getiterator('property'):
+ name = properties.find('name')
+ value = properties.find('value')
+ final = properties.find('final')
+
+ if name != None:
+ name_text = name.text if name.text else ""
+ else:
+ logger.warn("No name is found for one of the properties in {0}, ignoring it".format(path))
+ continue
+
+ if value != None:
+ value_text = value.text if value.text else ""
+ else:
+ logger.warn("No value is found for \"{0}\" in {1}, using empty string for it".format(name_text, path))
+ value_text = ""
+
+ if final != None:
+ final_text = final.text if final.text else ""
+ properties_attributes[name_text] = final_text
+
+ configurations[name_text] = value_text
+ return configurations, {"final" : properties_attributes}
+
def update_from_file(config_file):
def update(cluster, config_type, accessor):
try:
@@ -138,12 +181,12 @@ def update_from_file(config_file):
except Exception as e:
raise Exception('Cannot find file "{0}" to PUT'.format(config_file))
try:
- file_properties = json.loads('{' + file_content + '}')
+ file_properties = json.loads(file_content)
except Exception as e:
raise Exception('File "{0}" should be in the following JSON format ("properties_attributes" is optional):\n{1}'.format(config_file, FILE_FORMAT))
new_properties = file_properties.get(PROPERTIES, {})
new_attributes = file_properties.get(ATTRIBUTES, {})
- print '### PUTting file: "{0}"'.format(config_file)
+ logger.info('### PUTting file: "{0}"'.format(config_file))
return new_properties, new_attributes
return update
@@ -156,26 +199,14 @@ def delete_specific_property(config_name):
return properties, attributes
return update
-def format_json(dictionary, tab_level=0):
- output = ''
- tab = ' ' * 2 * tab_level
- for key, value in dictionary.iteritems():
- output += ',\n{0}"{1}": '.format(tab, key)
- if isinstance(value, dict):
- output += '{\n' + format_json(value, tab_level + 1) + tab + '}'
- else:
- output += '"{0}"'.format(value)
- output += '\n'
- return output[2:]
-
def output_to_file(filename):
def output(config):
with open(filename, 'w') as out_file:
- out_file.write(format_json(config))
+ json.dump(config, out_file, indent=2)
return output
def output_to_console(config):
- print format_json(config)
+ print json.dumps(config, indent=2)
def get_config(cluster, config_type, accessor, output):
properties, attributes = get_current_config(cluster, config_type, accessor)
@@ -185,70 +216,152 @@ def get_config(cluster, config_type, accessor, output):
output(config)
def set_properties(cluster, config_type, args, accessor):
- print '### Performing "set" content:'
- if len(args) == 0:
- raise UsageException("Not enough arguments. Expected config key and value or filename.")
+ logger.info('### Performing "set":')
if len(args) == 1:
config_file = args[0]
- updater = update_from_file(config_file)
- print '### from file "{0}"'.format(config_file)
+ root, ext = os.path.splitext(config_file)
+ if ext == ".xml":
+ updater = update_from_xml(config_file)
+ elif ext == ".json":
+ updater = update_from_file(config_file)
+ else:
+ logger.error("File extension {0} doesn't supported".format(ext))
+ return -1
+ logger.info('### from file {0}'.format(config_file))
else:
config_name = args[0]
config_value = args[1]
updater = update_specific_property(config_name, config_value)
- print '### new property - "{0}":"{1}"'.format(config_name, config_value)
+ logger.info('### new property - "{0}":"{1}"'.format(config_name, config_value))
update_config(cluster, config_type, updater, accessor)
+ return 0
def delete_properties(cluster, config_type, args, accessor):
- print '### Performing "delete":'
+ logger.info('### Performing "delete":')
if len(args) == 0:
- raise UsageException("Not enough arguments. Expected config key.")
+ logger.error("Not enough arguments. Expected config key.")
+ return -1
config_name = args[0]
- print '### on property "{0}"'.format(config_name)
+ logger.info('### on property "{0}"'.format(config_name))
update_config(cluster, config_type, delete_specific_property(config_name), accessor)
+ return 0
+
def get_properties(cluster, config_type, args, accessor):
- print '### Performing "get" content:'
+ logger.info("### Performing \"get\" content:")
if len(args) > 0:
filename = args[0]
output = output_to_file(filename)
- print '### to file "{0}"'.format(filename)
+ logger.info('### to file "{0}"'.format(filename))
else:
output = output_to_console
get_config(cluster, config_type, accessor, output)
+ return 0
def main():
- if len(sys.argv) < 9:
- raise UsageException('Not enough arguments.')
- args = sys.argv[1:]
- user = args[0]
- password = args[1]
- port = args[2]
- protocol = args[3]
- action = args[4]
- host = args[5]
- cluster = args[6]
- config_type = args[7]
- action_args = args[8:]
+
+ parser = optparse.OptionParser(usage="usage: %prog [options]")
+
+ login_options_group = OptionGroup(parser, "To specify credentials please use \"-e\" OR \"-u\" and \"-p'\"")
+ login_options_group.add_option("-u", "--user", dest="user", default="admin", help="Optional user ID to use for authentication. Default is 'admin'")
+ login_options_group.add_option("-p", "--password", dest="password", default="admin", help="Optional password to use for authentication. Default is 'admin'")
+ login_options_group.add_option("-e", "--credentials-file", dest="credentials_file", help="Optional file with user credentials separated by new line.")
+ parser.add_option_group(login_options_group)
+
+ parser.add_option("-t", "--port", dest="port", default="8080", help="Optional port number for Ambari server. Default is '8080'. Provide empty string to not use port.")
+ parser.add_option("-s", "--protocol", dest="protocol", default="http", help="Optional support of SSL. Default protocol is 'http'")
+ parser.add_option("-a", "--action", dest="action", help="Script action: <get>, <set>, <delete>")
+ parser.add_option("-l", "--host", dest="host", help="Server external host name")
+ parser.add_option("-n", "--cluster", dest="cluster", help="Name given to cluster. Ex: 'c1'")
+ parser.add_option("-c", "--config-type", dest="config_type", help="One of the various configuration types in Ambari. Ex: core-site, hdfs-site, mapred-queue-acls, etc.")
+
+ config_options_group = OptionGroup(parser, "To specify property(s) please use \"-f\" OR \"-k\" and \"-v'\"")
+ config_options_group.add_option("-f", "--file", dest="file", help="File where entire configurations are saved to, or read from. Supported extensions (.xml, .json>)")
+ config_options_group.add_option("-k", "--key", dest="key", help="Key that has to be set or deleted. Not necessary for 'get' action.")
+ config_options_group.add_option("-v", "--value", dest="value", help="Optional value to be set. Not necessary for 'get' or 'delete' actions.")
+ parser.add_option_group(config_options_group)
+
+ (options, args) = parser.parse_args()
+
+ logger.setLevel(logging.INFO)
+ formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+ stdout_handler = logging.StreamHandler(sys.stdout)
+ stdout_handler.setLevel(logging.INFO)
+ stdout_handler.setFormatter(formatter)
+ logger.addHandler(stdout_handler)
+
+ # options with default value
+
+ if not options.credentials_file and (not options.user or not options.password):
+ parser.error("You should use option (-e) to set file with Ambari user credentials OR use (-u) username and (-p) password")
+
+ if options.credentials_file:
+ if os.path.isfile(options.credentials_file):
+ try:
+ with open(options.credentials_file) as credentials_file:
+ file_content = credentials_file.read()
+ login_lines = filter(None, file_content.splitlines())
+ if len(login_lines) == 2:
+ user = login_lines[0]
+ password = login_lines[1]
+ else:
+ logger.error("Incorrect content of {0} file. File should contain Ambari username and password separated by new line.".format(options.credentials_file))
+ return -1
+ except Exception as e:
+ logger.error("You don't have permissions to {0} file".format(options.credentials_file))
+ return -1
+ else:
+ logger.error("File {0} doesn't exist or you don't have permissions.".format(options.credentials_file))
+ return -1
+ else:
+ user = options.user
+ password = options.password
+
+ port = options.port
+ protocol = options.protocol
+
+ #options without default value
+ if None in [options.action, options.host, options.cluster, options.config_type]:
+ parser.error("One of required options is not passed")
+
+ action = options.action
+ host = options.host
+ cluster = options.cluster
+ config_type = options.config_type
+
accessor = api_accessor(host, user, password, protocol, port)
if action == SET_ACTION:
- set_properties(cluster, config_type, action_args, accessor)
+
+ if not options.file and (not options.key or not options.value):
+ parser.error("You should use option (-f) to set file where entire configurations are saved OR (-k) key and (-v) value for one property")
+ if options.file:
+ action_args = [options.file]
+ else:
+ action_args = [options.key, options.value]
+ return set_properties(cluster, config_type, action_args, accessor)
+
elif action == GET_ACTION:
- get_properties(cluster, config_type, action_args, accessor)
+ if options.file:
+ action_args = [options.file]
+ else:
+ action_args = []
+ return get_properties(cluster, config_type, action_args, accessor)
+
elif action == DELETE_ACTION:
- delete_properties(cluster, config_type, action_args, accessor)
+ if not options.key:
+ parser.error("You should use option (-k) to set property name witch will be deleted")
+ else:
+ action_args = [options.key]
+ return delete_properties(cluster, config_type, action_args, accessor)
else:
- raise UsageException('Action "{0}" is not supported. Supported actions: "get", "set", "delete".'.format(action))
+ logger.error('Action "{0}" is not supported. Supported actions: "get", "set", "delete".'.format(action))
+ return -1
if __name__ == "__main__":
try:
- main()
- except UsageException as usage_exc:
- print '[ERROR] {0}'.format(usage_exc)
- sys.exit(2)
- except Exception as exc:
- for line in str(exc).split('\n'):
- print '[ERROR] {0}'.format(line)
+ sys.exit(main())
+ except (KeyboardInterrupt, EOFError):
+ print("\nAborting ... Keyboard Interrupt.")
sys.exit(1)
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e93c476/ambari-server/src/main/resources/scripts/configs.sh
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/scripts/configs.sh b/ambari-server/src/main/resources/scripts/configs.sh
index 7364d0e..4141fed 100755
--- a/ambari-server/src/main/resources/scripts/configs.sh
+++ b/ambari-server/src/main/resources/scripts/configs.sh
@@ -18,273 +18,5 @@
# under the License.
#
-usage () {
- echo "";
- echo "WARNING: THIS SCRIPT IS DEPRECATED AND DOESN'T SUPPORT NEW FEATURES. PLEASE USE configs.py"
- echo "";
- echo "Usage: configs.sh [-u userId] [-p password] [-port port] [-s] <ACTION> <AMBARI_HOST> <CLUSTER_NAME> <CONFIG_TYPE> [CONFIG_FILENAME | CONFIG_KEY [CONFIG_VALUE]]";
- echo "";
- echo " [-u userId]: Optional user ID to use for authentication. Default is 'admin'.";
- echo " [-p password]: Optional password to use for authentication. Default is 'admin'.";
- echo " [-port port]: Optional port number for Ambari server. Default is '8080'. Provide empty string to not use port.";
- echo " [-s]: Optional support of SSL. Default is 'false'. Provide empty string to not use SSL.";
- echo " <ACTION>: One of 'get', 'set', 'delete'. 'Set' adds/updates as necessary.";
- echo " <AMBARI_HOST>: Server external host name";
- echo " <CLUSTER_NAME>: Name given to cluster. Ex: 'c1'"
- echo " <CONFIG_TYPE>: One of the various configuration types in Ambari. Ex:global, core-site, hdfs-site, mapred-queue-acls, etc.";
- echo " [CONFIG_FILENAME]: File where entire configurations are saved to, or read from. Only applicable to 'get' and 'set' actions";
- echo " [CONFIG_KEY]: Key that has to be set or deleted. Not necessary for 'get' action.";
- echo " [CONFIG_VALUE]: Optional value to be set. Not necessary for 'get' or 'delete' actions.";
- exit 1;
-}
-
-USERID="admin"
-PASSWD="admin"
-PORT=":8080"
-SSL_URL_PREFIX=""
-
-if [ "$1" == "-u" ] ; then
- USERID=$2;
- shift 2;
- echo "USERID=$USERID";
-fi
-
-if [ "$1" == "-p" ] ; then
- PASSWD=$2;
- shift 2;
- echo "PASSWORD=$PASSWD";
-fi
-
-if [ "$1" == "-port" ] ; then
- if [ -z $2 ]; then
- PORT="";
- else
- PORT=":$2";
- fi
- shift 2;
- echo "PORT=$PORT";
-fi
-
-if [ "$1" == "-s" ] ; then
- SSL_URL_PREFIX="s"
- shift;
- echo "SSL is enabled";
-fi
-
-AMBARIURL="http$SSL_URL_PREFIX://$2$PORT"
-CLUSTER=$3
-SITE=$4
-SITETAG=''
-CONFIGKEY=$5
-CONFIGVALUE=$6
-
-###################
-## currentSiteTag()
-###################
-currentSiteTag () {
- currentSiteTag=''
- found=''
-
- #currentSite=`cat ds.json | grep -E "$SITE|tag"`;
- currentSite=`curl -k -s -u $USERID:$PASSWD "$AMBARIURL/api/v1/clusters/$CLUSTER?fields=Clusters/desired_configs" | grep -E "$SITE|tag"`;
- for line in $currentSite; do
- if [ $line != "{" -a $line != ":" -a $line != '"tag"' ] ; then
- if [ -n "$found" -a -z "$currentSiteTag" ]; then
- currentSiteTag=$line;
- fi
- if [ $line == "\"$SITE\"" ]; then
- found=$SITE;
- fi
- fi
- done;
- if [ -z $currentSiteTag ]; then
- errOutput=`curl -k -s -u $USERID:$PASSWD "$AMBARIURL/api/v1/clusters/$CLUSTER?fields=Clusters/desired_configs"`;
- echo "[ERROR] \"$SITE\" not found in server response.";
- echo "[ERROR] Output of \`curl -k -s -u $USERID:$PASSWD \"$AMBARIURL/api/v1/clusters/$CLUSTER?fields=Clusters/desired_configs\"\` is:";
- echo $errOutput | while read -r line; do
- echo "[ERROR] $line";
- done;
- exit 1;
- fi
- currentSiteTag=`echo $currentSiteTag|cut -d \" -f 2`
- SITETAG=$currentSiteTag;
-}
-
-#############################################
-## doConfigUpdate()
-## @param MODE of update. Either 'set' or 'delete'
-#############################################
-doConfigUpdate () {
- MODE=$1
- currentSiteTag
- echo "########## Performing '$MODE' $CONFIGKEY:$CONFIGVALUE on (Site:$SITE, Tag:$SITETAG)";
- propertiesStarted=0
- attributesStarted=0
- currentLevel=0
- curl -k -s -u $USERID:$PASSWD "$AMBARIURL/api/v1/clusters/$CLUSTER/configurations?type=$SITE&tag=$SITETAG" | while read -r line; do
- if [ "$propertiesStarted" -eq 0 -a "$attributesStarted" -eq 0 ]; then
- if [ "$line" = "\"properties_attributes\" : {" ]; then
- attributesStarted=$currentLevel
- elif [ "$line" = "\"properties\" : {" ]; then
- propertiesStarted=$currentLevel
- fi
- fi
- if [ "$propertiesStarted" -gt 0 ]; then
- if [ "`echo $line | grep -E "},?$"`" ]; then
- ## Properties ended
- ## Add property
- propLen=${#newProperties}
- lastChar=${newProperties:$propLen-1:1}
- if [ "$MODE" == "delete" ]; then
- # Remove the last ,
- if [ "$lastChar" == "," ]; then
- newProperties=${newProperties:0:$propLen-1}
- fi
- elif [ "$MODE" == "set" ]; then
- # Add comma if required
- if [ "$lastChar" != "," -a "$lastChar" != "{" ]; then
- newProperties="$newProperties,"
- fi
- newProperties="$newProperties \"$CONFIGKEY\" : \"$CONFIGVALUE\""
- fi
- newProperties=$newProperties$line
- propertiesStarted=0
- elif [ "`echo $line | grep "\\\"$CONFIGKEY\\\""`" ]; then
- echo "########## Config found. Skipping origin value"
- else
- newProperties=$newProperties$line
- fi
- elif [ "$attributesStarted" -gt 0 ]; then
- newProperties=$newProperties$line
- fi
- if [ "`echo $line | grep -E "{$"`" ]; then
- currentLevel=$((currentLevel+1))
- elif [ "`echo $line | grep -E "},?$"`" ]; then
- currentLevel=$((currentLevel-1))
- if [ "$currentLevel" == 1 ]; then
- # if no properties in current config
- if [ "$MODE" == "set" -a -z "$newProperties" ]; then
- newProperties="\"properties\" : { \"$CONFIGKEY\" : \"$CONFIGVALUE\"}"
- fi
- newTag=`date "+%s%N"`
- newTag="version${newTag}"
- finalJson="{ \"Clusters\": { \"desired_config\": {\"type\": \"$SITE\", \"tag\":\"$newTag\", $newProperties}}}"
- newFile="doSet_$newTag.json"
- echo "########## PUTting json into: $newFile"
- echo "$finalJson" > $newFile
- curl -k -u $USERID:$PASSWD -X PUT -H "X-Requested-By: ambari" "$AMBARIURL/api/v1/clusters/$CLUSTER" --data @$newFile
- currentSiteTag
- echo "########## NEW Site:$SITE, Tag:$SITETAG";
- fi
- fi
- if [ "$attributesStarted" -eq "$currentLevel" ]; then
- attributesStarted=0
- fi
- done
-}
-
-#############################################
-## doConfigFileUpdate()
-## @param File name to PUT on server
-#############################################
-doConfigFileUpdate () {
- FILENAME=$1
- if [ -f $FILENAME ]; then
- if [ "1" == "$(grep -En ^\"properties\" $FILENAME | cut -d : -f 1)" ]; then
- newTag=`date "+%s%N"`
- newTag="version${newTag}"
- newProperties=`cat $FILENAME`;
- finalJson="{ \"Clusters\": { \"desired_config\": {\"type\": \"$SITE\", \"tag\":\"$newTag\", $newProperties}}}"
- newFile="doSet_$newTag.json"
- echo "$finalJson" > $newFile
- echo "########## PUTting file:\"$FILENAME\" into config(type:\"$SITE\", tag:$newTag) via $newFile"
- curl -k -u $USERID:$PASSWD -X PUT -H "X-Requested-By: ambari" "$AMBARIURL/api/v1/clusters/$CLUSTER" --data @$newFile
- currentSiteTag
- echo "########## NEW Site:$SITE, Tag:$SITETAG";
- else
- echo "[ERROR] File \"$FILENAME\" should be in the following JSON format (\"properties_attributes\" is optional):";
- echo "[ERROR] \"properties\": {";
- echo "[ERROR] \"key1\": \"value1\",";
- echo "[ERROR] \"key2\": \"value2\",";
- echo "[ERROR] },";
- echo "[ERROR] \"properties_attributes\": {";
- echo "[ERROR] \"final\": {";
- echo "[ERROR] \"key1\": \"value1\",";
- echo "[ERROR] \"key2\": \"value2\",";
- echo "[ERROR] }";
- echo "[ERROR] }";
- exit 1;
- fi
- else
- echo "[ERROR] Cannot find file \"$1\"to PUT";
- exit 1;
- fi
-}
-
-
-#############################################
-## doGet()
-## @param Optional filename to save to
-#############################################
-doGet () {
- FILENAME=$1
- if [ -n $FILENAME -a -f $FILENAME ]; then
- rm -f $FILENAME
- fi
- currentSiteTag
- echo "########## Performing 'GET' on (Site:$SITE, Tag:$SITETAG)";
- propertiesStarted=0
- curl -k -s -u $USERID:$PASSWD "$AMBARIURL/api/v1/clusters/$CLUSTER/configurations?type=$SITE&tag=$SITETAG" | while read -r line; do
- # echo ">>> $line";
- if [ "$propertiesStarted" -eq 0 ]; then
- if [ "`echo $line | grep "\"properties\""`" -o "`echo $line | grep "\"properties_attributes\""`" ]; then
- propertiesStarted=$currentLevel
- fi
- fi
- if [ "$propertiesStarted" -gt "0" ]; then
- if [ -z $FILENAME ]; then
- echo "$line"
- else
- echo "$line" >> $FILENAME
- fi
- fi
- if [ "`echo $line | grep -E "{$"`" ]; then
- currentLevel=$((currentLevel+1))
- elif [ "`echo $line | grep -E "},?$"`" ]; then
- currentLevel=$((currentLevel-1))
- fi
- if [ "$propertiesStarted" -eq "$currentLevel" ]; then
- propertiesStarted=0
- fi
- done
-}
-
-case "$1" in
- set)
- if (($# == 6)); then
- doConfigUpdate "set" # Individual key
- elif (($# == 5)); then
- doConfigFileUpdate $5 # File based
- else
- usage
- fi
- ;;
- get)
- if (($# == 4)); then
- doGet
- elif (($# == 5)); then
- doGet $5
- else
- usage
- fi
- ;;
- delete)
- if (($# != 5)); then
- usage
- fi
- doConfigUpdate "delete"
- ;;
- *)
- usage
- ;;
-esac
+echo "ERROR: THIS SCRIPT IS NO LONGER SUPPORTED. PLEASE USE configs.py INSTEAD"
+exit 1
\ No newline at end of file
[19/50] [abbrv] ambari git commit: AMBARI-220334. AMS: Add smart
configs support for service. (swagle)
Posted by jl...@apache.org.
AMBARI-220334. AMS: Add smart configs support for service. (swagle)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f095b959
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f095b959
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f095b959
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: f095b9590afe5657b560defb3e3d5e9294c1e65d
Parents: f1b5300
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Thu Sep 21 12:56:35 2017 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Thu Sep 21 13:03:21 2017 -0700
----------------------------------------------------------------------
.../timeline/TimelineMetricConfiguration.java | 13 +
.../metrics/timeline/TimelineMetricsFilter.java | 24 +-
.../timeline/TimelineMetricsFilterTest.java | 3 +
.../0.1.0/configuration/ams-env.xml | 4 +
.../0.1.0/configuration/ams-hbase-env.xml | 16 ++
.../0.1.0/configuration/ams-hbase-site.xml | 24 +-
.../0.1.0/configuration/ams-site.xml | 70 ++++-
.../AMBARI_METRICS/0.1.0/metainfo.xml | 7 +
.../AMBARI_METRICS/0.1.0/themes/theme.json | 288 +++++++++++++++++++
9 files changed, 423 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
index 44073ab..899928a 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricConfiguration.java
@@ -254,9 +254,15 @@ public class TimelineMetricConfiguration {
public static final String TIMELINE_METRICS_AGGREGATE_TABLES_DURABILITY =
"timeline.metrics.aggregate.tables.durability";
+ public static final String TIMELINE_METRICS_WHITELIST_ENABLED =
+ "timeline.metrics.whitelisting.enabled";
+
public static final String TIMELINE_METRICS_WHITELIST_FILE =
"timeline.metrics.whitelist.file";
+ public static final String TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT =
+ "/etc/ambari-metrics-collector/conf/metrics_whitelist";
+
public static final String TIMELINE_METRIC_METADATA_FILTERS =
"timeline.metrics.service.metadata.filters";
@@ -518,4 +524,11 @@ public class TimelineMetricConfiguration {
return false;
}
}
+
+ public boolean isWhitelistingEnabled() {
+ if (metricsConf != null) {
+ return Boolean.parseBoolean(metricsConf.get(TIMELINE_METRICS_WHITELIST_ENABLED, "false"));
+ }
+ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
index 1446ec2..63cc510 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilter.java
@@ -18,17 +18,14 @@
package org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_BLACKLIST;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_WHITELIST;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
+import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
@@ -36,9 +33,12 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_WHITELIST_FILE;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_BLACKLIST;
-import static org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TimelineMetricConfiguration.TIMELINE_METRICS_APPS_WHITELIST;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
public class TimelineMetricsFilter {
@@ -67,8 +67,8 @@ public class TimelineMetricsFilter {
whitelistedApps = new HashSet<>();
amshbaseWhitelist = new HashSet<>();
- String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, "");
- if (!StringUtils.isEmpty(whitelistFile)) {
+ if (configuration.isWhitelistingEnabled()) {
+ String whitelistFile = metricsConf.get(TIMELINE_METRICS_WHITELIST_FILE, TIMELINE_METRICS_WHITELIST_FILE_LOCATION_DEFAULT);
readMetricWhitelistFromFile(whitelistFile);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
index 81da5c8..a308248 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
+++ b/ambari-metrics/ambari-metrics-timelineservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/metrics/timeline/TimelineMetricsFilterTest.java
@@ -61,6 +61,7 @@ public class TimelineMetricsFilterTest {
Configuration metricsConf = new Configuration();
TimelineMetricConfiguration configuration = EasyMock.createNiceMock(TimelineMetricConfiguration.class);
expect(configuration.getMetricsConf()).andReturn(metricsConf).once();
+ expect(configuration.isWhitelistingEnabled()).andReturn(true).anyTimes();
replay(configuration);
URL fileUrl = ClassLoader.getSystemResource("test_data/metric_whitelist.dat");
@@ -170,6 +171,8 @@ public class TimelineMetricsFilterTest {
whitelist.add("regionserver.Server.Delete_mean");
expect(configuration.getAmshbaseWhitelist()).andReturn(whitelist).once();
+ expect(configuration.isWhitelistingEnabled()).andReturn(true).anyTimes();
+
replay(configuration);
TimelineMetricsFilter.initializeMetricFilter(configuration);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
index 4d33661..ee7067c 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-env.xml
@@ -74,9 +74,13 @@
<name>metrics_collector_heapsize</name>
<value>512</value>
<description>Metrics Collector Heap Size</description>
+ <display-name>Metrics Collector Heap Size</display-name>
<value-attributes>
<type>int</type>
<unit>MB</unit>
+ <minimum>512</minimum>
+ <maximum>16384</maximum>
+ <increment-step>256</increment-step>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
index 9c4fc02..e31f2a6 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-env.xml
@@ -60,9 +60,13 @@
HBase RegionServer Heap Size. In embedded mode, total heap size is
sum of master and regionserver heap sizes.
</description>
+ <display-name>HBase RegionServer Maximum Memory</display-name>
<value-attributes>
<type>int</type>
+ <minimum>512</minimum>
+ <maximum>32768</maximum>
<unit>MB</unit>
+ <increment-step>256</increment-step>
</value-attributes>
<depends-on>
<property>
@@ -80,9 +84,13 @@
<name>regionserver_xmn_size</name>
<value>128</value>
<description>HBase RegionServer maximum value for young generation heap size.</description>
+ <display-name>HBase RegionServer maximum value for Xmn</display-name>
<value-attributes>
<type>int</type>
+ <minimum>128</minimum>
+ <maximum>8192</maximum>
<unit>MB</unit>
+ <increment-step>128</increment-step>
</value-attributes>
<depends-on>
<property>
@@ -98,9 +106,13 @@
<description>
HBase Master maximum value for young generation heap size.
</description>
+ <display-name>HBase Master maximum value for Xmn</display-name>
<value-attributes>
<type>int</type>
+ <minimum>64</minimum>
+ <maximum>1024</maximum>
<unit>MB</unit>
+ <increment-step>64</increment-step>
</value-attributes>
<depends-on>
<property>
@@ -133,9 +145,13 @@
HBase Master Heap Size. In embedded mode, total heap size is
sum of master and regionserver heap sizes.
</description>
+ <display-name>HBase Master Maximum Memory</display-name>
<value-attributes>
<type>int</type>
+ <minimum>256</minimum>
+ <maximum>4096</maximum>
<unit>MB</unit>
+ <increment-step>256</increment-step>
</value-attributes>
<depends-on>
<property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
index 2c9378e..5f80df4 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-hbase-site.xml
@@ -29,6 +29,7 @@
HBase to either local filesystem path if using Ambari Metrics in embedded mode or
to a HDFS dir, example: hdfs://namenode.example.org:8020/amshbase.
</description>
+ <display-name>HBase root directory</display-name>
<depends-on>
<property>
<type>core-site</type>
@@ -44,6 +45,7 @@
<property>
<name>hbase.tmp.dir</name>
<value>/var/lib/ambari-metrics-collector/hbase-tmp</value>
+ <display-name>HBase tmp directory</display-name>
<description>
Temporary directory on the local filesystem.
Change this setting to point to a location more permanent
@@ -165,9 +167,13 @@
Threshold size in bytes after which results from parallelly executed
query results are spooled to disk. Default is 20 mb.
</description>
+ <display-name>Phoenix Spool threshold</display-name>
<value-attributes>
<type>int</type>
- <unit>Bytes</unit>
+ <unit>B</unit>
+ <minimum>12582912</minimum>
+ <maximum>31457280</maximum>
+ <increment-step>1048576</increment-step>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
@@ -266,12 +272,16 @@
<name>hbase.hregion.max.filesize</name>
<value>4294967296</value>
<description>
- Maximum HFile size. If the sum of the sizes of a region’s HFiles has grown
- to exceed this value, the region is split in two. Default is 40Gb.
+ Maximum HFile size. If the sum of the sizes of a region HFiles has grown
+ to exceed this value, the region is split in two. Default is 4 GB.
</description>
+ <display-name>Maximum Region File Size</display-name>
<value-attributes>
<type>int</type>
- <unit>Bytes</unit>
+ <minimum>1073741824</minimum>
+ <maximum>107374182400</maximum>
+ <unit>B</unit>
+ <increment-step>1073741824</increment-step>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
@@ -432,9 +442,13 @@
number of bytes. Value is checked by a thread that runs every
hbase.server.thread.wakefrequency.
</description>
+ <display-name>Memstore Flush Size</display-name>
<value-attributes>
<type>int</type>
- <unit>Bytes</unit>
+ <minimum>33554432</minimum>
+ <maximum>536870912</maximum>
+ <increment-step>1048576</increment-step>
+ <unit>B</unit>
</value-attributes>
<on-ambari-upgrade add="true"/>
</property>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
index 1b085f6..ab14f18 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/configuration/ams-site.xml
@@ -31,6 +31,23 @@
2) distributed: HBase daemons writing to HDFS
</description>
<on-ambari-upgrade add="true"/>
+ <display-name>Operation Mode</display-name>
+ <description>Metrics service Operation mode</description>
+ <value-attributes>
+ <overridable>false</overridable>
+ <type>value-list</type>
+ <entries>
+ <entry>
+ <value>embedded</value>
+ <label>Embedded</label>
+ </entry>
+ <entry>
+ <value>distributed</value>
+ <label>Distributed</label>
+ </entry>
+ </entries>
+ <selection-cardinality>1</selection-cardinality>
+ </value-attributes>
</property>
<property>
<name>timeline.metrics.service.webapp.address</name>
@@ -510,6 +527,11 @@
List of application ids to use for aggregating host level metrics for
an application. Example: bytes_read across Yarn Nodemanagers.
</description>
+ <display-name>AppIds for aggregating System metrics</display-name>
+ <value-attributes>
+ <empty-value-valid>true</empty-value-valid>
+ <overridable>false</overridable>
+ </value-attributes>
<on-ambari-upgrade add="true"/>
</property>
<property>
@@ -589,14 +611,6 @@
<on-ambari-upgrade add="true"/>
</property>
<property>
- <name>timeline.metrics.sink.collection.period</name>
- <value>10</value>
- <description>
- The interval between two service metrics data exports.
- </description>
- <on-ambari-upgrade add="true"/>
- </property>
- <property>
<name>timeline.metrics.service.watcher.disabled</name>
<value>false</value>
<description>
@@ -675,7 +689,7 @@
<name>timeline.metrics.cache.size</name>
<value>150</value>
<description>
- Size of array blocking queue used to cache metrics
+ Size of array blocking queue used to cache metrics before flush to DB
</description>
<value-attributes>
<type>int</type>
@@ -791,6 +805,22 @@
<name>timeline.metrics.host.inmemory.aggregation</name>
<value>false</value>
<description>if set to "true" host metrics will be aggregated in memory on each host</description>
+ <display-name>Enable in-memory aggreation on monitors</display-name>
+ <value-attributes>
+ <overridable>false</overridable>
+ <type>value-list</type>
+ <entries>
+ <entry>
+ <value>true</value>
+ <label>True</label>
+ </entry>
+ <entry>
+ <value>false</value>
+ <label>False</label>
+ </entry>
+ </entries>
+ <selection-cardinality>1</selection-cardinality>
+ </value-attributes>
<on-ambari-upgrade add="true"/>
</property>
<property>
@@ -798,4 +828,26 @@
<value>61888</value>
<on-ambari-upgrade add="true"/>
</property>
+ <property>
+ <name>timeline.metrics.whitelisting.enabled</name>
+ <value>false</value>
+ <description>Enable/Disable metric whitelisting</description>
+ <display-name>Enable only whitelisted metrics</display-name>
+ <on-ambari-upgrade add="true"/>
+ <value-attributes>
+ <overridable>false</overridable>
+ <type>value-list</type>
+ <entries>
+ <entry>
+ <value>true</value>
+ <label>True</label>
+ </entry>
+ <entry>
+ <value>false</value>
+ <label>False</label>
+ </entry>
+ </entries>
+ <selection-cardinality>1</selection-cardinality>
+ </value-attributes>
+ </property>
</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
index 43c3685..d563bec 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/metainfo.xml
@@ -123,6 +123,13 @@
</logs>
</components>
+ <themes>
+ <theme>
+ <fileName>theme.json</fileName>
+ <default>true</default>
+ </theme>
+ </themes>
+
<osSpecifics>
<osSpecific>
<osFamily>redhat7,amazon2015,redhat6,suse11,suse12</osFamily>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f095b959/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
new file mode 100644
index 0000000..9316a6e
--- /dev/null
+++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/themes/theme.json
@@ -0,0 +1,288 @@
+{
+ "name": "default",
+ "description": "Default theme for AMS service",
+ "configuration": {
+ "layouts": [
+ {
+ "name": "default",
+ "tabs": [
+ {
+ "name": "settings",
+ "display-name": "Settings",
+ "layout": {
+ "tab-columns": "2",
+ "tab-rows": "1",
+ "sections": [
+ {
+ "name": "section-collector",
+ "display-name": "Collector",
+ "row-index": "0",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "1",
+ "section-columns": "1",
+ "section-rows": "1",
+ "subsections": [
+ {
+ "name": "subsection-collector-col1",
+ "row-index": "0",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "1"
+ }
+ ]
+ },
+ {
+ "name": "section-hbase",
+ "display-name": "AMS HBase",
+ "row-index": "0",
+ "column-index": "2",
+ "row-span": "1",
+ "column-span": "2",
+ "section-columns": "2",
+ "section-rows": "1",
+ "subsections": [
+ {
+ "name": "subsection-hbase-col1",
+ "row-index": "0",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "1"
+ },
+ {
+ "name": "subsection-hbase-col2",
+ "row-index": "0",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "1"
+ }
+ ]
+ },
+ {
+ "name": "section-hbase-disk",
+ "display-name": "Storage",
+ "row-index": "1",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "3",
+ "section-columns": "3",
+ "section-rows": "1",
+ "subsections": [
+ {
+ "name": "subsection-hbase-disk-col1",
+ "row-index": "0",
+ "column-index": "0",
+ "row-span": "1",
+ "column-span": "1"
+ },
+ {
+ "name": "subsection-hbase-disk-col2",
+ "row-index": "0",
+ "column-index": "1",
+ "row-span": "1",
+ "column-span": "1"
+ },
+ {
+ "name": "subsection-hbase-disk-col3",
+ "row-index": "0",
+ "column-index": "1",
+ "row-span": "1",
+ "column-span": "1"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "placement": {
+ "configuration-layout": "default",
+ "configs": [
+ {
+ "config": "ams-site/timeline.metrics.service.operation.mode",
+ "subsection-name": "subsection-collector-col1"
+ },
+ {
+ "config": "ams-env/metrics_collector_heapsize",
+ "subsection-name": "subsection-collector-col1"
+ },
+ {
+ "config": "ams-site/timeline.metrics.whitelisting.enabled",
+ "subsection-name": "subsection-collector-col1"
+ },
+ {
+ "config": "ams-site/timeline.metrics.host.inmemory.aggregation",
+ "subsection-name": "subsection-collector-col1"
+ },
+ {
+ "config": "ams-site/timeline.metrics.service.cluster.aggregator.appIds",
+ "subsection-name": "subsection-collector-col1"
+ },
+ {
+ "config": "ams-hbase-env/hbase_master_heapsize",
+ "subsection-name": "subsection-hbase-col1"
+ },
+ {
+ "config": "ams-hbase-env/hbase_master_xmn_size",
+ "subsection-name": "subsection-hbase-col1"
+ },
+ {
+ "config": "ams-hbase-env/hbase_regionserver_heapsize",
+ "subsection-name": "subsection-hbase-col1"
+ },
+ {
+ "config": "ams-hbase-env/regionserver_xmn_size",
+ "subsection-name": "subsection-hbase-col1"
+ },
+ {
+ "config": "ams-hbase-site/hbase.hregion.memstore.flush.size",
+ "subsection-name": "subsection-hbase-col2"
+ },
+ {
+ "config": "ams-hbase-site/phoenix.query.spoolThresholdBytes",
+ "subsection-name": "subsection-hbase-col2"
+ },
+ {
+ "config": "ams-hbase-site/hbase.rootdir",
+ "subsection-name": "subsection-hbase-disk-col1"
+ },
+ {
+ "config": "ams-hbase-site/hbase.tmp.dir",
+ "subsection-name": "subsection-hbase-disk-col2"
+ },
+ {
+ "config": "ams-hbase-site/hbase.hregion.max.filesize",
+ "subsection-name": "subsection-hbase-disk-col3"
+ }
+ ]
+ },
+ "widgets": [
+ {
+ "config": "ams-site/timeline.metrics.service.operation.mode",
+ "widget": {
+ "type": "combo"
+ }
+ },
+ {
+ "config": "ams-env/metrics_collector_heapsize",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "GB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-site/timeline.metrics.host.inmemory.aggregation",
+ "widget": {
+ "type": "toggle"
+ }
+ },
+ {
+ "config": "ams-site/timeline.metrics.whitelisting.enabled",
+ "widget": {
+ "type": "toggle"
+ }
+ },
+ {
+ "config": "ams-site/timeline.metrics.service.cluster.aggregator.appIds",
+ "widget": {
+ "type": "text-field"
+ }
+ },
+ {
+ "config": "ams-hbase-env/hbase_master_heapsize",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "GB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-env/hbase_master_xmn_size",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "MB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-env/hbase_regionserver_heapsize",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "GB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-env/regionserver_xmn_size",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "MB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-site/hbase.hregion.memstore.flush.size",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "MB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-site/phoenix.query.spoolThresholdBytes",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "MB"
+ }
+ ]
+ }
+ },
+ {
+ "config": "ams-hbase-site/hbase.rootdir",
+ "widget": {
+ "type": "text-field"
+ }
+ },
+ {
+ "config": "ams-hbase-site/hbase.tmp.dir",
+ "widget": {
+ "type": "text-field"
+ }
+ },
+ {
+ "config": "ams-hbase-site/hbase.hregion.max.filesize",
+ "widget": {
+ "type": "slider",
+ "units": [
+ {
+ "unit-name": "GB"
+ }
+ ]
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
[45/50] [abbrv] ambari git commit: AMBARI-22046. Infra Manager:
Integrate with Spring Boot (oleewere)
Posted by jl...@apache.org.
AMBARI-22046. Infra Manager: Integrate with Spring Boot (oleewere)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6633a7bd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6633a7bd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6633a7bd
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 6633a7bd44fcbc660956a7e188e2ac63472c6de3
Parents: 520d8fc
Author: Oliver Szabo <ol...@gmail.com>
Authored: Sun Sep 24 14:22:14 2017 +0200
Committer: Oliver Szabo <ol...@gmail.com>
Committed: Mon Sep 25 20:18:03 2017 +0200
----------------------------------------------------------------------
ambari-infra/ambari-infra-manager/.gitignore | 2 +
.../ambari-infra-manager/docker/bin/start.sh | 2 +-
ambari-infra/ambari-infra-manager/pom.xml | 172 ++++++++-------
.../org/apache/ambari/infra/InfraManager.java | 208 +++----------------
.../infra/common/InfraManagerConstants.java | 31 ---
.../infra/conf/InfraManagerDataConfig.java | 37 ++++
.../conf/InfraManagerJerseyResourceConfig.java | 37 ++++
.../infra/conf/InfraManagerServletConfig.java | 83 ++++++++
.../infra/conf/StaticResourceConfiguration.java | 49 +++++
.../infra/doc/InfraManagerApiDocStorage.java | 90 ++++++++
.../ambari/infra/job/dummy/DummyItemWriter.java | 15 +-
.../ambari/infra/rest/ApiDocResource.java | 56 +++++
.../src/main/resources/infra-manager.properties | 4 +-
.../src/main/resources/log4j.xml | 31 ---
.../src/main/resources/log4j2.xml | 41 ++++
.../src/main/resources/static/index.html | 24 +++
.../src/main/resources/swagger/swagger.html | 36 ++--
.../src/main/resources/webapp/index.html | 24 ---
18 files changed, 556 insertions(+), 386 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/.gitignore
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/.gitignore b/ambari-infra/ambari-infra-manager/.gitignore
new file mode 100644
index 0000000..ba4e51d
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/.gitignore
@@ -0,0 +1,2 @@
+out/*
+*.pid
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/docker/bin/start.sh
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/docker/bin/start.sh b/ambari-infra/ambari-infra-manager/docker/bin/start.sh
index 076c06f..2402778 100755
--- a/ambari-infra/ambari-infra-manager/docker/bin/start.sh
+++ b/ambari-infra/ambari-infra-manager/docker/bin/start.sh
@@ -16,6 +16,6 @@
export INFRA_MANAGER_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5007,server=y,suspend=n"
touch /root/infra-manager.log
-/root/ambari-infra-manager/infraManager.sh --port 61890 > /root/infra-manager.log
+/root/ambari-infra-manager/infraManager.sh > /root/infra-manager.log
tail -f /root/infra-manager.log
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/pom.xml b/ambari-infra/ambari-infra-manager/pom.xml
index b9f2a77..aa86da8 100644
--- a/ambari-infra/ambari-infra-manager/pom.xml
+++ b/ambari-infra/ambari-infra-manager/pom.xml
@@ -30,15 +30,17 @@
<artifactId>ambari-infra-manager</artifactId>
<properties>
- <spring.version>4.2.5.RELEASE</spring.version>
- <spring.security.version>4.0.4.RELEASE</spring.security.version>
- <jersey.version>2.23.2</jersey.version>
- <jetty-version>9.2.11.v20150529</jetty-version>
- <swagger.version>1.5.8</swagger.version>
- <spring-data-solr.version>2.0.2.RELEASE</spring-data-solr.version>
- <jjwt.version>0.6.0</jjwt.version>
+ <spring.version>4.3.10.RELEASE</spring.version>
+ <spring.security.version>4.2.3.RELEASE</spring.security.version>
+ <spring.ldap.version>2.0.4.RELEASE</spring.ldap.version>
+ <jersey.version>2.25.1</jersey.version>
+ <jetty.version>9.4.6.v20170531</jetty.version>
<spring-batch.version>3.0.7.RELEASE</spring-batch.version>
<sqlite.version>3.8.11.2</sqlite.version>
+ <spring-data-solr.version>2.0.2.RELEASE</spring-data-solr.version>
+ <spring-boot.version>1.5.6.RELEASE</spring-boot.version>
+ <swagger.version>1.5.16</swagger.version>
+ <jjwt.version>0.6.0</jjwt.version>
</properties>
<build>
@@ -69,6 +71,21 @@
</configuration>
</plugin>
<plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring-boot.version}</version>
+ <configuration>
+ <classifier>exec</classifier>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
@@ -161,53 +178,70 @@
<artifactId>spring-security-ldap</artifactId>
<version>${spring.security.version}</version>
</dependency>
+
<dependency>
- <groupId>org.glassfish.jersey.ext</groupId>
- <artifactId>jersey-spring3</artifactId>
- <version>2.23.2</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ <version>${spring-boot.version}</version>
<exclusions>
<exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>*</artifactId>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.connectors</groupId>
- <artifactId>jersey-apache-connector</artifactId>
- <version>${jersey.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-client</artifactId>
- <version>${jersey.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-json-jettison</artifactId>
- <version>${jersey.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-security</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.media</groupId>
- <artifactId>jersey-media-json-jackson</artifactId>
- <version>${jersey.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-actuator</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-common</artifactId>
- <version>${jersey.version}</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-jetty</artifactId>
+ <version>${spring-boot.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-jersey</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-freemarker</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-autoconfigure</artifactId>
+ <version>${spring-boot.version}</version>
</dependency>
<dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-configuration-processor</artifactId>
+ <version>${spring-boot.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jersey.media</groupId>
+ <artifactId>jersey-media-json-jettison</artifactId>
+ <version>${jersey.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solr.version}</version>
@@ -267,6 +301,10 @@
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -303,53 +341,6 @@
<version>1.0.1.RELEASE</version>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-security</artifactId>
- <version>${jetty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- <version>${jetty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- <version>${jetty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlets</artifactId>
- <version>${jetty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>${jetty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <version>${jetty-version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-annotations</artifactId>
- <version>${jetty-version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.4</version>
@@ -386,11 +377,6 @@
<version>2.1.0</version>
</dependency>
<dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-solr</artifactId>
- <version>${spring-data-solr.version}</version>
- </dependency>
- <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
@@ -411,11 +397,6 @@
<version>${jjwt.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish.jersey.ext</groupId>
- <artifactId>jersey-bean-validation</artifactId>
- <version>2.25</version>
- </dependency>
- <dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>${sqlite.version}</version>
@@ -424,6 +405,17 @@
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-admin-manager</artifactId>
<version>1.3.1.RELEASE</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <artifactId>guava</artifactId>
+ <groupId>com.google.guava</groupId>
+ <version>20.0</version>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
index 186f98c..185e344 100644
--- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/InfraManager.java
@@ -18,192 +18,32 @@
*/
package org.apache.ambari.infra;
-import org.apache.ambari.infra.conf.InfraManagerConfig;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.DefaultParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.HttpConfiguration;
-import org.eclipse.jetty.server.HttpConnectionFactory;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.server.handler.ResourceHandler;
-import org.eclipse.jetty.servlet.DefaultServlet;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.resource.Resource;
-import org.eclipse.jetty.util.resource.ResourceCollection;
-import org.eclipse.jetty.webapp.WebAppContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.context.ContextLoaderListener;
-import org.springframework.web.context.request.RequestContextListener;
-import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
-
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import static org.apache.ambari.infra.common.InfraManagerConstants.DATA_FOLDER_LOCATION_PARAM;
-import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_DATA_FOLDER_LOCATION;
-import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_PORT;
-import static org.apache.ambari.infra.common.InfraManagerConstants.DEFAULT_PROTOCOL;
-import static org.apache.ambari.infra.common.InfraManagerConstants.INFRA_MANAGER_SESSION_ID;
-import static org.apache.ambari.infra.common.InfraManagerConstants.PROTOCOL_SSL;
-import static org.apache.ambari.infra.common.InfraManagerConstants.ROOT_CONTEXT;
-import static org.apache.ambari.infra.common.InfraManagerConstants.SESSION_TIMEOUT;
-import static org.apache.ambari.infra.common.InfraManagerConstants.WEB_RESOURCE_FOLDER;
-
+import org.springframework.boot.Banner;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration;
+import org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.system.ApplicationPidFileWriter;
+
+@SpringBootApplication(
+ scanBasePackages = {"org.apache.ambari.infra"},
+ exclude = {
+ RepositoryRestMvcAutoConfiguration.class,
+ WebMvcAutoConfiguration.class,
+ BatchAutoConfiguration.class,
+ SecurityAutoConfiguration.class
+ }
+)
public class InfraManager {
- private static final Logger LOG = LoggerFactory.getLogger(InfraManager.class);
-
public static void main(String[] args) {
- Options options = new Options();
- HelpFormatter helpFormatter = new HelpFormatter();
- helpFormatter.setDescPadding(10);
- helpFormatter.setWidth(200);
-
- final Option helpOption = Option.builder("h")
- .longOpt("help")
- .desc("Print commands")
- .build();
-
- final Option portOption = Option.builder("p")
- .longOpt("port")
- .desc("Infra Manager port")
- .numberOfArgs(1)
- .argName("port_number")
- .build();
-
- final Option dataFolderOption = Option.builder("df")
- .longOpt("data-folder")
- .desc("Infra Manager data folder location")
- .numberOfArgs(1)
- .argName("data_folder")
- .build();
-
- final Option protocolOption = Option.builder("t")
- .longOpt("tls-enabled")
- .desc("TLS enabled for Infra Manager")
- .build();
-
- options.addOption(helpOption);
- options.addOption(portOption);
- options.addOption(protocolOption);
- options.addOption(dataFolderOption);
-
- try {
- CommandLineParser cmdLineParser = new DefaultParser();
- CommandLine cli = cmdLineParser.parse(options, args);
- int port = cli.hasOption('p') ? Integer.parseInt(cli.getOptionValue('p')) : DEFAULT_PORT;
- String protocol = cli.hasOption("t") ? PROTOCOL_SSL : DEFAULT_PROTOCOL;
- String dataFolder = cli.hasOption("df") ? cli.getOptionValue("df"): DEFAULT_DATA_FOLDER_LOCATION;
-
- System.setProperty(DATA_FOLDER_LOCATION_PARAM, dataFolder); // be able to access it from jobs
-
- Server server = buildServer(port, protocol);
- HandlerList handlers = new HandlerList();
- handlers.addHandler(createSwaggerContext());
- handlers.addHandler(createBaseWebappContext(dataFolder));
-
- server.setHandler(handlers);
- server.start();
-
- LOG.debug("============================Server Dump=======================================");
- LOG.debug(server.dump());
- LOG.debug("==============================================================================");
- server.join();
- } catch (Exception e) {
- // TODO
- e.printStackTrace();
- }
- }
-
- private static Server buildServer(int port, String protocol) {
- Server server = new Server();
- HttpConfiguration httpConfiguration = new HttpConfiguration();
- httpConfiguration.setRequestHeaderSize(65535);
- // TODO: tls
- ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration));
- connector.setPort(port);
- server.setConnectors(new Connector[]{connector});
- URI infraManagerURI = URI.create(String.format("%s://0.0.0.0:%s", protocol, String.valueOf(port)));
- LOG.info("Starting infra manager URI=" + infraManagerURI);
- return server;
- }
-
- private static WebAppContext createBaseWebappContext(String dataFolder) throws MalformedURLException {
- URI webResourceBase = findWebResourceBase();
- WebAppContext context = new WebAppContext();
- ResourceCollection resources = new ResourceCollection(Resource.newResource(webResourceBase));
- context.setBaseResource(resources);
- context.setContextPath(ROOT_CONTEXT);
- context.setParentLoaderPriority(true);
-
- // Data folder servlet
- ServletHolder dataServlet = new ServletHolder("static-data", DefaultServlet.class);
- dataServlet.setInitParameter("dirAllowed","true");
- dataServlet.setInitParameter("pathInfoOnly","true");
- dataServlet.setInitParameter("resourceBase", dataFolder);
-
- context.addServlet(dataServlet,"/files/*");
-
- // Configure Spring
- context.addEventListener(new ContextLoaderListener());
- context.addEventListener(new RequestContextListener());
- // TODO: security, add: context.addFilter(new FilterHolder(new DelegatingFilterProxy("springSecurityFilterChain")), "/*", EnumSet.allOf(DispatcherType.class));
- context.setInitParameter("contextClass", AnnotationConfigWebApplicationContext.class.getName());
- context.setInitParameter("contextConfigLocation", InfraManagerConfig.class.getName());
-
- // Configure Jersey
- ServletHolder jerseyServlet = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/api/v1/*");
- jerseyServlet.setInitOrder(1);
- jerseyServlet.setInitParameter("jersey.config.server.provider.packages","org.apache.ambari.infra.rest,io.swagger.jaxrs.listing");
-
- context.getSessionHandler().getSessionManager().setMaxInactiveInterval(SESSION_TIMEOUT);
- context.getSessionHandler().getSessionManager().getSessionCookieConfig().setName(INFRA_MANAGER_SESSION_ID);
-
- return context;
- }
-
- private static URI findWebResourceBase() {
- URL fileCompleteUrl = Thread.currentThread().getContextClassLoader().getResource(WEB_RESOURCE_FOLDER);
- String errorMessage = "Web Resource Folder " + WEB_RESOURCE_FOLDER + " not found in classpath";
- if (fileCompleteUrl != null) {
- try {
- return fileCompleteUrl.toURI().normalize();
- } catch (URISyntaxException e) {
- LOG.error(errorMessage, e);
- System.exit(1);
- }
- } else {
- LOG.error(errorMessage);
- System.exit(1);
- }
- throw new IllegalStateException(errorMessage);
- }
-
- private static ServletContextHandler createSwaggerContext() throws URISyntaxException {
- ResourceHandler resourceHandler = new ResourceHandler();
- ResourceCollection resources = new ResourceCollection(new String[] {
- InfraManager.class.getClassLoader()
- .getResource("META-INF/resources/webjars/swagger-ui/2.1.0")
- .toURI().toString(),
- InfraManager.class.getClassLoader()
- .getResource("swagger")
- .toURI().toString()
- });
- resourceHandler.setBaseResource(resources);
- resourceHandler.setWelcomeFiles(new String[]{"swagger.html"}); // rewrite index.html from swagger-ui webjar
- ServletContextHandler context = new ServletContextHandler();
- context.setContextPath("/docs/");
- context.setHandler(resourceHandler);
- return context;
+ String pidFile = System.getenv("PID_FILE") == null ? "infra-manager.pid" : System.getenv("PID_FILE");
+ new SpringApplicationBuilder(InfraManager.class)
+ .bannerMode(Banner.Mode.OFF)
+ .listeners(new ApplicationPidFileWriter(pidFile))
+ .web(true)
+ .run(args);
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
deleted file mode 100644
index 105f20e..0000000
--- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/common/InfraManagerConstants.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-package org.apache.ambari.infra.common;
-
-public final class InfraManagerConstants {
- public static final int DEFAULT_PORT = 61890;
- public static final String DEFAULT_PROTOCOL = "http";
- public static final String INFRA_MANAGER_SESSION_ID = "INFRA_MANAGER_SESSIONID";
- public static final String PROTOCOL_SSL = "https";
- public static final String ROOT_CONTEXT = "/";
- public static final String WEB_RESOURCE_FOLDER = "webapp";
- public static final String DEFAULT_DATA_FOLDER_LOCATION = "/opt/ambari-infra-manager/data";
- public static final String DATA_FOLDER_LOCATION_PARAM = "dataFolderLocation";
- public static final Integer SESSION_TIMEOUT = 60 * 30;
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerDataConfig.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerDataConfig.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerDataConfig.java
new file mode 100644
index 0000000..b5b215e
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerDataConfig.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.conf;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class InfraManagerDataConfig {
+
+ @Value("${infra-manager.server.data.folder:/opt/ambari-infra-manager/data}")
+ private String dataFolder;
+
+ public String getDataFolder() {
+ return dataFolder;
+ }
+
+ public void setDataFolder(String dataFolder) {
+ this.dataFolder = dataFolder;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java
new file mode 100644
index 0000000..3a4c00f
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerJerseyResourceConfig.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.conf;
+
+import org.apache.ambari.infra.rest.JobResource;
+import org.glassfish.jersey.jackson.JacksonFeature;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.servlet.ServletProperties;
+
+import javax.ws.rs.ApplicationPath;
+
+@ApplicationPath("/api/v1")
+public class InfraManagerJerseyResourceConfig extends ResourceConfig {
+
+ public InfraManagerJerseyResourceConfig() {
+ packages(JobResource.class.getPackage().getName());
+ register(JacksonFeature.class);
+ property(ServletProperties.FILTER_FORWARD_ON_404, true);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java
new file mode 100644
index 0000000..06aea79
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/InfraManagerServletConfig.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.conf;
+
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.servlet.DefaultServlet;
+import org.glassfish.jersey.servlet.ServletContainer;
+import org.glassfish.jersey.servlet.ServletProperties;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
+import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer;
+import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.inject.Inject;
+
+@Configuration
+public class InfraManagerServletConfig {
+
+ private static final Integer SESSION_TIMEOUT = 60 * 30;
+ private static final String INFRA_MANAGER_SESSIONID = "INFRAMANAGER_SESSIONID";
+ private static final String INFRA_MANAGER_APPLICATION_NAME = "infra-manager";
+
+ @Value("${infra-manager.server.port:61890}")
+ private int port;
+
+ @Inject
+ private ServerProperties serverProperties;
+
+ @Inject
+ private InfraManagerDataConfig infraManagerDataConfig;
+
+
+ @Bean
+ public ServletRegistrationBean jerseyServlet() {
+ ServletRegistrationBean jerseyServletBean = new ServletRegistrationBean(new ServletContainer(), "/api/v1/*");
+ jerseyServletBean.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, InfraManagerJerseyResourceConfig.class.getName());
+ return jerseyServletBean;
+ }
+
+ @Bean
+ public ServletRegistrationBean dataServlet() {
+ ServletRegistrationBean dataServletBean = new ServletRegistrationBean(new DefaultServlet(), "/files/*");
+ dataServletBean.addInitParameter("dirAllowed","true");
+ dataServletBean.addInitParameter("pathInfoOnly","true");
+ dataServletBean.addInitParameter("resourceBase", infraManagerDataConfig.getDataFolder());
+ return dataServletBean;
+ }
+
+ @Bean
+ public EmbeddedServletContainerFactory containerFactory() {
+ final JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory = new JettyEmbeddedServletContainerFactory() {
+ @Override
+ protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(Server server) {
+ return new JettyEmbeddedServletContainer(server);
+ }
+ };
+ jettyEmbeddedServletContainerFactory.setSessionTimeout(SESSION_TIMEOUT);
+ serverProperties.getSession().getCookie().setName(INFRA_MANAGER_SESSIONID);
+ serverProperties.setDisplayName(INFRA_MANAGER_APPLICATION_NAME);
+ jettyEmbeddedServletContainerFactory.setPort(port);
+ return jettyEmbeddedServletContainerFactory;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/StaticResourceConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/StaticResourceConfiguration.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/StaticResourceConfiguration.java
new file mode 100644
index 0000000..f0cd3cf
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/conf/StaticResourceConfiguration.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.conf;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+@EnableWebMvc
+@Configuration
+public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
+
+ private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
+ "classpath:/static/", "classpath:/swagger/","classpath:META-INF/resources/webjars/"
+ };
+
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("/**")
+ .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
+ }
+
+ @Override
+ public void addViewControllers(ViewControllerRegistry registry) {
+ registry.addViewController("/").setViewName(
+ "forward:/index.html");
+ registry.addViewController("/docs").setViewName(
+ "forward:/swagger.html");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java
new file mode 100644
index 0000000..e536d9a
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/doc/InfraManagerApiDocStorage.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.doc;
+
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.models.Swagger;
+import io.swagger.util.Yaml;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Named
+public class InfraManagerApiDocStorage {
+
+ private static final Logger LOG = LoggerFactory.getLogger(InfraManagerApiDocStorage.class);
+
+ private final Map<String, Object> swaggerMap = new ConcurrentHashMap<>();
+
+ @Inject
+ private BeanConfig beanConfig;
+
+ @PostConstruct
+ private void postConstruct() {
+ Thread loadApiDocThread = new Thread("load_swagger_api_doc") {
+ @Override
+ public void run() {
+ LOG.info("Start thread to scan REST API doc from endpoints.");
+ Swagger swagger = beanConfig.getSwagger();
+ beanConfig.configure(swagger);
+ beanConfig.scanAndRead();
+ setSwagger(swagger);
+ try {
+ if (swagger != null) {
+ String yaml = Yaml.mapper().writeValueAsString(swagger);
+ StringBuilder b = new StringBuilder();
+ String[] parts = yaml.split("\n");
+ for (String part : parts) {
+ b.append(part);
+ b.append("\n");
+ }
+ setSwaggerYaml(b.toString());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ LOG.info("Scanning REST API endpoints and generating docs has been successful.");
+ }
+ };
+ loadApiDocThread.setDaemon(true);
+ loadApiDocThread.start();
+ }
+
+ public Swagger getSwagger() {
+ return (Swagger) swaggerMap.get("swaggerObject");
+ }
+
+ public void setSwagger(final Swagger swagger) {
+ swaggerMap.put("swaggerObject", swagger);
+ }
+
+ public void setSwaggerYaml(final String swaggerYaml) {
+ swaggerMap.put("swaggerYaml", swaggerYaml);
+ }
+
+ public String getSwaggerYaml() {
+ return (String) swaggerMap.get("swaggerYaml");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java
index 444f0d1..89ad013 100644
--- a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/job/dummy/DummyItemWriter.java
@@ -18,12 +18,14 @@
*/
package org.apache.ambari.infra.job.dummy;
+import org.apache.ambari.infra.conf.InfraManagerDataConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.annotation.BeforeStep;
import org.springframework.batch.item.ItemWriter;
+import javax.inject.Inject;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -31,27 +33,28 @@ import java.nio.file.Paths;
import java.util.Date;
import java.util.List;
-import static org.apache.ambari.infra.common.InfraManagerConstants.DATA_FOLDER_LOCATION_PARAM;
-
public class DummyItemWriter implements ItemWriter<String> {
private static final Logger LOG = LoggerFactory.getLogger(DummyItemWriter.class);
private StepExecution stepExecution;
+ @Inject
+ private InfraManagerDataConfig infraManagerDataConfig;
+
@Override
public void write(List<? extends String> values) throws Exception {
LOG.info("DummyItem writer called (values: {})... wait 1 seconds", values.toString());
Thread.sleep(1000);
- String outputDirectoryLocation = String.format("%s%s%s%s", System.getProperty(DATA_FOLDER_LOCATION_PARAM), File.separator, "dummyOutput-", new Date().getTime());
+ String outputDirectoryLocation = String.format("%s%s%s%s", infraManagerDataConfig.getDataFolder(), File.separator, "dummyOutput-", new Date().getTime());
Path pathToDirectory = Paths.get(outputDirectoryLocation);
Path pathToFile = Paths.get(String.format("%s%s%s", outputDirectoryLocation, File.separator, "dummyOutput.txt"));
Files.createDirectories(pathToDirectory);
LOG.info("Write location to step execution context...");
- stepExecution.getExecutionContext().put("stepOutputLocation", pathToFile.getFileName().toAbsolutePath().toString());
+ stepExecution.getExecutionContext().put("stepOutputLocation", pathToFile.toAbsolutePath().toString());
LOG.info("Write location to job execution context...");
- stepExecution.getJobExecution().getExecutionContext().put("jobOutputLocation", pathToFile.getFileName().toAbsolutePath().toString());
- LOG.info("Write to file: {}", pathToFile.getFileName().toAbsolutePath().toString());
+ stepExecution.getJobExecution().getExecutionContext().put("jobOutputLocation", pathToFile.toAbsolutePath().toString());
+ LOG.info("Write to file: {}", pathToFile.toAbsolutePath());
Files.write(pathToFile, values.toString().getBytes());
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/ApiDocResource.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/ApiDocResource.java b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/ApiDocResource.java
new file mode 100644
index 0000000..18dfdd9
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/java/org/apache/ambari/infra/rest/ApiDocResource.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.infra.rest;
+
+import io.swagger.annotations.ApiOperation;
+import org.apache.ambari.infra.doc.InfraManagerApiDocStorage;
+import org.springframework.context.annotation.Scope;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Path("swagger.{type:json|yaml}")
+@Named
+@Scope("request")
+public class ApiDocResource {
+
+ @Inject
+ private InfraManagerApiDocStorage infraManagerApiDocStorage;
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON, "application/yaml"})
+ @ApiOperation(value = "The swagger definition in either JSON or YAML", hidden = true)
+ public Response swaggerDefinitionResponse(@PathParam("type") String type) {
+ Response response = Response.status(404).build();
+ if (infraManagerApiDocStorage.getSwagger() != null) {
+ if ("yaml".equalsIgnoreCase(type)) {
+ response = Response.ok().entity(infraManagerApiDocStorage.getSwaggerYaml()).type("application/yaml").build();
+ } else {
+ response = Response.ok().entity(infraManagerApiDocStorage.getSwagger()).build();
+ }
+ }
+ return response;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties
index fbeac78..8162376 100644
--- a/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties
+++ b/ambari-infra/ambari-infra-manager/src/main/resources/infra-manager.properties
@@ -15,4 +15,6 @@
infra-manager.batch.db.file=job-repository.db
infra-manager.batch.db.init=true
infra-manager.batch.db.username=admin
-infra-manager.batch.db.password=admin
\ No newline at end of file
+infra-manager.batch.db.password=admin
+management.security.enabled=false
+management.health.solr.enabled=false
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/log4j.xml b/ambari-infra/ambari-infra-manager/src/main/resources/log4j.xml
deleted file mode 100644
index 0450454..0000000
--- a/ambari-infra/ambari-infra-manager/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="console" class="org.apache.log4j.ConsoleAppender">
- <param name="Target" value="System.out" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" />
- </layout>
- </appender>
-
- <root>
- <level value="INFO" />
- <appender-ref ref="console" />
- </root>
-</log4j:configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/log4j2.xml b/ambari-infra/ambari-infra-manager/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..ad1adcd
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/resources/log4j2.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<Configuration monitorinterval="30" status="info" strict="true">
+ <Properties>
+ <Property name="logging.file">out/infra-manager.log</Property>
+ </Properties>
+ <Appenders>
+ <Appender type="Console" name="Console">
+ <Layout type="PatternLayout" pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n" />
+ </Appender>
+ <RollingFile name="File" fileName="${logging.file}" filePattern="${logging.file}-%i-%d{yyyy-MM-dd}">
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n" />
+ <Policies>
+ <TimeBasedTriggeringPolicy />
+ <SizeBasedTriggeringPolicy size="10 MB"/>
+ </Policies>
+ <DefaultRolloverStrategy max="10"/>
+ </RollingFile>
+ </Appenders>
+ <Loggers>
+ <Root level="info">
+ <AppenderRef ref="File" />
+ <AppenderRef ref="Console" />
+ </Root>
+ </Loggers>
+</Configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/static/index.html
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/static/index.html b/ambari-infra/ambari-infra-manager/src/main/resources/static/index.html
new file mode 100644
index 0000000..3e64867
--- /dev/null
+++ b/ambari-infra/ambari-infra-manager/src/main/resources/static/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<html>
+ <head>
+ </head>
+ <body>
+ <h1>Welcome!</h1>
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/swagger/swagger.html
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/swagger/swagger.html b/ambari-infra/ambari-infra-manager/src/main/resources/swagger/swagger.html
index 8580e1a..52ebf61 100644
--- a/ambari-infra/ambari-infra-manager/src/main/resources/swagger/swagger.html
+++ b/ambari-infra/ambari-infra-manager/src/main/resources/swagger/swagger.html
@@ -18,24 +18,24 @@
<html>
<head>
<title>Infra Manager REST API</title>
- <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32" />
- <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16" />
- <link href='css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
- <link href='css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
- <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
- <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
- <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
- <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
- <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
- <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
- <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
- <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
- <script src='lib/underscore-min.js' type='text/javascript'></script>
- <script src='lib/backbone-min.js' type='text/javascript'></script>
- <script src='swagger-ui.js' type='text/javascript'></script>
- <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
- <script src='lib/marked.js' type='text/javascript'></script>
- <script src='lib/swagger-oauth.js' type='text/javascript'></script>
+ <link rel="icon" type="image/png" href="swagger-ui/2.1.0/images/favicon-32x32.png" sizes="32x32" />
+ <link rel="icon" type="image/png" href="swagger-ui/2.1.0/images/favicon-16x16.png" sizes="16x16" />
+ <link href='swagger-ui/2.1.0/css/typography.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='swagger-ui/2.1.0/css/reset.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='swagger-ui/2.1.0/css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='swagger-ui/2.1.0/css/reset.css' media='print' rel='stylesheet' type='text/css'/>
+ <link href='swagger-ui/2.1.0/css/print.css' media='print' rel='stylesheet' type='text/css'/>
+ <script src='swagger-ui/2.1.0/lib/jquery-1.8.0.min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/jquery.slideto.min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/jquery.wiggle.min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/handlebars-2.0.0.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/underscore-min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/backbone-min.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/swagger-ui.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/highlight.7.3.pack.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/marked.js' type='text/javascript'></script>
+ <script src='swagger-ui/2.1.0/lib/swagger-oauth.js' type='text/javascript'></script>
<script type="text/javascript">
$(function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/6633a7bd/ambari-infra/ambari-infra-manager/src/main/resources/webapp/index.html
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-manager/src/main/resources/webapp/index.html b/ambari-infra/ambari-infra-manager/src/main/resources/webapp/index.html
deleted file mode 100644
index 3e64867..0000000
--- a/ambari-infra/ambari-infra-manager/src/main/resources/webapp/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-<html>
- <head>
- </head>
- <body>
- <h1>Welcome!</h1>
- </body>
-</html>
\ No newline at end of file
[24/50] [abbrv] ambari git commit: AMBARI-22037 Log Search UI: host
filter should be performed using hostList parameter. (ababiichuk)
Posted by jl...@apache.org.
AMBARI-22037 Log Search UI: host filter should be performed using hostList parameter. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d9662987
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d9662987
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d9662987
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: d9662987483c8e0d347c59f02e8e459427a90749
Parents: d221ab7
Author: ababiichuk <ab...@hortonworks.com>
Authored: Fri Sep 22 12:00:33 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Fri Sep 22 12:00:33 2017 +0300
----------------------------------------------------------------------
.../src/app/classes/queries/audit-logs-query-params.class.ts | 2 --
.../queries/service-logs-histogram-query-params.class.ts | 1 -
.../src/app/classes/queries/service-logs-query-params.class.ts | 1 -
.../ambari-logsearch-web/src/app/services/filtering.service.ts | 4 ----
.../src/app/services/logs-container.service.ts | 5 ++---
.../src/app/services/mock-api-data.service.ts | 2 +-
ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json | 1 -
7 files changed, 3 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
index ef8cf28..d179376 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/audit-logs-query-params.class.ts
@@ -39,8 +39,6 @@ export class AuditLogsQueryParams extends QueryParams {
start_time?: string;
end_time?: string;
clusters?: string;
- iMessage?: string;
- eMessage?: string;
mustBe?: string;
mustNot?: string;
includeQuery?: string;
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-histogram-query-params.class.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-histogram-query-params.class.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-histogram-query-params.class.ts
index 572af03..2e2113f 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-histogram-query-params.class.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-histogram-query-params.class.ts
@@ -64,7 +64,6 @@ export class ServiceLogsHistogramQueryParams extends QueryParams {
to: string;
unit?: string;
clusters?: string;
- iMessage?: string;
level?: string;
includeQuery?: string;
excludeQuery?: string;
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-query-params.class.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-query-params.class.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-query-params.class.ts
index c88ec46..864b689 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-query-params.class.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/queries/service-logs-query-params.class.ts
@@ -20,7 +20,6 @@ import {AuditLogsQueryParams} from '@app/classes/queries/audit-logs-query-params
export class ServiceLogsQueryParams extends AuditLogsQueryParams {
level?: string;
- host_name?: string;
file_name?: string;
bundle_id?: string;
hostList?: string;
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
index 718149e..627dc27 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
@@ -66,10 +66,6 @@ export class FilteringService {
options: [],
defaultValue: ''
},
- text: {
- label: 'filter.message',
- defaultValue: ''
- },
timeRange: {
options: [
[
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
index a90d099..26d1b6b 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
@@ -43,11 +43,10 @@ export class LogsContainerService {
private readonly listFilters = {
clusters: ['clusters'],
- text: ['iMessage'],
timeRange: ['end_time', 'start_time'],
components: ['mustBe'],
levels: ['level'],
- hosts: ['host_name'],
+ hosts: ['hostList'],
sorting: ['sortType', 'sortBy'],
pageSize: ['pageSize'],
page: ['page'],
@@ -56,10 +55,10 @@ export class LogsContainerService {
private readonly histogramFilters = {
clusters: ['clusters'],
- text: ['iMessage'],
timeRange: ['to', 'from'],
components: ['mustBe'],
levels: ['level'],
+ hosts: ['hostList'],
query: ['includeQuery', 'excludeQuery']
};
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
index ec89d9f..937fae1 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/mock-api-data.service.ts
@@ -60,7 +60,7 @@ export class mockApiDataService implements InMemoryDbService {
key: 'logtime',
filterFunction: (value, filterValue) => value < moment(filterValue).valueOf()
},
- host_name: {
+ hostList: {
key: 'host',
isValuesList: true
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d9662987/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
index e3f4c69..1235a80 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
+++ b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
@@ -18,7 +18,6 @@
"filter.all": "All",
"filter.clusters": "Clusters",
- "filter.message": "Message:",
"filter.components": "Components",
"filter.levels": "Levels",
"filter.capture": "Capture",
[44/50] [abbrv] ambari git commit: AMBARI-22045. Infra Solr client
cleanup: make infra-solr-client script usable with symlinks (oleewere)
Posted by jl...@apache.org.
AMBARI-22045. Infra Solr client cleanup: make infra-solr-client script usable with symlinks (oleewere)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/520d8fcc
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/520d8fcc
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/520d8fcc
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 520d8fcce38e9c2edf8d972625d5a9aa4663c04b
Parents: 653d2f2
Author: Oliver Szabo <ol...@gmail.com>
Authored: Sun Sep 24 01:08:11 2017 +0200
Committer: Oliver Szabo <ol...@gmail.com>
Committed: Mon Sep 25 20:18:02 2017 +0200
----------------------------------------------------------------------
.../apache/ambari/infra/solr/AmbariSolrCloudCLI.java | 12 ++++++------
.../src/main/resources/log4j.properties | 6 +++++-
.../src/main/resources/solrCloudCli.sh | 8 +++++++-
.../src/main/resources/solrIndexHelper.sh | 14 ++++++++++----
.../0.1.0/properties/solr-client-log4j.properties.j2 | 4 ++++
5 files changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/520d8fcc/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java b/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java
index 70bc232..95708d7 100644
--- a/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java
+++ b/ambari-infra/ambari-infra-solr-client/src/main/java/org/apache/ambari/infra/solr/AmbariSolrCloudCLI.java
@@ -66,7 +66,7 @@ public class AmbariSolrCloudCLI {
+ "\n./solrCloudCli.sh --secure-znode -z host1:2181,host2:2181 -zn /ambari-solr -su logsearch,atlas,ranger --jaas-file /etc/myconf/jaas_file"
+ "\n./solrCloudCli.sh --unsecure-znode -z host1:2181,host2:2181 -zn /ambari-solr --jaas-file /etc/myconf/jaas_file"
+ "\n./solrCloudCli.sh --secure-solr-znode -z host1:2181,host2:2181 -zn /ambari-solr -su logsearch,atlas,ranger --jaas-file /etc/myconf/jaas_file"
- + "\n./solrCloudCli.sh --setup-kerberos-plugin -z host1:2181,host2:2181 -zn /ambari-solr --security-json-location /etc/infra-solr/conf/security.json\n";
+ + "\n./solrCloudCli.sh --setup-kerberos-plugin -z host1:2181,host2:2181 -zn /ambari-solr --security-json-location /etc/infra-solr/conf/security.json\n ";
public static void main(String[] args) {
Options options = new Options();
@@ -126,22 +126,22 @@ public class AmbariSolrCloudCLI {
final Option secureSolrZnodeOption = Option.builder("ssz")
.longOpt(SECURE_SOLR_ZNODE_COMMAND)
- .desc("Set acls for solr znode")
+ .desc("Set acls for solr znode (command)")
.build();
final Option secureZnodeOption = Option.builder("sz")
.longOpt(SECURE_ZNODE_COMMAND)
- .desc("Set acls for znode")
+ .desc("Set acls for znode (command)")
.build();
final Option unsecureZnodeOption = Option.builder("uz")
.longOpt(UNSECURE_ZNODE_COMMAND)
- .desc("Disable security for znode")
+ .desc("Disable security for znode (command)")
.build();
final Option removeAdminHandlerOption = Option.builder("rah")
.longOpt(REMOVE_ADMIN_HANDLERS)
- .desc("Remove AdminHandlers request handler from solrconfig.xml")
+ .desc("Remove AdminHandlers request handler from solrconfig.xml (command)")
.build();
final Option shardNameOption = Option.builder("sn")
@@ -428,7 +428,7 @@ public class AmbariSolrCloudCLI {
} else {
List<String> commands = Arrays.asList(CREATE_COLLECTION_COMMAND, CREATE_SHARD_COMMAND, UPLOAD_CONFIG_COMMAND,
DOWNLOAD_CONFIG_COMMAND, CONFIG_CHECK_COMMAND, SET_CLUSTER_PROP, CREATE_ZNODE, SECURE_ZNODE_COMMAND, UNSECURE_ZNODE_COMMAND,
- SECURE_SOLR_ZNODE_COMMAND, CHECK_ZNODE, SETUP_KERBEROS_PLUGIN);
+ SECURE_SOLR_ZNODE_COMMAND, CHECK_ZNODE, SETUP_KERBEROS_PLUGIN, REMOVE_ADMIN_HANDLERS);
helpFormatter.printHelp(CMD_LINE_SYNTAX, options);
exit(1, String.format("One of the supported commands is required (%s)", StringUtils.join(commands, "|")));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/520d8fcc/ambari-infra/ambari-infra-solr-client/src/main/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-solr-client/src/main/resources/log4j.properties b/ambari-infra/ambari-infra-solr-client/src/main/resources/log4j.properties
index e8dca12..4779596 100644
--- a/ambari-infra/ambari-infra-solr-client/src/main/resources/log4j.properties
+++ b/ambari-infra/ambari-infra-solr-client/src/main/resources/log4j.properties
@@ -23,9 +23,13 @@ log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
+log4j.appender.stdout.filter.lvlRangeFilter=org.apache.log4j.varia.LevelRangeFilter
+log4j.appender.stdout.filter.lvlRangeFilter.LevelMax=WARN
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold=ERROR
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
-log4j.appender.stderr.layout.ConversionPattern=%m%n
\ No newline at end of file
+log4j.appender.stderr.layout.ConversionPattern=%m%n
+log4j.appender.stderr.filter.lvlRangeFilter=org.apache.log4j.varia.LevelRangeFilter
+log4j.appender.stderr.filter.lvlRangeFilter.LevelMin=ERROR
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/520d8fcc/ambari-infra/ambari-infra-solr-client/src/main/resources/solrCloudCli.sh
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-solr-client/src/main/resources/solrCloudCli.sh b/ambari-infra/ambari-infra-solr-client/src/main/resources/solrCloudCli.sh
index 7bfa864..ac7d59f 100644
--- a/ambari-infra/ambari-infra-solr-client/src/main/resources/solrCloudCli.sh
+++ b/ambari-infra/ambari-infra-solr-client/src/main/resources/solrCloudCli.sh
@@ -16,5 +16,11 @@
JVM="java"
sdir="`dirname \"$0\"`"
+ldir="`dirname "$(readlink -f "$0")"`"
-PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$sdir:$sdir/libs/*" org.apache.ambari.infra.solr.AmbariSolrCloudCLI ${1+"$@"}
\ No newline at end of file
+DIR="$sdir"
+if [ "$sdir" != "$ldir" ]; then
+ DIR="$ldir"
+fi
+
+PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR:$DIR/libs/*" org.apache.ambari.infra.solr.AmbariSolrCloudCLI ${1+"$@"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/520d8fcc/ambari-infra/ambari-infra-solr-client/src/main/resources/solrIndexHelper.sh
----------------------------------------------------------------------
diff --git a/ambari-infra/ambari-infra-solr-client/src/main/resources/solrIndexHelper.sh b/ambari-infra/ambari-infra-solr-client/src/main/resources/solrIndexHelper.sh
index 12e6a77..1d219d6 100755
--- a/ambari-infra/ambari-infra-solr-client/src/main/resources/solrIndexHelper.sh
+++ b/ambari-infra/ambari-infra-solr-client/src/main/resources/solrIndexHelper.sh
@@ -16,6 +16,12 @@
JVM="java"
sdir="`dirname \"$0\"`"
+ldir="`dirname "$(readlink -f "$0")"`"
+
+DIR="$sdir"
+if [ "$sdir" != "$ldir" ]; then
+ DIR="$ldir"
+fi
: ${JAVA_HOME:?"Please set the JAVA_HOME for lucene index migration!"}
function print_help() {
@@ -48,7 +54,7 @@ function upgrade_core() {
for coll in $SOLR_CORE_FILTER_ARR; do
if [[ "$1" == *"$coll"* ]]; then
echo "Core '$1' dir name contains $coll (core filter)'";
- version=$(PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$sdir/libs/lucene-core-6.6.0.jar:$sdir/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.CheckIndex -fast $1|grep " version="|sed -e 's/.*=//g'|head -1)
+ version=$(PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/libs/lucene-core-6.6.0.jar:$DIR/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.CheckIndex -fast $1|grep " version="|sed -e 's/.*=//g'|head -1)
if [ -z $version ] ; then
echo "Core '$1' - Empty index?"
return
@@ -58,7 +64,7 @@ function upgrade_core() {
echo "Core '$1' - Already on version $version, not upgrading. Use -f or --force option to run upgrade anyway."
else
echo "Core '$1' - Index version is $version, upgrading ..."
- PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$sdir/libs/lucene-core-6.6.0.jar:$sdir/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.IndexUpgrader -delete-prior-commits $1
+ PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/libs/lucene-core-6.6.0.jar:$DIR/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.IndexUpgrader -delete-prior-commits $1
echo "Upgrading core '$1' has finished"
fi
fi
@@ -125,11 +131,11 @@ function upgrade_index() {
function upgrade_index_tool() {
# see: https://cwiki.apache.org/confluence/display/solr/IndexUpgrader+Tool
- PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$sdir/libs/lucene-core-6.6.0.jar:$sdir/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.IndexUpgrader ${@}
+ PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/libs/lucene-core-6.6.0.jar:$DIR/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.IndexUpgrader ${@}
}
function check_index_tool() {
- PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$sdir/libs/lucene-core-6.6.0.jar:$sdir/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.CheckIndex ${@}
+ PATH=$JAVA_HOME/bin:$PATH $JVM -classpath "$DIR/libs/lucene-core-6.6.0.jar:$DIR/libs/lucene-backward-codecs-6.6.0.jar" org.apache.lucene.index.CheckIndex ${@}
}
function main() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/520d8fcc/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/solr-client-log4j.properties.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/solr-client-log4j.properties.j2 b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/solr-client-log4j.properties.j2
index 0d0adc3..df77961 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/solr-client-log4j.properties.j2
+++ b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/solr-client-log4j.properties.j2
@@ -30,9 +30,13 @@ log4j.appender.stdout.Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
+log4j.appender.stdout.filter.lvlRangeFilter=org.apache.log4j.varia.LevelRangeFilter
+log4j.appender.stdout.filter.lvlRangeFilter.LevelMax=WARN
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold=ERROR
log4j.appender.stderr.Target=System.err
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern=%m%n
+log4j.appender.stderr.filter.lvlRangeFilter=org.apache.log4j.varia.LevelRangeFilter
+log4j.appender.stderr.filter.lvlRangeFilter.LevelMin=ERROR
[29/50] [abbrv] ambari git commit: AMBARI-22038 Log Search UI:
implement application of selected text to service logs filters. (ababiichuk)
Posted by jl...@apache.org.
AMBARI-22038 Log Search UI: implement application of selected text to service logs filters. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f067ec8c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f067ec8c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f067ec8c
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: f067ec8c3aaeb596760db4c2bcb98ce81f75769a
Parents: eead09b
Author: ababiichuk <ab...@hortonworks.com>
Authored: Fri Sep 22 13:19:37 2017 +0300
Committer: ababiichuk <ab...@hortonworks.com>
Committed: Fri Sep 22 15:20:02 2017 +0300
----------------------------------------------------------------------
.../ambari-logsearch-web/src/app/app.module.ts | 2 +-
.../src/app/classes/list-item.class.ts | 25 ++++++++
.../dropdown-button.component.ts | 5 +-
.../dropdown-list/dropdown-list.component.html | 5 +-
.../dropdown-list/dropdown-list.component.ts | 7 ++-
.../filter-button/filter-button.component.ts | 3 +-
.../filters-panel/filters-panel.component.html | 3 +-
.../filters-panel/filters-panel.component.ts | 10 +++-
.../logs-list/logs-list.component.html | 7 ++-
.../logs-list/logs-list.component.less | 4 ++
.../components/logs-list/logs-list.component.ts | 61 +++++++++++++++++++-
.../menu-button/menu-button.component.spec.ts | 19 +++++-
.../menu-button/menu-button.component.ts | 5 +-
.../search-box/search-box.component.ts | 35 ++++++++---
.../src/app/services/filtering.service.ts | 5 +-
.../src/assets/i18n/en.json | 4 +-
.../ambari-logsearch-web/src/polyfills.ts | 2 +-
17 files changed, 173 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
index acf1b9f..fca68b5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/app.module.ts
@@ -84,7 +84,7 @@ export function HttpLoaderFactory(http: Http) {
return new TranslateHttpLoader(http, 'resources/assets/i18n/', '.json?static=true');
}
-export function getXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSRFStrategy, options: ResponseOptions): any {
+export function getXHRBackend(injector: Injector, browser: BrowserXhr, xsrf: XSRFStrategy, options: ResponseOptions): XHRBackend | InMemoryBackendService {
if (environment.production) {
return new XHRBackend(browser, options, xsrf);
} else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/classes/list-item.class.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/classes/list-item.class.ts b/ambari-logsearch/ambari-logsearch-web/src/app/classes/list-item.class.ts
new file mode 100644
index 0000000..adb023b
--- /dev/null
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/classes/list-item.class.ts
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+export interface ListItem {
+ id?: string;
+ label?: string;
+ value: any;
+ iconClass?: string;
+ isChecked?: boolean;
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
index 42b9451..43d79f8 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-button/dropdown-button.component.ts
@@ -17,6 +17,7 @@
*/
import {Component, OnInit, Input} from '@angular/core';
+import {ListItem} from '@app/classes/list-item.class';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {UtilsService} from '@app/services/utils.service';
@@ -47,7 +48,7 @@ export class DropdownButtonComponent implements OnInit {
showSelectedValue: boolean = true;
@Input()
- options?: any[];
+ options?: ListItem[];
@Input()
defaultValue?: string;
@@ -82,7 +83,7 @@ export class DropdownButtonComponent implements OnInit {
this.selectedValue = value;
}
- updateValue(eventOptions: any): void {
+ updateValue(eventOptions: ListItem): void {
const value = eventOptions && eventOptions.value,
action = this.action && this.actions[this.action];
if (this.isMultipleChoice) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.html
index 1baebed..316d3f9 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.html
@@ -19,12 +19,15 @@
<label class="list-item-label" *ngIf="isMultipleChoice">
<input type="checkbox" [attr.id]="item.id || item.value" [attr.checked]="item.isChecked ? 'checked' : null"
(change)="changeSelectedItem({value: item.value, isChecked: $event.currentTarget.checked})">
- <label [attr.for]="item.id || item.value" class="label-container">{{item.label | translate}}
+ <label [attr.for]="item.id || item.value" class="label-container">
+ <span *ngIf="item.iconClass" [ngClass]="item.iconClass"></span>
+ {{item.label | translate}}
<div #additionalComponent></div>
</label>
</label>
<span class="list-item-label label-container" *ngIf="!isMultipleChoice"
(click)="changeSelectedItem({value: item.value, label: item.label})">
+ <span *ngIf="item.iconClass" [ngClass]="item.iconClass"></span>
{{item.label | translate}}
<div #additionalComponent></div>
</span>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
index 3de664e..82656cf 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/dropdown-list/dropdown-list.component.ts
@@ -17,6 +17,7 @@
*/
import {Component, AfterViewInit, Input, Output, EventEmitter, ViewChildren, ViewContainerRef, QueryList} from '@angular/core';
+import {ListItem} from '@app/classes/list-item.class';
import {ComponentGeneratorService} from '@app/services/component-generator.service';
@Component({
@@ -37,7 +38,7 @@ export class DropdownListComponent implements AfterViewInit {
}
@Input()
- items: any[];
+ items: ListItem[];
@Input()
defaultAction: Function;
@@ -49,14 +50,14 @@ export class DropdownListComponent implements AfterViewInit {
additionalLabelComponentSetter?: string;
@Output()
- selectedItemChange: EventEmitter<any> = new EventEmitter();
+ selectedItemChange: EventEmitter<ListItem> = new EventEmitter();
@ViewChildren('additionalComponent', {
read: ViewContainerRef
})
containers: QueryList<ViewContainerRef>;
- changeSelectedItem(options: any): void {
+ changeSelectedItem(options: ListItem): void {
this.selectedItemChange.emit(options);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.ts
index 9940d73..1481583 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filter-button/filter-button.component.ts
@@ -18,6 +18,7 @@
import {Component, Input, forwardRef} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
+import {ListItem} from "@app/classes/list-item.class";
import {ComponentActionsService} from '@app/services/component-actions.service';
import {UtilsService} from '@app/services/utils.service';
import {MenuButtonComponent} from '@app/components/menu-button/menu-button.component';
@@ -56,7 +57,7 @@ export class FilterButtonComponent extends MenuButtonComponent implements Contro
this.onChange(newValue);
}
- updateValue(options: any): void {
+ updateValue(options: ListItem): void {
const value = options && options.value;
if (this.isMultipleChoice) {
this.value = this.utils.updateMultiSelectValue(this.value, value, options.isChecked);
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
index dc76e79..99dd43d 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.html
@@ -21,7 +21,8 @@
[defaultLabel]="filters.clusters.defaultLabel" [isMultipleChoice]="true"
class="filter-input"></filter-dropdown>
<search-box formControlName="query" [items]="searchBoxItemsTranslated" class="filter-input"
- [parameterNameChangeSubject]="queryParameterNameChange"></search-box>
+ [parameterNameChangeSubject]="queryParameterNameChange"
+ [parameterAddSubject]="queryParameterAdd"></search-box>
<time-range-picker formControlName="timeRange" [defaultLabel]="filters.timeRange.defaultLabel"
class="filter-input"></time-range-picker>
<timezone-picker class="filter-input"></timezone-picker>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
index 72ab222..42056c6 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/filters-panel/filters-panel.component.ts
@@ -20,6 +20,8 @@ import {Component} from '@angular/core';
import {FormGroup} from '@angular/forms';
import {Subject} from 'rxjs/Subject';
import {TranslateService} from '@ngx-translate/core';
+import {ListItem} from '@app/classes/list-item.class';
+import {CommonEntry} from '@app/models/common-entry.model';
import {FilteringService} from '@app/services/filtering.service';
import {LogsContainerService} from '@app/services/logs-container.service';
import {AppStateService} from '@app/services/storage/app-state.service';
@@ -67,9 +69,9 @@ export class FiltersPanelComponent {
private logsType: string; // TODO implement setting the parameter depending on user's navigation
- searchBoxItems: any[] = [];
+ searchBoxItems: ListItem[] = [];
- searchBoxItemsTranslated: any[] = [];
+ searchBoxItemsTranslated: CommonEntry[] = [];
get filters(): any {
return this.filtering.filters;
@@ -83,4 +85,8 @@ export class FiltersPanelComponent {
return this.filtering.queryParameterNameChange;
}
+ get queryParameterAdd(): Subject<any> {
+ return this.filtering.queryParameterAdd;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
index 29a85c5..2942b20 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.html
@@ -46,7 +46,10 @@
<span class="action-icon fa fa-crosshairs"></span>
</div>
<div class="log-content-inner-wrapper">
- <div class="log-content" *ngIf="isColumnDisplayed('log_message')">{{log.log_message}}</div>
+ <div class="log-content" *ngIf="isColumnDisplayed('log_message')"
+ (contextmenu)="openMessageContextMenu($event)">
+ {{log.log_message}}
+ </div>
</div>
</div>
<div *ngFor="let column of displayedColumns">
@@ -56,5 +59,7 @@
</ng-template>
</accordion-panel>
</div>
+<ul #contextmenu data-component="dropdown-list" class="dropdown-menu context-menu" [items]="contextMenuItems"
+ (selectedItemChange)="updateQuery($event)"></ul>
<pagination class="col-md-12" *ngIf="logs && logs.length" [totalCount]="totalCount" [filtersForm]="filtersForm"
[filterInstance]="filters.pageSize" [currentCount]="logs.length"></pagination>
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
index 584c1a7..577043f 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.less
@@ -135,3 +135,7 @@
}
}
}
+
+.context-menu {
+ position: fixed;
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
index a081e1b..aeb55da 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/logs-list/logs-list.component.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import {Component, Input} from '@angular/core';
+import {Component, OnInit, Input, ViewChild, ElementRef} from '@angular/core';
import {FormGroup} from '@angular/forms';
import 'rxjs/add/operator/map';
import {FilteringService} from '@app/services/filtering.service';
@@ -26,11 +26,15 @@ import {UtilsService} from '@app/services/utils.service';
templateUrl: './logs-list.component.html',
styleUrls: ['./logs-list.component.less']
})
-export class LogsListComponent {
+export class LogsListComponent implements OnInit {
constructor(private filtering: FilteringService, private utils: UtilsService) {
}
+ ngOnInit() {
+ this.contextMenuElement = this.contextMenu.nativeElement;
+ }
+
@Input()
logs: any[] = [];
@@ -40,8 +44,32 @@ export class LogsListComponent {
@Input()
displayedColumns: any[] = [];
+ @ViewChild('contextmenu', {
+ read: ElementRef
+ })
+ contextMenu: ElementRef;
+
+ private contextMenuElement: HTMLElement;
+
+ private selectedText: string = '';
+
+ private readonly messageFilterParameterName = 'log_message';
+
readonly customStyledColumns = ['level', 'type', 'logtime', 'log_message'];
+ readonly contextMenuItems = [
+ {
+ label: 'logs.addToQuery',
+ iconClass: 'fa fa-search-plus',
+ value: false // 'isExclude' is false
+ },
+ {
+ label: 'logs.excludeFromQuery',
+ iconClass: 'fa fa-search-minus',
+ value: true // 'isExclude' is true
+ }
+ ];
+
readonly dateFormat: string = 'dddd, MMMM Do';
readonly timeFormat: string = 'h:mm:ss A';
@@ -66,4 +94,33 @@ export class LogsListComponent {
return this.displayedColumns.some(column => column.name === key);
}
+ openMessageContextMenu(event: MouseEvent): void {
+ const selectedText = getSelection().toString();
+ if (selectedText) {
+ let contextMenuStyle = this.contextMenuElement.style;
+ Object.assign(contextMenuStyle, {
+ left: `${event.clientX}px`,
+ top: `${event.clientY}px`,
+ display: 'block'
+ });
+ this.selectedText = selectedText;
+ document.body.addEventListener('click', this.dismissContextMenu);
+ event.preventDefault();
+ }
+ }
+
+ updateQuery(event: any) {
+ this.filtering.queryParameterAdd.next({
+ name: this.messageFilterParameterName,
+ value: this.selectedText,
+ isExclude: event.value
+ });
+ }
+
+ private dismissContextMenu = (): void => {
+ this.selectedText = '';
+ this.contextMenuElement.style.display = 'none';
+ document.body.removeEventListener('click', this.dismissContextMenu);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
index 65f0ee6..f736fd5 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.spec.ts
@@ -28,6 +28,7 @@ import {HostsService, hosts} from '@app/services/storage/hosts.service';
import {ComponentActionsService} from '@app/services/component-actions.service';
import {FilteringService} from '@app/services/filtering.service';
import {HttpClientService} from '@app/services/http-client.service';
+import {ListItem} from "@app/classes/list-item.class";
import {MenuButtonComponent} from './menu-button.component';
@@ -86,7 +87,11 @@ describe('MenuButtonComponent', () => {
title: 'empty sub-items array'
},
{
- subItems: [{}],
+ subItems: [
+ {
+ value: null
+ }
+ ],
hasSubItems: true,
title: 'sub-items present'
}
@@ -115,13 +120,21 @@ describe('MenuButtonComponent', () => {
title: 'empty sub-items array'
},
{
- subItems: [{}],
+ subItems: [
+ {
+ value: null
+ }
+ ],
hideCaret: false,
hasCaret: true,
title: 'sub-items present, caret not hidden'
},
{
- subItems: [{}],
+ subItems: [
+ {
+ value: null
+ }
+ ],
hideCaret: true,
hasCaret: true,
title: 'sub-items present, caret hidden'
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.ts
index b674ec6..7e347e6 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/menu-button/menu-button.component.ts
@@ -17,6 +17,7 @@
*/
import {Component, Input, ViewChild, ElementRef} from '@angular/core';
+import {ListItem} from '@app/classes/list-item.class';
import {ComponentActionsService} from '@app/services/component-actions.service';
import * as $ from 'jquery';
@@ -46,7 +47,7 @@ export class MenuButtonComponent {
labelClass?: string;
@Input()
- subItems?: any[];
+ subItems?: ListItem[];
@Input()
isMultipleChoice: boolean = false;
@@ -90,7 +91,7 @@ export class MenuButtonComponent {
}
}
- updateValue(options: any) {
+ updateValue(options: ListItem) {
// TODO implement value change behaviour
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
index 4730190..e547a62 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/components/search-box/search-box.component.ts
@@ -19,6 +19,7 @@
import {Component, OnInit, OnDestroy, Input, ViewChild, ElementRef, forwardRef} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';
import {Subject} from 'rxjs/Subject';
+import {CommonEntry} from '@app/models/common-entry.model';
import {UtilsService} from '@app/services/utils.service';
@Component({
@@ -48,6 +49,7 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
this.parameterInput.addEventListener('blur', this.onParameterInputBlur);
this.valueInput.addEventListener('blur', this.onValueInputBlur);
this.parameterNameChangeSubject.subscribe(this.onParameterNameChange);
+ this.parameterAddSubject.subscribe(this.onParameterAdd);
}
ngOnDestroy() {
@@ -57,6 +59,7 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
this.parameterInput.removeEventListener('blur', this.onParameterInputBlur);
this.valueInput.removeEventListener('blur', this.onValueInputBlur);
this.parameterNameChangeSubject.unsubscribe();
+ this.parameterAddSubject.unsubscribe();
}
private currentId: number = 0;
@@ -74,22 +77,25 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
currentValue: string;
@Input()
- items: any[] = [];
+ items: CommonEntry[] = [];
@Input()
parameterNameChangeSubject: Subject<any> = this.defaultSubject;
+ @Input()
+ parameterAddSubject: Subject<any> = this.defaultSubject;
+
@ViewChild('parameterInput')
parameterInputRef: ElementRef;
@ViewChild('valueInput')
valueInputRef: ElementRef;
- rootElement: HTMLElement;
+ private rootElement: HTMLElement;
- parameterInput: HTMLElement;
+ private parameterInput: HTMLElement;
- valueInput: HTMLElement;
+ private valueInput: HTMLElement;
activeItem?: any;
@@ -127,13 +133,17 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
}
};
+ private getItem(name: string): CommonEntry {
+ return this.items.find(field => field.value === name);
+ }
+
clear(): void {
this.isActive = false;
this.activeItem = null;
this.currentValue = null;
}
- itemsListFormatter(item: any): string {
+ itemsListFormatter(item: CommonEntry): string {
return item.name;
}
@@ -142,8 +152,7 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
}
onParameterNameChange = (options: any): void => {
- this.activeItem = typeof options.item === 'string' ?
- this.items.find(field => field.value === options.item) : options.item;
+ this.activeItem = typeof options.item === 'string' ? this.getItem(options.item) : options.item;
this.isExclude = options.isExclude;
this.isActive = true;
this.isParameterInput = false;
@@ -168,6 +177,18 @@ export class SearchBoxComponent implements OnInit, OnDestroy, ControlValueAccess
}
}
+ onParameterAdd = (options: any): void => {
+ const item = this.getItem(options.name);
+ this.parameters.push({
+ id: this.currentId++,
+ name: options.name,
+ label: item.name,
+ value: options.value,
+ isExclude: options.isExclude
+ });
+ this.updateValue();
+ }
+
removeParameter(event: MouseEvent, id: number): void {
this.parameters = this.parameters.filter(parameter => parameter.id !== id);
this.updateValue();
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
index 627dc27..beaf91c 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/app/services/filtering.service.ts
@@ -20,6 +20,7 @@ import {Injectable} from '@angular/core';
import {FormControl, FormGroup} from '@angular/forms';
import {Subject} from 'rxjs/Subject';
import * as moment from 'moment-timezone';
+import {ListItem} from '@app/classes/list-item.class';
import {AppSettingsService} from '@app/services/storage/app-settings.service';
import {ClustersService} from '@app/services/storage/clusters.service';
import {ComponentsService} from '@app/services/storage/components.service';
@@ -47,7 +48,7 @@ export class FilteringService {
});
}
- private getListItem(name: string): any {
+ private getListItem(name: string): ListItem {
return {
label: name,
value: name
@@ -403,6 +404,8 @@ export class FilteringService {
queryParameterNameChange: Subject<any> = new Subject();
+ queryParameterAdd: Subject<any> = new Subject();
+
loadClusters(): void {
this.httpClient.get('clusters').subscribe(response => {
const clusterNames = response.json();
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
index 1235a80..8750d64 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
+++ b/ambari-logsearch/ambari-logsearch-web/src/assets/i18n/en.json
@@ -139,5 +139,7 @@
"logs.stack": "Stack",
"logs.taskId": "Task Id",
"logs.versionNote": "Version Note",
- "logs.versionNumber": "Version Number"
+ "logs.versionNumber": "Version Number",
+ "logs.addToQuery": "Add to Query",
+ "logs.excludeFromQuery": "Exclude from Query"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f067ec8c/ambari-logsearch/ambari-logsearch-web/src/polyfills.ts
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/src/polyfills.ts b/ambari-logsearch/ambari-logsearch-web/src/polyfills.ts
index 0ab921a..016ab77 100644
--- a/ambari-logsearch/ambari-logsearch-web/src/polyfills.ts
+++ b/ambari-logsearch/ambari-logsearch-web/src/polyfills.ts
@@ -42,7 +42,7 @@ import 'core-js/es6/object';
// import 'core-js/es6/function';
// import 'core-js/es6/parse-int';
// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
+import 'core-js/es6/number';
// import 'core-js/es6/math';
import 'core-js/es6/string';
// import 'core-js/es6/date';
[27/50] [abbrv] ambari git commit: AMBARI-22019. Enable logsearch-web
unit tests and make them skippable (oleewere)
Posted by jl...@apache.org.
AMBARI-22019. Enable logsearch-web unit tests and make them skippable (oleewere)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/40f705a6
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/40f705a6
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/40f705a6
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 40f705a6654907014eae6a1981622ae404fda1e8
Parents: 9e93c47
Author: Oliver Szabo <ol...@gmail.com>
Authored: Thu Sep 21 12:52:45 2017 +0200
Committer: Oliver Szabo <ol...@gmail.com>
Committed: Fri Sep 22 13:11:15 2017 +0200
----------------------------------------------------------------------
ambari-logsearch/ambari-logsearch-web/pom.xml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/40f705a6/ambari-logsearch/ambari-logsearch-web/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-logsearch/ambari-logsearch-web/pom.xml b/ambari-logsearch/ambari-logsearch-web/pom.xml
index 7a6b02e..f27c2c6 100644
--- a/ambari-logsearch/ambari-logsearch-web/pom.xml
+++ b/ambari-logsearch/ambari-logsearch-web/pom.xml
@@ -78,7 +78,6 @@
<arguments>build-prod</arguments>
</configuration>
</execution>
- <!-- TODO: Use this for testing and make it skippable:
<execution>
<id>run tests</id>
<phase>test</phase>
@@ -87,9 +86,9 @@
</goals>
<configuration>
<arguments>test</arguments>
+ <skip>${skipTests}</skip>
</configuration>
</execution>
- -->
</executions>
</plugin>
<plugin>
[35/50] [abbrv] ambari git commit: AMBARI-22047. Cannot upgrade stack
due to 'Version XXXXX does not contain services that are installed'
(alexantonenko)
Posted by jl...@apache.org.
AMBARI-22047. Cannot upgrade stack due to 'Version XXXXX does not contain services that are installed' (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/06d21bb3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/06d21bb3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/06d21bb3
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 06d21bb3850d2f8257c08064ab9d695d2a4c07c1
Parents: 12abba0
Author: Alex Antonenko <aa...@hortonworks.com>
Authored: Mon Sep 25 13:55:39 2017 +0300
Committer: Alex Antonenko <aa...@hortonworks.com>
Committed: Mon Sep 25 13:55:39 2017 +0300
----------------------------------------------------------------------
.../main/admin/stack_and_upgrade_controller.js | 2 +-
.../admin/stack_and_upgrade_controller_test.js | 24 +++++++++++++++++---
2 files changed, 22 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/06d21bb3/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 6d7560b..90a4db9 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -1513,7 +1513,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
var availableServices = repo.get('stackServices').filter(function(service) {
return App.Service.find(service.get('name')).get('isLoaded') && service.get('isAvailable') && service.get('isUpgradable');
}, this);
- if (!availableServices.length){
+ if (!availableServices.length && !repo.get('isStandard')){
return App.showAlertPopup( Em.I18n.t('admin.stackVersions.upgrade.installPackage.fail.title'), Em.I18n.t('admin.stackVersions.upgrade.installPackage.fail.noAvailableServices').format(repo.get('displayName')) );
}
var self = this;
http://git-wip-us.apache.org/repos/asf/ambari/blob/06d21bb3/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index d0671f9..1b04b17 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -1170,18 +1170,36 @@ describe('App.MainAdminStackAndUpgradeController', function() {
describe("#installRepoVersionPopup()", function () {
before(function () {
sinon.stub(controller, 'installRepoVersion', Em.K);
- sinon.stub(App.Service, 'find').returns({});
+ sinon.stub(App.Service, 'find').returns(Em.Object.create({
+ isLoaded: true
+ }));
});
after(function () {
controller.installRepoVersion.restore();
App.Service.find.restore();
});
- it("show popup", function () {
- var repo = Em.Object.create({'displayName': 'HDP-2.2', stackServices: []});
+ it("show confirmation popup for non standart and available services", function () {
+ var repo = Em.Object.create({'displayName': 'HDP-2.2', isStandard: false, stackServices: [Em.Object.create({
+ name: 'HDFS',
+ isUpgradable: true,
+ isAvailable: true
+ })]});
+ var popup = controller.installRepoVersionPopup(repo);
+ popup.onPrimary();
+ expect(controller.installRepoVersion.calledWith(repo)).to.be.true;
+ });
+ it("show pre-check popup for non standard and empty available services", function () {
+ var repo = Em.Object.create({'displayName': 'HDP-2.2', isStandard: false, stackServices: []});
var popup = controller.installRepoVersionPopup(repo);
popup.onPrimary();
expect(controller.installRepoVersion.calledWith(repo)).to.be.false;
});
+ it("show confirmation popup for standart", function () {
+ var repo = Em.Object.create({'displayName': 'HDP-2.2', isStandard: true, stackServices: []});
+ var popup = controller.installRepoVersionPopup(repo);
+ popup.onPrimary();
+ expect(controller.installRepoVersion.calledWith(repo)).to.be.true;
+ });
});
describe("#installRepoVersion()", function () {
[28/50] [abbrv] ambari git commit: AMBARI-22023 Upgrade dialog style
issues.(atkach)
Posted by jl...@apache.org.
AMBARI-22023 Upgrade dialog style issues.(atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/eead09be
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/eead09be
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/eead09be
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: eead09bebb0c1887c8dd8fe90aa8a6d50009e897
Parents: 40f705a
Author: Andrii Tkach <at...@apache.org>
Authored: Fri Sep 22 13:11:03 2017 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Fri Sep 22 14:48:47 2017 +0300
----------------------------------------------------------------------
.../main/admin/stack_and_upgrade_controller.js | 2 +-
ambari-web/app/messages.js | 2 +
ambari-web/app/routes/stack_upgrade_routes.js | 11 +-
ambari-web/app/styles/stack_versions.less | 77 ++++++---
.../stack_upgrade/stack_upgrade_wizard.hbs | 170 +++++++++++--------
.../main/admin/stack_upgrade/upgrade_group.hbs | 18 +-
.../views/common/helpers/status_icon_view.js | 1 +
.../admin/stack_upgrade/upgrade_wizard_view.js | 3 +
.../admin/stack_and_upgrade_controller_test.js | 2 +-
.../stack_upgrade/upgrade_wizard_view_test.js | 2 +-
10 files changed, 186 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index fba6ad6..6d7560b 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -391,7 +391,7 @@ App.MainAdminStackAndUpgradeController = Em.Controller.extend(App.LocalStorage,
} else if (this.get('upgradeData.Upgrade')){
return this.get('upgradeData.Upgrade.request_status');
} else {
- return '';
+ return 'INIT';
}
}.property('upgradeData.Upgrade.request_status', 'App.upgradeSuspended'),
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 113fb8f..db25104 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1884,6 +1884,8 @@ Em.I18n.translations = {
'admin.stackUpgrade.state.aborted': "Upgrade Aborted",
'admin.stackUpgrade.state.completed': "Upgrade Finished",
'admin.stackUpgrade.state.inProgress.downgrade': "Downgrade in Progress",
+ 'admin.stackUpgrade.state.init': "Upgrade Initializing",
+ 'admin.stackUpgrade.state.init.downgrade': "Downgrade Initializing",
'admin.stackUpgrade.state.paused.downgrade': "Downgrade Paused",
'admin.stackUpgrade.state.aborted.downgrade': "Downgrade Aborted",
'admin.stackUpgrade.state.completed.downgrade': "Downgrade Finished",
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/routes/stack_upgrade_routes.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/routes/stack_upgrade_routes.js b/ambari-web/app/routes/stack_upgrade_routes.js
index 24fa5e8..d36253a 100644
--- a/ambari-web/app/routes/stack_upgrade_routes.js
+++ b/ambari-web/app/routes/stack_upgrade_routes.js
@@ -40,7 +40,16 @@ module.exports = App.WizardRoute.extend({
return App.ModalPopup.show({
classNames: ['upgrade-wizard-modal'],
modalDialogClasses: ['modal-xlg'],
- header: Em.computed.alias('App.router.mainAdminStackAndUpgradeController.wizardModalTitle'),
+ headerClass: Em.View.extend({
+ header: Em.computed.alias('controller.wizardModalTitle'),
+ controllerBinding: 'App.router.mainAdminStackAndUpgradeController',
+ template: Ember.Handlebars.compile(
+ '{{view.header}}' +
+ '<div {{bindAttr class=":upgrade-options-link controller.isDowngrade:disabled" disabled="controller.isDowngrade"}} {{action openUpgradeOptions target="controller"}}>' +
+ '<i class="icon-cogs"></i><a>{{t admin.stackVersions.version.upgrade.upgradeOptions.header}}</a>' +
+ '</div>'
+ )
+ }),
bodyClass: App.upgradeWizardView,
primary: Em.I18n.t('common.dismiss'),
secondary: null,
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/styles/stack_versions.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/stack_versions.less b/ambari-web/app/styles/stack_versions.less
index 2e4faff..0221311 100644
--- a/ambari-web/app/styles/stack_versions.less
+++ b/ambari-web/app/styles/stack_versions.less
@@ -418,7 +418,6 @@
}
.details-box {
padding: 5px;
- margin-right: 95px;
.button-row {
text-align: right;
padding: 5px;
@@ -439,6 +438,7 @@
}
}
.task-list {
+ width: 100%;
overflow-x: hidden;
.progress {
margin-bottom: 0;
@@ -448,35 +448,70 @@
margin-right: 5px;
}
}
+ .active-task-label {
+ padding: 8px 15px;
+ display: inline-block;
+ }
+ .col-md-2.task-list-main-wrap {
+ padding-left: 0;
+ }
+ .upgrade-groups {
+ padding-left: 0;
+ .progress {
+ width: 85%;
+ display: inline-block;
+ }
+ .percent {
+ display: inline-block;
+ vertical-align: top;
+ }
+ }
.task-list-main-wrap i {
font-size: 16px;
+ color: #0088cc;
+ margin-right: 3px;
}
ul.failed-info-list {
max-height: 500px;
margin-top: 5px;
}
- .upgrade-options-link {
- position: absolute;
- cursor: pointer;
- right: 10%;
- top: 22px;
- width: 100px;
- a {
- font-size: 13px;
- }
- .glyphicon-cogs {
- color: #0088cc;
- margin-right: 3px;
+ .pause-button {
+ margin-top: -5px;
+ padding-right: 0;
+ i {
+ padding-right: 4px;
+ font-size: 15px;
}
}
- .upgrade-options-link.disabled {
- cursor: not-allowed;
- a, .glyphicon-cogs {
- color: #808080;
- }
- a:hover {
- text-decoration: none;
- }
+ .button-row {
+ text-align: right;
+ padding: 5px;
+ }
+}
+
+.upgrade-options-link {
+ padding-left: 50px;
+ display: inline-block;
+ cursor: pointer;
+ width: 150px;
+ vertical-align: bottom;
+ a {
+ font-size: 14px;
+ font-weight: normal;
+ }
+ .icon-cogs {
+ font-size: 16px;
+ color: #0088cc;
+ margin-right: 3px;
+ }
+}
+.upgrade-options-link.disabled {
+ cursor: not-allowed;
+ a, .icon-cogs {
+ color: #808080;
+ }
+ a:hover {
+ text-decoration: none;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
index cfbbb7a..7ab43b4 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
@@ -17,14 +17,11 @@
}}
<div id="stack-upgrade-dialog">
- <div {{bindAttr class=":upgrade-options-link controller.isDowngrade:disabled"}} {{action openUpgradeOptions target="controller"}}>
- <i class="icon-cogs"></i><a>{{t common.options}}</a>
- </div>
<div {{bindAttr class="view.isLoaded::hidden :row"}}>
- <div class="col-md-3 task-list-main-wrap">{{statusIcon controller.requestStatus}}
+ <div class="col-md-2 task-list-main-wrap">{{statusIcon controller.requestStatus}}
{{view.upgradeStatusLabel}}</div>
- <div class="col-md-8">
+ <div class="col-md-7">
{{view App.ProgressBarView
progressBinding="view.overallProgress"
statusBinding="controller.requestStatus"
@@ -33,73 +30,110 @@
<div class="col-md-1">
{{view.overallProgress}}%
</div>
- </div>
-
- <div class="task-list scrollable-block task-list-main-wrap">
- {{#if view.isLoaded}}
- <div>
- <div class="row">
- {{#if showPauseButton}}
- {{#if isDowngrade}}
- <button
- class="btn btn-default" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
- {{else}}
- <button
- class="btn btn-default" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
- {{/if}}
- {{/if}}
- </div>
- {{#if view.runningItem}}
- <div class="panel panel-default details-box row">
- <div class="row col-md-12">
- <div class="pull-left col-md-6">{{t admin.stackUpgrade.dialog.inProgress}} {{view.runningItem.text}}</div>
- {{#if view.isDetailsOpened}}
- <div class="pull-right col-md-6"><a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a></div>
- {{#if view.runningItem.isTasksLoaded}}
- <div class="clear col-md-12">
- {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
- </div>
+ <div class="col-md-2 pause-button pull-right">
+ {{#if view.isLoaded}}
+ {{#if showPauseButton}}
+ {{#if isDowngrade}}
+ <button
+ class="btn btn-default pull-right" {{action confirmPauseDowngrade target="view"}}>{{t admin.stackUpgrade.pauseDowngrade}}</button>
{{else}}
- {{view App.SpinnerView classNames="clear"}}
+ <button
+ class="btn btn-default pull-right" {{action confirmPauseUpgrade target="view"}}>{{t admin.stackUpgrade.pauseUpgrade}}</button>
{{/if}}
- {{else}}
- <div class="pull-right col-md-6"><a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a></div>
- {{/if}}
- </div>
- </div>
+ {{/if}}
{{/if}}
- {{#if view.failedItem}}
- {{#unless view.isSlaveComponentFailuresItem}}
- <div class="panel panel-default details-box row">
- <div class="row col-md-12">
- <div class="pull-left col-md-6">{{t admin.stackUpgrade.dialog.failed}} {{view.failedItem.text}}</div>
- {{#if view.isDetailsOpened}}
- <div class="pull-right col-md-6"><a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a></div>
- {{#if view.failedItem.isTasksLoaded}}
- <div class="clear col-md-12">
- {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
- </div>
- {{else}}
- {{view App.SpinnerView classNames="clear"}}
- {{/if}}
- {{else}}
- <div class="pull-right col-md-6"><a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a></div>
- {{/if}}
- </div>
- {{#if view.isHoldingState}}
- <div class="button-row">
- {{#if view.isDowngradeAvailable}}
- <button class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.failedItem target="controller"}}>{{t common.downgrade}}</button>
- {{/if}}
- {{#if view.failedItem.skippable}}
- <button class="btn btn-warning" {{bindAttr disabled="controller.requestInProgress"}} {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
- {{/if}}
- <button class="btn btn-default" {{bindAttr disabled="controller.requestInProgress"}} {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
+ </div>
+ </div>
+
+ <div class="task-list scrollable-block task-list-main-wrap upgrade-groups">
+ {{#if view.isLoaded}}
+ <div class="panel-group">
+ {{#if view.runningItem}}
+ <div class="panel panel-default details-box row">
+ <div class="panel-heading row">
+ <div class="pull-left col-md-6">
+ {{t admin.stackUpgrade.dialog.inProgress}} {{view.runningItem.text}}
+ </div>
+ {{#if view.isDetailsOpened}}
+ <div class="pull-right col-md-6">
+ <a href="#collapseBox" class="pull-right" {{action toggleDetails target="view"}}
+ data-toggle="collapse">
+ {{t admin.stackUpgrade.dialog.details.hide}}
+ </a>
+ </div>
+ {{else}}
+ <div class="pull-right col-md-6">
+ <a href="#collapseBox" class="pull-right" {{action toggleDetails target="view"}}
+ data-toggle="collapse">
+ {{t admin.stackUpgrade.dialog.details.open}}
+ </a>
+ </div>
+ {{/if}}
</div>
- {{/if}}
- </div>
- {{/unless}}
- {{/if}}
+ <div id="collapseBox" class="panel-collapse collapse">
+ <div class="panel-body">
+ {{#if view.runningItem.isTasksLoaded}}
+ <div class="clear col-md-12">
+ {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
+ </div>
+ {{else}}
+ {{view App.SpinnerView classNames="clear"}}
+ {{/if}}
+ </div>
+ </div>
+ </div>
+ {{/if}}
+ {{#if view.failedItem}}
+ {{#unless view.isSlaveComponentFailuresItem}}
+ <div class="panel panel-default details-box row">
+ <div class="panel-heading row">
+ <div class="pull-left col-md-6">
+ {{t admin.stackUpgrade.dialog.failed}} {{view.failedItem.text}}
+ </div>
+ {{#if view.isDetailsOpened}}
+ <div class="pull-right col-md-6">
+ <a href="#collapseBox" class="pull-right" {{action toggleDetails target="view"}}
+ data-toggle="collapse">
+ {{t admin.stackUpgrade.dialog.details.hide}}
+ </a>
+ </div>
+ {{else}}
+ <div class="pull-right col-md-6">
+ <a href="#collapseBox" class="pull-right" {{action toggleDetails target="view"}}
+ data-toggle="collapse">
+ {{t admin.stackUpgrade.dialog.details.open}}
+ </a>
+ </div>
+ {{/if}}
+ </div>
+ <div id="collapseBox" class="panel-collapse collapse">
+ <div class="panel-body">
+ {{#if view.failedItem.isTasksLoaded}}
+ <div class="clear col-md-12">
+ {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
+ </div>
+ {{else}}
+ {{view App.SpinnerView classNames="clear"}}
+ {{/if}}
+ </div>
+ </div>
+ {{#if view.isHoldingState}}
+ <div class="button-row">
+ {{#if view.isDowngradeAvailable}}
+ <button
+ class="btn btn-danger" {{bindAttr disabled="controller.requestInProgress"}} {{action confirmDowngrade view.failedItem target="controller"}}>{{t common.downgrade}}</button>
+ {{/if}}
+ {{#if view.failedItem.skippable}}
+ <button
+ class="btn btn-warning" {{bindAttr disabled="controller.requestInProgress"}} {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
+ {{/if}}
+ <button
+ class="btn btn-default" {{bindAttr disabled="controller.requestInProgress"}} {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
+ </div>
+ {{/if}}
+ </div>
+ {{/unless}}
+ {{/if}}
{{#if view.plainManualItem}}
<div class="panel panel-default details-box">
<p class="manual-steps-title"><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs
index 1a829fb..00cde9f 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs
@@ -23,16 +23,16 @@
<a href="#" {{action toggleExpanded view.content controller.upgradeData.upgradeGroups target="view"}}>{{view.content.title}}</a>
</div>
{{#if view.content.isRunning}}
- <div class="col-md-3">
+ <div class="col-md-4 pull-right">
{{view view.progressBarView
progressBinding="view.content.progress"
statusBinding="view.content.status"
totalTasksBinding="view.content.total_task_count"
completedTasksBinding="view.content.completed_task_count"
}}
- </div>
- <div class="col-md-1">
- <div>{{view.content.progress}}%</div>
+ <div class="percent pull-right">
+ <span>{{view.content.progress}}%</span>
+ </div>
</div>
{{/if}}
</div>
@@ -48,14 +48,14 @@
<a href="#" {{action toggleExpanded item view.content.upgradeItems target="view"}}>{{item.context}}</a>
</div>
{{#if item.isRunning}}
- <div class="col-md-3">
+ <div class="col-md-4 pull-right">
{{view App.ProgressBarView
progressBinding="item.progress"
statusBinding="item.status"
- }}
- </div>
- <div class="col-md-1">
- <div>{{item.progress}}%</div>
+ }}
+ <div class="percent pull-right">
+ <span>{{item.progress}}%</span>
+ </div
</div>
{{/if}}
</div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/views/common/helpers/status_icon_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/helpers/status_icon_view.js b/ambari-web/app/views/common/helpers/status_icon_view.js
index fbd8e3a..b807976 100644
--- a/ambari-web/app/views/common/helpers/status_icon_view.js
+++ b/ambari-web/app/views/common/helpers/status_icon_view.js
@@ -26,6 +26,7 @@ App.StatusIconView = Em.View.extend({
* @type {object}
*/
statusIconMap: {
+ 'INIT': 'icon-cogs in_progress',
'COMPLETED': 'glyphicon glyphicon-ok completed',
'WARNING': 'glyphicon glyphicon-warning-sign',
'FAILED': 'glyphicon glyphicon-exclamation-sign failed',
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
index a5e7730..415d87d 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js
@@ -250,6 +250,9 @@ App.upgradeWizardView = Em.View.extend({
case 'HOLDING':
labelKey = 'admin.stackUpgrade.state.paused';
break;
+ default:
+ labelKey = 'admin.stackUpgrade.state.init';
+ break;
}
if (labelKey) {
labelKey += (this.get('controller.isDowngrade')) ? '.downgrade' : "";
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
index 2f14e50..d0671f9 100644
--- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
+++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js
@@ -107,7 +107,7 @@ describe('App.MainAdminStackAndUpgradeController', function() {
this.mock.returns(false);
controller.set('upgradeData', null);
controller.propertyDidChange('requestStatus');
- expect(controller.get('requestStatus')).to.be.empty;
+ expect(controller.get('requestStatus')).to.equal('INIT');
});
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/eead09be/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
index 8ad711e..a303e60 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js
@@ -544,7 +544,7 @@ describe('App.upgradeWizardView', function () {
status: '',
isDowngrade: false
},
- result: ''
+ result: Em.I18n.t('admin.stackUpgrade.state.init')
},
{
data: {
[40/50] [abbrv] ambari git commit: AMBARI-22026. Restart of all
components on host operation failed with 500 status code. (mpapirkovskyy)
Posted by jl...@apache.org.
AMBARI-22026. Restart of all components on host operation failed with 500 status code. (mpapirkovskyy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0393451c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0393451c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0393451c
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 0393451c43fe06b7cac72afebd2109d9298197a8
Parents: 999daef
Author: Myroslav Papirkovskyi <mp...@hortonworks.com>
Authored: Mon Sep 25 19:08:49 2017 +0300
Committer: Myroslav Papirkovskyi <mp...@hortonworks.com>
Committed: Mon Sep 25 19:10:24 2017 +0300
----------------------------------------------------------------------
.../AmbariCustomCommandExecutionHelper.java | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0393451c/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index 38a02ef..d0dd7e0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -1524,14 +1524,18 @@ public class AmbariCustomCommandExecutionHelper {
if (actionName.equals(START_COMMAND_NAME) || actionName.equals(RESTART_COMMAND_NAME)) {
Cluster cluster = clusters.getCluster(clusterName);
StackId stackId = null;
- try {
- Service service = cluster.getService(serviceName);
- stackId = service.getDesiredStackId();
- } catch (AmbariException e) {
- LOG.debug("Could not load service {}, skipping topology check", serviceName);
- stackId = cluster.getDesiredStackVersion();
+ if (serviceName != null) {
+ try {
+ Service service = cluster.getService(serviceName);
+ stackId = service.getDesiredStackId();
+ } catch (AmbariException e) {
+ LOG.debug("Could not load service {}, skipping topology check", serviceName);
+ }
}
+ if (stackId == null) {
+ stackId = cluster.getDesiredStackVersion();
+ }
AmbariMetaInfo ambariMetaInfo = managementController.getAmbariMetaInfo();
[14/50] [abbrv] ambari git commit: AMBARI-22024. Stack and versions
view style issues (alexantonenko)
Posted by jl...@apache.org.
AMBARI-22024. Stack and versions view style issues (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2e170e48
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2e170e48
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2e170e48
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 2e170e4801794ddbbcd331585782a5f5b7e897a1
Parents: 37b8470
Author: Alex Antonenko <aa...@hortonworks.com>
Authored: Thu Sep 21 18:42:05 2017 +0300
Committer: Alex Antonenko <aa...@hortonworks.com>
Committed: Thu Sep 21 18:42:05 2017 +0300
----------------------------------------------------------------------
ambari-web/app/styles/stack_versions.less | 1 +
.../admin/stack_upgrade/upgrade_version_box_view.js | 4 ++--
.../stack_upgrade/upgrade_version_box_view_test.js | 12 ++++++------
3 files changed, 9 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e170e48/ambari-web/app/styles/stack_versions.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/stack_versions.less b/ambari-web/app/styles/stack_versions.less
index 9d05d9b..2e4faff 100644
--- a/ambari-web/app/styles/stack_versions.less
+++ b/ambari-web/app/styles/stack_versions.less
@@ -211,6 +211,7 @@
}
.dropdown-menu {
cursor: pointer;
+ text-align: left;
}
}
.installing {
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e170e48/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
index 6cf84fa..b37a094 100644
--- a/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
+++ b/ambari-web/app/views/main/admin/stack_upgrade/upgrade_version_box_view.js
@@ -299,7 +299,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
if (this.get('content.isPatch')) {
element.get('buttons').pushObject({
- text: Em.I18n.t('common.discard'),
+ text: Em.I18n.t('common.hide'),
action: 'confirmDiscardRepoVersion',
isDisabled: isDisabled
});
@@ -329,7 +329,7 @@ App.UpgradeVersionBoxView = Em.View.extend({
element.set('isButtonGroup', true);
element.set('isButton', false);
element.get('buttons').pushObject({
- text: Em.I18n.t('common.discard'),
+ text: Em.I18n.t('common.hide'),
action: 'confirmDiscardRepoVersion',
isDisabled: isDisabledOnInit
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/2e170e48/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
index fbf72a2..174f51c 100644
--- a/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
+++ b/ambari-web/test/views/main/admin/stack_upgrade/upgrade_version_box_view_test.js
@@ -503,7 +503,7 @@ describe('App.UpgradeVersionBoxView', function () {
{
"action": "confirmDiscardRepoVersion",
"isDisabled": false,
- "text": "Discard"
+ "text": Em.I18n.t('common.hide')
}
],
isDisabled: true
@@ -532,7 +532,7 @@ describe('App.UpgradeVersionBoxView', function () {
{
"action": "confirmDiscardRepoVersion",
"isDisabled": true,
- "text": "Discard"
+ "text": Em.I18n.t('common.hide')
}
],
isDisabled: true
@@ -729,7 +729,7 @@ describe('App.UpgradeVersionBoxView', function () {
{
"action": "confirmDiscardRepoVersion",
"isDisabled": true,
- "text": "Discard"
+ "text": Em.I18n.t('common.hide')
}
],
isDisabled: true
@@ -1443,7 +1443,7 @@ describe('App.UpgradeVersionBoxView', function () {
isDisabled: false
},
{
- "text": Em.I18n.t('common.discard'),
+ "text": Em.I18n.t('common.hide'),
"action": "confirmDiscardRepoVersion",
"isDisabled": false
}
@@ -1479,7 +1479,7 @@ describe('App.UpgradeVersionBoxView', function () {
expect(JSON.stringify(element)).to.be.equal(JSON.stringify(Em.Object.create({
"buttons": [
{
- "text": Em.I18n.t('common.discard'),
+ "text": Em.I18n.t('common.hide'),
"action": "confirmDiscardRepoVersion",
"isDisabled": false
}
@@ -1507,7 +1507,7 @@ describe('App.UpgradeVersionBoxView', function () {
expect(JSON.stringify(element)).to.be.equal(JSON.stringify(Em.Object.create({
"buttons": [
{
- "text": Em.I18n.t('common.discard'),
+ "text": Em.I18n.t('common.hide'),
"action": "confirmDiscardRepoVersion",
"isDisabled": false
}
[10/50] [abbrv] ambari git commit: AMBARI-22013. Add JMX
enable/disable option to Infra Solr (oleewere)
Posted by jl...@apache.org.
AMBARI-22013. Add JMX enable/disable option to Infra Solr (oleewere)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1a5b4943
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1a5b4943
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1a5b4943
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 1a5b4943cbfa42d66d61e5cb29a09e1d3ad9acb7
Parents: 5c0a354
Author: Oliver Szabo <ol...@gmail.com>
Authored: Thu Sep 21 00:59:26 2017 +0200
Committer: Oliver Szabo <ol...@gmail.com>
Committed: Thu Sep 21 12:27:13 2017 +0200
----------------------------------------------------------------------
.../docker/test-config/solr/solr-env-ssl.sh | 1 +
.../docker/test-config/solr/solr-env.sh | 1 +
.../0.1.0/configuration/infra-solr-env.xml | 12 +++++++-
.../0.1.0/package/scripts/params.py | 4 +++
.../0.1.0/properties/infra-solr-env.sh.j2 | 3 +-
.../configs/services/ambari_infra_properties.js | 31 ++++++++++++--------
6 files changed, 38 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-logsearch/docker/test-config/solr/solr-env-ssl.sh
----------------------------------------------------------------------
diff --git a/ambari-logsearch/docker/test-config/solr/solr-env-ssl.sh b/ambari-logsearch/docker/test-config/solr/solr-env-ssl.sh
index faaa6ff..6c78da0 100644
--- a/ambari-logsearch/docker/test-config/solr/solr-env-ssl.sh
+++ b/ambari-logsearch/docker/test-config/solr/solr-env-ssl.sh
@@ -71,6 +71,7 @@ RMI_PORT=18886
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true"
+SOLR_OPTS="$SOLR_OPTS -Djava.rmi.server.hostname=localhost"
# Location where the bin/solr script will save PID files for running instances
# If not set, the script will create PID files in $SOLR_TIP/bin
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-logsearch/docker/test-config/solr/solr-env.sh
----------------------------------------------------------------------
diff --git a/ambari-logsearch/docker/test-config/solr/solr-env.sh b/ambari-logsearch/docker/test-config/solr/solr-env.sh
index 11b9fe0..89e3a4d 100644
--- a/ambari-logsearch/docker/test-config/solr/solr-env.sh
+++ b/ambari-logsearch/docker/test-config/solr/solr-env.sh
@@ -71,6 +71,7 @@ RMI_PORT=18886
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true"
+SOLR_OPTS="$SOLR_OPTS -Djava.rmi.server.hostname=localhost"
# Location where the bin/solr script will save PID files for running instances
# If not set, the script will create PID files in $SOLR_TIP/bin
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/configuration/infra-solr-env.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/configuration/infra-solr-env.xml b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/configuration/infra-solr-env.xml
index 52a5e6a..2a76334 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/configuration/infra-solr-env.xml
+++ b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/configuration/infra-solr-env.xml
@@ -176,7 +176,17 @@
</value-attributes>
<on-ambari-upgrade add="false"/>
</property>
-
+ <property>
+ <name>infra_solr_jmx_enabled</name>
+ <value>false</value>
+ <display-name>Enable JMX</display-name>
+ <description>Set to true to activate the JMX RMI connector to allow remote JMX client applications to monitor the JVM hosting Solr
+ </description>
+ <value-attributes>
+ <type>boolean</type>
+ </value-attributes>
+ <on-ambari-upgrade add="true"/>
+ </property>
<property>
<name>infra_solr_kerberos_keytab</name>
<value>/etc/security/keytabs/infra_solr.service.keytab</value>
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/package/scripts/params.py
index e4ea885..eba1db9 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/package/scripts/params.py
@@ -49,6 +49,8 @@ stack_version = default("/commandParams/version", None)
sudo = AMBARI_SUDO_BINARY
security_enabled = status_params.security_enabled
+hostname = config['hostname'].lower()
+
infra_solr_conf = "/etc/ambari-infra-solr/conf"
infra_solr_port = status_params.infra_solr_port
@@ -145,6 +147,8 @@ if security_enabled:
infra_solr_ranger_audit_service_users = format(config['configurations']['infra-solr-security-json']['infra_solr_ranger_audit_service_users']).split(',')
infra_solr_security_json_content = config['configurations']['infra-solr-security-json']['content']
+infra_solr_jmx_enabled = str(default('/configurations/infra-solr-env/infra_solr_jmx_enabled', False)).lower()
+
#Solr log4j
infra_log_maxfilesize = default('configurations/infra-solr-log4j/infra_log_maxfilesize',10)
infra_log_maxbackupindex = default('configurations/infra-solr-log4j/infra_log_maxbackupindex',9)
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/infra-solr-env.sh.j2
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/infra-solr-env.sh.j2 b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/infra-solr-env.sh.j2
index 5cc344e..ea56561 100644
--- a/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/infra-solr-env.sh.j2
+++ b/ambari-server/src/main/resources/common-services/AMBARI_INFRA/0.1.0/properties/infra-solr-env.sh.j2
@@ -60,7 +60,7 @@ ZK_CLIENT_TIMEOUT="60000"
# Set to true to activate the JMX RMI connector to allow remote JMX client applications
# to monitor the JVM hosting Solr; set to "false" to disable that behavior
# (false is recommended in production environments)
-ENABLE_REMOTE_JMX_OPTS="true"
+ENABLE_REMOTE_JMX_OPTS="{{infra_solr_jmx_enabled}}"
# The script will use SOLR_PORT+10000 for the RMI_PORT or you can set it here
RMI_PORT={{infra_solr_jmx_port}}
@@ -71,6 +71,7 @@ RMI_PORT={{infra_solr_jmx_port}}
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoSoftCommit.maxTime=3000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.autoCommit.maxTime=60000"
#SOLR_OPTS="$SOLR_OPTS -Dsolr.clustering.enabled=true"
+SOLR_OPTS="$SOLR_OPTS -Djava.rmi.server.hostname={{hostname}}"
# Location where the bin/solr script will save PID files for running instances
# If not set, the script will create PID files in $SOLR_TIP/bin
http://git-wip-us.apache.org/repos/asf/ambari/blob/1a5b4943/ambari-web/app/data/configs/services/ambari_infra_properties.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/configs/services/ambari_infra_properties.js b/ambari-web/app/data/configs/services/ambari_infra_properties.js
index aae7fa5..ab9471f 100644
--- a/ambari-web/app/data/configs/services/ambari_infra_properties.js
+++ b/ambari-web/app/data/configs/services/ambari_infra_properties.js
@@ -77,90 +77,97 @@ module.exports = [
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 5,
- "name": "infra_solr_ssl_enabled",
+ "name": "infra_solr_jmx_enabled",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 6,
- "name": "infra_solr_truststore_location",
+ "name": "infra_solr_ssl_enabled",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 7,
- "name": "infra_solr_truststore_type",
+ "name": "infra_solr_truststore_location",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 8,
- "name": "infra_solr_truststore_password",
+ "name": "infra_solr_truststore_type",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 9,
- "name": "infra_solr_keystore_location",
+ "name": "infra_solr_truststore_password",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 10,
- "name": "infra_solr_keystore_type",
+ "name": "infra_solr_keystore_location",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 11,
- "name": "infra_solr_keystore_password",
+ "name": "infra_solr_keystore_type",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 12,
- "name": "infra_solr_kerberos_keytab",
+ "name": "infra_solr_keystore_password",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 13,
- "name": "infra_solr_kerberos_principal",
+ "name": "infra_solr_kerberos_keytab",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 14,
- "name": "infra_solr_web_kerberos_keytab",
+ "name": "infra_solr_kerberos_principal",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 15,
- "name": "infra_solr_web_kerberos_principal",
+ "name": "infra_solr_web_kerberos_keytab",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 16,
- "name": "infra_solr_kerberos_name_rules",
+ "name": "infra_solr_web_kerberos_principal",
"serviceName": "AMBARI_INFRA"
},
{
"category": "Advanced infra-solr-env",
"filename": "infra-solr-env.xml",
"index": 17,
+ "name": "infra_solr_kerberos_name_rules",
+ "serviceName": "AMBARI_INFRA"
+ },
+ {
+ "category": "Advanced infra-solr-env",
+ "filename": "infra-solr-env.xml",
+ "index": 18,
"name": "content",
"serviceName": "AMBARI_INFRA"
},
[42/50] [abbrv] ambari git commit: AMBARI-22051 - VDFs Which Are
Correct Never Get Resolved (jonathanhurley)
Posted by jl...@apache.org.
AMBARI-22051 - VDFs Which Are Correct Never Get Resolved (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/08da9611
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/08da9611
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/08da9611
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 08da9611188d9c4c246ee6d77894da5edf317860
Parents: 4b59ba8
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Sep 25 10:11:52 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Sep 25 12:36:44 2017 -0400
----------------------------------------------------------------------
.../DistributeRepositoriesActionListener.java | 7 ++++
.../listeners/upgrade/StackVersionListener.java | 7 ++++
.../upgrade/StackVersionListenerTest.java | 41 ++++++++++++++++++++
3 files changed, 55 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/08da9611/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
index 376e20d..1944761 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/DistributeRepositoriesActionListener.java
@@ -127,6 +127,13 @@ public class DistributeRepositoriesActionListener {
repoVersion.setResolved(true);
repoVersionDAO.merge(repoVersion);
repositoryVersion = actualVersion;
+ } else {
+ // the reported versions are the same - we should ensure that the
+ // repo is resolved
+ if (!repoVersion.isResolved()) {
+ repoVersion.setResolved(true);
+ repoVersionDAO.merge(repoVersion);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/08da9611/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
index 0ce64bf..e5298dc 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListener.java
@@ -101,6 +101,13 @@ public class StackVersionListener {
rve.setVersion(newVersion);
rve.setResolved(true);
repositoryVersionDAO.merge(rve);
+ } else {
+ // the reported versions are the same - we should ensure that the repo
+ // is resolved
+ if (!rve.isResolved()) {
+ rve.setResolved(true);
+ repositoryVersionDAO.merge(rve);
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/08da9611/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
index 68d9c56..5e12cdf 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/events/listeners/upgrade/StackVersionListenerTest.java
@@ -330,6 +330,47 @@ public class StackVersionListenerTest extends EasyMockSupport {
}
/**
+ * Tests that if a component advertises a version and the repository already
+ * matches, that we ensure that it is marked as resolved.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testRepositoryResolvedWhenVersionsMatch() throws Exception {
+ String version = "2.4.0.0";
+
+ expect(sch.getVersion()).andReturn(version);
+ expect(componentInfo.isVersionAdvertised()).andReturn(true).once();
+
+ RepositoryVersionDAO dao = createNiceMock(RepositoryVersionDAO.class);
+ RepositoryVersionEntity entity = createNiceMock(RepositoryVersionEntity.class);
+ expect(entity.getVersion()).andReturn(version).once();
+ expect(entity.isResolved()).andReturn(false).once();
+
+ // when the version gets reported back, we set this repo to resolved
+ entity.setResolved(true);
+ expectLastCall().once();
+
+ expect(dao.findByPK(1L)).andReturn(entity).once();
+ expect(dao.merge(entity)).andReturn(entity).once();
+
+ replayAll();
+
+ String newVersion = version;
+
+ HostComponentVersionAdvertisedEvent event = new HostComponentVersionAdvertisedEvent(cluster, sch, newVersion, 1L);
+
+ // !!! avoid injector for test class
+ Field field = StackVersionListener.class.getDeclaredField("repositoryVersionDAO");
+ field.setAccessible(true);
+ field.set(listener, dao);
+
+ listener.onAmbariEvent(event);
+
+ verifyAll();
+ }
+
+ /**
* Tests that the {@link RepositoryVersionEntity} is not updated if there is
* an upgrade, even if the repo ID is passed back and the versions don't
* match.
[36/50] [abbrv] ambari git commit: AMBARI-22042 Final Properties
filter does not work for Config Groups. (atkach)
Posted by jl...@apache.org.
AMBARI-22042 Final Properties filter does not work for Config Groups. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/eb5bcef3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/eb5bcef3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/eb5bcef3
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: eb5bcef3d4382ae059e572c45c799969c6cb7dde
Parents: 06d21bb
Author: Andrii Tkach <at...@apache.org>
Authored: Mon Sep 25 13:50:49 2017 +0300
Committer: Andrii Tkach <at...@apache.org>
Committed: Mon Sep 25 13:57:17 2017 +0300
----------------------------------------------------------------------
ambari-web/app/views/common/configs/service_config_view.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/eb5bcef3/ambari-web/app/views/common/configs/service_config_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/service_config_view.js b/ambari-web/app/views/common/configs/service_config_view.js
index a53f6cd..fe45c79 100644
--- a/ambari-web/app/views/common/configs/service_config_view.js
+++ b/ambari-web/app/views/common/configs/service_config_view.js
@@ -272,7 +272,8 @@ App.ServiceConfigView = Em.View.extend({
var passesFilters = true;
selectedFilters.forEach(function (filter) {
- if (config.get(filter.attributeName) !== filter.attributeValue) {
+ if (config.get(filter.attributeName) !== filter.attributeValue &&
+ !(config.get('overrides') && config.get('overrides').someProperty(filter.attributeName, filter.attributeValue))) {
passesFilters = false;
}
});
[46/50] [abbrv] ambari git commit: AMBARI-22012. BP deploys failing
intermittently with error (magyari_sandor)
Posted by jl...@apache.org.
AMBARI-22012. BP deploys failing intermittently with error (magyari_sandor)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b653ee0a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b653ee0a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b653ee0a
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: b653ee0a5967a8255f087f43a1cb6a878e765833
Parents: 6633a7b
Author: Sandor Magyari <sm...@hortonworks.com>
Authored: Fri Sep 22 17:48:54 2017 +0200
Committer: Sandor Magyari <sm...@hortonworks.com>
Committed: Mon Sep 25 21:19:53 2017 +0200
----------------------------------------------------------------------
.../events/ClusterConfigFinishedEvent.java | 15 +++-
.../ambari/server/topology/TopologyManager.java | 88 +++++++++++++-------
.../topology/tasks/ConfigureClusterTask.java | 13 ++-
.../tasks/ConfigureClusterTaskFactory.java | 3 +-
.../server/utils/ManagedThreadPoolExecutor.java | 83 ++++++++++++++++++
.../ClusterDeployWithStartOnlyTest.java | 2 +-
...InstallWithoutStartOnComponentLevelTest.java | 2 +-
.../ClusterInstallWithoutStartTest.java | 2 +-
.../topology/ConfigureClusterTaskTest.java | 18 +++-
.../utils/ManagedThreadPoolExecutorTest.java | 51 ++++++++++++
10 files changed, 236 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/main/java/org/apache/ambari/server/events/ClusterConfigFinishedEvent.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/events/ClusterConfigFinishedEvent.java b/ambari-server/src/main/java/org/apache/ambari/server/events/ClusterConfigFinishedEvent.java
index cdb86ac..f0574d0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/ClusterConfigFinishedEvent.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/ClusterConfigFinishedEvent.java
@@ -23,17 +23,27 @@ package org.apache.ambari.server.events;
* cluster configuration is successfully updated.
*/
public class ClusterConfigFinishedEvent extends AmbariEvent {
+
+ private final long clusterId;
private final String clusterName;
- public ClusterConfigFinishedEvent(String clusterName) {
+ public ClusterConfigFinishedEvent(long clusterId, String clusterName) {
super(AmbariEventType.CLUSTER_CONFIG_FINISHED);
+ this.clusterId = clusterId;
this.clusterName = clusterName;
}
/**
+ * Get the cluster id
+ * @return
+ */
+ public long getClusterId() {
+ return clusterId;
+ }
+
+ /**
* Get the cluster name
- *
* @return
*/
public String getClusterName() {
@@ -46,6 +56,7 @@ public class ClusterConfigFinishedEvent extends AmbariEvent {
@Override
public String toString() {
StringBuilder buffer = new StringBuilder("ClusterConfigChangedEvent{");
+ buffer.append("clusterId=").append(getClusterId());
buffer.append("clusterName=").append(getClusterName());
buffer.append("}");
return buffer.toString();
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
index 3af62e8..9769fae 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/TopologyManager.java
@@ -29,9 +29,10 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
-import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.actionmanager.HostRoleCommand;
@@ -73,6 +74,7 @@ import org.apache.ambari.server.state.quicklinksprofile.QuickLinksProfile;
import org.apache.ambari.server.topology.tasks.ConfigureClusterTask;
import org.apache.ambari.server.topology.tasks.ConfigureClusterTaskFactory;
import org.apache.ambari.server.topology.validators.TopologyValidatorService;
+import org.apache.ambari.server.utils.ManagedThreadPoolExecutor;
import org.apache.ambari.server.utils.RetryHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,9 +104,23 @@ public class TopologyManager {
private static final String CLUSTER_CONFIG_TASK_MAX_TIME_IN_MILLIS_PROPERTY_NAME = "cluster_configure_task_timeout";
private PersistedState persistedState;
+
+ /**
+ * Single threaded executor to execute async tasks. At the moment it's only used to execute ConfigureClusterTask.
+ */
private final ExecutorService executor = Executors.newSingleThreadExecutor();
- private final Executor taskExecutor; // executes TopologyTasks
- private final boolean parallelTaskCreationEnabled;
+
+ /**
+ * Thread pool size for topology task executors.
+ */
+ private int topologyTaskExecutorThreadPoolSize;
+ /**
+ * There is one ExecutorService for each cluster to execute TopologyTasks.
+ * TopologyTasks are submitted into ExecutorService for each cluster,
+ * however the ExecutorService is started only after cluster configuration is finished.
+ */
+ private final Map<Long, ManagedThreadPoolExecutor> topologyTaskExecutorServiceMap = new HashMap<>();
+
private Collection<String> hostsToIgnore = new HashSet<>();
private final List<HostImpl> availableHosts = new LinkedList<>();
private final Map<String, LogicalRequest> reservedHosts = new HashMap<>();
@@ -158,17 +174,15 @@ public class TopologyManager {
private Map<Long, Boolean> clusterProvisionWithBlueprintCreationFinished = new HashMap<>();
public TopologyManager() {
- parallelTaskCreationEnabled = false;
- taskExecutor = executor;
+ topologyTaskExecutorThreadPoolSize = 1;
}
@Inject
public TopologyManager(Configuration configuration) {
- int threadPoolSize = configuration.getParallelTopologyTaskCreationThreadPoolSize();
- parallelTaskCreationEnabled = configuration.isParallelTopologyTaskCreationEnabled() && threadPoolSize > 1;
- taskExecutor = parallelTaskCreationEnabled
- ? Executors.newFixedThreadPool(threadPoolSize)
- : executor;
+ topologyTaskExecutorThreadPoolSize = configuration.getParallelTopologyTaskCreationThreadPoolSize();
+ if (!configuration.isParallelTopologyTaskCreationEnabled()) {
+ topologyTaskExecutorThreadPoolSize = 1;
+ }
}
// executed by the IoC framework after creating the object (guice)
@@ -310,6 +324,10 @@ public class TopologyManager {
// set provision action requested
topology.setProvisionAction(request.getProvisionAction());
+
+ // create task executor for TopologyTasks
+ getOrCreateTopologyTaskExecutor(clusterId);
+
// persist request
LogicalRequest logicalRequest = RetryHelper.executeWithRetry(new Callable<LogicalRequest>() {
@Override
@@ -325,15 +343,6 @@ public class TopologyManager {
addClusterConfigRequest(topology, new ClusterConfigurationRequest(ambariContext, topology, true,
stackAdvisorBlueprintProcessor, securityType == SecurityType.KERBEROS));
- // Notify listeners that cluster configuration finished
- executor.submit(new Callable<Boolean>() {
- @Override
- public Boolean call() throws Exception {
- ambariEventPublisher.publish(new ClusterConfigFinishedEvent(clusterName));
- return Boolean.TRUE;
- }
- });
-
// Process the logical request
processRequest(request, topology, logicalRequest);
@@ -345,6 +354,17 @@ public class TopologyManager {
return getRequestStatus(logicalRequest.getRequestId());
}
+ @Subscribe
+ public void onClusterConfigFinishedEvent(ClusterConfigFinishedEvent event) {
+ ManagedThreadPoolExecutor taskExecutor = topologyTaskExecutorServiceMap.get(event.getClusterId());
+ if (taskExecutor == null) {
+ LOG.error("Can't find executor service taskQueue not found for cluster: {} ", event.getClusterName());
+ } else {
+ LOG.info("Starting topology task ExecutorService for cluster: {}", event.getClusterName());
+ taskExecutor.start();
+ }
+ }
+
/**
* Saves the quick links profile to the DB as an Ambari setting. Creates a new setting entity or updates the existing
@@ -941,16 +961,8 @@ public class TopologyManager {
}
LOG.info("TopologyManager.processAcceptedHostOffer: queue tasks for host = {} which responded {}", hostName, response.getAnswer());
- if (parallelTaskCreationEnabled) {
- executor.execute(new Runnable() { // do not start until cluster config done
- @Override
- public void run() {
- queueHostTasks(topology, response, hostName);
- }
- });
- } else {
- queueHostTasks(topology, response, hostName);
- }
+ queueHostTasks(topology, response, hostName);
+
}
@Transactional
@@ -959,9 +971,23 @@ public class TopologyManager {
persistedState.registerInTopologyHostInfo(host);
}
+ private ExecutorService getOrCreateTopologyTaskExecutor(Long clusterId) {
+ ManagedThreadPoolExecutor topologyTaskExecutor = this.topologyTaskExecutorServiceMap.get(clusterId);
+ if (topologyTaskExecutor == null) {
+ LOG.info("Creating TopologyTaskExecutorService for clusterId: {}", clusterId);
+
+ topologyTaskExecutor = new ManagedThreadPoolExecutor(topologyTaskExecutorThreadPoolSize,
+ topologyTaskExecutorThreadPoolSize, 0L, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<Runnable>());
+ topologyTaskExecutorServiceMap.put(clusterId, topologyTaskExecutor);
+ }
+ return topologyTaskExecutor;
+ }
+
private void queueHostTasks(ClusterTopology topology, HostOfferResponse response, String hostName) {
LOG.info("TopologyManager.processAcceptedHostOffer: queueing tasks for host = {}", hostName);
- response.executeTasks(taskExecutor, hostName, topology, ambariContext);
+ ExecutorService executorService = getOrCreateTopologyTaskExecutor(topology.getClusterId());
+ response.executeTasks(executorService, hostName, topology, ambariContext);
}
private void updateHostWithRackInfo(ClusterTopology topology, HostOfferResponse response, HostImpl host) {
@@ -1108,7 +1134,7 @@ public class TopologyManager {
}
ConfigureClusterTask configureClusterTask = configureClusterTaskFactory.createConfigureClusterTask(topology,
- configurationRequest);
+ configurationRequest, ambariEventPublisher);
AsyncCallableService<Boolean> asyncCallableService = new AsyncCallableService<>(configureClusterTask, timeout, delay,
Executors.newScheduledThreadPool(1));
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTask.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTask.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTask.java
index 0ce5982..60eaa59 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTask.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTask.java
@@ -22,6 +22,8 @@ import java.util.Collections;
import java.util.Map;
import java.util.concurrent.Callable;
+import org.apache.ambari.server.events.ClusterConfigFinishedEvent;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.security.authorization.internal.RunWithInternalSecurityContext;
import org.apache.ambari.server.topology.ClusterConfigurationRequest;
import org.apache.ambari.server.topology.ClusterTopology;
@@ -39,11 +41,14 @@ public class ConfigureClusterTask implements Callable<Boolean> {
private ClusterConfigurationRequest configRequest;
private ClusterTopology topology;
+ private AmbariEventPublisher ambariEventPublisher;
@AssistedInject
- public ConfigureClusterTask(@Assisted ClusterTopology topology, @Assisted ClusterConfigurationRequest configRequest) {
+ public ConfigureClusterTask(@Assisted ClusterTopology topology, @Assisted ClusterConfigurationRequest configRequest,
+ @Assisted AmbariEventPublisher ambariEventPublisher) {
this.configRequest = configRequest;
this.topology = topology;
+ this.ambariEventPublisher = ambariEventPublisher;
}
@Override
@@ -72,6 +77,12 @@ public class ConfigureClusterTask implements Callable<Boolean> {
throw new Exception(e);
}
+ LOG.info("Cluster configuration finished successfully!");
+ // Notify listeners that cluster configuration finished
+ long clusterId = topology.getClusterId();
+ ambariEventPublisher.publish(new ClusterConfigFinishedEvent(clusterId,
+ topology.getAmbariContext().getClusterName(clusterId)));
+
LOG.info("TopologyManager.ConfigureClusterTask: Exiting");
return true;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTaskFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTaskFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTaskFactory.java
index 9e3c151..558af30 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTaskFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/tasks/ConfigureClusterTaskFactory.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.topology.tasks;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.topology.ClusterConfigurationRequest;
import org.apache.ambari.server.topology.ClusterTopology;
@@ -25,6 +26,6 @@ import org.apache.ambari.server.topology.ClusterTopology;
public interface ConfigureClusterTaskFactory {
ConfigureClusterTask createConfigureClusterTask(ClusterTopology topology, ClusterConfigurationRequest
- configRequest);
+ configRequest, AmbariEventPublisher ambariEventPublisher);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/main/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutor.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutor.java
new file mode 100644
index 0000000..167c9cb
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutor.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 distribut
+ * ed 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.
+ */
+
+package org.apache.ambari.server.utils;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * ThreadPoolExecutor extension which is stopped by default and can be started & stopped.
+ */
+public class ManagedThreadPoolExecutor extends ThreadPoolExecutor {
+
+ private volatile boolean isStopped;
+ private final ReentrantLock pauseLock = new ReentrantLock();
+ private final Condition unpaused = pauseLock.newCondition();
+
+ public ManagedThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
+ long keepAliveTime, TimeUnit unit,
+ BlockingQueue<Runnable> workQueue) {
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
+ Executors.defaultThreadFactory());
+ isStopped = true;
+ }
+
+ protected void beforeExecute(Thread t, Runnable r) {
+ super.beforeExecute(t, r);
+ pauseLock.lock();
+ try {
+ while (isStopped) {
+ unpaused.await();
+ }
+ } catch (InterruptedException ie) {
+ t.interrupt();
+ } finally {
+ pauseLock.unlock();
+ }
+ }
+
+ public void start() {
+ pauseLock.lock();
+ try {
+ isStopped = false;
+ unpaused.signalAll();
+ } finally {
+ pauseLock.unlock();
+ }
+ }
+
+ public void stop() {
+ pauseLock.lock();
+ try {
+ isStopped = true;
+ } finally {
+ pauseLock.unlock();
+ }
+ }
+
+ public boolean isRunning() {
+ return !isStopped;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
index c3248a3..0daa20f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterDeployWithStartOnlyTest.java
@@ -391,7 +391,7 @@ public class ClusterDeployWithStartOnlyTest extends EasyMockSupport {
ambariContext.persistInstallStateForUI(CLUSTER_NAME, STACK_NAME, STACK_VERSION);
expectLastCall().once();
- expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(2);
+ expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(1);
persistedTopologyRequest = new PersistedTopologyRequest(1, request);
expect(persistedState.getAllRequests()).andReturn(Collections.emptyMap()).once();
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
index 372d0a1..bbf4fdb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartOnComponentLevelTest.java
@@ -368,7 +368,7 @@ public class ClusterInstallWithoutStartOnComponentLevelTest extends EasyMockSupp
ambariContext.persistInstallStateForUI(CLUSTER_NAME, STACK_NAME, STACK_VERSION);
expectLastCall().once();
- expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(2);
+ expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(1);
persistedTopologyRequest = new PersistedTopologyRequest(1, request);
expect(persistedState.getAllRequests()).andReturn(Collections.emptyMap()).once();
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
index 9620507..059a8be 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ClusterInstallWithoutStartTest.java
@@ -363,7 +363,7 @@ public class ClusterInstallWithoutStartTest extends EasyMockSupport {
ambariContext.persistInstallStateForUI(CLUSTER_NAME, STACK_NAME, STACK_VERSION);
expectLastCall().once();
- expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(2);
+ expect(executor.submit(anyObject(AsyncCallableService.class))).andReturn(mockFuture).times(1);
persistedTopologyRequest = new PersistedTopologyRequest(1, request);
expect(persistedState.getAllRequests()).andReturn(Collections.emptyMap()).once();
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigureClusterTaskTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigureClusterTaskTest.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigureClusterTaskTest.java
index feefcab..b2dac8f 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigureClusterTaskTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/ConfigureClusterTaskTest.java
@@ -18,6 +18,7 @@
package org.apache.ambari.server.topology;
+import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.reset;
@@ -30,6 +31,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executors;
+import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
import org.apache.ambari.server.topology.tasks.ConfigureClusterTask;
import org.easymock.EasyMockRule;
import org.easymock.Mock;
@@ -60,12 +62,18 @@ public class ConfigureClusterTaskTest {
@Mock(type = MockType.STRICT)
private ClusterTopology clusterTopology;
+ @Mock(type = MockType.STRICT)
+ private AmbariContext ambariContext;
+
+ @Mock(type = MockType.NICE)
+ private AmbariEventPublisher ambariEventPublisher;
+
private ConfigureClusterTask testSubject;
@Before
public void before() {
- reset(clusterConfigurationRequest, clusterTopology);
- testSubject = new ConfigureClusterTask(clusterTopology, clusterConfigurationRequest);
+ reset(clusterConfigurationRequest, clusterTopology, ambariContext, ambariEventPublisher);
+ testSubject = new ConfigureClusterTask(clusterTopology, clusterConfigurationRequest, ambariEventPublisher);
}
@Test
@@ -75,11 +83,15 @@ public class ConfigureClusterTaskTest {
// is it OK to handle the non existence of hostgroups as a success?!
expect(clusterConfigurationRequest.getRequiredHostGroups()).andReturn(Collections.emptyList());
expect(clusterTopology.getHostGroupInfo()).andReturn(Collections.emptyMap());
+ expect(clusterTopology.getClusterId()).andReturn(1L).anyTimes();
+ expect(clusterTopology.getAmbariContext()).andReturn(ambariContext);
+ expect(ambariContext.getClusterName(1L)).andReturn("testCluster");
// this is only called if the "prerequisites" are satisfied
clusterConfigurationRequest.process();
+ ambariEventPublisher.publish(anyObject());
- replay(clusterConfigurationRequest, clusterTopology);
+ replay(clusterConfigurationRequest, clusterTopology, ambariContext, ambariEventPublisher);
// WHEN
Boolean result = testSubject.call();
http://git-wip-us.apache.org/repos/asf/ambari/blob/b653ee0a/ambari-server/src/test/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutorTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutorTest.java b/ambari-server/src/test/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutorTest.java
new file mode 100644
index 0000000..e94b25c
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/utils/ManagedThreadPoolExecutorTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+package org.apache.ambari.server.utils;
+
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+
+import junit.framework.Assert;
+
+public class ManagedThreadPoolExecutorTest {
+
+ @Test
+ public void testGetHostAndPortFromProperty() {
+
+ ManagedThreadPoolExecutor topologyTaskExecutor = new ManagedThreadPoolExecutor(1,
+ 1, 0L, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<Runnable>());
+ Future<Boolean> feature = topologyTaskExecutor.submit(new Callable<Boolean>() {
+ @Override
+ public Boolean call() {
+ return Boolean.TRUE;
+ }
+ });
+
+ Assert.assertTrue(!topologyTaskExecutor.isRunning());
+ topologyTaskExecutor.start();
+ Assert.assertTrue(topologyTaskExecutor.isRunning());
+ topologyTaskExecutor.stop();
+ Assert.assertTrue(!topologyTaskExecutor.isRunning());
+
+ }
+}
[07/50] [abbrv] ambari git commit: AMBARI-21966. "Next" button on
"Assign Masters" page gets disabled when installing Ambari. Patch 2.
(akovalenko)
Posted by jl...@apache.org.
AMBARI-21966. "Next" button on "Assign Masters" page gets disabled when installing Ambari. Patch 2. (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/73bd428d
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/73bd428d
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/73bd428d
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 73bd428de74c3a97fbcdc53e160a1d6346528ba2
Parents: 0f1099b
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Wed Sep 20 17:26:03 2017 +0300
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Wed Sep 20 18:06:03 2017 +0300
----------------------------------------------------------------------
.../wizard/step7/assign_master_controller.js | 5 ++++-
.../step7/assign_master_controller_test.js | 23 ++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/73bd428d/ambari-web/app/controllers/wizard/step7/assign_master_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7/assign_master_controller.js b/ambari-web/app/controllers/wizard/step7/assign_master_controller.js
index e8eaf47..a44aff4 100644
--- a/ambari-web/app/controllers/wizard/step7/assign_master_controller.js
+++ b/ambari-web/app/controllers/wizard/step7/assign_master_controller.js
@@ -297,8 +297,9 @@ App.AssignMasterOnStep7Controller = Em.Controller.extend(App.BlueprintMixin, App
renderHostInfo: function () {
var parentController = this.get('content.controllerName');
if (parentController) {
- this._super();
+ return this._super();
} else {
+ var dfd = $.Deferred();
var hosts = App.Host.find().toArray();
var result = [];
for (var p = 0; p < hosts.length; p++) {
@@ -315,6 +316,8 @@ App.AssignMasterOnStep7Controller = Em.Controller.extend(App.BlueprintMixin, App
this.set("hosts", result);
this.sortHosts(result);
this.set('isHostsLoaded', true);
+ dfd.resolve();
+ return dfd.promise();
}
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/73bd428d/ambari-web/test/controllers/wizard/step7/assign_master_controller_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step7/assign_master_controller_test.js b/ambari-web/test/controllers/wizard/step7/assign_master_controller_test.js
index fd7637e..79dad59 100644
--- a/ambari-web/test/controllers/wizard/step7/assign_master_controller_test.js
+++ b/ambari-web/test/controllers/wizard/step7/assign_master_controller_test.js
@@ -250,6 +250,7 @@ describe('App.AssignMasterOnStep7Controller', function () {
})
]);
sinon.stub(view, 'sortHosts');
+ sinon.stub(view, 'getHosts').returns([]);
sinon.stub(numberUtils, 'bytesToSize').returns(1);
});
@@ -281,6 +282,28 @@ describe('App.AssignMasterOnStep7Controller', function () {
host_info: Em.I18n.t('installer.step5.hostInfo').fmt('host1', 1, 1)
})])).to.be.true;
});
+
+ it("should make general request to get hosts", function() {
+ view.reopen({
+ content: Em.Object.create({
+ controllerName: 'name'
+ })
+ });
+ view.renderHostInfo();
+ var args = testHelpers.findAjaxRequest('name', 'hosts.high_availability.wizard');
+ expect(args).exists;
+ });
+
+ it("should make request for installer to get hosts", function() {
+ view.reopen({
+ content: Em.Object.create({
+ controllerName: 'installerController'
+ })
+ });
+ view.renderHostInfo();
+ var args = testHelpers.findAjaxRequest('name', 'hosts.info.install');
+ expect(args).exists;
+ });
});
describe("#loadMasterComponentHosts()", function () {
[41/50] [abbrv] ambari git commit: AMBARI-22029. Download Client
Configs fails. (mpapirkovskyy)
Posted by jl...@apache.org.
AMBARI-22029. Download Client Configs fails. (mpapirkovskyy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4b59ba82
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4b59ba82
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4b59ba82
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 4b59ba8203abf46d2c5bfa766bbf968ab964cff4
Parents: 0393451
Author: Myroslav Papirkovskyi <mp...@hortonworks.com>
Authored: Mon Sep 25 19:09:44 2017 +0300
Committer: Myroslav Papirkovskyi <mp...@hortonworks.com>
Committed: Mon Sep 25 19:10:33 2017 +0300
----------------------------------------------------------------------
.../server/controller/internal/ClientConfigResourceProvider.java | 2 ++
.../OOZIE/4.0.0.2.0/package/scripts/params_linux.py | 2 ++
2 files changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4b59ba82/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
index 166fc5f..9f4a4a0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
@@ -445,6 +445,8 @@ public class ClientConfigResourceProvider extends AbstractControllerResourceProv
jsonContent.put("hostname", hostName);
jsonContent.put("public_hostname", publicHostName);
jsonContent.put("clusterName", cluster.getClusterName());
+ jsonContent.put("serviceName", serviceName);
+ jsonContent.put("role", componentName);
jsonConfigurations = gson.toJson(jsonContent);
File tmpDirectory = new File(TMP_PATH);
http://git-wip-us.apache.org/repos/asf/ambari/blob/4b59ba82/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
index e856c01..b66e157 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
@@ -57,6 +57,8 @@ architecture = get_architecture()
# Needed since this writes out the Atlas Hive Hook config file.
cluster_name = config['clusterName']
+serviceName = config['serviceName']
+role = config['role']
hostname = config["hostname"]
[22/50] [abbrv] ambari git commit: AMBARI-22030. OOZIE/OOZIE_SERVER
restart failed saying AttributeError: 'NoneType' object has no attribute
'upper' during EU [accidental commit] (ncole)
Posted by jl...@apache.org.
AMBARI-22030. OOZIE/OOZIE_SERVER restart failed saying AttributeError: 'NoneType' object has no attribute 'upper' during EU [accidental commit] (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/5d5f9749
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/5d5f9749
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/5d5f9749
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 5d5f9749e82bf815a1c8f82f090b769421d39949
Parents: 7c687bb
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Sep 21 18:07:57 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Sep 21 18:07:57 2017 -0400
----------------------------------------------------------------------
.../libraries/functions/copy_tarball.py.rej | 78 --------------------
1 file changed, 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/5d5f9749/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
deleted file mode 100644
index b2c11fc..0000000
--- a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
+++ /dev/null
@@ -1,78 +0,0 @@
-diff a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py (rejected hunks)
-@@ -41,26 +41,65 @@ STACK_VERSION_PATTERN = "{{ stack_version }}"
- # especially since it is an attribute of a stack and becomes
- # complicated to change during a Rolling/Express upgrade.
- TARBALL_MAP = {
-- "slider": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "slider": {
-+ "dirs": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/slider/slider.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "tez": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "SLIDER"
-+ },
-+
-+ "tez": {
-+ "dirs": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/tez/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "tez_hive2": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "TEZ"
-+ },
-+
-+ "tez_hive2": {
-+ "dirs": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/tez_hive2/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "hive": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "HIVE"
-+ },
-+
-+ "hive": {
-+ "dirs": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/hive/hive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "pig": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "HIVE"
-+ },
-+
-+ "pig": {
-+ "dirs": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/pig/pig.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "hadoop_streaming": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "PIG"
-+ },
-+
-+ "hadoop_streaming": {
-+ "dirs": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/mapreduce/hadoop-streaming.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "sqoop": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "MAPREDUCE2"
-+ },
-+
-+ "sqoop": {
-+ "dirs": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/sqoop/sqoop.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "mapreduce": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
-+ "service": "SQOOP"
-+ },
-+
-+ "mapreduce": {
-+ "dirs": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/mapreduce/mapreduce.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "spark": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
-+ "service": "MAPREDUCE2"
-+ },
-+
-+ "spark": {
-+ "dirs": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
- "/{0}/apps/{1}/spark/spark-{0}-assembly.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-- "spark2": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
-- "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN))
-+ "service": "SPARK"
-+ },
-+
-+ "spark2": {
-+ "dirs": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
-+ "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
-+ "service": "SPARK2"
-+ }
- }
-
-
[39/50] [abbrv] ambari git commit: AMBARI-22017 stack advisor
recommends all components on single host for HDP-2.6 Ambari trunk build
(dsen)
Posted by jl...@apache.org.
AMBARI-22017 stack advisor recommends all components on single host for HDP-2.6 Ambari trunk build (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/999daefe
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/999daefe
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/999daefe
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 999daefe0f09b92f42e50ff12f66dd95a112a003
Parents: 986a65d
Author: Dmytro Sen <ds...@apache.org>
Authored: Mon Sep 25 16:39:09 2017 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Mon Sep 25 16:39:09 2017 +0300
----------------------------------------------------------------------
.../stacks/HDP/2.1/services/stack_advisor.py | 4 +++
.../stacks/2.1/common/test_stack_advisor.py | 28 ++++++++++++++++++++
2 files changed, 32 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/999daefe/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
index ddd795f..aefb603 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/services/stack_advisor.py
@@ -86,6 +86,10 @@ class HDP21StackAdvisor(HDP206StackAdvisor):
Must be overriden in child class.
"""
+
+ # since old stack advisors are extending each other they should call parent method first
+ super(HDP21StackAdvisor, self).modifyComponentLayoutSchemes()
+
self.componentLayoutSchemes.update({
'APP_TIMELINE_SERVER': {31: 1, "else": 2},
'FALCON_SERVER': {6: 1, 31: 2, "else": 3}
http://git-wip-us.apache.org/repos/asf/ambari/blob/999daefe/ambari-server/src/test/python/stacks/2.1/common/test_stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.1/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.1/common/test_stack_advisor.py
index bdd34fc..6bd02bf 100644
--- a/ambari-server/src/test/python/stacks/2.1/common/test_stack_advisor.py
+++ b/ambari-server/src/test/python/stacks/2.1/common/test_stack_advisor.py
@@ -557,3 +557,31 @@ class TestHDP21StackAdvisor(TestCase):
res = self.stackAdvisor.validateHiveConfigurations(properties, recommendedDefaults, configurations, '', '')
self.assertEquals(res, res_expected)
+
+ def test_modifyComponentLayoutSchemes(self):
+ res_expected = {}
+ res_expected.update({
+ 'NAMENODE': {"else": 0},
+ 'SECONDARY_NAMENODE': {"else": 1},
+ 'HBASE_MASTER': {6: 0, 31: 2, "else": 3},
+
+ 'HISTORYSERVER': {31: 1, "else": 2},
+ 'RESOURCEMANAGER': {31: 1, "else": 2},
+
+ 'OOZIE_SERVER': {6: 1, 31: 2, "else": 3},
+
+ 'HIVE_SERVER': {6: 1, 31: 2, "else": 4},
+ 'HIVE_METASTORE': {6: 1, 31: 2, "else": 4},
+ 'WEBHCAT_SERVER': {6: 1, 31: 2, "else": 4},
+ 'METRICS_COLLECTOR': {3: 2, 6: 2, 31: 3, "else": 5},
+ })
+
+ res_expected.update({
+ 'APP_TIMELINE_SERVER': {31: 1, "else": 2},
+ 'FALCON_SERVER': {6: 1, 31: 2, "else": 3}
+ })
+
+ self.stackAdvisor.modifyComponentLayoutSchemes()
+ res = self.stackAdvisor.getComponentLayoutSchemes()
+
+ self.assertEquals(res, res_expected)
[16/50] [abbrv] ambari git commit: AMBARI-21919. Kerberos identity
references should use the "reference" attribute (rlevas)
Posted by jl...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json
index 7315c09..8688753 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -68,7 +70,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -110,7 +113,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -145,7 +149,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -154,7 +159,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -164,10 +170,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -175,7 +183,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -199,7 +208,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/kerberos.json b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/kerberos.json
index b1501b8..a3cfaea 100644
--- a/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/YARN/3.0.0.3.0/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -91,7 +93,8 @@
}
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "yarn_nodemanager_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-interactive-site/hive.llap.daemon.service.principal"
},
@@ -126,7 +129,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -168,7 +172,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -177,7 +182,8 @@
}
},
{
- "name": "/YARN/RESOURCEMANAGER/resource_manager_rm",
+ "name": "yarn_resourcemanager_resource_manager_rm",
+ "reference": "/YARN/RESOURCEMANAGER/resource_manager_rm",
"principal": {
"configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -212,7 +218,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -221,7 +228,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -231,10 +239,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -242,7 +252,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -266,7 +277,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0/kerberos.json b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0/kerberos.json
index b605c9d..36345ba 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.6.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZEPPELIN",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zeppelin_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "zeppelin_user",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/kerberos.json b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/kerberos.json
index b605c9d..36345ba 100644
--- a/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ZEPPELIN/0.7.0/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZEPPELIN",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zeppelin_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "zeppelin_user",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5/kerberos.json b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5/kerberos.json
index 0a64ea5..45895a9 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5/kerberos.json
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZOOKEEPER",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zookeeper_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/kerberos_descriptor_schema.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/kerberos_descriptor_schema.json b/ambari-server/src/main/resources/kerberos_descriptor_schema.json
index 34cdd49..45a2c29 100644
--- a/ambari-server/src/main/resources/kerberos_descriptor_schema.json
+++ b/ambari-server/src/main/resources/kerberos_descriptor_schema.json
@@ -5,10 +5,11 @@
"properties": {
"name": {
"type": "string",
- "pattern": "^(\\.\\/)?[/a-zA-Z0-9_\\-]+$"
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
},
"reference": {
- "type": "string"
+ "type": "string",
+ "pattern": "^(\\.\\/)?[/a-zA-Z0-9_\\-]+$"
},
"principal": {
"type": "object",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json
index 8618804..0464369 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -67,7 +69,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -109,7 +112,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -144,7 +148,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -153,7 +158,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -163,10 +169,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -174,7 +182,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -198,7 +207,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/ECS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/ECS/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/ECS/kerberos.json
index 3e8451d..2bba497 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/ECS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/ECS/kerberos.json
@@ -4,7 +4,8 @@
"name": "ECS",
"identities": [
{
- "name": "/smokeuser"
+ "name": "ecs_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "hdfs",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/kerberos.json
index 5dfcb5e..3765ff3 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/HBASE/kerberos.json
@@ -4,10 +4,12 @@
"name": "HBASE",
"identities": [
{
- "name": "/spnego"
+ "name": "hbase_spnego",
+ "reference": "/spnego"
},
{
- "name": "/ECS/hdfs"
+ "name": "hbase_hdfs",
+ "reference": "/ECS/hdfs"
},
{
"name": "hbase",
@@ -31,7 +33,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hbase_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/kerberos.json
index 4c5bcdb..b8f2d3c 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3.ECS/services/YARN/kerberos.json
@@ -4,13 +4,16 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/ECS/hdfs"
+ "name": "yarn_hdfs",
+ "reference": "/ECS/hdfs"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -69,7 +72,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanger_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -111,7 +115,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -146,7 +151,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -155,7 +161,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timneline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -165,13 +172,16 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/ECS/hdfs"
+ "name": "mapreduce2_hdfs",
+ "reference": "/ECS/hdfs"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -200,7 +210,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/services/ACCUMULO/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/services/ACCUMULO/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/services/ACCUMULO/kerberos.json
index 04ef946..15d4ff0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/services/ACCUMULO/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/services/ACCUMULO/kerberos.json
@@ -67,10 +67,12 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "accumulo_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/smokeuser"
+ "name": "accumulo_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -91,7 +93,8 @@
"name": "ACCUMULO_MASTER",
"identities": [
{
- "name": "./accumulo_service"
+ "name": "accumulo_accumulo_master_accumulo_service",
+ "reference": "./accumulo_service"
}
]
},
@@ -99,7 +102,8 @@
"name": "ACCUMULO_TSERVER",
"identities": [
{
- "name": "./accumulo_service"
+ "name": "accumulo_accumulo_tserver_accumulo_service",
+ "reference": "./accumulo_service"
}
]
},
@@ -107,10 +111,12 @@
"name": "ACCUMULO_MONITOR",
"identities": [
{
- "name": "./accumulo_service"
+ "name": "accumulo_accumulo_monitor_accumulo_service",
+ "reference": "./accumulo_service"
},
{
- "name": "./accumulo_tracer"
+ "name": "accumulo_accumulo_monitor_accumulo_tracer",
+ "reference": "./accumulo_tracer"
}
]
},
@@ -118,7 +124,8 @@
"name": "ACCUMULO_GC",
"identities": [
{
- "name": "./accumulo_service"
+ "name": "accumulo_accumulo_gc_accumulo_service",
+ "reference": "./accumulo_service"
}
]
},
@@ -126,7 +133,8 @@
"name": "ACCUMULO_TRACER",
"identities": [
{
- "name": "./accumulo_tracer"
+ "name": "accumulo_accumulo_tracer_accumulo_tracer",
+ "reference": "./accumulo_tracer"
}
]
},
@@ -134,7 +142,8 @@
"name": "ACCUMULO_CLIENT",
"identities": [
{
- "name": "./accumulo"
+ "name": "accumulo_accumulo_client_accumulo",
+ "reference": "./accumulo"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3/services/ACCUMULO/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/ACCUMULO/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3/services/ACCUMULO/kerberos.json
index cbfac42..e500b06 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/ACCUMULO/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/ACCUMULO/kerberos.json
@@ -67,7 +67,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "accumulo_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -93,7 +94,8 @@
"name": "ACCUMULO_MASTER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "accumulo_accumulo_master_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3/services/TEZ/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/TEZ/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3/services/TEZ/kerberos.json
index ee7c7cf..3e88739 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/TEZ/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/TEZ/kerberos.json
@@ -7,7 +7,8 @@
"name": "TEZ_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "tez_tez_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
],
"configurations": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/kerberos.json
index 0e7a5de..12747bc 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -76,7 +78,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -118,7 +121,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -153,7 +157,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -162,7 +167,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -172,10 +178,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -183,7 +191,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -207,7 +216,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/FALCON/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/FALCON/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/FALCON/kerberos.json
index 0c4507d..45fe2e8 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/FALCON/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/FALCON/kerberos.json
@@ -4,10 +4,12 @@
"name": "FALCON",
"identities": [
{
- "name": "/spnego"
+ "name": "falcon_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "falcon_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -27,7 +29,8 @@
"name": "FALCON_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "falcon_falcon_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "falcon_server",
@@ -51,7 +54,8 @@
}
},
{
- "name": "/FALCON/FALCON_SERVER/falcon_server",
+ "name": "falcon_falcon_server_falcon_server",
+ "reference": "/FALCON/FALCON_SERVER/falcon_server",
"principal": {
"configuration": "falcon-atlas-application.properties/atlas.jaas.KafkaClient.option.principal"
},
@@ -60,7 +64,8 @@
}
},
{
- "name": "/spnego",
+ "name": "falcon_falcon_server_falcon_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "falcon-startup.properties/*.falcon.http.authentication.kerberos.principal"
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
index 011921b..0b06003 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HBASE/kerberos.json
@@ -4,7 +4,8 @@
"name": "HBASE",
"identities": [
{
- "name": "/spnego"
+ "name": "hbase_spnego",
+ "reference": "/spnego"
},
{
"name": "hbase",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hbase_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -60,7 +62,8 @@
"name": "HBASE_MASTER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hbase_hbase_master_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hbase_master_hbase",
@@ -84,7 +87,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hbase_hbase_master_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
@@ -129,7 +133,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hbase_hbase_regionserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/HDFS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HDFS/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HDFS/kerberos.json
index 766a014..c39c85b 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HDFS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HDFS/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -43,7 +45,8 @@
"name": "HDFS_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hdfs_hdfs_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -93,13 +96,15 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
},
{
- "name": "/HDFS/NAMENODE/namenode_nn",
+ "name": "hdfs_namenode_namenode_nn",
+ "reference": "/HDFS/NAMENODE/namenode_nn",
"principal": {
"configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -175,7 +180,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
@@ -233,7 +239,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_journalnode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/kerberos.json
index 044bd65..6e2b25c 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/HIVE/kerberos.json
@@ -4,10 +4,12 @@
"name": "HIVE",
"identities": [
{
- "name": "/spnego"
+ "name": "hive_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "hive_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -33,7 +35,8 @@
"name": "HIVE_METASTORE",
"identities": [
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "hive_hive_metastore_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-site/hive.metastore.kerberos.principal"
},
@@ -47,7 +50,8 @@
"name": "HIVE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hive_server_hive",
@@ -81,7 +85,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hive_hive_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hive-site/hive.server2.authentication.spnego.principal"
},
@@ -105,16 +110,20 @@
"name": "HIVE_SERVER_INTERACTIVE",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_interactive_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive"
+ "name": "hive_hive_server_interactive_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive"
},
{
- "name": "/HIVE/HIVE_SERVER/spnego"
+ "name": "hive_hive_server_interactive_spnego",
+ "reference": "/HIVE/HIVE_SERVER/spnego"
},
{
- "name": "/YARN/NODEMANAGER/llap_zk_hive"
+ "name": "hive_hive_server_interactive_llap_zk_hive",
+ "reference": "/YARN/NODEMANAGER/llap_zk_hive"
}
]
},
@@ -122,7 +131,8 @@
"name": "WEBHCAT_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "hive_webhcat_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "webhcat-site/templeton.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/KNOX/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/KNOX/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/KNOX/kerberos.json
index 2d8aa0d..c205d7d 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/KNOX/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/KNOX/kerberos.json
@@ -29,7 +29,8 @@
}
},
{
- "name": "/KNOX/KNOX_GATEWAY/knox_principal",
+ "name": "knox_knox_gateway_knox_principal",
+ "reference": "/KNOX/KNOX_GATEWAY/knox_principal",
"principal": {
"configuration": "ranger-knox-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/RANGER_KMS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/RANGER_KMS/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/RANGER_KMS/kerberos.json
index 8bf4cd8..1ef4568 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/RANGER_KMS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/RANGER_KMS/kerberos.json
@@ -4,7 +4,8 @@
"name": "RANGER_KMS",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_spnego",
+ "reference": "/spnego",
"keytab": {
"configuration": "kms-site/hadoop.kms.authentication.kerberos.keytab"
}
@@ -36,7 +37,8 @@
"name": "RANGER_KMS_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "ranger_kms_ranger_kms_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "kms-site/hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal"
},
@@ -62,7 +64,8 @@
}
},
{
- "name": "/RANGER_KMS/RANGER_KMS_SERVER/rangerkms",
+ "name": "ranger_kms_ranger_kms_server_rangerkms",
+ "reference": "/RANGER_KMS/RANGER_KMS_SERVER/rangerkms",
"principal": {
"configuration": "ranger-kms-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/SPARK/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/SPARK/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/SPARK/kerberos.json
index 54ddf02..b4e93dd 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/SPARK/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/SPARK/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "sparkuser",
@@ -58,7 +59,8 @@
"name": "SPARK_JOBHISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_spark_jobhistoryserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -69,10 +71,12 @@
"name": "SPARK_THRIFTSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_spark_thriftserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive"
+ "name": "spark_spark_thriftserver_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive"
}
]
},
@@ -80,7 +84,8 @@
"name": "LIVY_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "spark_livy_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "livyuser",
@@ -104,7 +109,8 @@
}
},
{
- "name": "/spnego",
+ "name": "spark_livy_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "livy-conf/livy.server.auth.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/YARN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/YARN/kerberos.json
index 29cc00a..fca14ab 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/YARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/YARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -86,7 +88,8 @@
}
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "yarn_nodemanager_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-interactive-site/hive.llap.daemon.service.principal"
},
@@ -121,7 +124,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -163,7 +167,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -172,7 +177,8 @@
}
},
{
- "name": "/YARN/RESOURCEMANAGER/resource_manager_rm",
+ "name": "yarn_resourcemanager_resource_manager_rm",
+ "reference": "/YARN/RESOURCEMANAGER/resource_manager_rm",
"principal": {
"configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -207,7 +213,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -216,7 +223,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -226,10 +234,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -237,7 +247,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -261,7 +272,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.5/services/ZEPPELIN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ZEPPELIN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ZEPPELIN/kerberos.json
index b605c9d..36345ba 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/services/ZEPPELIN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/services/ZEPPELIN/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZEPPELIN",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zeppelin_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "zeppelin_user",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/kerberos.json
index 7d10ccc..6600534 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ATLAS/kerberos.json
@@ -67,7 +67,8 @@
}
},
{
- "name": "/spnego",
+ "name": "atlas_atlas_server_spnego",
+ "reference": "/spnego",
"principal": {
"value": "HTTP/_HOST@${realm}",
"configuration": "application-properties/atlas.authentication.method.kerberos.principal"
@@ -87,10 +88,12 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker"
+ "name": "atlas_atlas_server_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker"
},
{
- "name": "/AMBARI_INFRA/INFRA_SOLR/infra-solr"
+ "name": "atlas_atlas_server_infra-solr",
+ "reference": "/AMBARI_INFRA/INFRA_SOLR/infra-solr"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/DRUID/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/DRUID/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/DRUID/kerberos.json
index 5b6b573..464e420 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/DRUID/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/DRUID/kerberos.json
@@ -4,7 +4,8 @@
"name": "DRUID",
"identities": [
{
- "name": "/spnego",
+ "name": "druid_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "druid-common/druid.hadoop.security.spnego.principal"
},
@@ -55,7 +56,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "druid_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -63,7 +65,8 @@
"name": "DRUID_HISTORICAL",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_historical_druid",
+ "reference": "/druid"
}
]
},
@@ -71,7 +74,8 @@
"name": "DRUID_BROKER",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_broker_druid",
+ "reference": "/druid"
}
]
},
@@ -79,7 +83,8 @@
"name": "DRUID_OVERLORD",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_historical_druid",
+ "reference": "/druid"
}
]
},
@@ -87,7 +92,8 @@
"name": "DRUID_COORDINATOR",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_coordinator_druid",
+ "reference": "/druid"
}
]
},
@@ -95,7 +101,8 @@
"name": "DRUID_MIDDLEMANAGER",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_middlemanager_druid",
+ "reference": "/druid"
}
]
},
@@ -103,7 +110,8 @@
"name": "DRUID_SUPERSET",
"identities": [
{
- "name": "/druid"
+ "name": "druid_druid_superset_druid",
+ "reference": "/druid"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/HDFS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/HDFS/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/HDFS/kerberos.json
index b5acf92..f8bdc5c 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/HDFS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/HDFS/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -44,7 +46,8 @@
"name": "HDFS_CLIENT",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hdfs_hdfs_client_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
},
@@ -94,13 +97,15 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
},
{
- "name": "/HDFS/NAMENODE/namenode_nn",
+ "name": "hdfs_namenode_namenode_nn",
+ "reference": "/HDFS/NAMENODE/namenode_nn",
"principal": {
"configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -176,7 +181,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
@@ -234,7 +240,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_journalnode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/OOZIE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/OOZIE/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/OOZIE/kerberos.json
index f1092f5..ca21770 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/OOZIE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/OOZIE/kerberos.json
@@ -4,10 +4,12 @@
"name": "OOZIE",
"identities": [
{
- "name": "/spnego"
+ "name": "oozie_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "oozie_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -30,7 +32,8 @@
"name": "OOZIE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "oozie_oozie_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "oozie_server",
@@ -54,7 +57,8 @@
}
},
{
- "name": "/spnego",
+ "name": "oozie_oozie_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "oozie-site/oozie.authentication.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK/kerberos.json
index c68d627..575b9fa 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "sparkuser",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK2/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK2/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK2/kerberos.json
index 8b6b41d..89f19d4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK2/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SPARK2/kerberos.json
@@ -4,7 +4,8 @@
"name": "SPARK2",
"identities": [
{
- "name": "/smokeuser"
+ "name": "spark2_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "spark2user",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/SUPERSET/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SUPERSET/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SUPERSET/kerberos.json
index b79bac9..5d5125d 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/SUPERSET/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/SUPERSET/kerberos.json
@@ -25,7 +25,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "superset_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -33,7 +34,8 @@
"name": "SUPERSET",
"identities": [
{
- "name": "/superset"
+ "name": "superset_superset_superset",
+ "reference": "/superset"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/kerberos.json
index 4b9472b..e0417bf 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/YARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -91,7 +93,8 @@
}
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "yarn_nodemanager_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-interactive-site/hive.llap.daemon.service.principal"
},
@@ -149,7 +152,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -191,7 +195,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -200,7 +205,8 @@
}
},
{
- "name": "/YARN/RESOURCEMANAGER/resource_manager_rm",
+ "name": "yarn_resourcemanager_resource_manager_rm",
+ "reference": "/YARN/RESOURCEMANAGER/resource_manager_rm",
"principal": {
"configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -235,7 +241,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -244,7 +251,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timeline_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -254,10 +262,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -265,7 +275,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_historyserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -289,7 +300,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_historyserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/kerberos.json b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/kerberos.json
index b605c9d..36345ba 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/ZEPPELIN/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZEPPELIN",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zeppelin_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "zeppelin_user",
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
index f1026f1..1059f89 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHBASE/kerberos.json
@@ -4,7 +4,8 @@
"name": "FAKEHBASE",
"identities": [
{
- "name": "/spnego"
+ "name": "fakehbase_spnego",
+ "reference": "/spnego"
},
{
"name": "hbase",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "fakehbase_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -60,7 +62,8 @@
"name": "FAKEHBASE_MASTER",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "fakehbase_fakehbase_master_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "hbase_master_hbase",
@@ -84,7 +87,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakehbase_fakehbase_master_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
@@ -129,7 +133,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakehbase_fakehbase_regionserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hbase-site/hbase.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHDFS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHDFS/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHDFS/kerberos.json
index 4129506..2ee0bdf 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHDFS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEHDFS/kerberos.json
@@ -4,7 +4,8 @@
"name": "FAKEHDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "fakehdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "fakehdfs_smokeuser",
+ "reference": "/smokeuser"
}
],
"auth_to_local_properties" : [
@@ -43,7 +45,8 @@
"name": "FAKEHDFS_CLIENT",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "fakehdfs_fakehdfs_client_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
}
]
},
@@ -93,13 +96,15 @@
}
},
{
- "name": "/spnego",
+ "name": "fakehdfs_fakehdfs_fakenamenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
},
{
- "name": "/FAKEHDFS/FAKENAMENODE/namenode_nn",
+ "name": "fakehdfs_fakehdfs_fakenamenode_namenode_nn",
+ "reference": "/FAKEHDFS/FAKENAMENODE/namenode_nn",
"principal": {
"configuration": "ranger-hdfs-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -175,7 +180,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakehdfs_secondary_fakenamenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
@@ -233,7 +239,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakehdfs_fakejournalnode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.journalnode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEYARN/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEYARN/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEYARN/kerberos.json
index b960dce..8b4ae53 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEYARN/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEYARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "FAKEYARN",
"identities": [
{
- "name": "/spnego"
+ "name": "fakeyarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "fakeyarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -87,7 +89,8 @@
}
},
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "fakeyarn_fakenodemanager_hive_server_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-interactive-site/hive.llap.daemon.service.principal"
},
@@ -122,7 +125,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakeyarn_fakenodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -164,7 +168,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakeyarn_fakeresourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -173,7 +178,8 @@
}
},
{
- "name": "/FAKEYARN/FAKERESOURCEMANAGER/resource_manager_rm",
+ "name": "fakeyarn_fakeresourcemanager_resource_manager_rm",
+ "reference": "/FAKEYARN/FAKERESOURCEMANAGER/resource_manager_rm",
"principal": {
"configuration": "ranger-yarn-audit/xasecure.audit.jaas.Client.option.principal"
},
@@ -208,7 +214,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakeyarn_fakeapp_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -217,7 +224,8 @@
}
},
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "app_timeline_server_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
}
]
}
@@ -227,10 +235,12 @@
"name": "FAKEMAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "fakemapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "fakemapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -238,7 +248,8 @@
"name": "FAKEHISTORYSERVER",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "fakemapreduce2_fakehistoryserver_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -262,7 +273,8 @@
}
},
{
- "name": "/spnego",
+ "name": "fakemapreduce2_fakehistoryserver_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
index 0a64ea5..45895a9 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/FAKEZOOKEEPER/kerberos.json
@@ -4,7 +4,8 @@
"name": "ZOOKEEPER",
"identities": [
{
- "name": "/smokeuser"
+ "name": "zookeeper_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/kerberos.json
index 335d9f3..55f25c8 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/GRUMPY/kerberos.json
@@ -4,7 +4,8 @@
"name": "GRUMPY",
"identities": [
{
- "name": "/spnego"
+ "name": "grumpy_spnego",
+ "reference": "/spnego"
},
{
"name": "grumpy",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "grumpy_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -38,7 +40,8 @@
"name": "GRUMPY",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "grumpy_grumpy_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "grumpy_grumpy",
@@ -62,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "grumpy_grumpy_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "grumpy-site/grumpy.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/HAPPY/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/HAPPY/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/HAPPY/kerberos.json
index 55389b0..43acb1d 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/HAPPY/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/HAPPY/kerberos.json
@@ -4,7 +4,8 @@
"name": "HAPPY",
"identities": [
{
- "name": "/spnego"
+ "name": "happy_spnego",
+ "reference": "/spnego"
},
{
"name": "happy",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "happy_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -38,7 +40,8 @@
"name": "HAPPY",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "happy_happy_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "happy_happy",
@@ -62,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "happy_happy_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "happy-site/happy.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/KERBEROS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/KERBEROS/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/KERBEROS/kerberos.json
index 6ab7610..e5860cf 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/KERBEROS/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/KERBEROS/kerberos.json
@@ -4,7 +4,8 @@
"name": "KERBEROS",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kerberos_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/kerberos.json
index f22274f..c9eeb94 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/SLEEPY/kerberos.json
@@ -4,7 +4,8 @@
"name": "SLEEPY",
"identities": [
{
- "name": "/spnego"
+ "name": "sleepy_spnego",
+ "reference": "/spnego"
},
{
"name": "sleepy",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "sleepy_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -38,7 +40,8 @@
"name": "SLEEPY",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "sleepy_sleepy_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "sleepy_sleepy",
@@ -62,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "sleepy_sleepy_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "sleepy-site/sleepy.security.authentication.spnego.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/main/resources/stacks/PERF/1.0/services/SNOW/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/PERF/1.0/services/SNOW/kerberos.json b/ambari-server/src/main/resources/stacks/PERF/1.0/services/SNOW/kerberos.json
index 7be70f7..1e2d97e 100644
--- a/ambari-server/src/main/resources/stacks/PERF/1.0/services/SNOW/kerberos.json
+++ b/ambari-server/src/main/resources/stacks/PERF/1.0/services/SNOW/kerberos.json
@@ -4,7 +4,8 @@
"name": "SNOW",
"identities": [
{
- "name": "/spnego"
+ "name": "snow_spnego",
+ "reference": "/spnego"
},
{
"name": "snow",
@@ -28,7 +29,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "snow_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -38,7 +40,8 @@
"name": "SNOW_WHITE",
"identities": [
{
- "name": "/FAKEHDFS/FAKENAMENODE/hdfs"
+ "name": "snow_snow_white_hdfs",
+ "reference": "/FAKEHDFS/FAKENAMENODE/hdfs"
},
{
"name": "snow_white_snow",
@@ -62,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "snow_snow_white_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "snow-site/snow.security.authentication.spnego.kerberos.principal"
},
[20/50] [abbrv] ambari git commit: AMBARI-22030. OOZIE/OOZIE_SERVER
restart failed saying AttributeError: 'NoneType' object has no attribute
'upper' during EU (ncole)
Posted by jl...@apache.org.
AMBARI-22030. OOZIE/OOZIE_SERVER restart failed saying AttributeError: 'NoneType' object has no attribute 'upper' during EU (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f9c0c909
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f9c0c909
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f9c0c909
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: f9c0c909be405ecfe3607ad4e07d3aa6eb6cf3df
Parents: f095b95
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Sep 21 17:13:12 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Sep 21 17:13:27 2017 -0400
----------------------------------------------------------------------
.../libraries/functions/upgrade_summary.py | 16 +++++
.../4.0.0.2.0/package/scripts/params_linux.py | 18 +++++-
.../stacks/2.0.6/OOZIE/test_oozie_server.py | 66 ++++++++++++++++++++
3 files changed, 98 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/f9c0c909/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py b/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
index 849ac8a..f8a46c0 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/upgrade_summary.py
@@ -25,6 +25,22 @@ from resource_management.libraries.functions.constants import Direction
UpgradeSummary = namedtuple("UpgradeSummary", "type direction orchestration is_revert services")
UpgradeServiceSummary = namedtuple("UpgradeServiceSummary", "service_name source_stack source_version target_stack target_version")
+
+def get_source_stack(service_name):
+ """
+ Gets the source stack (from) version of a service participating in an upgrade. If there is no
+ upgrade or the specific service is not participating, this will return None.
+ :param service_name: the service name to check for, or None to extract it from the command
+ :return: the stack that the service is upgrading from or None if there is no upgrade or
+ the service is not included in the upgrade.
+ """
+ service_summary = _get_service_summary(service_name)
+ if service_summary is None:
+ return None
+
+ return service_summary.source_stack
+
+
def get_source_version(service_name = None, default_version=None):
"""
Gets the source (from) version of a service participating in an upgrade. If there is no
http://git-wip-us.apache.org/repos/asf/ambari/blob/f9c0c909/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
index 44c88b7..e856c01 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_linux.py
@@ -19,8 +19,10 @@ limitations under the License.
"""
from ambari_commons.constants import AMBARI_SUDO_BINARY
from resource_management.libraries.functions import format
-from resource_management.libraries.functions import conf_select, stack_select
-from resource_management.libraries.functions.constants import StackFeature
+from resource_management.libraries.functions import conf_select
+from resource_management.libraries.functions import stack_select
+from resource_management.libraries.functions import StackFeature
+from resource_management.libraries.functions import upgrade_summary
from resource_management.libraries.functions.stack_features import check_stack_feature
from resource_management.libraries.functions.default import default
from resource_management.libraries.functions import get_kinit_path
@@ -33,8 +35,10 @@ from resource_management.libraries.functions.expect import expect
from resource_management.libraries.resources.hdfs_resource import HdfsResource
from resource_management.libraries.functions.get_architecture import get_architecture
from resource_management.libraries.functions.stack_features import get_stack_feature_version
+from resource_management.libraries.functions.stack_tools import get_stack_name
from resource_management.libraries.functions.version import get_major_version
+
from resource_management.core.utils import PasswordString
from ambari_commons.credential_store_helper import get_password_from_credential_store
from urlparse import urlparse
@@ -65,6 +69,16 @@ agent_stack_retry_on_unavailability = config['hostLevelParams']['agent_stack_ret
agent_stack_retry_count = expect("/hostLevelParams/agent_stack_retry_count", int)
stack_root = status_params.stack_root
+
+# The source stack will be present during a cross-stack upgrade.
+# E.g., BigInsights-4.2.5 or HDP-2.6
+source_stack = default("/commandParams/source_stack", None)
+if source_stack is None:
+ source_stack = upgrade_summary.get_source_stack("OOZIE")
+
+# This variable name is important, do not change
+source_stack_name = get_stack_name(source_stack)
+
stack_version_unformatted = status_params.stack_version_unformatted
stack_version_formatted = status_params.stack_version_formatted
major_stack_version = get_major_version(stack_version_formatted)
http://git-wip-us.apache.org/repos/asf/ambari/blob/f9c0c909/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
index dfa22fd..a5dac6c 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
@@ -1280,6 +1280,72 @@ class TestOozieServer(RMFTestCase):
self.assertResourceCalled('File', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip', mode = 0644)
self.assertNoMoreResources()
+ @patch("os.path.isdir")
+ @patch("os.path.exists")
+ @patch("os.path.isfile")
+ @patch("os.remove")
+ @patch("shutil.rmtree", new = MagicMock())
+ @patch("glob.iglob")
+ @patch("shutil.copy2", new = MagicMock())
+ def test_upgrade_23_with_type(self, glob_mock, remove_mock,
+ isfile_mock, exists_mock, isdir_mock):
+
+ def exists_mock_side_effect(path):
+ if path == '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar':
+ return True
+
+ return False
+
+ isdir_mock.return_value = True
+ exists_mock.side_effect = exists_mock_side_effect
+ isfile_mock.return_value = True
+ glob_mock.return_value = ["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]
+
+ prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
+ New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
+
+ config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json"
+
+ with open(config_file, "r") as f:
+ json_content = json.load(f)
+
+ version = '2.3.0.0-1234'
+ json_content['commandParams']['version'] = version
+ json_content['upgradeSummary'] = {
+ 'services': { 'OOZIE': { 'sourceStackId': 'HDP-2.3' }},
+ 'direction': 'UPGRADE',
+ 'type': 'rolling_upgrade',
+ 'orchestration': 'STANDARD'
+ }
+
+ mocks_dict = {}
+ self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
+ classname = "OozieServer", command = "pre_upgrade_restart", config_dict = json_content,
+ command_args = ["rolling"],
+ config_overrides = self.CONFIG_OVERRIDES,
+ stack_version = self.UPGRADE_STACK_VERSION,
+ target = RMFTestCase.TARGET_COMMON_SERVICES,
+ call_mocks = [(0, prepare_war_stdout)],
+ mocks_dict = mocks_dict)
+
+ self.assertTrue(isfile_mock.called)
+ self.assertEqual(isfile_mock.call_count,2)
+ isfile_mock.assert_called_with('/usr/share/HDP-oozie/ext-2.2.zip')
+
+ self.assertTrue(glob_mock.called)
+ self.assertEqual(glob_mock.call_count,1)
+ glob_mock.assert_called_with('/usr/hdp/2.3.0.0-1234/hadoop/lib/hadoop-lzo*.jar')
+
+ self.assertResourceCalled('Execute', ('ambari-python-wrap', '/usr/bin/hdp-select', 'set', 'oozie-client', '2.3.0.0-1234'), sudo = True)
+ self.assertResourceCalled('Execute', ('ambari-python-wrap', '/usr/bin/hdp-select', 'set', 'oozie-server', '2.3.0.0-1234'), sudo = True)
+
+ self.assertResourceCalled('Directory', '/usr/hdp/current/oozie-server/libext', mode = 0777)
+
+ self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/hdp/current/oozie-server/libext'), sudo=True)
+ self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip'), sudo=True)
+ self.assertResourceCalled('File', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip', mode = 0644)
+ self.assertNoMoreResources()
+
@patch("os.path.isdir")
@patch("os.path.exists")
[33/50] [abbrv] ambari git commit: AMBARI-22039. File
"hdfs.headless.keytab" has incorrect permission (aonishuk)
Posted by jl...@apache.org.
AMBARI-22039. File "hdfs.headless.keytab" has incorrect permission (aonishuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/50b64758
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/50b64758
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/50b64758
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 50b64758091a0df76419cbced4044e2689b5d4d1
Parents: 5d5cc4f
Author: Andrew Onishuk <ao...@hortonworks.com>
Authored: Mon Sep 25 12:27:24 2017 +0300
Committer: Andrew Onishuk <ao...@hortonworks.com>
Committed: Mon Sep 25 12:27:24 2017 +0300
----------------------------------------------------------------------
.../stacks/2.6/ZEPPELIN/test_zeppelin_070.py | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/50b64758/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py b/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
index b9b34e8..f379f40 100644
--- a/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
+++ b/ambari-server/src/test/python/stacks/2.6/ZEPPELIN/test_zeppelin_070.py
@@ -312,7 +312,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['download_on_execute'],
@@ -336,7 +337,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['create_on_execute'],
@@ -355,7 +357,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['download_on_execute'],
@@ -379,7 +382,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['create_on_execute'],
@@ -398,7 +402,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['download_on_execute'],
@@ -422,7 +427,8 @@ class TestZeppelin070(RMFTestCase):
hdfs_resource_ignore_file='/var/lib/ambari-agent/data/.hdfs_resource_ignore',
hdfs_site={u'a': u'b'},
kinit_path_local='/usr/bin/kinit',
- user="zeppelin",
+ user="hdfs",
+ owner="zeppelin",
group="zeppelin",
type='file',
action=['create_on_execute'],
[12/50] [abbrv] ambari git commit: AMBARI-22011. Could not copy tez
tarball to HDFS during prepare upgrade (EU) (ncole)
Posted by jl...@apache.org.
AMBARI-22011. Could not copy tez tarball to HDFS during prepare upgrade (EU) (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/001c77f5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/001c77f5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/001c77f5
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 001c77f5773e3ca778ee6ff78ba8c616f0e3007c
Parents: 3e5f60a
Author: Nate Cole <nc...@hortonworks.com>
Authored: Thu Sep 21 08:45:08 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Thu Sep 21 09:56:46 2017 -0400
----------------------------------------------------------------------
.../libraries/functions/copy_tarball.py | 103 ++++++++++++++-----
.../libraries/functions/copy_tarball.py.rej | 78 ++++++++++++++
.../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 2 +-
3 files changed, 157 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/001c77f5/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
index 61b03ca..219430a 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py
@@ -41,26 +41,65 @@ STACK_VERSION_PATTERN = "{{ stack_version }}"
# especially since it is an attribute of a stack and becomes
# complicated to change during a Rolling/Express upgrade.
TARBALL_MAP = {
- "slider": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/slider/slider.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "tez": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/tez/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "tez_hive2": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/tez_hive2/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "hive": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/hive/hive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "pig": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/pig/pig.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "hadoop_streaming": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/mapreduce/hadoop-streaming.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "sqoop": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
- "/{0}/apps/{1}/sqoop/sqoop.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "mapreduce": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "slider": {
+ "dirs": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/slider/slider.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "SLIDER"
+ },
+
+ "tez": {
+ "dirs": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/tez/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "TEZ"
+ },
+
+ "tez_hive2": {
+ "dirs": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/tez_hive2/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "HIVE"
+ },
+
+ "hive": {
+ "dirs": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/hive/hive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "HIVE"
+ },
+
+ "pig": {
+ "dirs": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/pig/pig.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "PIG"
+ },
+
+ "hadoop_streaming": {
+ "dirs": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/mapreduce/hadoop-streaming.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "MAPREDUCE2"
+ },
+
+ "sqoop": {
+ "dirs": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/sqoop/sqoop.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "SQOOP"
+ },
+
+ "mapreduce": {
+ "dirs": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
"/{0}/apps/{1}/mapreduce/mapreduce.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "spark": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
- "/{0}/apps/{1}/spark/spark-{0}-assembly.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
- "spark2": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
- "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN))
+ "service": "MAPREDUCE2"
+ },
+
+ "spark": {
+ "dirs": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
+ "/{0}/apps/{1}/spark/spark-{0}-assembly.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "SPARK"
+ },
+
+ "spark2": {
+ "dirs": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
+ "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+ "service": "SPARK2"
+ }
}
SERVICE_TO_CONFIG_MAP = {
@@ -101,7 +140,13 @@ def get_tarball_paths(name, use_upgrading_version_during_upgrade=True, custom_so
Logger.error("Cannot copy {0} tarball to HDFS because stack name could not be determined.".format(str(name)))
return (False, None, None)
- stack_version = get_current_version(use_upgrading_version_during_upgrade)
+ if name is None or name.lower() not in TARBALL_MAP:
+ Logger.error("Cannot copy tarball to HDFS because {0} is not supported in stack {1} for this operation.".format(str(name), str(stack_name)))
+ return (False, None, None)
+
+ service = TARBALL_MAP[name.lower()]['service']
+
+ stack_version = get_current_version(service=service, use_upgrading_version_during_upgrade=use_upgrading_version_during_upgrade)
if not stack_version:
Logger.error("Cannot copy {0} tarball to HDFS because stack version could be be determined.".format(str(name)))
return (False, None, None)
@@ -111,10 +156,7 @@ def get_tarball_paths(name, use_upgrading_version_during_upgrade=True, custom_so
Logger.error("Cannot copy {0} tarball to HDFS because stack root could be be determined.".format(str(name)))
return (False, None, None)
- if name is None or name.lower() not in TARBALL_MAP:
- Logger.error("Cannot copy tarball to HDFS because {0} is not supported in stack {1} for this operation.".format(str(name), str(stack_name)))
- return (False, None, None)
- (source_file, dest_file) = TARBALL_MAP[name.lower()]
+ (source_file, dest_file) = TARBALL_MAP[name.lower()]['dirs']
if custom_source_file is not None:
source_file = custom_source_file
@@ -134,14 +176,22 @@ def get_tarball_paths(name, use_upgrading_version_during_upgrade=True, custom_so
return (True, source_file, dest_file)
-def get_current_version(use_upgrading_version_during_upgrade=True):
+def get_current_version(service=None, use_upgrading_version_during_upgrade=True):
"""
Get the effective version to use to copy the tarballs to.
+ :param service: the service name when checking for an upgrade. made optional for unknown \
+ code bases that may be using this function
:param use_upgrading_version_during_upgrade: True, except when the RU/EU hasn't started yet.
:return: Version, or False if an error occurred.
"""
+
+ from resource_management.libraries.functions import upgrade_summary
+
# get the version for this command
version = stack_features.get_stack_feature_version(Script.get_config())
+ if service is not None:
+ version = upgrade_summary.get_target_version(service_name=service, default_version=version)
+
# if there is no upgrade, then use the command's version
if not Script.in_stack_upgrade() or use_upgrading_version_during_upgrade:
@@ -152,6 +202,9 @@ def get_current_version(use_upgrading_version_during_upgrade=True):
# we're in an upgrade and we need to use an older version
current_version = stack_select.get_role_component_current_stack_version()
+ if service is not None:
+ current_version = upgrade_summary.get_source_version(service_name=service, default_version=current_version)
+
if current_version is None:
Logger.warning("Unable to determine the current version of the component for this command; unable to copy the tarball")
return False
http://git-wip-us.apache.org/repos/asf/ambari/blob/001c77f5/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
new file mode 100644
index 0000000..b2c11fc
--- /dev/null
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py.rej
@@ -0,0 +1,78 @@
+diff a/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py b/ambari-common/src/main/python/resource_management/libraries/functions/copy_tarball.py (rejected hunks)
+@@ -41,26 +41,65 @@ STACK_VERSION_PATTERN = "{{ stack_version }}"
+ # especially since it is an attribute of a stack and becomes
+ # complicated to change during a Rolling/Express upgrade.
+ TARBALL_MAP = {
+- "slider": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "slider": {
++ "dirs": ("{0}/{1}/slider/lib/slider.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/slider/slider.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "tez": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "SLIDER"
++ },
++
++ "tez": {
++ "dirs": ("{0}/{1}/tez/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/tez/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "tez_hive2": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "TEZ"
++ },
++
++ "tez_hive2": {
++ "dirs": ("{0}/{1}/tez_hive2/lib/tez.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/tez_hive2/tez.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "hive": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "HIVE"
++ },
++
++ "hive": {
++ "dirs": ("{0}/{1}/hive/hive.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/hive/hive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "pig": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "HIVE"
++ },
++
++ "pig": {
++ "dirs": ("{0}/{1}/pig/pig.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/pig/pig.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "hadoop_streaming": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "PIG"
++ },
++
++ "hadoop_streaming": {
++ "dirs": ("{0}/{1}/hadoop-mapreduce/hadoop-streaming.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/mapreduce/hadoop-streaming.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "sqoop": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "MAPREDUCE2"
++ },
++
++ "sqoop": {
++ "dirs": ("{0}/{1}/sqoop/sqoop.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/sqoop/sqoop.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "mapreduce": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
++ "service": "SQOOP"
++ },
++
++ "mapreduce": {
++ "dirs": ("{0}/{1}/hadoop/mapreduce.tar.gz".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN),
+ "/{0}/apps/{1}/mapreduce/mapreduce.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "spark": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
++ "service": "MAPREDUCE2"
++ },
++
++ "spark": {
++ "dirs": ("{0}/{1}/spark/lib/spark-{2}-assembly.jar".format(STACK_ROOT_PATTERN, STACK_VERSION_PATTERN, STACK_NAME_PATTERN),
+ "/{0}/apps/{1}/spark/spark-{0}-assembly.jar".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
+- "spark2": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
+- "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN))
++ "service": "SPARK"
++ },
++
++ "spark2": {
++ "dirs": ("/tmp/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN),
++ "/{0}/apps/{1}/spark2/spark2-{0}-yarn-archive.tar.gz".format(STACK_NAME_PATTERN, STACK_VERSION_PATTERN)),
++ "service": "SPARK2"
++ }
+ }
+
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/001c77f5/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
index 0796ad1..64f9d54 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py
@@ -424,7 +424,7 @@ def copy_atlas_hive_hook_to_dfs_share_lib(upgrade_type=None, upgrade_direction=N
"and performing a Downgrade.")
return
- effective_version = get_current_version()
+ effective_version = get_current_version(service="ATLAS")
atlas_hive_hook_dir = format("{stack_root}/{effective_version}/atlas/hook/hive/")
if not os.path.exists(atlas_hive_hook_dir):
Logger.error(format("ERROR. Atlas is installed in cluster but this Oozie server doesn't "
[47/50] [abbrv] ambari git commit: AMBARI-22014. Patch upgrade is
going into incorrect state during package installation with invalid VDF
(ncole)
Posted by jl...@apache.org.
AMBARI-22014. Patch upgrade is going into incorrect state during package installation with invalid VDF (ncole)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4c49b4bd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4c49b4bd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4c49b4bd
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 4c49b4bd006cdd3929f5e341552b200af608bc32
Parents: b653ee0
Author: Nate Cole <nc...@hortonworks.com>
Authored: Mon Sep 25 15:23:42 2017 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Mon Sep 25 16:14:35 2017 -0400
----------------------------------------------------------------------
.../server/controller/ControllerModule.java | 2 +
.../controller/ResourceProviderFactory.java | 6 +-
.../AbstractControllerResourceProvider.java | 2 +-
.../ClusterStackVersionResourceProvider.java | 9 +-
.../internal/DefaultProviderModule.java | 2 -
...ClusterStackVersionResourceProviderTest.java | 223 ++++++-------------
6 files changed, 87 insertions(+), 157 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index e151e63..968e9b6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -62,6 +62,7 @@ import org.apache.ambari.server.cleanup.ClasspathScannerUtils;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.configuration.Configuration.ConnectionPoolType;
import org.apache.ambari.server.configuration.Configuration.DatabaseType;
+import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProvider;
import org.apache.ambari.server.controller.internal.ComponentResourceProvider;
import org.apache.ambari.server.controller.internal.CredentialResourceProvider;
import org.apache.ambari.server.controller.internal.HostComponentResourceProvider;
@@ -467,6 +468,7 @@ public class ControllerModule extends AbstractModule {
.implement(ResourceProvider.class, Names.named("credential"), CredentialResourceProvider.class)
.implement(ResourceProvider.class, Names.named("kerberosDescriptor"), KerberosDescriptorResourceProvider.class)
.implement(ResourceProvider.class, Names.named("upgrade"), UpgradeResourceProvider.class)
+ .implement(ResourceProvider.class, Names.named("clusterStackVersion"), ClusterStackVersionResourceProvider.class)
.build(ResourceProviderFactory.class));
install(new FactoryModuleBuilder().implement(
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
index 3912138..9cd1d74 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ResourceProviderFactory.java
@@ -22,6 +22,7 @@ package org.apache.ambari.server.controller;
import java.util.Map;
import java.util.Set;
+import org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProvider;
import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.Resource.Type;
@@ -68,4 +69,7 @@ public interface ResourceProviderFactory {
@Named("upgrade")
UpgradeResourceProvider getUpgradeResourceProvider(AmbariManagementController managementController);
-}
+ @Named("clusterStackVersion")
+ ClusterStackVersionResourceProvider getClusterStackVersionResourceProvider(AmbariManagementController managementController);
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
index b35b2a8..b4b13eb 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
@@ -183,7 +183,7 @@ public abstract class AbstractControllerResourceProvider extends AbstractAuthori
case StackVersion:
return new StackVersionResourceProvider(propertyIds, keyPropertyIds, managementController);
case ClusterStackVersion:
- return new ClusterStackVersionResourceProvider(managementController);
+ return resourceProviderFactory.getClusterStackVersionResourceProvider(managementController);
case HostStackVersion:
return new HostStackVersionResourceProvider(managementController);
case StackService:
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index f8a679a..ba5a4e7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -213,6 +213,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
/**
* Constructor.
*/
+ @Inject
public ClusterStackVersionResourceProvider(
AmbariManagementController managementController) {
super(propertyIds, keyPropertyIds, managementController);
@@ -454,7 +455,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
}
- @Transactional
+ @Transactional(rollbackOn = {RuntimeException.class, SystemException.class, AmbariException.class})
RequestStatus createOrUpdateHostVersions(Cluster cluster,
RepositoryVersionEntity repoVersionEntity, VersionDefinitionXml versionDefinitionXml,
StackId stackId, boolean forceInstalled, Map<String, Object> propertyMap)
@@ -666,11 +667,13 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
}
}
- private ActionExecutionContext getHostVersionInstallCommand(RepositoryVersionEntity repoVersion,
+ @Transactional
+ ActionExecutionContext getHostVersionInstallCommand(RepositoryVersionEntity repoVersion,
Cluster cluster, AmbariManagementController managementController, AmbariMetaInfo ami,
final StackId stackId, Set<String> repoServices, Stage stage1, Host host)
throws SystemException {
+
// Determine repositories for host
String osFamily = host.getOsFamily();
@@ -684,7 +687,7 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
if (null == osEntity || CollectionUtils.isEmpty(osEntity.getRepositories())) {
throw new SystemException(String.format("Repositories for os type %s are " +
- "not defined. Repo version=%s, stackId=%s",
+ "not defined for version %s of Stack %s.",
osFamily, repoVersion.getVersion(), stackId));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
index 074f8e1..5e5bff5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/DefaultProviderModule.java
@@ -106,8 +106,6 @@ public class DefaultProviderModule extends AbstractProviderModule {
return new UpgradeItemResourceProvider(managementController);
case UpgradeSummary:
return new UpgradeSummaryResourceProvider(managementController);
- case ClusterStackVersion:
- return new ClusterStackVersionResourceProvider(managementController);
case PreUpgradeCheck:
return new PreUpgradeCheckResourceProvider(managementController);
case HostStackVersion:
http://git-wip-us.apache.org/repos/asf/ambari/blob/4c49b4bd/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
index c766f1e..a1415703 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProviderTest.java
@@ -31,7 +31,6 @@ import static org.easymock.EasyMock.verify;
import java.io.File;
import java.io.FileInputStream;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -68,6 +67,7 @@ import org.apache.ambari.server.controller.spi.Predicate;
import org.apache.ambari.server.controller.spi.Request;
import org.apache.ambari.server.controller.spi.RequestStatus;
import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.ambari.server.controller.spi.Resource.Type;
import org.apache.ambari.server.controller.spi.ResourceProvider;
import org.apache.ambari.server.controller.utilities.PredicateBuilder;
import org.apache.ambari.server.controller.utilities.PropertyHelper;
@@ -117,6 +117,7 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -124,7 +125,6 @@ import com.google.gson.JsonParser;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
-import com.google.inject.Provider;
import com.google.inject.util.Modules;
import junit.framework.AssertionFailedError;
@@ -146,6 +146,10 @@ public class ClusterStackVersionResourceProviderTest {
private HostVersionDAO hostVersionDAO;
private HostComponentStateDAO hostComponentStateDAO;
+ private Clusters clusters;
+ private ActionManager actionManager;
+ private AmbariManagementController managementController;
+
public static final String OS_JSON = "[\n" +
" {\n" +
" \"repositories\":[\n" +
@@ -179,6 +183,10 @@ public class ClusterStackVersionResourceProviderTest {
configuration = new Configuration(properties);
stageFactory = createNiceMock(StageFactory.class);
+ clusters = createNiceMock(Clusters.class);
+ actionManager = createNiceMock(ActionManager.class);
+ managementController = createMock(AmbariManagementController.class);
+
// Initialize injector
injector = Guice.createInjector(Modules.override(inMemoryModule).with(new MockModule()));
injector.getInstance(GuiceJpaInitializer.class);
@@ -208,10 +216,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResources(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -258,28 +262,15 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
List<ServiceOsSpecific.Package> packages = Collections.singletonList(hdfsPackage);
- ActionManager actionManager = createNiceMock(ActionManager.class);
-
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -290,12 +281,10 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
- EasyMock.anyObject(), anyObject(String.class))).
- andReturn(packages).times((hostCount - 1) * 2); // 1 host has no versionable components, other hosts have 2 services
-// // that's why we don't send commands to it
-
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
+ andReturn(packages).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -357,18 +346,14 @@ public class ClusterStackVersionResourceProviderTest {
StageUtils.setTopologyManager(injector.getInstance(TopologyManager.class));
StageUtils.setConfiguration(injector.getInstance(Configuration.class));
+ ResourceProvider provider = createProvider(managementController);
+ injector.injectMembers(provider);
+
// replay
- replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
- injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
Set<Map<String, Object>> propertySet = new LinkedHashSet<>();
@@ -618,10 +603,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesWithRepoDefinition(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.0.1");
@@ -706,7 +687,7 @@ public class ClusterStackVersionResourceProviderTest {
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
@@ -725,6 +706,10 @@ public class ClusterStackVersionResourceProviderTest {
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
+
+
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
hostsForCluster).anyTimes();
@@ -796,12 +781,7 @@ public class ClusterStackVersionResourceProviderTest {
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager,
executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -859,10 +839,6 @@ public class ClusterStackVersionResourceProviderTest {
String os_json = json.toString();
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.0.1");
@@ -946,10 +922,7 @@ public class ClusterStackVersionResourceProviderTest {
ActionManager actionManager = createNiceMock(ActionManager.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -963,8 +936,8 @@ public class ClusterStackVersionResourceProviderTest {
EasyMock.anyObject(), anyObject(String.class))).
andReturn(packages).anyTimes(); // only one host has the versionable component
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -992,11 +965,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(cluster.transitionHostsToInstalling(anyObject(RepositoryVersionEntity.class),
anyObject(VersionDefinitionXml.class), eq(false))).andReturn(hostsNeedingInstallCommands).atLeastOnce();
-// ExecutionCommand executionCommand = createNiceMock(ExecutionCommand.class);
ExecutionCommand executionCommand = new ExecutionCommand();
ExecutionCommandWrapper executionCommandWrapper = createNiceMock(ExecutionCommandWrapper.class);
-// expect(executionCommand.getHostLevelParams()).andReturn(new HashMap<String, String>()).atLeastOnce();
expect(executionCommandWrapper.getExecutionCommand()).andReturn(executionCommand).anyTimes();
Stage stage = createNiceMock(Stage.class);
@@ -1031,16 +1002,11 @@ public class ClusterStackVersionResourceProviderTest {
StageUtils.setConfiguration(injector.getInstance(Configuration.class));
// replay
- replay(managementController, response, clusters, hdfsService, hbaseService, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters, hdfsService, hbaseService, csvResourceProvider,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schHBM, actionManager,
executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1096,10 +1062,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesMixed(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -1164,16 +1126,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
@@ -1182,10 +1137,6 @@ public class ClusterStackVersionResourceProviderTest {
ActionManager actionManager = createNiceMock(ActionManager.class);
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
- ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(ClusterStackVersionResourceProvider.class);
-
- AbstractControllerResourceProvider.init(resourceProviderFactory);
Map<String, Map<String, String>> hostConfigTags = new HashMap<>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class), anyObject(String.class))).andReturn(hostConfigTags);
@@ -1196,12 +1147,11 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
- EasyMock.anyObject(), anyObject(String.class))).
- andReturn(packages).times((hostCount - 1) * 2); // 1 host has no versionable components, other hosts have 2 services
-// // that's why we don't send commands to it
+ EasyMock.<Map<String, String>>anyObject(), anyObject(String.class))).
+ andReturn(packages).anyTimes();
- expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
- eq(managementController))).andReturn(csvResourceProvider).anyTimes();
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(
@@ -1267,16 +1217,11 @@ public class ClusterStackVersionResourceProviderTest {
// replay
- replay(managementController, response, clusters, resourceProviderFactory, csvResourceProvider,
+ replay(managementController, response, clusters,
cluster, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1329,10 +1274,6 @@ public class ClusterStackVersionResourceProviderTest {
*/
@Test
public void testCreateResourcesInInstalledState() throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.2.0");
String repoVersion = "2.2.0.1-885";
@@ -1408,8 +1349,7 @@ public class ClusterStackVersionResourceProviderTest {
RequestStatusResponse response = createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory = createNiceMock(ResourceProviderFactory.class);
- ResourceProvider csvResourceProvider = createNiceMock(
- ClusterStackVersionResourceProvider.class);
+ ResourceProvider csvResourceProvider = createNiceMock(ResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
@@ -1454,10 +1394,7 @@ public class ClusterStackVersionResourceProviderTest {
csvResourceProvider, cluster, repositoryVersionDAOMock, configHelper, schDatanode,
stageFactory, hostVersionDAO);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(type,
- PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple
@@ -1501,10 +1438,6 @@ public class ClusterStackVersionResourceProviderTest {
@Test
public void testCreateResourcesPPC() throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
Map<String, String> hostLevelParams = new HashMap<>();
StackId stackId = new StackId("HDP", "2.0.1");
@@ -1567,16 +1500,9 @@ public class ClusterStackVersionResourceProviderTest {
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
// First host contains versionable components
- final List<ServiceComponentHost> schsH1 = new ArrayList<ServiceComponentHost>(){{
- add(schDatanode);
- add(schNamenode);
- add(schAMS);
- }};
+ final List<ServiceComponentHost> schsH1 = Lists.newArrayList(schDatanode, schNamenode, schAMS);
// Second host does not contain versionable components
- final List<ServiceComponentHost> schsH2 = new ArrayList<ServiceComponentHost>(){{
- add(schAMS);
- }};
-
+ final List<ServiceComponentHost> schsH2 = Lists.newArrayList(schAMS);
ServiceOsSpecific.Package hdfsPackage = new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
@@ -1600,8 +1526,11 @@ public class ClusterStackVersionResourceProviderTest {
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
(Map<String, String>) anyObject(List.class), anyObject(String.class))).
- andReturn(packages).anyTimes(); // 1 host has no versionable components, other hosts have 2 services
- // // that's why we don't send commands to it
+ andReturn(packages).anyTimes();
+
+ expect(managementController.findConfigurationTagsWithOverrides(anyObject(Cluster.class), EasyMock.anyString()))
+ .andReturn(new HashMap<String, Map<String, String>>()).anyTimes();
+
expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class), anyObject(Map.class),
eq(managementController))).andReturn(csvResourceProvider).anyTimes();
@@ -1672,12 +1601,7 @@ public class ClusterStackVersionResourceProviderTest {
cluster, repoVersion, repositoryVersionDAOMock, configHelper, schDatanode, schNamenode, schAMS, actionManager,
executionCommand, executionCommandWrapper,stage, stageFactory);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1711,10 +1635,6 @@ public class ClusterStackVersionResourceProviderTest {
@Test
public void testGetSorted() throws Exception {
-
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- final Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
StackId stackId = new StackId("HDP", "2.2.0");
@@ -1766,19 +1686,17 @@ public class ClusterStackVersionResourceProviderTest {
csvResourceProvider, cluster, repositoryVersionDAOMock, configHelper,
stageFactory, hostVersionDAO);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(type,
- PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
- /*managementController*/null);
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
- Field field = ClusterStackVersionResourceProvider.class.getDeclaredField("clusters");
- field.setAccessible(true);
- field.set(null, new Provider<Clusters>() {
- @Override
- public Clusters get() {
- return clusters;
- }
- });
+// Field field = ClusterStackVersionResourceProvider.class.getDeclaredField("clusters");
+// field.setAccessible(true);
+// field.set(null, new Provider<Clusters>() {
+// @Override
+// public Clusters get() {
+// return clusters;
+// }
+// });
// set the security auth
SecurityContextHolder.getContext().setAuthentication(
@@ -1913,10 +1831,6 @@ public class ClusterStackVersionResourceProviderTest {
}
private void testCreateResourcesExistingUpgrade(Authentication authentication) throws Exception {
- Resource.Type type = Resource.Type.ClusterStackVersion;
-
- AmbariManagementController managementController = createMock(AmbariManagementController.class);
- Clusters clusters = createNiceMock(Clusters.class);
Cluster cluster = createNiceMock(Cluster.class);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
@@ -1934,12 +1848,7 @@ public class ClusterStackVersionResourceProviderTest {
// replay
replay(managementController, clusters, cluster);
- ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
- type,
- PropertyHelper.getPropertyIds(type),
- PropertyHelper.getKeyPropertyIds(type),
- managementController);
-
+ ResourceProvider provider = createProvider(managementController);
injector.injectMembers(provider);
// add the property map to a set for the request. add more maps for multiple creates
@@ -1971,6 +1880,17 @@ public class ClusterStackVersionResourceProviderTest {
verify(cluster);
}
+
+ private ClusterStackVersionResourceProvider createProvider(AmbariManagementController amc) {
+ ResourceProviderFactory factory = injector.getInstance(ResourceProviderFactory.class);
+ AbstractControllerResourceProvider.init(factory);
+
+ Resource.Type type = Type.ClusterStackVersion;
+ return (ClusterStackVersionResourceProvider) AbstractControllerResourceProvider.getResourceProvider(type,
+ PropertyHelper.getPropertyIds(type), PropertyHelper.getKeyPropertyIds(type),
+ amc);
+ }
+
private class MockModule extends AbstractModule {
@Override
protected void configure() {
@@ -1980,6 +1900,9 @@ public class ClusterStackVersionResourceProviderTest {
bind(StageFactory.class).toInstance(stageFactory);
bind(HostVersionDAO.class).toInstance(hostVersionDAO);
bind(HostComponentStateDAO.class).toInstance(hostComponentStateDAO);
+ bind(Clusters.class).toInstance(clusters);
+ bind(ActionManager.class).toInstance(actionManager);
+ bind(AmbariManagementController.class).toInstance(managementController);
}
}
[37/50] [abbrv] ambari git commit: AMBARI-22007 - Addition of service
component after patching a service still keeps the component at base version
(part2) (jonathanhurley)
Posted by jl...@apache.org.
AMBARI-22007 - Addition of service component after patching a service still keeps the component at base version (part2) (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/311c7bbd
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/311c7bbd
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/311c7bbd
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 311c7bbd8ee94b8964a7f1769b41efc40ecdcdc6
Parents: eb5bcef
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon Sep 25 08:45:58 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon Sep 25 08:51:38 2017 -0400
----------------------------------------------------------------------
.../libraries/functions/version_select_util.py | 7 ++--
.../libraries/script/script.py | 36 ++++++++++++++++----
.../src/test/python/TestVersionSelectUtil.py | 4 +--
3 files changed, 35 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/311c7bbd/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
index 9fbb42b..73b5dc1 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py
@@ -28,10 +28,11 @@ from resource_management.core import shell
from resource_management.libraries.functions import stack_tools
-def get_component_version(stack_name, component_name):
+def get_component_version_from_symlink(stack_name, component_name):
"""
- For any stack name, returns the version currently installed for a given component.
- Because each stack name may have different logic, the input is a generic dictionary.
+ Gets the version of the specified component by invoking the stack-select tool to query for the
+ version which is referenced by the symlink.
+
:param stack_name: one of HDP, HDPWIN, BIGTOP, PHD, etc. usually retrieved from
the command-#.json file's ["hostLevelParams"]["stack_name"]
:param component_name: Component name as a string necessary to get the version
http://git-wip-us.apache.org/repos/asf/ambari/blob/311c7bbd/ambari-common/src/main/python/resource_management/libraries/script/script.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py
index 303b640..e612638 100644
--- a/ambari-common/src/main/python/resource_management/libraries/script/script.py
+++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py
@@ -47,7 +47,7 @@ from resource_management.core.environment import Environment
from resource_management.core.logger import Logger
from resource_management.core.exceptions import Fail, ClientComponentHasNoStatus, ComponentIsNotRunning
from resource_management.core.resources.packaging import Package
-from resource_management.libraries.functions.version_select_util import get_component_version
+from resource_management.libraries.functions.version_select_util import get_component_version_from_symlink
from resource_management.libraries.functions.version import compare_versions
from resource_management.libraries.functions.version import format_stack_version
from resource_management.libraries.functions import stack_tools
@@ -207,18 +207,40 @@ class Script(object):
return os.path.realpath(config_path)
return None
- def save_component_version_to_structured_out(self):
+ def save_component_version_to_structured_out(self, command_name):
"""
- :param stack_name: One of HDP, HDPWIN, PHD, BIGTOP.
- :return: Append the version number to the structured out.
+ Saves the version of the component for this command to the structured out file. If the
+ command is an install command and the repository is trusted, then it will use the version of
+ the repository. Otherwise, it will consult the stack-select tool to read the symlink version.
+ :param command_name: command name
+ :return: None
"""
+ from resource_management.libraries.functions.default import default
from resource_management.libraries.functions import stack_select
+ repository_resolved = default("repositoryFile/resolved", False)
+ repository_version = default("repositoryFile/repoVersion", None)
+ is_install_command = command_name is not None and command_name.lower() == "install"
+
+ # start out with no version
+ component_version = None
+
+ # install command + trusted repo means use the repo version and don't consult stack-select
+ # this is needed in cases where an existing symlink is on the system and stack-select can't
+ # change it on installation (because it's scared to in order to support parallel installs)
+ if is_install_command and repository_resolved and repository_version is not None:
+ Logger.info("The repository with version {0} for this command has been marked as resolved."\
+ " It will be used to report the version of the component which was installed".format(repository_version))
+
+ component_version = repository_version
+
stack_name = Script.get_stack_name()
stack_select_package_name = stack_select.get_package_name()
if stack_select_package_name and stack_name:
- component_version = get_component_version(stack_name, stack_select_package_name)
+ # only query for the component version from stack-select if we can't trust the repository yet
+ if component_version is None:
+ component_version = get_component_version_from_symlink(stack_name, stack_select_package_name)
if component_version:
self.put_structured_out({"version": component_version})
@@ -336,7 +358,7 @@ class Script(object):
raise
finally:
if self.should_expose_component_version(self.command_name):
- self.save_component_version_to_structured_out()
+ self.save_component_version_to_structured_out(self.command_name)
def execute_prefix_function(self, command_name, afix, env):
"""
@@ -938,7 +960,7 @@ class Script(object):
self.post_rolling_restart(env)
if self.should_expose_component_version("restart"):
- self.save_component_version_to_structured_out()
+ self.save_component_version_to_structured_out("restart")
# TODO, remove after all services have switched to post_upgrade_restart
http://git-wip-us.apache.org/repos/asf/ambari/blob/311c7bbd/ambari-server/src/test/python/TestVersionSelectUtil.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestVersionSelectUtil.py b/ambari-server/src/test/python/TestVersionSelectUtil.py
index 5195dca..82985fa 100644
--- a/ambari-server/src/test/python/TestVersionSelectUtil.py
+++ b/ambari-server/src/test/python/TestVersionSelectUtil.py
@@ -133,7 +133,7 @@ class TestVersionSelectUtil(TestCase):
call_mock.side_effect = [(0, "value will come from MagicFile"), ] * 2
# Pass
- version = self.module.get_component_version("HDP", "hive-server2")
+ version = self.module.get_component_version_from_symlink("HDP", "hive-server2")
self.assertEquals(version, stack_expected_version)
- version = self.module.get_component_version("HDP", "zookeeper-server")
+ version = self.module.get_component_version_from_symlink("HDP", "zookeeper-server")
self.assertEquals(version, stack_expected_version)
[04/50] [abbrv] ambari git commit: AMBARI-21970. Enable sticky bit
for curl_krb_cache (echekanskiy)
Posted by jl...@apache.org.
AMBARI-21970. Enable sticky bit for curl_krb_cache (echekanskiy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8b9370a5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8b9370a5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8b9370a5
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 8b9370a55207ecb6baccfd02337afe7c75532f7b
Parents: 260c75f
Author: Eugene Chekanskiy <ec...@apache.org>
Authored: Wed Sep 20 16:28:11 2017 +0300
Committer: Eugene Chekanskiy <ec...@apache.org>
Committed: Wed Sep 20 16:28:11 2017 +0300
----------------------------------------------------------------------
.../resource_management/libraries/functions/curl_krb_request.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/8b9370a5/ambari-common/src/main/python/resource_management/libraries/functions/curl_krb_request.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/curl_krb_request.py b/ambari-common/src/main/python/resource_management/libraries/functions/curl_krb_request.py
index 72bc5c6..95e8625 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/curl_krb_request.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/curl_krb_request.py
@@ -111,7 +111,7 @@ def curl_krb_request(tmp_dir, keytab, principal, url, cache_file_prefix,
curl_krb_cache_path = os.path.join(tmp_dir, "curl_krb_cache")
if not os.path.exists(curl_krb_cache_path):
os.makedirs(curl_krb_cache_path)
- os.chmod(curl_krb_cache_path, 0777)
+ os.chmod(curl_krb_cache_path, 01777)
ccache_file_path = "{0}{1}{2}_{3}_cc_{4}".format(curl_krb_cache_path, os.sep, cache_file_prefix, user, ccache_file_name)
kerberos_env = {'KRB5CCNAME': ccache_file_path}
[05/50] [abbrv] ambari git commit: AMBARI-21999 - Always Take Target
Read-Only Properties On Stack Upgrade (jonathanhurley)
Posted by jl...@apache.org.
AMBARI-21999 - Always Take Target Read-Only Properties On Stack Upgrade (jonathanhurley)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/56c3da78
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/56c3da78
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/56c3da78
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 56c3da7846cf2b30e5860cb5bc32d3c9ecb93424
Parents: 8b9370a
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Tue Sep 19 13:36:07 2017 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Wed Sep 20 10:17:31 2017 -0400
----------------------------------------------------------------------
.../ambari/server/state/UpgradeHelper.java | 84 ++++++++++--
.../StackUpgradeConfigurationMergeTest.java | 136 +++++++++++++++++++
2 files changed, 208 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/56c3da78/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index 087adc2..8f9d8e1 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -926,7 +926,8 @@ public class UpgradeHelper {
* stack and the target stack. If a value has changed between stacks, then the
* target stack value should be taken unless the cluster's value differs from
* the old stack. This can occur if a property has been customized after
- * installation.</li>
+ * installation. Read-only properties, however, are always taken from the new
+ * stack.</li>
* <li>Downgrade: Reset the latest configurations from the service's original
* stack. The new configurations that were created on upgrade must be left
* intact until all components have been reverted, otherwise heartbeats will
@@ -976,6 +977,11 @@ public class UpgradeHelper {
continue;
}
+ // the auto-merge must take read-only properties even if they have changed
+ // - if the properties was read-only in the source stack, then we must
+ // take the new stack's value
+ Map<String, Set<String>> readOnlyProperties = getReadOnlyProperties(sourceStackId, serviceName);
+
// upgrade is a bit harder - we have to merge new stack configurations in
// populate a map of default configurations for the service on the old
@@ -1041,8 +1047,7 @@ public class UpgradeHelper {
Map<String, String> existingConfigurations = existingServiceConfig.getProperties();
// get the new configurations
- Map<String, String> newDefaultConfigurations = newServiceDefaultConfigsByType.get(
- configurationType);
+ Map<String, String> newDefaultConfigurations = newServiceDefaultConfigsByType.get(configurationType);
// if the new stack configurations don't have the type, then simply add
// all of the existing in
@@ -1061,8 +1066,7 @@ public class UpgradeHelper {
}
}
- // process every existing configuration property for this configuration
- // type
+ // process every existing configuration property for this configuration type
for (Map.Entry<String, String> existingConfigurationEntry : existingConfigurations.entrySet()) {
String existingConfigurationKey = existingConfigurationEntry.getKey();
String existingConfigurationValue = existingConfigurationEntry.getValue();
@@ -1079,17 +1083,22 @@ public class UpgradeHelper {
// from the original stack
String oldDefaultValue = oldServiceDefaultConfigs.get(existingConfigurationKey);
- if (!StringUtils.equals(existingConfigurationValue, oldDefaultValue)) {
- // at this point, we've determined that there is a
- // difference
- // between default values between stacks, but the value was
- // also customized, so keep the customized value
+ // see if this property is a read-only property which means that
+ // we shouldn't care if it was changed - we should take the new
+ // stack's value
+ Set<String> readOnlyPropertiesForType = readOnlyProperties.get(configurationType);
+ boolean readOnly = (null != readOnlyPropertiesForType
+ && readOnlyPropertiesForType.contains(existingConfigurationKey));
+
+ if (!readOnly && !StringUtils.equals(existingConfigurationValue, oldDefaultValue)) {
+ // at this point, we've determined that there is a difference
+ // between default values between stacks, but the value was also
+ // customized, so keep the customized value
newDefaultConfigurations.put(existingConfigurationKey, existingConfigurationValue);
}
}
} else {
- // there is no entry in the map, so add the existing key/value
- // pair
+ // there is no entry in the map, so add the existing key/value pair
newDefaultConfigurations.put(existingConfigurationKey, existingConfigurationValue);
}
}
@@ -1143,4 +1152,55 @@ public class UpgradeHelper {
}
}
}
+
+ /**
+ * Gets all of the read-only properties for the given service. This will also
+ * include any stack properties as well which are read-only.
+ *
+ * @param stackId
+ * the stack to get read-only properties for (not {@code null}).
+ * @param serviceName
+ * the namee of the service (not {@code null}).
+ * @return a map of configuration type to set of property names which are
+ * read-only
+ * @throws AmbariException
+ */
+ private Map<String, Set<String>> getReadOnlyProperties(StackId stackId, String serviceName)
+ throws AmbariException {
+ Map<String, Set<String>> readOnlyProperties = new HashMap<>();
+
+ Set<PropertyInfo> properties = new HashSet<>();
+
+ Set<PropertyInfo> stackProperties = m_ambariMetaInfoProvider.get().getStackProperties(
+ stackId.getStackName(), stackId.getStackVersion());
+
+ Set<PropertyInfo> serviceProperties = m_ambariMetaInfoProvider.get().getServiceProperties(
+ stackId.getStackName(), stackId.getStackVersion(), serviceName);
+
+ if (CollectionUtils.isNotEmpty(stackProperties)) {
+ properties.addAll(stackProperties);
+ }
+
+ if (CollectionUtils.isNotEmpty(serviceProperties)) {
+ properties.addAll(serviceProperties);
+ }
+
+ for (PropertyInfo property : properties) {
+ ValueAttributesInfo valueAttributes = property.getPropertyValueAttributes();
+ if (null != valueAttributes && valueAttributes.getReadOnly() == Boolean.TRUE) {
+ String type = ConfigHelper.fileNameToConfigType(property.getFilename());
+
+ // get the set of properties for this type, initializing it if needed
+ Set<String> readOnlyPropertiesForType = readOnlyProperties.get(type);
+ if (null == readOnlyPropertiesForType) {
+ readOnlyPropertiesForType = new HashSet<>();
+ readOnlyProperties.put(type, readOnlyPropertiesForType);
+ }
+
+ readOnlyPropertiesForType.add(property.getName());
+ }
+ }
+
+ return readOnlyProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/56c3da78/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
index 734fa96..39ab1d7 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
@@ -33,6 +33,7 @@ import org.apache.ambari.server.actionmanager.HostRoleCommandFactory;
import org.apache.ambari.server.actionmanager.HostRoleCommandFactoryImpl;
import org.apache.ambari.server.actionmanager.RequestFactory;
import org.apache.ambari.server.actionmanager.StageFactory;
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.KerberosHelper;
@@ -56,8 +57,10 @@ import org.apache.ambari.server.state.Config;
import org.apache.ambari.server.state.ConfigFactory;
import org.apache.ambari.server.state.ConfigHelper;
import org.apache.ambari.server.state.DesiredConfig;
+import org.apache.ambari.server.state.PropertyInfo;
import org.apache.ambari.server.state.RepositoryType;
import org.apache.ambari.server.state.Service;
+import org.apache.ambari.server.state.ServiceComponent;
import org.apache.ambari.server.state.ServiceComponentFactory;
import org.apache.ambari.server.state.ServiceComponentHostFactory;
import org.apache.ambari.server.state.ServiceFactory;
@@ -65,6 +68,7 @@ import org.apache.ambari.server.state.StackId;
import org.apache.ambari.server.state.UpgradeContext;
import org.apache.ambari.server.state.UpgradeContextFactory;
import org.apache.ambari.server.state.UpgradeHelper;
+import org.apache.ambari.server.state.ValueAttributesInfo;
import org.apache.ambari.server.state.configgroup.ConfigGroupFactory;
import org.apache.ambari.server.state.scheduler.RequestExecutionFactory;
import org.apache.ambari.server.state.stack.OsFamily;
@@ -95,12 +99,15 @@ import com.google.inject.assistedinject.FactoryModuleBuilder;
public class StackUpgradeConfigurationMergeTest extends EasyMockSupport {
private Injector m_injector;
+ private AmbariMetaInfo m_metainfo;
/**
* @throws Exception
*/
@Before
public void before() throws Exception {
+ m_metainfo = createNiceMock(AmbariMetaInfo.class);
+
MockModule mockModule = new MockModule();
// create an injector which will inject the mocks
@@ -286,6 +293,134 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport {
assertEquals("stack-220-original", expectedBarType.get("bar-property-2"));
}
+ /**
+ * Tests that any read-only properties are not taken from the existing
+ * configs, but from the new stack value.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testReadOnlyPropertyIsTakenFromTargetStack() throws Exception {
+ RepositoryVersionEntity repoVersion211 = createNiceMock(RepositoryVersionEntity.class);
+ RepositoryVersionEntity repoVersion220 = createNiceMock(RepositoryVersionEntity.class);
+
+ StackId stack211 = new StackId("HDP-2.1.1");
+ StackId stack220 = new StackId("HDP-2.2.0");
+
+ String version211 = "2.1.1.0-1234";
+ String version220 = "2.2.0.0-1234";
+
+ expect(repoVersion211.getStackId()).andReturn(stack211).atLeastOnce();
+ expect(repoVersion211.getVersion()).andReturn(version211).atLeastOnce();
+
+ expect(repoVersion220.getStackId()).andReturn(stack220).atLeastOnce();
+ expect(repoVersion220.getVersion()).andReturn(version220).atLeastOnce();
+
+ String fooSite = "foo-site";
+ String fooPropertyName = "foo-property-1";
+ String serviceName = "ZOOKEEPER";
+
+ Map<String, Map<String, String>> stack211Configs = new HashMap<>();
+ Map<String, String> stack211FooType = new HashMap<>();
+ stack211Configs.put(fooSite, stack211FooType);
+ stack211FooType.put(fooPropertyName, "stack-211-original");
+
+ Map<String, Map<String, String>> stack220Configs = new HashMap<>();
+ Map<String, String> stack220FooType = new HashMap<>();
+ stack220Configs.put(fooSite, stack220FooType);
+ stack220FooType.put(fooPropertyName, "stack-220-original");
+
+ PropertyInfo readOnlyProperty = new PropertyInfo();
+ ValueAttributesInfo valueAttributesInfo = new ValueAttributesInfo();
+ valueAttributesInfo.setReadOnly(true);
+ readOnlyProperty.setName(fooPropertyName);
+ readOnlyProperty.setFilename(fooSite + ".xml");
+ readOnlyProperty.setPropertyValueAttributes(null);
+ readOnlyProperty.setPropertyValueAttributes(valueAttributesInfo);
+
+ expect(m_metainfo.getServiceProperties(stack211.getStackName(), stack211.getStackVersion(),
+ serviceName)).andReturn(Sets.newHashSet(readOnlyProperty)).atLeastOnce();
+
+ Map<String, String> existingFooType = new HashMap<>();
+
+ ClusterConfigEntity fooConfigEntity = createNiceMock(ClusterConfigEntity.class);
+
+ expect(fooConfigEntity.getType()).andReturn(fooSite);
+
+ Config fooConfig = createNiceMock(Config.class);
+
+ existingFooType.put(fooPropertyName, "my-foo-property-1");
+
+ expect(fooConfig.getType()).andReturn(fooSite).atLeastOnce();
+ expect(fooConfig.getProperties()).andReturn(existingFooType);
+
+ Map<String, DesiredConfig> desiredConfigurations = new HashMap<>();
+ desiredConfigurations.put(fooSite, null);
+
+ Service zookeeper = createNiceMock(Service.class);
+ expect(zookeeper.getName()).andReturn(serviceName).atLeastOnce();
+ expect(zookeeper.getServiceComponents()).andReturn(new HashMap<String, ServiceComponent>()).once();
+ zookeeper.setDesiredRepositoryVersion(repoVersion220);
+ expectLastCall().once();
+
+ Cluster cluster = createNiceMock(Cluster.class);
+ expect(cluster.getCurrentStackVersion()).andReturn(stack211).atLeastOnce();
+ expect(cluster.getDesiredStackVersion()).andReturn(stack220);
+ expect(cluster.getDesiredConfigs()).andReturn(desiredConfigurations);
+ expect(cluster.getDesiredConfigByType(fooSite)).andReturn(fooConfig);
+ expect(cluster.getService(serviceName)).andReturn(zookeeper);
+
+ ConfigHelper configHelper = m_injector.getInstance(ConfigHelper.class);
+
+ expect(configHelper.getDefaultProperties(stack211, serviceName)).andReturn(stack211Configs).anyTimes();
+ expect(configHelper.getDefaultProperties(stack220, serviceName)).andReturn(stack220Configs).anyTimes();
+
+ Capture<Map<String, Map<String, String>>> expectedConfigurationsCapture = EasyMock.newCapture();
+
+ configHelper.createConfigTypes(EasyMock.anyObject(Cluster.class),
+ EasyMock.anyObject(StackId.class), EasyMock.anyObject(AmbariManagementController.class),
+ EasyMock.capture(expectedConfigurationsCapture), EasyMock.anyObject(String.class),
+ EasyMock.anyObject(String.class));
+
+ expectLastCall().once();
+
+ // mock the service config DAO and replay it
+ ServiceConfigEntity zookeeperServiceConfig = createNiceMock(ServiceConfigEntity.class);
+ expect(zookeeperServiceConfig.getClusterConfigEntities()).andReturn(
+ Lists.newArrayList(fooConfigEntity));
+
+ ServiceConfigDAO serviceConfigDAOMock = m_injector.getInstance(ServiceConfigDAO.class);
+ List<ServiceConfigEntity> latestServiceConfigs = Lists.newArrayList(zookeeperServiceConfig);
+ expect(serviceConfigDAOMock.getLastServiceConfigsForService(EasyMock.anyLong(),
+ eq(serviceName))).andReturn(latestServiceConfigs).once();
+
+ UpgradeContext context = createNiceMock(UpgradeContext.class);
+ expect(context.getCluster()).andReturn(cluster).atLeastOnce();
+ expect(context.getType()).andReturn(UpgradeType.ROLLING).atLeastOnce();
+ expect(context.getDirection()).andReturn(Direction.UPGRADE).atLeastOnce();
+ expect(context.getRepositoryVersion()).andReturn(repoVersion220).anyTimes();
+ expect(context.getSupportedServices()).andReturn(Sets.newHashSet(serviceName)).atLeastOnce();
+ expect(context.getSourceRepositoryVersion(EasyMock.anyString())).andReturn(repoVersion211).atLeastOnce();
+ expect(context.getTargetRepositoryVersion(EasyMock.anyString())).andReturn(repoVersion220).atLeastOnce();
+ expect(context.getOrchestrationType()).andReturn(RepositoryType.STANDARD).anyTimes();
+ expect(context.getHostRoleCommandFactory()).andStubReturn(m_injector.getInstance(HostRoleCommandFactory.class));
+ expect(context.getRoleGraphFactory()).andStubReturn(m_injector.getInstance(RoleGraphFactory.class));
+
+ replayAll();
+
+ UpgradeHelper upgradeHelper = m_injector.getInstance(UpgradeHelper.class);
+ upgradeHelper.updateDesiredRepositoriesAndConfigs(context);
+
+ Map<String, Map<String, String>> expectedConfigurations = expectedConfigurationsCapture.getValue();
+ Map<String, String> expectedFooType = expectedConfigurations.get(fooSite);
+
+ // As the upgrade pack did not have any Flume updates, its configs should
+ // not be updated.
+ assertEquals(1, expectedConfigurations.size());
+ assertEquals(1, expectedFooType.size());
+
+ assertEquals("stack-220-original", expectedFooType.get(fooPropertyName));
+ }
private class MockModule implements Module {
@@ -325,6 +460,7 @@ public class StackUpgradeConfigurationMergeTest extends EasyMockSupport {
binder.bind(ServiceConfigDAO.class).toInstance(createNiceMock(ServiceConfigDAO.class));
binder.install(new FactoryModuleBuilder().build(UpgradeContextFactory.class));
binder.bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class);
+ binder.bind(AmbariMetaInfo.class).toInstance(m_metainfo);
binder.requestStaticInjection(UpgradeResourceProvider.class);
}
[38/50] [abbrv] ambari git commit: AMBARI-21996 Provide maintenance
mode off count for components (dsen)
Posted by jl...@apache.org.
AMBARI-21996 Provide maintenance mode off count for components (dsen)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/986a65db
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/986a65db
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/986a65db
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 986a65dbf4fbf36dac7073418ef368c2c207b123
Parents: 311c7bb
Author: Dmytro Sen <ds...@apache.org>
Authored: Mon Sep 25 16:32:46 2017 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Mon Sep 25 16:32:46 2017 +0300
----------------------------------------------------------------------
.../internal/ComponentResourceProvider.java | 4 ++++
.../server/state/ServiceComponentImpl.java | 25 ++++++++++++++++++++
.../internal/ComponentResourceProviderTest.java | 6 +++++
.../server/state/ServiceComponentTest.java | 21 +++++++++++++---
4 files changed, 53 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/986a65db/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
index ebbf169..2e86b2d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ComponentResourceProvider.java
@@ -85,6 +85,8 @@ public class ComponentResourceProvider extends AbstractControllerResourceProvide
protected static final String COMPONENT_TOTAL_COUNT_PROPERTY_ID = "ServiceComponentInfo/total_count";
protected static final String COMPONENT_STARTED_COUNT_PROPERTY_ID = "ServiceComponentInfo/started_count";
protected static final String COMPONENT_INSTALLED_COUNT_PROPERTY_ID = "ServiceComponentInfo/installed_count";
+ protected static final String COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID
+ = "ServiceComponentInfo/installed_and_maintenance_off_count";
protected static final String COMPONENT_INIT_COUNT_PROPERTY_ID = "ServiceComponentInfo/init_count";
protected static final String COMPONENT_UNKNOWN_COUNT_PROPERTY_ID = "ServiceComponentInfo/unknown_count";
protected static final String COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID = "ServiceComponentInfo/install_failed_count";
@@ -124,6 +126,7 @@ public class ComponentResourceProvider extends AbstractControllerResourceProvide
PROPERTY_IDS.add(COMPONENT_TOTAL_COUNT_PROPERTY_ID);
PROPERTY_IDS.add(COMPONENT_STARTED_COUNT_PROPERTY_ID);
PROPERTY_IDS.add(COMPONENT_INSTALLED_COUNT_PROPERTY_ID);
+ PROPERTY_IDS.add(COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID);
PROPERTY_IDS.add(COMPONENT_INIT_COUNT_PROPERTY_ID);
PROPERTY_IDS.add(COMPONENT_UNKNOWN_COUNT_PROPERTY_ID);
@@ -220,6 +223,7 @@ public class ComponentResourceProvider extends AbstractControllerResourceProvide
setResourceProperty(resource, COMPONENT_TOTAL_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("totalCount"), requestedIds);
setResourceProperty(resource, COMPONENT_STARTED_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("startedCount"), requestedIds);
setResourceProperty(resource, COMPONENT_INSTALLED_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("installedCount"), requestedIds);
+ setResourceProperty(resource, COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("installedAndMaintenanceOffCount"), requestedIds);
setResourceProperty(resource, COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("installFailedCount"), requestedIds);
setResourceProperty(resource, COMPONENT_INIT_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("initCount"), requestedIds);
setResourceProperty(resource, COMPONENT_UNKNOWN_COUNT_PROPERTY_ID, response.getServiceComponentStateCount().get("unknownCount"), requestedIds);
http://git-wip-us.apache.org/repos/asf/ambari/blob/986a65db/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
index 5f85e38..22c97ed 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceComponentImpl.java
@@ -31,6 +31,7 @@ import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.ObjectNotFoundException;
import org.apache.ambari.server.ServiceComponentHostNotFoundException;
import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.controller.MaintenanceStateHelper;
import org.apache.ambari.server.controller.ServiceComponentResponse;
import org.apache.ambari.server.events.ServiceComponentRecoveryChangedEvent;
import org.apache.ambari.server.events.listeners.upgrade.StackVersionListener;
@@ -97,6 +98,9 @@ public class ServiceComponentImpl implements ServiceComponent {
@Inject
private HostComponentStateDAO hostComponentDAO;
+ @Inject
+ private MaintenanceStateHelper maintenanceStateHelper;
+
@AssistedInject
public ServiceComponentImpl(@Assisted Service service, @Assisted String componentName,
AmbariMetaInfo ambariMetaInfo,
@@ -724,10 +728,31 @@ public class ServiceComponentImpl implements ServiceComponent {
return count;
}
+ /**
+ * Count the ServiceComponentHosts that have given state and are effectively not in maintenanceMode
+ * @param state
+ * @return
+ */
+ private int getMaintenanceOffSCHCountByState(State state) {
+ int count = 0;
+ for (ServiceComponentHost sch : hostComponents.values()) {
+ try {
+ MaintenanceState effectiveMaintenanceState = maintenanceStateHelper.getEffectiveState(sch, sch.getHost());
+ if (sch.getState() == state && effectiveMaintenanceState == MaintenanceState.OFF) {
+ count++;
+ }
+ } catch (AmbariException e) {
+ e.printStackTrace();
+ }
+ }
+ return count;
+ }
+
private Map <String, Integer> getServiceComponentStateCount() {
Map <String, Integer> serviceComponentStateCountMap = new HashMap<>();
serviceComponentStateCountMap.put("startedCount", getSCHCountByState(State.STARTED));
serviceComponentStateCountMap.put("installedCount", getSCHCountByState(State.INSTALLED));
+ serviceComponentStateCountMap.put("installedAndMaintenanceOffCount", getMaintenanceOffSCHCountByState(State.INSTALLED));
serviceComponentStateCountMap.put("installFailedCount", getSCHCountByState(State.INSTALL_FAILED));
serviceComponentStateCountMap.put("initCount", getSCHCountByState(State.INIT));
serviceComponentStateCountMap.put("unknownCount", getSCHCountByState(State.UNKNOWN));
http://git-wip-us.apache.org/repos/asf/ambari/blob/986a65db/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
index 80cd1da..110e359 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ComponentResourceProviderTest.java
@@ -217,6 +217,7 @@ public class ComponentResourceProviderTest {
Map <String, Integer> serviceComponentStateCountMap = new HashMap<>();
serviceComponentStateCountMap.put("startedCount", 1);
serviceComponentStateCountMap.put("installedCount", 0);
+ serviceComponentStateCountMap.put("installedAndMaintenanceOffCount", 0);
serviceComponentStateCountMap.put("installFailedCount", 0);
serviceComponentStateCountMap.put("initCount", 0);
serviceComponentStateCountMap.put("unknownCount", 1);
@@ -280,6 +281,7 @@ public class ComponentResourceProviderTest {
propertyIds.add(ComponentResourceProvider.COMPONENT_TOTAL_COUNT_PROPERTY_ID);
propertyIds.add(ComponentResourceProvider.COMPONENT_STARTED_COUNT_PROPERTY_ID);
propertyIds.add(ComponentResourceProvider.COMPONENT_INSTALLED_COUNT_PROPERTY_ID);
+ propertyIds.add(ComponentResourceProvider.COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID);
propertyIds.add(ComponentResourceProvider.COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID);
propertyIds.add(ComponentResourceProvider.COMPONENT_INIT_COUNT_PROPERTY_ID);
propertyIds.add(ComponentResourceProvider.COMPONENT_UNKNOWN_COUNT_PROPERTY_ID);
@@ -311,6 +313,8 @@ public class ComponentResourceProviderTest {
Assert.assertEquals(0, resource.getPropertyValue(
ComponentResourceProvider.COMPONENT_INSTALLED_COUNT_PROPERTY_ID));
Assert.assertEquals(0, resource.getPropertyValue(
+ ComponentResourceProvider.COMPONENT_INSTALLED_AND_MAINTENANCE_OFF_COUNT_PROPERTY_ID));
+ Assert.assertEquals(0, resource.getPropertyValue(
ComponentResourceProvider.COMPONENT_INSTALL_FAILED_COUNT_PROPERTY_ID));
Assert.assertEquals(0, resource.getPropertyValue(
ComponentResourceProvider.COMPONENT_INIT_COUNT_PROPERTY_ID));
@@ -379,6 +383,7 @@ public class ComponentResourceProviderTest {
Map <String, Integer> serviceComponentStateCountMap = new HashMap<>();
serviceComponentStateCountMap.put("startedCount", 0);
serviceComponentStateCountMap.put("installedCount", 1);
+ serviceComponentStateCountMap.put("installedAndMaintenanceOffCount", 0);
serviceComponentStateCountMap.put("installFailedCount", 0);
serviceComponentStateCountMap.put("initCount", 0);
serviceComponentStateCountMap.put("unknownCount", 0);
@@ -691,6 +696,7 @@ public class ComponentResourceProviderTest {
Map <String, Integer> serviceComponentStateCountMap = new HashMap<>();
serviceComponentStateCountMap.put("startedCount", 0);
serviceComponentStateCountMap.put("installedCount", 1);
+ serviceComponentStateCountMap.put("installedAndMaintenanceOffCount", 0);
serviceComponentStateCountMap.put("installFailedCount", 0);
serviceComponentStateCountMap.put("initCount", 0);
serviceComponentStateCountMap.put("unknownCount", 0);
http://git-wip-us.apache.org/repos/asf/ambari/blob/986a65db/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
index 6320f35..c753f49 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/ServiceComponentTest.java
@@ -273,15 +273,28 @@ public class ServiceComponentTest {
service.addServiceComponent(component);
addHostToCluster("h1", service.getCluster().getClusterName());
+ addHostToCluster("h2", service.getCluster().getClusterName());
+ addHostToCluster("h3", service.getCluster().getClusterName());
ServiceComponentHost sch =
serviceComponentHostFactory.createNew(component, "h1");
+ ServiceComponentHost sch2 =
+ serviceComponentHostFactory.createNew(component, "h2");
+ ServiceComponentHost sch3 =
+ serviceComponentHostFactory.createNew(component, "h3");
sch.setState(State.INSTALLED);
+ sch2.setState(State.INSTALLED);
+ sch3.setState(State.INSTALLED);
Map<String, ServiceComponentHost> compHosts =
new HashMap<>();
compHosts.put("h1", sch);
+ compHosts.put("h2", sch2);
+ compHosts.put("h3", sch3);
component.addServiceComponentHosts(compHosts);
- Assert.assertEquals(1, component.getServiceComponentHosts().size());
+ Assert.assertEquals(3, component.getServiceComponentHosts().size());
+
+ component.getServiceComponentHost("h2").setMaintenanceState(MaintenanceState.ON);
+ sch3.setMaintenanceState(MaintenanceState.ON);
ServiceComponent sc = service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
@@ -298,9 +311,11 @@ public class ServiceComponentTest {
int totalCount = r.getServiceComponentStateCount().get("totalCount");
int startedCount = r.getServiceComponentStateCount().get("startedCount");
int installedCount = r.getServiceComponentStateCount().get("installedCount");
- Assert.assertEquals(1, totalCount);
+ int installedAndMaintenanceOffCount = r.getServiceComponentStateCount().get("installedAndMaintenanceOffCount");
+ Assert.assertEquals(3, totalCount);
Assert.assertEquals(0, startedCount);
- Assert.assertEquals(1, installedCount);
+ Assert.assertEquals(3, installedCount);
+ Assert.assertEquals(1, installedAndMaintenanceOffCount);
// TODO check configs
// r.getConfigVersions()
[15/50] [abbrv] ambari git commit: AMBARI-21919. Kerberos identity
references should use the "reference" attribute (rlevas)
Posted by jl...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
index c03b400..d0d5dac 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog260Test.java
@@ -55,8 +55,8 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo;
import org.apache.ambari.server.configuration.Configuration;
import org.apache.ambari.server.controller.AmbariManagementController;
import org.apache.ambari.server.controller.AmbariManagementControllerImpl;
-import org.apache.ambari.server.controller.KerberosHelper;
import org.apache.ambari.server.controller.MaintenanceStateHelper;
+import org.apache.ambari.server.controller.ServiceConfigVersionResponse;
import org.apache.ambari.server.orm.DBAccessor;
import org.apache.ambari.server.orm.DBAccessor.DBColumnInfo;
import org.apache.ambari.server.orm.dao.ArtifactDAO;
@@ -74,6 +74,7 @@ import org.apache.ambari.server.state.StackInfo;
import org.apache.ambari.server.state.kerberos.KerberosComponentDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosDescriptorFactory;
+import org.apache.ambari.server.state.kerberos.KerberosIdentityDescriptor;
import org.apache.ambari.server.state.kerberos.KerberosServiceDescriptor;
import org.apache.ambari.server.state.stack.OsFamily;
import org.apache.commons.io.FileUtils;
@@ -131,41 +132,16 @@ public class UpgradeCatalog260Test {
@Mock(type = MockType.NICE)
private OsFamily osFamily;
- @Mock(type = MockType.NICE)
- private KerberosHelper kerberosHelper;
-
- @Mock(type = MockType.NICE)
- private ActionManager actionManager;
-
- @Mock(type = MockType.NICE)
- private Config config;
-
- @Mock(type = MockType.STRICT)
- private Service service;
-
- @Mock(type = MockType.NICE)
- private Clusters clusters;
-
- @Mock(type = MockType.NICE)
- private Cluster cluster;
-
- @Mock(type = MockType.NICE)
- private Injector injector;
-
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Before
public void init() {
- reset(entityManagerProvider, injector);
+ reset(entityManagerProvider);
expect(entityManagerProvider.get()).andReturn(entityManager).anyTimes();
- expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
- expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper).anyTimes();
-
- replay(entityManagerProvider, injector);
+ replay(entityManagerProvider);
}
@After
@@ -227,17 +203,7 @@ public class UpgradeCatalog260Test {
replay(dbAccessor, configuration, connection, statement, resultSet);
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(OsFamily.class).toInstance(osFamily);
- binder.bind(EntityManager.class).toInstance(entityManager);
- binder.bind(Configuration.class).toInstance(configuration);
- }
- };
-
- Injector injector = Guice.createInjector(module);
+ Injector injector = getInjector();
UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.executeDDLUpdates();
@@ -261,7 +227,7 @@ public class UpgradeCatalog260Test {
expectLastCall().once();
}
- public void expectRenameServiceDeletedColumn(Capture<DBColumnInfo> unmapped) throws SQLException {
+ public void expectRenameServiceDeletedColumn(Capture<DBColumnInfo> unmapped) throws SQLException {
dbAccessor.renameColumn(eq(UpgradeCatalog260.CLUSTER_CONFIG_TABLE), eq(UpgradeCatalog260.SERVICE_DELETED_COLUMN), capture(unmapped));
expectLastCall().once();
}
@@ -355,7 +321,7 @@ public class UpgradeCatalog260Test {
}
public void expectUpdateUpgradeTable(Capture<DBColumnInfo> rvid,
- Capture<DBColumnInfo> orchestration, Capture<DBColumnInfo> revertAllowed)
+ Capture<DBColumnInfo> orchestration, Capture<DBColumnInfo> revertAllowed)
throws SQLException {
dbAccessor.clearTable(eq(UpgradeCatalog260.UPGRADE_TABLE));
@@ -557,17 +523,7 @@ public class UpgradeCatalog260Test {
expectLastCall().once();
replay(dbAccessor, configuration, connection, statement, resultSet);
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(OsFamily.class).toInstance(osFamily);
- binder.bind(EntityManager.class).toInstance(entityManager);
- binder.bind(Configuration.class).toInstance(configuration);
- }
- };
-
- Injector injector = Guice.createInjector(module);
+ Injector injector = getInjector();
UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.executePreDMLUpdates();
@@ -605,27 +561,17 @@ public class UpgradeCatalog260Test {
@Test
public void testEnsureZeppelinProxyUserConfigs() throws AmbariException {
- final Clusters clusters = createMock(Clusters.class);
+ Injector injector = getInjector();
+
+ final Clusters clusters = injector.getInstance(Clusters.class);
final Cluster cluster = createMock(Cluster.class);
final Config zeppelinEnvConf = createMock(Config.class);
final Config coreSiteConf = createMock(Config.class);
final Config coreSiteConfNew = createMock(Config.class);
- final AmbariManagementController controller = createMock(AmbariManagementController.class);
+ final AmbariManagementController controller = injector.getInstance(AmbariManagementController.class);
Capture<? extends Map<String, String>> captureCoreSiteConfProperties = newCapture();
- Module module = new Module() {
- @Override
- public void configure(Binder binder) {
- binder.bind(DBAccessor.class).toInstance(dbAccessor);
- binder.bind(OsFamily.class).toInstance(osFamily);
- binder.bind(EntityManager.class).toInstance(entityManager);
- binder.bind(Configuration.class).toInstance(configuration);
- binder.bind(Clusters.class).toInstance(clusters);
- binder.bind(AmbariManagementController.class).toInstance(controller);
- }
- };
-
expect(clusters.getClusters()).andReturn(Collections.singletonMap("c1", cluster)).once();
expect(cluster.getClusterName()).andReturn("c1").atLeastOnce();
@@ -648,7 +594,6 @@ public class UpgradeCatalog260Test {
replay(clusters, cluster, zeppelinEnvConf, coreSiteConf, coreSiteConfNew, controller);
- Injector injector = Guice.createInjector(module);
UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.ensureZeppelinProxyUserConfigs();
@@ -662,6 +607,8 @@ public class UpgradeCatalog260Test {
@Test
public void testUpdateKerberosDescriptorArtifact() throws Exception {
+ Injector injector = getInjector();
+
URL systemResourceURL = ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_ranger_kms.json");
Assert.assertNotNull(systemResourceURL);
@@ -672,28 +619,71 @@ public class UpgradeCatalog260Test {
serviceDescriptor = kerberosDescriptor.getService("RANGER_KMS");
Assert.assertNotNull(serviceDescriptor);
Assert.assertNotNull(serviceDescriptor.getIdentity("/smokeuser"));
+ Assert.assertNotNull(serviceDescriptor.getIdentity("/spnego"));
KerberosComponentDescriptor componentDescriptor;
componentDescriptor = serviceDescriptor.getComponent("RANGER_KMS_SERVER");
Assert.assertNotNull(componentDescriptor);
Assert.assertNotNull(componentDescriptor.getIdentity("/smokeuser"));
+ Assert.assertNotNull(componentDescriptor.getIdentity("/spnego"));
+ Assert.assertNotNull(componentDescriptor.getIdentity("/spnego").getPrincipalDescriptor());
+ Assert.assertEquals("invalid_name@${realm}", componentDescriptor.getIdentity("/spnego").getPrincipalDescriptor().getValue());
ArtifactEntity artifactEntity = createMock(ArtifactEntity.class);
expect(artifactEntity.getArtifactData()).andReturn(kerberosDescriptor.toMap()).once();
Capture<Map<String, Object>> captureMap = newCapture();
+ expect(artifactEntity.getForeignKeys()).andReturn(Collections.singletonMap("cluster", "2"));
artifactEntity.setArtifactData(capture(captureMap));
expectLastCall().once();
ArtifactDAO artifactDAO = createMock(ArtifactDAO.class);
expect(artifactDAO.merge(artifactEntity)).andReturn(artifactEntity).atLeastOnce();
- replay(artifactDAO, artifactEntity);
+ Map<String, String> properties = new HashMap<>();
+ properties.put("ranger.ks.kerberos.principal", "correct_value@EXAMPLE.COM");
+ properties.put("xasecure.audit.jaas.Client.option.principal", "wrong_value@EXAMPLE.COM");
+
+ Config config = createMock(Config.class);
+ expect(config.getProperties()).andReturn(properties).anyTimes();
+ expect(config.getPropertiesAttributes()).andReturn(Collections.<String, Map<String, String>>emptyMap()).anyTimes();
+ expect(config.getTag()).andReturn("version1").anyTimes();
+ expect(config.getType()).andReturn("ranger-kms-audit").anyTimes();
+
+ Config newConfig = createMock(Config.class);
+ expect(newConfig.getTag()).andReturn("version2").anyTimes();
+ expect(newConfig.getType()).andReturn("ranger-kms-audit").anyTimes();
+
+ ServiceConfigVersionResponse response = createMock(ServiceConfigVersionResponse.class);
+
+ StackId stackId = createMock(StackId.class);
+
+ Cluster cluster = createMock(Cluster.class);
+ expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
+ expect(cluster.getDesiredConfigByType("dbks-site")).andReturn(config).anyTimes();
+ expect(cluster.getDesiredConfigByType("ranger-kms-audit")).andReturn(config).anyTimes();
+ expect(cluster.getConfigsByType("ranger-kms-audit")).andReturn(Collections.singletonMap("version1", config)).anyTimes();
+ expect(cluster.getServiceByConfigType("ranger-kms-audit")).andReturn("RANGER").anyTimes();
+ expect(cluster.getClusterName()).andReturn("cl1").anyTimes();
+ expect(cluster.getConfig(eq("ranger-kms-audit"), anyString())).andReturn(newConfig).once();
+ expect(cluster.addDesiredConfig("ambari-upgrade", Collections.singleton(newConfig), "Updated ranger-kms-audit during Ambari Upgrade from 2.5.2 to 2.6.0.")).andReturn(response).once();
+
+ final Clusters clusters = injector.getInstance(Clusters.class);
+ expect(clusters.getCluster(2L)).andReturn(cluster).anyTimes();
- UpgradeCatalog260 upgradeCatalog260 = createMockBuilder(UpgradeCatalog260.class).createMock();
+ Capture<? extends Map<String, String>> captureProperties = newCapture();
+
+ AmbariManagementController controller = injector.getInstance(AmbariManagementController.class);
+ expect(controller.createConfig(eq(cluster), eq(stackId), eq("ranger-kms-audit"), capture(captureProperties), anyString(), anyObject(Map.class)))
+ .andReturn(null)
+ .once();
+
+ replay(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId);
+
+ UpgradeCatalog260 upgradeCatalog260 = injector.getInstance(UpgradeCatalog260.class);
upgradeCatalog260.updateKerberosDescriptorArtifact(artifactDAO, artifactEntity);
- verify(artifactDAO, artifactEntity);
+ verify(artifactDAO, artifactEntity, cluster, clusters, config, newConfig, response, controller, stackId);
KerberosDescriptor kerberosDescriptorUpdated = new KerberosDescriptorFactory().createInstance(captureMap.getValue());
Assert.assertNotNull(kerberosDescriptorUpdated);
@@ -701,10 +691,27 @@ public class UpgradeCatalog260Test {
Assert.assertNull(kerberosDescriptorUpdated.getService("RANGER_KMS").getIdentity("/smokeuser"));
Assert.assertNull(kerberosDescriptorUpdated.getService("RANGER_KMS").getComponent("RANGER_KMS_SERVER").getIdentity("/smokeuser"));
+ KerberosIdentityDescriptor identity;
+
+ Assert.assertNull(kerberosDescriptorUpdated.getService("RANGER_KMS").getIdentity("/spnego"));
+ identity = kerberosDescriptorUpdated.getService("RANGER_KMS").getIdentity("ranger_kms_spnego");
+ Assert.assertNotNull(identity);
+ Assert.assertEquals("/spnego", identity.getReference());
+
+ Assert.assertNull(kerberosDescriptorUpdated.getService("RANGER_KMS").getComponent("RANGER_KMS_SERVER").getIdentity("/spnego"));
+ identity = kerberosDescriptorUpdated.getService("RANGER_KMS").getComponent("RANGER_KMS_SERVER").getIdentity("ranger_kms_ranger_kms_server_spnego");
+ Assert.assertNotNull(identity);
+ Assert.assertEquals("/spnego", identity.getReference());
+ Assert.assertNotNull(identity.getPrincipalDescriptor());
+ Assert.assertNull(identity.getPrincipalDescriptor().getValue());
+
+ Assert.assertTrue(captureProperties.hasCaptured());
+ Map<String, String> newProperties = captureProperties.getValue();
+ Assert.assertEquals("correct_value@EXAMPLE.COM", newProperties.get("xasecure.audit.jaas.Client.option.principal"));
}
@Test
- public void testUpdateAmsConfigs() throws Exception{
+ public void testUpdateAmsConfigs() throws Exception {
Map<String, String> oldProperties = new HashMap<String, String>() {
{
@@ -832,5 +839,19 @@ public class UpgradeCatalog260Test {
verify(clusters, cluster, controller, widgetDAO, widgetEntity, stackInfo, serviceInfo);
}
+ private Injector getInjector() {
+
+ return Guice.createInjector(new Module() {
+ @Override
+ public void configure(Binder binder) {
+ binder.bind(DBAccessor.class).toInstance(dbAccessor);
+ binder.bind(OsFamily.class).toInstance(osFamily);
+ binder.bind(EntityManager.class).toInstance(entityManager);
+ binder.bind(Configuration.class).toInstance(configuration);
+ binder.bind(Clusters.class).toInstance(createMock(Clusters.class));
+ binder.bind(AmbariManagementController.class).toInstance(createMock(AmbariManagementController.class));
+ }
+ });
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_ranger_kms.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_ranger_kms.json b/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_ranger_kms.json
index d7e048f..e17e121 100644
--- a/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_ranger_kms.json
+++ b/ambari-server/src/test/resources/kerberos/test_kerberos_descriptor_ranger_kms.json
@@ -65,6 +65,7 @@
{
"name": "/spnego",
"principal": {
+ "value" : "invalid_name@${realm}",
"configuration": "kms-site/hadoop.kms.authentication.signer.secret.provider.zookeeper.kerberos.principal"
},
"keytab": {
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/ambari-server/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json b/ambari-server/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
index a555bb5..ecbdfe9 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
+++ b/ambari-server/src/test/resources/stacks/HDP/2.0.8/services/HDFS/kerberos.json
@@ -4,7 +4,8 @@
"name": "HDFS",
"identities": [
{
- "name": "/spnego",
+ "name": "hdfs_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.web.authentication.kerberos.principal"
},
@@ -13,7 +14,8 @@
}
},
{
- "name": "/smokeuser"
+ "name": "hdfs_smokeuser",
+ "reference": "/smokeuser"
},
{
"name": "hdfs",
@@ -63,7 +65,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.namenode.kerberos.internal.spnego.principal"
}
@@ -128,7 +131,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hdfs_secondary_namenode_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hdfs-site/dfs.secondary.namenode.kerberos.internal.spnego.principal"
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/contrib/management-packs/hdf-ambari-mpack/src/main/resources/common-services/NIFI/1.0.0/kerberos.json
----------------------------------------------------------------------
diff --git a/contrib/management-packs/hdf-ambari-mpack/src/main/resources/common-services/NIFI/1.0.0/kerberos.json b/contrib/management-packs/hdf-ambari-mpack/src/main/resources/common-services/NIFI/1.0.0/kerberos.json
index 74d84e6..0823b5e 100644
--- a/contrib/management-packs/hdf-ambari-mpack/src/main/resources/common-services/NIFI/1.0.0/kerberos.json
+++ b/contrib/management-packs/hdf-ambari-mpack/src/main/resources/common-services/NIFI/1.0.0/kerberos.json
@@ -7,7 +7,8 @@
"name": "NIFI_MASTER",
"identities": [
{
- "name": "/spnego",
+ "name": "nifi_nifi_master_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "nifi-properties/nifi.kerberos.spnego.principal"
},
@@ -38,7 +39,8 @@
}
},
{
- "name": "/NIFI/NIFI_MASTER/nifi_principal",
+ "name": "nifi_nifi_master_nifi_principal",
+ "reference": "/NIFI/NIFI_MASTER/nifi_principal",
"principal": {
"configuration": "ranger-nifi-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/contrib/management-packs/hdf-ambari-mpack/src/main/resources/stacks/HDF/2.0/services/KAFKA/kerberos.json
----------------------------------------------------------------------
diff --git a/contrib/management-packs/hdf-ambari-mpack/src/main/resources/stacks/HDF/2.0/services/KAFKA/kerberos.json b/contrib/management-packs/hdf-ambari-mpack/src/main/resources/stacks/HDF/2.0/services/KAFKA/kerberos.json
index aa351d1..e1e814f 100644
--- a/contrib/management-packs/hdf-ambari-mpack/src/main/resources/stacks/HDF/2.0/services/KAFKA/kerberos.json
+++ b/contrib/management-packs/hdf-ambari-mpack/src/main/resources/stacks/HDF/2.0/services/KAFKA/kerberos.json
@@ -4,7 +4,8 @@
"name": "KAFKA",
"identities": [
{
- "name": "/smokeuser"
+ "name": "kafka_smokeuser",
+ "refernce": "/smokeuser"
}
],
"configurations": [
@@ -56,7 +57,8 @@
}
},
{
- "name": "/KAFKA/KAFKA_BROKER/kafka_broker",
+ "name": "kafka_kafka_broker_kafka_broker",
+ "reference": "/KAFKA/KAFKA_BROKER/kafka_broker",
"principal": {
"configuration": "ranger-kafka-audit/xasecure.audit.jaas.Client.option.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R_SERVER/8.0.5/kerberos.json
----------------------------------------------------------------------
diff --git a/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R_SERVER/8.0.5/kerberos.json b/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R_SERVER/8.0.5/kerberos.json
index 6e4aa4c..0d4e621 100644
--- a/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R_SERVER/8.0.5/kerberos.json
+++ b/contrib/management-packs/microsoft-r_mpack/src/main/resources/common-services/MICROSOFT_R_SERVER/8.0.5/kerberos.json
@@ -4,10 +4,12 @@
"name": "MICROSOFT_R_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "microsoft_r_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
- "name": "/smokeuser"
+ "name": "microsoft_r_server_smokeuser",
+ "reference": "/smokeuser"
}
]
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/HIVE/kerberos.json
----------------------------------------------------------------------
diff --git a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/HIVE/kerberos.json b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/HIVE/kerberos.json
index 4b31f7a..ad6fd4b 100755
--- a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/HIVE/kerberos.json
+++ b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/HIVE/kerberos.json
@@ -4,10 +4,12 @@
"name": "HIVE",
"identities": [
{
- "name": "/spnego"
+ "name": "hive_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "hive_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -44,7 +46,8 @@
"name": "HIVE_METASTORE",
"identities": [
{
- "name": "/HIVE/HIVE_SERVER/hive_server_hive",
+ "name": "hive_hive_metastore_hive",
+ "reference": "/HIVE/HIVE_SERVER/hive_server_hive",
"principal": {
"configuration": "hive-site/hive.metastore.kerberos.principal"
},
@@ -58,7 +61,8 @@
"name": "HIVE_SERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "hive_hive_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "hive_server_hive",
@@ -92,7 +96,8 @@
}
},
{
- "name": "/spnego",
+ "name": "hive_hive_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "hive-site/hive.server2.authentication.spnego.principal"
},
@@ -116,7 +121,8 @@
"name": "WEBHCAT_SERVER",
"identities": [
{
- "name": "/spnego",
+ "name": "hive_webhcat_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "webhcat-site/templeton.kerberos.principal"
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/2a060210/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/YARN/kerberos.json
----------------------------------------------------------------------
diff --git a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/YARN/kerberos.json b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/YARN/kerberos.json
index 4093431..647e4fc 100755
--- a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/YARN/kerberos.json
+++ b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/YARN/kerberos.json
@@ -4,10 +4,12 @@
"name": "YARN",
"identities": [
{
- "name": "/spnego"
+ "name": "yarn_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "yarn_smokeuser",
+ "reference": "/smokeuser"
}
],
"configurations": [
@@ -67,7 +69,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_nodemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.nodemanager.webapp.spnego-principal"
},
@@ -109,7 +112,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_resourcemanager_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.resourcemanager.webapp.spnego-principal"
},
@@ -144,7 +148,8 @@
}
},
{
- "name": "/spnego",
+ "name": "yarn_app_timeline_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "yarn-site/yarn.timeline-service.http-authentication.kerberos.principal"
},
@@ -153,7 +158,8 @@
}
},
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "yarn_app_timelineserver_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
}
]
}
@@ -163,10 +169,12 @@
"name": "MAPREDUCE2",
"identities": [
{
- "name": "/spnego"
+ "name": "mapreduce2_spnego",
+ "reference": "/spnego"
},
{
- "name": "/smokeuser"
+ "name": "mapreduce2_smokeuser",
+ "reference": "/smokeuser"
}
],
"components": [
@@ -174,7 +182,8 @@
"name": "HISTORYSERVER",
"identities": [
{
- "name": "/HDFS/NAMENODE/hdfs"
+ "name": "mapreduce2_history_server_hdfs",
+ "reference": "/HDFS/NAMENODE/hdfs"
},
{
"name": "history_server_jhs",
@@ -198,7 +207,8 @@
}
},
{
- "name": "/spnego",
+ "name": "mapreduce2_history_server_spnego",
+ "reference": "/spnego",
"principal": {
"configuration": "mapred-site/mapreduce.jobhistory.webapp.spnego-principal"
},
[48/50] [abbrv] ambari git commit: AMBARI-22015. livy2 interpreter
errors (unable to impersonate users/ LLAP or Hive CNF issue) due to missing
proxy configs. (Mingjie Tang via Swapan Shridhar).
Posted by jl...@apache.org.
AMBARI-22015. livy2 interpreter errors (unable to impersonate users/ LLAP or Hive CNF issue) due to missing proxy configs. (Mingjie Tang via Swapan Shridhar).
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/12c9ca7e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/12c9ca7e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/12c9ca7e
Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 12c9ca7e2fafd092149081971bcfcbbb1e49adf4
Parents: 4c49b4b
Author: Swapan Shridhar <ss...@hortonworks.com>
Authored: Mon Sep 25 15:37:41 2017 -0700
Committer: Swapan Shridhar <ss...@hortonworks.com>
Committed: Mon Sep 25 15:37:41 2017 -0700
----------------------------------------------------------------------
.../main/resources/stacks/ODPi/2.0/services/stack_advisor.py | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/12c9ca7e/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/stack_advisor.py b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/stack_advisor.py
index 5f70db2..418d0c0 100755
--- a/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/stack_advisor.py
+++ b/contrib/management-packs/odpi-ambari-mpack/src/main/resources/stacks/ODPi/2.0/services/stack_advisor.py
@@ -271,6 +271,13 @@ class ODPi20StackAdvisor(DefaultStackAdvisor):
if not livyUser in users and livyUser is not None:
users[livyUser] = {"propertyHosts" : "*","propertyGroups" : "*", "config" : "livy-env", "propertyName" : "livy_user"}
+ if "SPARK2" in servicesList:
+ livyUser = None
+ if "livy2-env" in services["configurations"] and "livy_user" in services["configurations"]["livy2-env"]["properties"]:
+ livyUser = services["configurations"]["livy2-env"]["properties"]["livy_user"]
+ if not livyUser in users and livyUser is not None:
+ users[livy2User] = {"propertyHosts" : "*","propertyGroups" : "*", "config" : "livy2-env", "propertyName" : "livy_user"}
+
putCoreSiteProperty = self.putProperty(configurations, "core-site", services)
putCoreSitePropertyAttribute = self.putPropertyAttribute(configurations, "core-site")