You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2018/01/23 22:42:29 UTC

[ambari] 01/02: Merge branch 'trunk' into branch-feature-AMBARI-14714

This is an automated email from the ASF dual-hosted git repository.

mradhakrishnan pushed a commit to branch branch-feature-AMBARI-14714
in repository https://gitbox.apache.org/repos/asf/ambari.git

commit d2aee2ef3b93e98168670ba5bcfff8c6b0270fae
Merge: 4ec01a1 2de9543
Author: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
AuthorDate: Tue Jan 23 13:49:34 2018 -0800

    Merge branch 'trunk' into branch-feature-AMBARI-14714

 .github/PULL_REQUEST_TEMPLATE.md                   |    10 +
 .../src/main/resources/ui/admin-web/app/index.html |     9 +-
 .../main/resources/ui/admin-web/app/scripts/app.js |     2 +-
 .../app/scripts/controllers/SideNavCtrl.js         |     6 +-
 .../controllers/ambariViews/ViewsListCtrl.js       |   220 +-
 .../remoteClusters/RemoteClustersListCtrl.js       |   110 +-
 .../stackVersions/StackVersionsCreateCtrl.js       |    28 +-
 .../stackVersions/StackVersionsEditCtrl.js         |     4 +-
 .../stackVersions/StackVersionsListCtrl.js         |   192 +-
 .../controllers/userManagement/GroupsListCtrl.js   |    92 +-
 .../controllers/userManagement/UsersListCtrl.js    |   132 +-
 .../app/scripts/directives/comboSearch.js          |   501 +
 .../ui/admin-web/app/scripts/services/Cluster.js   |     3 +-
 .../ui/admin-web/app/scripts/services/Filters.js   |    84 +
 .../ui/admin-web/app/scripts/services/Group.js     |    11 +-
 .../admin-web/app/scripts/services/Pagination.js   |    59 +
 .../app/scripts/services/RemoteCluster.js          |    10 +-
 .../ui/admin-web/app/scripts/services/Stack.js     |    34 +-
 .../ui/admin-web/app/scripts/services/User.js      |    22 +-
 .../admin-web/app/styles/cluster-information.css   |    29 +-
 .../ui/admin-web/app/styles/combo-search.css       |   164 +
 .../resources/ui/admin-web/app/styles/main.css     |    45 +
 .../ui/admin-web/app/styles/user-management.css    |     4 +
 .../ui/admin-web/app/views/ambariViews/edit.html   |     8 +-
 .../admin-web/app/views/ambariViews/viewsList.html |    52 +-
 .../app/views/clusters/clusterInformation.html     |     8 +-
 .../app/views/directives/comboSearch.html          |    63 +
 .../app/views/directives/editableList.html         |     2 +-
 .../app/views/modals/AddRepositoryModal.html       |     2 +-
 .../app/views/modals/RoleDetailsModal.html         |     2 +-
 .../admin-web/app/views/remoteClusters/list.html   |    37 +-
 .../ui/admin-web/app/views/stackVersions/list.html |    40 +-
 .../app/views/stackVersions/stackVersionPage.html  |     4 +-
 .../app/views/userManagement/groupEdit.html        |    14 +-
 .../app/views/userManagement/groupsList.html       |    55 +-
 .../userManagement/modals/changePassword.html      |     2 +-
 .../views/userManagement/modals/groupCreate.html   |     2 +-
 .../views/userManagement/modals/userCreate.html    |     3 +-
 .../app/views/userManagement/userEdit.html         |    18 +-
 .../app/views/userManagement/usersList.html        |    65 +-
 .../src/main/resources/ui/admin-web/package.json   |     4 +-
 .../controllers/ambariViews/ViewsListCtrl_test.js  |   111 +
 .../userManagement/GroupsListCtrl_test.js          |   100 +-
 .../userManagement/UsersListCtrl_test.js           |   306 -
 .../test/unit/directives/comboSearch_test.js       |   362 +
 .../admin-web/test/unit/services/Filters_test.js   |   161 +
 .../test/unit/services/Pagination_test.js          |    72 +
 .../src/main/python/ambari_agent/ActionQueue.py    |    21 +-
 .../main/python/ambari_agent/CommandStatusDict.py  |     2 +-
 .../src/main/python/ambari_agent/Controller.py     |    25 +-
 .../ambari_agent/CustomServiceOrchestrator.py      |     4 +-
 .../src/main/python/ambari_agent/DataCleaner.py    |     4 +-
 .../src/main/python/ambari_agent/Heartbeat.py      |    17 +-
 .../src/main/python/ambari_agent/LiveStatus.py     |     3 +-
 .../src/main/python/ambari_agent/PythonExecutor.py |    15 +-
 .../ambari_agent/PythonReflectiveExecutor.py       |     3 +-
 .../main/python/ambari_agent/RecoveryManager.py    |    17 +-
 .../python/ambari_agent/StatusCommandsExecutor.py  |     3 +-
 .../main/python/ambari_agent/alerts/ams_alert.py   |    12 +-
 .../main/python/ambari_agent/alerts/base_alert.py  |    47 +-
 .../python/ambari_agent/alerts/metric_alert.py     |     6 +-
 .../main/python/ambari_agent/alerts/port_alert.py  |     4 +-
 .../main/python/ambari_agent/alerts/web_alert.py   |     6 +-
 .../src/main/python/ambari_agent/security.py       |     8 +-
 .../src/test/python/ambari_agent/TestController.py |     8 +-
 .../ambari_agent/examples/ControllerTester.py      |     6 +-
 .../src/main/python/ambari_commons/inet_utils.py   |    46 +
 .../python/ambari_commons/kerberos/__init__.py     |    19 +
 .../ambari_commons/kerberos/kerberos_common.py     |   168 +
 .../main/python/ambari_commons/kerberos/utils.py   |   109 +
 .../src/main/python/ambari_commons/os_check.py     |     2 +
 .../core/providers/package/__init__.py             |    15 +
 .../core/providers/package/yumrpm.py               |   121 +-
 .../libraries/functions/conf_select.py             |     7 +
 .../libraries/functions/constants.py               |    11 +-
 .../libraries/functions/lzo_utils.py               |     6 +-
 .../libraries/functions/setup_atlas_hook.py        |    11 +-
 .../libraries/functions/setup_ranger_plugin_xml.py |    14 +-
 .../libraries/providers/hdfs_resource.py           |     2 +
 ambari-infra/ambari-infra-assembly/pom.xml         |    43 +-
 .../src/main/package/deb/manager/postinst          |     9 +-
 .../src/main/package/deb/manager/postrm            |     8 +
 .../src/main/package/rpm/manager/postinstall.sh    |    11 +-
 .../src/main/package/rpm/manager/postremove.sh     |    23 +
 ambari-infra/ambari-infra-manager-it/pom.xml       |   167 +
 .../java/org/apache/ambari/infra/InfraClient.java  |   114 +
 .../apache/ambari/infra/InfraManagerStories.java   |   108 +
 .../ambari/infra/OffsetDateTimeConverter.java      |    39 +
 .../ambari/infra/steps/AbstractInfraSteps.java     |   256 +
 .../apache/ambari/infra/steps/ExportJobsSteps.java |   199 +
 .../src/test/resources/log4j.properties            |    16 +
 .../test/resources/stories/infra_api_tests.story   |    57 +
 ambari-infra/ambari-infra-manager/.gitignore       |     5 +-
 ambari-infra/ambari-infra-manager/build.xml        |    11 +-
 .../ambari-infra-manager/docker/Dockerfile         |     6 +-
 .../ambari-infra-manager/docker/bin/start.sh       |     2 +-
 .../ambari-infra-manager/docker/docker-compose.yml |   102 +
 .../docker/infra-manager-docker-compose.sh         |   124 +
 ambari-infra/ambari-infra-manager/pom.xml          |    44 +-
 .../java/org/apache/ambari/infra/InfraManager.java |     2 +-
 .../apache/ambari/infra/job/CloseableIterator.java |    24 +
 .../org/apache/ambari/infra/job/JobProperties.java |    47 +
 .../apache/ambari/infra/job/JobPropertyMap.java    |    57 +
 .../org/apache/ambari/infra/job/ObjectSource.java  |    23 +
 .../org/apache/ambari/infra/job/PropertyMap.java   |    25 +
 .../org/apache/ambari/infra/job/SolrDAOBase.java   |    65 +
 .../infra/job/archive/AbstractFileAction.java      |    38 +
 .../infra/job/archive/CompositeFileAction.java     |     3 +-
 .../apache/ambari/infra/job/archive/Document.java  |     3 +-
 .../archive/DocumentArchivingConfiguration.java    |   176 +
 .../job/archive/DocumentArchivingProperties.java   |   264 +
 .../job/archive/DocumentArchivingPropertyMap.java  |    44 +
 .../job/archive/DocumentExportConfiguration.java   |   118 -
 .../job/archive/DocumentExportJobListener.java     |    35 -
 .../job/archive/DocumentExportProperties.java      |   112 -
 .../job/archive/DocumentExportStepListener.java    |    47 -
 .../infra/job/archive/DocumentItemReader.java      |     8 +-
 .../ambari/infra/job/archive/DocumentIterator.java |    25 -
 .../ambari/infra/job/archive/DocumentSource.java   |    24 -
 .../ambari/infra/job/archive/DocumentWiper.java    |    23 +
 .../infra/job/archive/ExportDestination.java       |    25 +
 .../infra/job/archive/FileNameSuffixFormatter.java |    63 +
 .../ambari/infra/job/archive/HdfsUploader.java     |    55 +
 .../infra/job/archive/ItemWriterListener.java      |    23 +
 .../infra/job/archive/LocalDocumentItemWriter.java |    23 +-
 .../infra/job/archive/LocalItemWriterListener.java |    36 +
 .../ambari/infra/job/archive/S3Properties.java     |    64 +-
 .../ambari/infra/job/archive/S3Uploader.java       |    25 +-
 .../apache/ambari/infra/job/archive/SolrDAO.java   |    68 +
 .../infra/job/archive/SolrDocumentIterator.java    |     6 +-
 .../infra/job/archive/SolrDocumentSource.java      |    57 +-
 .../infra/job/archive/SolrParametrizedString.java  |    77 +
 .../ambari/infra/job/archive/SolrProperties.java   |   117 +
 .../ambari/infra/job/archive/SolrQueryBuilder.java |    59 +-
 .../infra/job/archive/SolrQueryProperties.java     |    40 +-
 .../ambari/infra/job/archive/TarGzCompressor.java  |     4 +-
 .../infra/job/archive/WriteCompletedEvent.java     |    45 +
 .../deleting/DocumentDeletingConfiguration.java    |    93 +
 .../job/deleting/DocumentDeletingProperties.java   |    77 +
 .../job/deleting/DocumentDeletingPropertyMap.java  |    44 +
 .../infra/job/deleting/DocumentWiperTasklet.java   |    49 +
 .../infra/model/JobExecutionRestartRequest.java    |    10 +
 .../src/main/resources/infra-manager-env.sh        |    24 +-
 .../src/main/resources/infra-manager.properties    |    58 +-
 .../src/main/resources/infraManager.sh             |   258 +-
 .../apache/ambari/infra/job/JobPropertiesTest.java |    56 +
 .../infra/job/archive/DocumentItemReaderTest.java  |     8 +-
 .../job/archive/FileNameSuffixFormatterTest.java   |    58 +
 .../job/archive/LocalDocumentItemWriterTest.java   |    27 +-
 .../job/archive/SolrParametrizedStringTest.java    |    57 +
 .../infra/job/archive/SolrPropertiesTest.java      |    54 +
 .../infra/job/archive/SolrQueryBuilderTest.java    |    55 +-
 .../infra/job/archive/SolrQueryPropertiesTest.java |    54 +
 .../vagrant-infra-manager.properties.sample        |    37 +
 ambari-infra/pom.xml                               |     6 +-
 ambari-logsearch/ambari-logsearch-assembly/pom.xml |   117 +-
 .../src/main/package/deb/logfeeder/postinst        |    22 +
 .../src/main/package/deb/logfeeder/postrm          |     6 +
 .../src/main/package/deb/logfeeder/posttrm         |    15 -
 .../src/main/package/deb/logfeeder/preinst         |    13 +
 .../src/main/package/deb/portal/postinst           |    19 +
 .../src/main/package/deb/portal/postrm             |     6 +
 .../src/main/package/deb/portal/preinst            |    13 +
 .../src/main/package/rpm/logfeeder/postinstall.sh  |    40 +
 .../src/main/package/rpm/logfeeder/postremove.sh   |    23 +
 .../main/package/rpm/logfeeder/postremove.sh~HEAD  |    21 +
 .../main/package/rpm/logfeeder/postremove.sh~trunk |    21 +
 .../src/main/package/rpm/logfeeder/preinstall.sh   |    28 +
 .../src/main/package/rpm/portal/postinstall.sh     |    37 +
 .../src/main/package/rpm/portal/postremove.sh      |    23 +
 .../src/main/package/rpm/portal/postremove.sh~HEAD |    21 +
 .../main/package/rpm/portal/postremove.sh~trunk    |    21 +
 .../src/main/package/rpm/portal/preinstall.sh      |    28 +
 .../config/api/LogSearchConfigFactory.java         |    49 +-
 .../config/api/LogSearchConfigLogFeeder.java       |     3 +-
 .../api/model/inputconfig/CustomDescriptor.java    |    31 +
 .../model/inputconfig/InputCustomDescriptor.java   |    22 +
 .../api/model/inputconfig/MapCustomDescriptor.java |    22 +
 .../model/inputconfig/impl/InputAdapter.java       |     4 +-
 .../impl/InputCustomDescriptorImpl.java            |    71 +
 .../inputconfig/impl/InputDescriptorImpl.java      |     2 +
 .../inputconfig/impl/MapCustomDescriptorImpl.java  |    81 +
 .../inputconfig/impl/PostMapValuesAdapter.java     |    12 +-
 .../ambari-logsearch-logfeeder-plugin-api/pom.xml  |    76 +
 .../ambari/logfeeder/plugin/common/AliasUtil.java  |   129 +
 .../ambari/logfeeder/plugin/common/ConfigItem.java |   191 +
 .../plugin/common/LogFeederProperties.java         |    32 +
 .../ambari/logfeeder/plugin/common/MetricData.java |    37 +
 .../ambari/logfeeder/plugin/filter/Filter.java     |   187 +
 .../logfeeder/plugin/filter/mapper/Mapper.java     |    74 +
 .../ambari/logfeeder/plugin/input/Input.java       |   340 +
 .../ambari/logfeeder/plugin/input/InputMarker.java |    29 +
 .../logfeeder/plugin/input/cache/LRUCache.java     |    99 +
 .../logfeeder/plugin/manager/BlockManager.java     |    35 +
 .../logfeeder/plugin/manager/InputManager.java     |    46 +
 .../logfeeder/plugin/manager/OutputManager.java    |    43 +
 .../ambari/logfeeder/plugin/output/Output.java     |   132 +
 .../ambari-logsearch-logfeeder/.gitignore          |     1 +
 .../ambari-logsearch-logfeeder/README.md           |     4 +-
 .../ambari-logsearch-logfeeder/build.properties    |    18 -
 .../ambari-logsearch-logfeeder/build.xml           |    28 +-
 .../ambari-logsearch-logfeeder/pom.xml             |    79 +-
 ambari-logsearch/ambari-logsearch-logfeeder/run.sh |     4 +-
 .../org/apache/ambari/logfeeder/LogFeeder.java     |   180 +-
 .../ambari/logfeeder/LogFeederCommandLine.java     |    81 +-
 .../ambari/logfeeder/common/ConfigBlock.java       |   153 -
 .../ambari/logfeeder/common/ConfigHandler.java     |   161 +-
 .../apache/ambari/logfeeder/common/ConfigItem.java |    97 -
 .../logfeeder/common/LogEntryParseTester.java      |    54 +-
 .../logfeeder/common/LogFeederConstants.java       |    50 +
 .../ambari/logfeeder/conf/ApplicationConfig.java   |   110 +
 .../ambari/logfeeder/conf/InputSimulateConfig.java |   154 +
 .../ambari/logfeeder/conf/LogEntryCacheConfig.java |   118 +
 .../ambari/logfeeder/conf/LogFeederProps.java      |   227 +
 .../logfeeder/conf/LogFeederSecurityConfig.java    |   191 +
 .../logfeeder/conf/MetricsCollectorConfig.java     |   113 +
 .../org/apache/ambari/logfeeder/filter/Filter.java |   188 -
 .../apache/ambari/logfeeder/filter/FilterGrok.java |    53 +-
 .../apache/ambari/logfeeder/filter/FilterJSON.java |    24 +-
 .../ambari/logfeeder/filter/FilterKeyValue.java    |    41 +-
 .../ambari/logfeeder/input/AbstractInputFile.java  |   326 -
 .../org/apache/ambari/logfeeder/input/Input.java   |   352 -
 .../logfeeder/input/InputConfigUploader.java       |    92 +-
 .../apache/ambari/logfeeder/input/InputFile.java   |   277 +-
 .../ambari/logfeeder/input/InputFileMarker.java    |    60 +
 .../ambari/logfeeder/input/InputManager.java       |   422 -
 .../ambari/logfeeder/input/InputManagerImpl.java   |   444 +
 .../apache/ambari/logfeeder/input/InputMarker.java |    40 -
 .../apache/ambari/logfeeder/input/InputS3File.java |    61 +-
 .../ambari/logfeeder/input/InputSimulate.java      |   121 +-
 .../ambari/logfeeder/input/cache/LRUCache.java     |    99 -
 .../logfeeder/input/file/FileCheckInHelper.java    |    93 +
 .../logfeeder/input/file/ProcessFileHelper.java    |   143 +
 .../input/file/ResumeLineNumberHelper.java         |    91 +
 .../ambari/logfeeder/input/reader/GZIPReader.java  |     4 +-
 .../input/reader/LogsearchReaderFactory.java       |     4 +-
 .../logfeeder/loglevelfilter/FilterLogData.java    |    73 -
 .../loglevelfilter/LogLevelFilterHandler.java      |   113 +-
 .../org/apache/ambari/logfeeder/mapper/Mapper.java |    45 -
 .../ambari/logfeeder/mapper/MapperAnonymize.java   |    11 +-
 .../apache/ambari/logfeeder/mapper/MapperDate.java |    32 +-
 .../ambari/logfeeder/mapper/MapperFieldCopy.java   |     8 +-
 .../ambari/logfeeder/mapper/MapperFieldName.java   |    10 +-
 .../ambari/logfeeder/mapper/MapperFieldValue.java  |    10 +-
 .../logfeeder/metrics/LogFeederAMSClient.java      |    22 +-
 .../ambari/logfeeder/metrics/MetricData.java       |    46 -
 .../ambari/logfeeder/metrics/MetricsManager.java   |    17 +-
 .../ambari/logfeeder/metrics/StatsLogger.java      |    84 +
 .../org/apache/ambari/logfeeder/output/Output.java |   137 -
 .../apache/ambari/logfeeder/output/OutputData.java |     4 +-
 .../ambari/logfeeder/output/OutputDevNull.java     |    48 +-
 .../apache/ambari/logfeeder/output/OutputFile.java |    56 +-
 .../ambari/logfeeder/output/OutputHDFSFile.java    |    47 +-
 .../ambari/logfeeder/output/OutputKafka.java       |    55 +-
 .../ambari/logfeeder/output/OutputLineFilter.java  |     4 +-
 .../ambari/logfeeder/output/OutputManager.java     |   258 -
 .../ambari/logfeeder/output/OutputManagerImpl.java |   293 +
 .../ambari/logfeeder/output/OutputS3File.java      |    38 +-
 .../apache/ambari/logfeeder/output/OutputSolr.java |    62 +-
 .../logfeeder/output/S3OutputConfiguration.java    |    12 +-
 .../apache/ambari/logfeeder/output/S3Uploader.java |     1 -
 .../ambari/logfeeder/output/spool/LogSpooler.java  |    13 +-
 .../apache/ambari/logfeeder/util/AliasUtil.java    |   114 -
 .../logfeeder/util/LogFeederPropertiesUtil.java    |   498 -
 .../ambari/logfeeder/util/LogFeederUtil.java       |    37 +-
 .../org/apache/ambari/logfeeder/util/SSLUtil.java  |   134 -
 .../src/main/package/deb/control/control           |    22 -
 .../src/main/package/deb/control/postinst          |    15 -
 .../src/main/package/deb/control/postrm            |    15 -
 .../src/main/package/deb/control/preinst           |    15 -
 .../src/main/package/deb/control/prerm             |    15 -
 .../shipper-conf/input.config-sample.json          |     2 +-
 .../src/main/resources/log4j.xml                   |    15 +-
 .../src/main/resources/logfeeder.properties        |    21 +-
 .../src/main/scripts/logfeeder-env.sh              |    40 +
 .../src/main/scripts/logfeeder-env.sh~HEAD         |    40 +
 .../src/main/scripts/logfeeder-env.sh~trunk        |    40 +
 .../src/main/scripts/logfeeder.sh                  |   291 +
 .../src/main/scripts/run.sh                        |   103 -
 .../ambari/logfeeder/filter/FilterGrokTest.java    |    29 +-
 .../ambari/logfeeder/filter/FilterJSONTest.java    |    21 +-
 .../logfeeder/filter/FilterKeyValueTest.java       |    23 +-
 .../ambari/logfeeder/input/InputFileTest.java      |    57 +-
 .../ambari/logfeeder/input/InputManagerTest.java   |    37 +-
 .../ambari/logfeeder/input/cache/LRUCacheTest.java |     1 +
 .../logfeeder/logconfig/LogConfigHandlerTest.java  |   148 -
 .../logfeeder/metrics/MetricsManagerTest.java      |     9 +-
 .../ambari/logfeeder/output/OutputKafkaTest.java   |    13 +-
 .../logfeeder/output/OutputLineFilterTest.java     |     4 +-
 .../ambari/logfeeder/output/OutputManagerTest.java |    67 +-
 .../ambari/logfeeder/output/OutputS3FileTest.java  |   110 +-
 .../ambari/logfeeder/output/OutputSolrTest.java    |   177 -
 ambari-logsearch/ambari-logsearch-server/README.md |     2 +-
 ambari-logsearch/ambari-logsearch-server/build.xml |    36 +-
 ambari-logsearch/ambari-logsearch-server/pom.xml   |    11 -
 ambari-logsearch/ambari-logsearch-server/run.sh    |     2 +-
 .../org/apache/ambari/logsearch/LogSearch.java     |     2 +-
 .../src/main/scripts/logsearch-env.sh              |    40 +
 .../src/main/scripts/logsearch-env.sh~HEAD         |    40 +
 .../src/main/scripts/logsearch-env.sh~trunk        |    40 +
 .../src/main/scripts/logsearch.sh                  |   273 +
 .../src/main/scripts/run.sh                        |    99 -
 .../src/main/scripts/stop.sh                       |    44 -
 ...chExternalServerAuthenticationProviderTest.java |     1 -
 ambari-logsearch/ambari-logsearch-web/package.json |     6 +-
 .../ambari-logsearch-web/src/app/app.module.ts     |    30 +-
 .../classes/components/graph/graph.component.less  |    49 +
 .../classes/components/graph/graph.component.ts    |   457 +
 .../components/graph/time-graph.component.less     |    48 +
 .../components/graph/time-graph.component.ts       |   250 +
 .../{ => logs-table}/logs-table-component.spec.ts  |     0
 .../{ => logs-table}/logs-table-component.ts       |     0
 .../src/app/classes/filtering.ts                   |     2 +-
 .../ambari-logsearch-web/src/app/classes/graph.ts  |    66 +
 .../src/app/classes/histogram-options.ts           |    36 -
 .../src/app/classes/models/store.ts                |     1 +
 .../src/app/classes/models/tab.ts                  |     7 +-
 .../ambari-logsearch-web/src/app/classes/object.ts |    19 +
 .../queries/audit-logs-graph-query-params.spec.ts  |   203 +
 .../queries/audit-logs-graph-query-params.ts       |    69 +
 .../app/classes/queries/audit-logs-query-params.ts |    19 +-
 .../audit-logs-top-resources-query-params.ts       |    23 +
 .../service-logs-histogram-query-params.spec.ts    |   203 -
 .../queries/service-logs-histogram-query-params.ts |    50 +-
 .../classes/queries/service-logs-query-params.ts   |     4 +-
 .../src/app/classes/service-injector.ts            |    23 +
 .../src/app/components/app.component.html          |    11 +-
 .../src/app/components/app.component.less          |     4 +-
 .../audit-logs-entries.component.html              |    36 +
 .../audit-logs-entries.component.spec.ts           |   113 +
 .../audit-logs-entries.component.ts                |   133 +
 .../audit-logs-table.component.spec.ts             |     7 +-
 .../audit-logs-table/audit-logs-table.component.ts |     2 +-
 .../collapsible-panel.component.html               |     8 +-
 .../collapsible-panel.component.spec.ts            |     4 +-
 .../collapsible-panel.component.ts                 |     8 +-
 .../context-menu/context-menu.component.html       |    19 +
 .../context-menu/context-menu.component.less       |    21 +
 .../context-menu/context-menu.component.spec.ts    |   123 +
 .../context-menu/context-menu.component.ts         |    72 +
 .../dropdown-button.component.spec.ts              |    17 +-
 .../dropdown-button/dropdown-button.component.ts   |     6 +-
 .../dropdown-list/dropdown-list.component.html     |     3 +-
 .../dropdown-list/dropdown-list.component.less     |    24 +-
 .../dropdown-list/dropdown-list.component.spec.ts  |     7 +-
 .../filter-button/filter-button.component.spec.ts  |    17 +-
 .../filter-button/filter-button.component.ts       |     7 +-
 .../filter-dropdown.component.spec.ts              |    17 +-
 .../filter-dropdown/filter-dropdown.component.ts   |     5 +-
 .../filters-panel/filters-panel.component.html     |     5 +-
 .../filters-panel/filters-panel.component.spec.ts  |     7 +-
 .../filters-panel/filters-panel.component.ts       |    30 +-
 .../graph-legend-item.component.html               |    19 +
 .../graph-legend-item.component.less               |    27 +
 .../graph-legend-item.component.spec.ts            |    42 +
 .../graph-legend-item.component.ts                 |    37 +
 .../graph-legend/graph-legend.component.html       |    19 +
 .../graph-legend/graph-legend.component.spec.ts    |    50 +
 .../graph-legend/graph-legend.component.ts         |    32 +
 .../graph-tooltip/graph-tooltip.component.html     |    22 +
 .../graph-tooltip/graph-tooltip.component.less     |    69 +
 .../graph-tooltip/graph-tooltip.component.spec.ts  |    50 +
 .../graph-tooltip/graph-tooltip.component.ts       |    36 +
 .../horizontal-histogram.component.html            |    22 +
 .../horizontal-histogram.component.less            |    22 +
 .../horizontal-histogram.component.spec.ts         |    61 +
 .../horizontal-histogram.component.ts              |   114 +
 .../log-context/log-context.component.spec.ts      |     7 +-
 .../log-message/log-message.component.html         |     2 +-
 .../log-message/log-message.component.less         |    27 +-
 .../log-message/log-message.component.spec.ts      |    14 +
 .../log-message/log-message.component.ts           |    24 +-
 .../logs-container/logs-container.component.html   |    36 +-
 .../logs-container/logs-container.component.less   |    23 +-
 .../logs-container.component.spec.ts               |     7 +-
 .../logs-container/logs-container.component.ts     |    71 +-
 .../main-container/main-container.component.html   |     1 -
 .../main-container/main-container.component.less   |     1 -
 .../main-container/main-container.component.ts     |     5 +-
 .../menu-button/menu-button.component.spec.ts      |    17 +-
 .../menu-button/menu-button.component.ts           |     6 +-
 .../src/app/components/mixins.less                 |    35 +-
 .../search-box/search-box.component.html           |    28 +-
 .../search-box/search-box.component.less           |    30 +-
 .../search-box/search-box.component.spec.ts        |    79 +
 .../components/search-box/search-box.component.ts  |   215 +-
 .../service-logs-table.component.html              |   188 +-
 .../service-logs-table.component.less              |   216 +-
 .../service-logs-table.component.spec.ts           |    24 +-
 .../service-logs-table.component.ts                |   200 +-
 .../src/app/components/tabs/tabs.component.spec.ts |     4 -
 .../src/app/components/tabs/tabs.component.ts      |     1 +
 .../time-histogram/time-histogram.component.html   |    21 +-
 .../time-histogram/time-histogram.component.less   |    23 +-
 .../time-histogram.component.spec.ts               |   157 +-
 .../time-histogram/time-histogram.component.ts     |   230 +-
 .../time-line-graph/time-line-graph.component.html |    27 +
 .../time-line-graph/time-line-graph.component.less |    42 +
 .../time-line-graph.component.spec.ts              |    69 +
 .../time-line-graph/time-line-graph.component.ts   |   111 +
 .../time-range-picker.component.spec.ts            |     7 +-
 .../timezone-picker.component.spec.ts              |     7 +-
 .../components/top-menu/top-menu.component.spec.ts |     3 +
 .../app/components/top-menu/top-menu.component.ts  |     3 +-
 .../src/app/components/variables.less              |    10 +
 .../ambari-logsearch-web/src/app/mock-data.ts      |   174 +-
 .../app/services/component-actions.service.spec.ts |     7 +-
 .../src/app/services/component-actions.service.ts  |    10 +-
 .../services/component-generator.service.spec.ts   |     7 +-
 .../src/app/services/http-client.service.ts        |    44 +-
 .../app/services/logs-container.service.spec.ts    |     7 +-
 .../src/app/services/logs-container.service.ts     |   159 +-
 .../storage/audit-logs-graph-data.service.ts       |    32 +
 .../src/app/services/storage/reducers.service.ts   |     2 +
 .../src/app/services/utils.service.spec.ts         |   117 +
 .../src/app/services/utils.service.ts              |    12 +
 .../ambari-logsearch-web/src/assets/i18n/en.json   |    26 +-
 .../ambari-logsearch-web/src/styles.less           |     4 +
 .../src/vendor/css/bootstrap-logsearch.min.css     |     2 +-
 .../src/vendor/js/bootstrap-logsearch.min.js       |     2 +-
 ambari-logsearch/ambari-logsearch-web/yarn.lock    |    20 +-
 ambari-logsearch/docker/Dockerfile                 |     6 +-
 ambari-logsearch/docker/all.yml                    |     6 +-
 ambari-logsearch/docker/bin/start.sh               |    37 +-
 ambari-logsearch/docker/docker-compose.yml         |     2 -
 ambari-logsearch/docker/logsearch-logfeeder.yml    |     1 -
 ambari-logsearch/docker/logsearch-server.yml       |     1 -
 .../docker/test-config/logfeeder/logfeeder-env.sh  |     5 +-
 .../test-config/logfeeder/logfeeder.properties     |     2 +-
 .../docker/test-config/logsearch/logsearch-env.sh  |     5 +-
 .../logsearch/logsearch-https.properties           |     4 +-
 .../test-config/logsearch/logsearch.properties     |     4 +-
 ambari-logsearch/pom.xml                           |     1 +
 ambari-project/pom.xml                             |     2 +-
 ambari-server/docs/api/generated/index.html        | 30360 +++++++++++--------
 ambari-server/docs/api/generated/swagger.json      |  4906 +--
 .../docs/api/v1/authentication-source-create.md    |    86 +
 .../docs/api/v1/authentication-source-delete.md    |    49 +
 .../docs/api/v1/authentication-source-get.md       |    93 +
 .../docs/api/v1/authentication-source-list.md      |   116 +
 .../docs/api/v1/authentication-source-resources.md |   117 +
 .../docs/api/v1/authentication-source-update.md    |   104 +
 ambari-server/docs/api/v1/index.md                 |    12 +
 ambari-server/docs/api/v1/user-create.md           |   107 +
 ambari-server/docs/api/v1/user-delete.md           |    48 +
 ambari-server/docs/api/v1/user-get.md              |    97 +
 ambari-server/docs/api/v1/user-list.md             |    98 +
 ambari-server/docs/api/v1/user-resources.md        |   175 +
 ambari-server/docs/api/v1/user-update.md           |   115 +
 ambari-server/docs/configuration/index.md          |    11 +-
 ambari-server/pom.xml                              |     1 -
 ambari-server/sbin/ambari-server                   |     1 -
 .../ambari/server/agent/ExecutionCommand.java      |    37 +-
 .../ambari/server/agent/HeartBeatHandler.java      |   122 +-
 .../ambari/server/agent/HeartbeatProcessor.java    |    33 +-
 .../ambari/server/alerts/JmxServerSideAlert.java   |    98 +
 .../org/apache/ambari/server/alerts/Threshold.java |    73 +
 .../ambari/server/api/AmbariErrorHandler.java      |     2 +-
 .../api/resources/ResourceInstanceFactoryImpl.java |     4 +
 .../api/resources/UserResourceDefinition.java      |     1 +
 .../ambari/server/api/services/AmbariMetaInfo.java |   126 +-
 .../ambari/server/api/services/BaseService.java    |     1 -
 .../RootServiceComponentConfiguration.java         |    73 +
 .../users/UserAuthenticationSourceService.java     |   223 +
 .../server/api/services/users/UserService.java     |   132 +-
 .../ambari/server/audit/event/LoginAuditEvent.java |    20 +
 .../checks/RequiredServicesInRepositoryCheck.java  |    18 +-
 .../configuration/ComponentSSLConfiguration.java   |     4 +-
 .../ambari/server/configuration/Configuration.java |   596 +-
 .../configuration/ConfigurationPropertyType.java   |    22 +
 .../LdapUsernameCollisionHandlingBehavior.java     |    29 +
 .../controller/AmbariManagementController.java     |    39 -
 .../controller/AmbariManagementControllerImpl.java |   219 +-
 .../ambari/server/controller/AmbariServer.java     |    32 +-
 .../ambari/server/controller/ControllerModule.java |     7 +
 .../server/controller/DeleteIdentityHandler.java   |     5 +-
 .../ambari/server/controller/KerberosHelper.java   |     2 +-
 .../server/controller/KerberosHelperImpl.java      |  1113 +-
 .../server/controller/ResourceProviderFactory.java |    24 +-
 .../controller/StackServiceComponentResponse.java  |    10 +
 .../UserAuthenticationSourceRequest.java           |    82 +
 ...erAuthenticationSourceRequestCreateSwagger.java |    40 +
 ...erAuthenticationSourceRequestUpdateSwagger.java |    40 +
 .../UserAuthenticationSourceResponse.java          |   127 +
 .../ambari/server/controller/UserRequest.java      |    50 +-
 .../controller/UserRequestCreateUserSwagger.java   |    49 +
 .../controller/UserRequestCreateUsersSwagger.java  |    52 +
 .../controller/UserRequestUpdateUserSwagger.java   |    52 +
 .../ambari/server/controller/UserResponse.java     |    87 +-
 .../AbstractAuthorizedResourceProvider.java        |    12 +-
 .../AbstractControllerResourceProvider.java        |    83 +-
 .../internal/AbstractDRResourceProvider.java       |     9 +-
 .../internal/AbstractResourceProvider.java         |     2 +-
 .../internal/ActionResourceProvider.java           |    34 +-
 .../ActiveWidgetLayoutResourceProvider.java        |     4 +-
 .../internal/AlertDefinitionResourceProvider.java  |     2 +-
 .../internal/AlertGroupResourceProvider.java       |     2 +-
 .../internal/AlertHistoryResourceProvider.java     |     2 +-
 .../internal/AlertNoticeResourceProvider.java      |     2 +-
 .../controller/internal/AlertResourceProvider.java |     2 +-
 .../internal/AlertTargetResourceProvider.java      |     2 +-
 .../internal/AmbariPrivilegeResourceProvider.java  |    36 +-
 .../internal/AmbariServerConfigurationHandler.java |   102 +-
 .../internal/AmbariServerConfigurationUtils.java   |    78 +
 .../AmbariServerLDAPConfigurationHandler.java      |     9 +-
 .../internal/BlueprintResourceProvider.java        |    37 +-
 .../controller/internal/CalculatedStatus.java      |     7 +-
 .../internal/ClientConfigResourceProvider.java     |    33 +-
 .../ClusterKerberosDescriptorResourceProvider.java |     2 +-
 .../internal/ClusterPrivilegeResourceProvider.java |    31 +-
 .../internal/ClusterResourceProvider.java          |    23 +-
 .../ClusterStackVersionResourceProvider.java       |    16 +-
 .../internal/ConfigGroupResourceProvider.java      |    39 +-
 .../internal/ConfigurationResourceProvider.java    |     2 +-
 .../internal/CredentialResourceProvider.java       |     2 +-
 .../controller/internal/DefaultProviderModule.java |    17 +-
 .../internal/ExtensionLinkResourceProvider.java    |    33 +-
 .../internal/ExtensionResourceProvider.java        |    27 +-
 .../internal/ExtensionVersionResourceProvider.java |    32 +-
 .../controller/internal/FeedResourceProvider.java  |    41 +-
 .../internal/GroupPrivilegeResourceProvider.java   |    42 +-
 .../controller/internal/GroupResourceProvider.java |    32 +-
 .../HostComponentProcessResourceProvider.java      |    38 +-
 .../internal/HostComponentResourceProvider.java    |    84 +-
 .../HostKerberosIdentityResourceProvider.java      |    17 +-
 .../controller/internal/HostResourceProvider.java  |    53 +-
 .../internal/HostStackVersionResourceProvider.java |     2 +-
 .../internal/InstanceResourceProvider.java         |    35 +-
 .../controller/internal/JobResourceProvider.java   |    57 +-
 .../KerberosDescriptorResourceProvider.java        |    20 +-
 .../internal/LdapSyncEventResourceProvider.java    |    47 +-
 .../internal/LoggingResourceProvider.java          |     9 +-
 .../internal/MemberResourceProvider.java           |    29 +-
 .../internal/OperatingSystemResourceProvider.java  |     2 +-
 .../internal/OverriddenMetricsHostProvider.java    |   101 +
 .../internal/PermissionResourceProvider.java       |    25 +-
 .../internal/PrivilegeResourceProvider.java        |     2 +-
 .../QuickLinkArtifactResourceProvider.java         |     2 +-
 .../internal/ReadOnlyResourceProvider.java         |     7 -
 .../internal/RecommendationResourceProvider.java   |    65 +-
 .../internal/RemoteClusterResourceProvider.java    |    28 +-
 .../internal/RepositoryResourceProvider.java       |    14 +-
 .../internal/RequestResourceProvider.java          |    52 +-
 .../internal/RequestScheduleResourceProvider.java  |    55 +-
 .../RoleAuthorizationResourceProvider.java         |     2 +-
 .../RootServiceComponentConfigurationHandler.java  |     7 +-
 ...viceComponentConfigurationResourceProvider.java |    20 +-
 .../RootServiceComponentResourceProvider.java      |    31 +-
 .../RootServiceHostComponentResourceProvider.java  |    34 +-
 .../internal/RootServiceResourceProvider.java      |    26 +-
 .../controller/internal/ScaleClusterRequest.java   |    17 +-
 .../ServiceConfigVersionResourceProvider.java      |     2 +-
 .../internal/SettingResourceProvider.java          |     2 +-
 .../ambari/server/controller/internal/Stack.java   |    14 +
 .../internal/StackAdvisorResourceProvider.java     |     7 +-
 .../internal/StackArtifactResourceProvider.java    |     2 +-
 ...ackConfigurationDependencyResourceProvider.java |    40 +-
 .../StackConfigurationResourceProvider.java        |    42 +-
 .../internal/StackDefinedPropertyProvider.java     |     9 +-
 .../internal/StackDependencyResourceProvider.java  |    41 +-
 .../StackLevelConfigurationResourceProvider.java   |    40 +-
 .../controller/internal/StackResourceProvider.java |    28 +-
 .../StackServiceComponentResourceProvider.java     |    59 +-
 .../internal/StackServiceResourceProvider.java     |    45 +-
 .../internal/StackVersionResourceProvider.java     |     5 +-
 .../controller/internal/StageResourceProvider.java |     2 +-
 .../internal/TargetClusterResourceProvider.java    |    31 +-
 .../internal/TaskAttemptResourceProvider.java      |    53 +-
 .../controller/internal/TaskResourceProvider.java  |    27 +-
 .../internal/ThemeArtifactResourceProvider.java    |     2 +-
 .../internal/UpgradeGroupResourceProvider.java     |     2 +-
 .../internal/UpgradeItemResourceProvider.java      |     2 +-
 .../internal/UpgradeResourceProvider.java          |    29 +-
 .../internal/UpgradeSummaryResourceProvider.java   |     2 +-
 .../UserAuthenticationSourceResourceProvider.java  |   417 +
 .../UserAuthorizationResourceProvider.java         |     2 +-
 .../internal/UserPrivilegeResourceProvider.java    |    59 +-
 .../controller/internal/UserResourceProvider.java  |   501 +-
 .../internal/ValidationResourceProvider.java       |    86 +-
 .../VersionDefinitionResourceProvider.java         |     2 +-
 .../internal/ViewInstanceResourceProvider.java     |    55 +-
 .../internal/ViewPermissionResourceProvider.java   |    29 +-
 .../internal/ViewPrivilegeResourceProvider.java    |    36 +-
 .../controller/internal/ViewResourceProvider.java  |    19 +-
 .../internal/ViewURLResourceProvider.java          |    25 +-
 .../internal/ViewVersionResourceProvider.java      |    45 +-
 .../internal/WidgetLayoutResourceProvider.java     |     2 +-
 .../internal/WidgetResourceProvider.java           |     2 +-
 .../internal/WorkflowResourceProvider.java         |    54 +-
 .../server/controller/jmx/JMXMetricHolder.java     |    64 +
 .../controller/metrics/MetricHostProvider.java     |     9 +
 .../timeline/AMSComponentPropertyProvider.java     |     4 +-
 .../ambari/server/controller/spi/Resource.java     |     2 +
 .../controller/utilities/PropertyHelper.java       |     6 +-
 .../apache/ambari/server/events/AmbariEvent.java   |     7 +-
 .../ambari/server/events/JpaInitializedEvent.java  |    34 +
 .../upgrade/HostVersionOutOfSyncListener.java      |    24 +
 .../ldap/domain/AmbariLdapConfiguration.java       |   176 +-
 .../ldap/domain/AmbariLdapConfigurationKeys.java   |   121 +-
 .../service/AmbariLdapConfigurationProvider.java   |    29 +-
 .../metrics/system/impl/AmbariMetricSinkImpl.java  |     2 -
 .../server/orm/AmbariLocalSessionInterceptor.java  |     2 +-
 .../org/apache/ambari/server/orm/DBAccessor.java   |    29 +
 .../apache/ambari/server/orm/DBAccessorImpl.java   |     3 +
 .../ambari/server/orm/GuiceJpaInitializer.java     |     8 +-
 .../ambari/server/orm/dao/HostVersionDAO.java      |    15 +
 .../ambari/server/orm/dao/KerberosKeytabDAO.java   |   154 +-
 .../server/orm/dao/KerberosKeytabPrincipalDAO.java |   309 +
 .../server/orm/dao/KerberosPrincipalDAO.java       |     9 -
 .../server/orm/dao/KerberosPrincipalHostDAO.java   |   252 -
 .../server/orm/dao/UserAuthenticationDAO.java      |   116 +
 .../org/apache/ambari/server/orm/dao/UserDAO.java  |    95 +-
 .../orm/entities/AmbariConfigurationEntity.java    |     2 +-
 .../orm/entities/HostGroupComponentEntityPK.java   |     4 +-
 .../server/orm/entities/HostVersionEntity.java     |     5 +
 .../server/orm/entities/KerberosKeytabEntity.java  |   152 +-
 .../entities/KerberosKeytabPrincipalEntity.java    |   236 +
 .../KerberosKeytabServiceMappingEntity.java        |    88 +
 .../orm/entities/KerberosPrincipalEntity.java      |    25 -
 .../orm/entities/KerberosPrincipalHostEntity.java  |   213 -
 .../entities/KerberosPrincipalHostEntityPK.java    |   115 -
 .../orm/entities/RepositoryVersionEntity.java      |     5 +
 .../orm/entities/TopologyHostRequestEntity.java    |    27 +
 .../orm/entities/UserAuthenticationEntity.java     |   189 +
 .../ambari/server/orm/entities/UserEntity.java     |   253 +-
 .../authentication/AccountDisabledException.java   |    27 +
 .../AmbariAuthenticationEventHandler.java          |    64 +
 .../AmbariAuthenticationEventHandlerImpl.java      |   168 +
 .../AmbariAuthenticationException.java             |    56 +
 .../authentication/AmbariAuthenticationFilter.java |    10 +
 .../AmbariAuthenticationProvider.java              |   117 +
 .../AmbariBasicAuthenticationFilter.java           |    97 +-
 .../AmbariJWTAuthenticationFilter.java             |   140 -
 .../AmbariLocalAuthenticationProvider.java         |   113 +
 .../authentication/AmbariUserAuthentication.java   |    79 +
 .../AuthenticationMethodNotAllowedException.java   |    65 +
 ...nvalidUsernamePasswordCombinationException.java |    40 +
 .../TooManyLoginFailuresException.java             |    27 +
 .../authentication/UserNotFoundException.java      |    43 +
 .../jwt/AmbariJwtAuthenticationFilter.java         |   419 +
 .../jwt/AmbariJwtAuthenticationProvider.java       |   136 +
 .../jwt/JwtAuthenticationProperties.java           |    87 +
 .../authentication/jwt/JwtAuthenticationToken.java |    55 +
 .../AmbariAuthToLocalUserDetailsService.java       |   163 +-
 .../AmbariKerberosAuthenticationFilter.java        |    76 +-
 .../AmbariKerberosAuthenticationProperties.java    |    26 +-
 .../pam/AmbariPamAuthenticationProvider.java       |   302 +
 .../pam/PamAuthenticationFactory.java              |    21 +-
 .../authorization/AmbariAuthentication.java        |   229 -
 .../authorization/AmbariAuthorizationFilter.java   |     4 +-
 .../AmbariLdapAuthenticationProvider.java          |   183 +-
 .../AmbariLdapAuthoritiesPopulator.java            |     5 +-
 .../authorization/AmbariLdapBindAuthenticator.java |    13 +-
 .../authorization/AmbariLocalUserProvider.java     |   107 -
 .../AmbariPamAuthenticationProvider.java           |   252 -
 .../authorization/AmbariUserAuthentication.java    |    76 -
 .../AmbariUserAuthorizationFilter.java             |    12 +-
 .../authorization/AuthenticationMethod.java        |    37 +
 .../authorization/AuthorizationHelper.java         |     4 +-
 ...nvalidUsernamePasswordCombinationException.java |    34 -
 .../authorization/LdapServerProperties.java        |    99 +-
 .../authorization/PamAuthenticationException.java  |    36 -
 .../ambari/server/security/authorization/User.java |    61 +-
 .../authorization/UserAuthenticationType.java      |    26 +
 .../server/security/authorization/UserType.java    |    25 -
 .../server/security/authorization/Users.java       |  1259 +-
 .../AmbariInternalAuthenticationProvider.java      |     4 +-
 .../AuthenticationJwtUserNotFoundException.java    |    43 -
 .../authorization/jwt/JwtAuthentication.java       |    34 -
 .../authorization/jwt/JwtAuthenticationFilter.java |   423 -
 .../jwt/JwtAuthenticationProperties.java           |    87 -
 .../security/ldap/AmbariLdapDataPopulator.java     |    91 +-
 .../ambari/server/security/ldap/LdapBatchDto.java  |    32 +-
 .../AbstractPrepareKerberosServerAction.java       |    31 +-
 .../serveraction/kerberos/CleanupServerAction.java |     6 +-
 .../ConfigureAmbariIdentitiesServerAction.java     |   143 +-
 .../kerberos/CreateKeytabFilesServerAction.java    |   112 +-
 .../kerberos/CreatePrincipalsServerAction.java     |    47 +-
 .../kerberos/DestroyPrincipalsServerAction.java    |    62 +-
 .../kerberos/FinalizeKerberosServerAction.java     |    24 +-
 .../kerberos/KerberosOperationHandler.java         |    14 +-
 .../kerberos/KerberosServerAction.java             |   291 +-
 .../PrepareEnableKerberosServerAction.java         |    16 +-
 .../PrepareKerberosIdentitiesServerAction.java     |     9 -
 .../stageutils/KerberosKeytabController.java       |   213 +
 .../stageutils/ResolvedKerberosKeytab.java         |   117 +-
 .../stageutils/ResolvedKerberosPrincipal.java      |   169 +
 .../serveraction/upgrades/ConfigureAction.java     |    51 +-
 .../upgrades/PreconfigureKerberosAction.java       |    12 +-
 .../java/org/apache/ambari/server/state/Alert.java |     1 +
 .../org/apache/ambari/server/state/Cluster.java    |     9 +
 .../apache/ambari/server/state/ComponentInfo.java  |    15 +
 .../apache/ambari/server/state/ConfigHelper.java   |     5 +
 .../apache/ambari/server/state/UpgradeContext.java |    14 +
 .../ambari/server/state/alert/AlertDefinition.java |    13 +
 .../server/state/alert/AlertDefinitionFactory.java |    31 +-
 .../apache/ambari/server/state/alert/AlertUri.java |    41 +
 .../ambari/server/state/alert/MetricSource.java    |    66 +-
 .../ambari/server/state/alert/Reporting.java       |    38 +
 .../ambari/server/state/alert/ScriptSource.java    |     4 +
 .../ambari/server/state/alert/ServerSource.java    |    15 +
 .../ambari/server/state/cluster/ClusterImpl.java   |    51 +-
 .../ambari/server/state/cluster/ClustersImpl.java  |     8 +-
 .../ambari/server/state/quicklinks/Host.java       |    75 +
 .../ambari/server/state/quicklinks/Link.java       |    13 +
 .../state/repository/VersionDefinitionXml.java     |    59 +-
 .../state/services/AmbariServerAlertService.java   |     7 +-
 .../state/services/MetricsRetrievalService.java    |     8 +-
 .../server/state/stack/MetricDefinition.java       |     9 +-
 .../state/stack/upgrade/ClusterGrouping.java       |     9 +
 .../state/stack/upgrade/StageWrapperBuilder.java   |    10 +-
 .../ambari/server/state/stack/upgrade/Task.java    |     7 +
 .../ambari/server/topology/AmbariContext.java      |     7 +-
 .../server/topology/AsyncCallableService.java      |    16 +-
 .../ambari/server/topology/HostOfferResponse.java  |    23 +-
 .../apache/ambari/server/topology/HostRequest.java |    52 +-
 .../ambari/server/topology/LogicalRequest.java     |    44 +
 .../ambari/server/topology/PersistedState.java     |     5 +
 .../ambari/server/topology/PersistedStateImpl.java |    11 +
 .../ambari/server/topology/TopologyManager.java    |    59 +-
 .../server/topology/tasks/TopologyHostTask.java    |     4 +
 .../ambari/server/topology/tasks/TopologyTask.java |    20 +-
 .../upgrade/AbstractFinalUpgradeCatalog.java       |    58 +
 .../ambari/server/upgrade/FinalUpgradeCatalog.java |    28 +-
 .../ambari/server/upgrade/SchemaUpgradeHelper.java |     2 +
 .../server/upgrade/UpdateAlertScriptPaths.java     |    48 +
 .../ambari/server/upgrade/UpgradeCatalog252.java   |     7 +-
 .../ambari/server/upgrade/UpgradeCatalog260.java   |     3 +
 .../ambari/server/upgrade/UpgradeCatalog262.java   |    70 +
 .../ambari/server/upgrade/UpgradeCatalog300.java   |   486 +
 .../apache/ambari/server/utils/PasswordUtils.java  |   183 +
 ambari-server/src/main/python/ambari-server.py     |     6 +-
 .../python/ambari_server/dbConfiguration_linux.py  |    26 +-
 .../main/python/ambari_server/kerberos_setup.py    |     2 -
 .../src/main/resources/Ambari-DDL-Derby-CREATE.sql |    69 +-
 .../src/main/resources/Ambari-DDL-MySQL-CREATE.sql |    70 +-
 .../main/resources/Ambari-DDL-Oracle-CREATE.sql    |    70 +-
 .../main/resources/Ambari-DDL-Postgres-CREATE.sql  |    69 +-
 .../resources/Ambari-DDL-SQLAnywhere-CREATE.sql    |    69 +-
 .../main/resources/Ambari-DDL-SQLServer-CREATE.sql |    71 +-
 .../src/main/resources/META-INF/persistence.xml    |     4 +-
 .../HBASE/0.96.0.2.0/package/scripts/hbase.py      |    26 +-
 .../HBASE/2.0.0.3.0/package/scripts/hbase.py       |    39 +-
 .../2.0.0.3.0/package/scripts/status_params.py     |     2 +-
 .../common-services/HDFS/2.1.0.2.0/metainfo.xml    |     1 +
 .../common-services/HDFS/3.0.0.3.0/metainfo.xml    |     1 +
 .../3.0.0.3.0/package/scripts/status_params.py     |     2 +-
 .../HIVE/0.12.0.2.0/configuration/hive-env.xml     |     1 +
 .../HIVE/0.12.0.2.0/package/scripts/hive.py        |    10 +-
 .../0.12.0.2.0/package/scripts/params_linux.py     |     2 +
 .../HIVE/2.1.0.3.0/configuration/hive-env.xml      |     1 +
 .../HIVE/2.1.0.3.0/package/scripts/hive.py         |    10 +-
 .../HIVE/2.1.0.3.0/package/scripts/params_linux.py |     1 +
 .../package/scripts/setup_ranger_kafka.py          |    14 +-
 .../KAFKA/0.10.0/configuration/kafka-broker.xml    |     2 +-
 .../KAFKA/0.8.1/package/scripts/params.py          |     6 +-
 .../0.8.1/package/scripts/setup_ranger_kafka.py    |    15 +-
 .../1.10.3-10/configuration/kerberos-env.xml       |     4 +-
 .../KERBEROS/1.10.3-10/configuration/krb5-conf.xml |    11 +
 .../1.10.3-10/package/scripts/kerberos_client.py   |    57 +-
 .../1.10.3-10/package/scripts/kerberos_common.py   |   493 -
 .../KERBEROS/1.10.3-10/package/scripts/params.py   |     6 +-
 .../1.10.3-10/package/scripts/service_check.py     |    32 +-
 .../KERBEROS/1.10.3-10/package/scripts/utils.py    |   105 -
 .../KERBEROS/1.10.3-10/properties/krb5_conf.j2     |     3 +
 .../1.10.3-30/configuration/kerberos-env.xml       |     4 +-
 .../KERBEROS/1.10.3-30/configuration/krb5-conf.xml |    11 +
 .../1.10.3-30/package/scripts/kerberos_client.py   |    57 +-
 .../1.10.3-30/package/scripts/kerberos_common.py   |   493 -
 .../KERBEROS/1.10.3-30/package/scripts/params.py   |     7 +-
 .../1.10.3-30/package/scripts/service_check.py     |    32 +-
 .../KERBEROS/1.10.3-30/package/scripts/utils.py    |   105 -
 .../KERBEROS/1.10.3-30/properties/krb5_conf.j2     |     3 +
 .../0.5.0.2.2/package/scripts/setup_ranger_knox.py |    16 +-
 .../0.5.0.3.0/package/scripts/setup_ranger_knox.py |    16 +-
 .../0.5.0/configuration/logfeeder-env.xml          |     2 +-
 .../0.5.0/configuration/logfeeder-properties.xml   |     2 +-
 .../0.5.0/configuration/logsearch-env.xml          |     6 +-
 .../LOGSEARCH/0.5.0/package/scripts/logfeeder.py   |     7 +-
 .../LOGSEARCH/0.5.0/package/scripts/logsearch.py   |     8 +-
 .../0.5.0/package/scripts/logsearch_common.py      |    54 -
 .../LOGSEARCH/0.5.0/package/scripts/params.py      |     8 +-
 .../0.5.0/package/scripts/setup_logfeeder.py       |     2 +-
 .../0.5.0/package/scripts/setup_logsearch.py       |     2 +-
 .../LOGSEARCH/0.5.0/properties/logfeeder-env.sh.j2 |     5 +-
 .../LOGSEARCH/0.5.0/properties/logsearch-env.sh.j2 |     5 +-
 .../MAHOUT/1.0.0.2.3/package/scripts/mahout.py     |    12 +-
 .../OOZIE/4.0.0.2.0/configuration/oozie-env.xml    |     1 +
 .../package/scripts/oozie_server_upgrade.py        |    24 +-
 .../OOZIE/4.2.0.3.0/configuration/oozie-env.xml    |     1 +
 .../package/scripts/oozie_server_upgrade.py        |    50 +-
 .../PIG/0.12.0.2.0/package/scripts/pig.py          |    16 +-
 .../PIG/0.16.1.3.0/package/scripts/pig.py          |    16 +-
 .../RANGER/0.4.0/package/scripts/params.py         |     4 +-
 .../RANGER/0.4.0/package/scripts/ranger_admin.py   |    10 +-
 .../0.4.0/package/scripts/setup_ranger_xml.py      |    19 +-
 .../RANGER_KMS/0.5.0.2.3/package/scripts/kms.py    |    13 +-
 .../0.5.0.2.3/package/scripts/kms_server.py        |     6 +-
 .../common-services/SPARK/1.2.1/alerts.json        |     2 +-
 .../SPARK/1.2.1/package/scripts/livy_service.py    |    24 +-
 .../SPARK/1.2.1/package/scripts/params.py          |     2 +
 .../SPARK/1.2.1/package/scripts/setup_spark.py     |    20 +-
 .../SPARK/2.2.0/package/scripts/livy_service.py    |    24 +-
 .../SPARK/2.2.0/package/scripts/params.py          |     2 +
 .../SPARK/2.2.0/package/scripts/setup_spark.py     |    25 +-
 .../common-services/SPARK2/2.0.0/alerts.json       |     2 +-
 .../SPARK2/2.0.0/package/scripts/livy2_service.py  |    24 +-
 .../SPARK2/2.0.0/package/scripts/params.py         |     2 +
 .../SPARK2/2.0.0/package/scripts/setup_livy2.py    |     2 +
 .../SPARK2/2.0.0/package/scripts/setup_spark.py    |    22 +-
 .../0.9.1/package/scripts/setup_ranger_storm.py    |    15 +-
 .../STORM/1.0.1.3.0/configuration/storm-site.xml   |     2 +-
 .../package/scripts/setup_ranger_storm.py          |    15 +-
 .../STORM/1.0.1.3.0/service_advisor.py             |     1 +
 .../STORM/1.0.1/configuration/storm-site.xml       |     2 +-
 .../common-services/SUPERSET/0.15.0/metainfo.xml   |     2 +-
 .../2.1.0.2.0/configuration-mapred/mapred-site.xml |     2 +-
 .../YARN/2.1.0.2.0/package/scripts/params_linux.py |    46 +-
 .../YARN/2.1.0.2.0/package/scripts/yarn.py         |     4 +-
 .../3.0.0.3.0/configuration-mapred/mapred-site.xml |     2 +-
 .../common-services/YARN/3.0.0.3.0/kerberos.json   |     4 +-
 .../YARN/3.0.0.3.0/package/scripts/params_linux.py |    47 +-
 .../YARN/3.0.0.3.0/package/scripts/yarn.py         |     4 +-
 .../package/scripts/interpreter_json_template.py   |   154 +-
 .../0.7.0/package/scripts/livy2_config_template.py |   112 -
 .../ZEPPELIN/0.7.0/package/scripts/master.py       |   109 +-
 .../package/scripts/spark2_config_template.py      |    84 -
 .../custom_actions/scripts/install_packages.py     |    59 +-
 .../stack-hooks/after-INSTALL/scripts/params.py    |     2 +-
 .../HDP/2.0.6/properties/stack_features.json       |     6 +
 .../HDP/2.0.6/properties/stack_packages.json       |   143 +-
 .../2.2/services/TEZ/configuration/tez-site.xml    |     4 +-
 .../YARN/configuration-mapred/mapred-site.xml      |     2 +-
 .../2.3/services/HIVE/configuration/hive-env.xml   |     1 +
 .../2.3/services/OOZIE/configuration/oozie-env.xml |     1 +
 .../stacks/HDP/2.3/services/stack_advisor.py       |     9 +-
 .../2.5/services/YARN/configuration/yarn-site.xml  |     4 +-
 .../stacks/HDP/2.5/services/stack_advisor.py       |     1 +
 .../2.6/services/TEZ/configuration/tez-site.xml    |     8 +
 .../stacks/HDP/2.6/upgrades/config-upgrade.xml     |     8 +-
 .../HDP/2.6/upgrades/nonrolling-upgrade-2.6.xml    |     2 +-
 .../stacks/HDP/2.6/upgrades/upgrade-2.6.xml        |     2 +-
 .../stacks/HDP/3.0/properties/stack_features.json  |     6 +
 .../stacks/HDP/3.0/properties/stack_packages.json  |    20 +-
 .../3.0/services/YARN/configuration/yarn-site.xml  |     4 +-
 .../KERBEROS/configuration/kerberos-env.xml        |     4 +-
 .../services/KERBEROS/configuration/krb5-conf.xml  |    11 +
 .../services/KERBEROS/package/scripts/params.py    |     2 +
 .../1.0/services/KERBEROS/properties/krb5_conf.j2  |     3 +
 ambari-server/src/main/resources/upgrade-pack.xsd  |     1 +
 .../resources/webapp/WEB-INF/spring-security.xml   |    13 +-
 ambari-server/src/main/windows/ambari-server.ps1   |     2 -
 .../actionmanager/ExecutionCommandWrapperTest.java |     5 +
 .../ambari/server/agent/TestHeartbeatHandler.java  |    79 +-
 .../apache/ambari/server/alerts/ThresholdTest.java |    90 +
 .../api/query/render/MinimalRendererTest.java      |     6 +
 .../api/resources/UserResourceDefinitionTest.java  |    13 +-
 .../server/api/services/AmbariMetaInfoTest.java    |    91 +-
 .../ambari/server/audit/LoginAuditEventTest.java   |    36 +-
 .../RequiredServicesInRepositoryCheckTest.java     |     6 +-
 .../server/configuration/ConfigurationTest.java    |   225 +-
 .../AmbariCustomCommandExecutionHelperTest.java    |    46 +
 .../AmbariManagementControllerImplTest.java        |    46 +-
 .../controller/AmbariManagementControllerTest.java |    73 -
 .../server/controller/KerberosHelperTest.java      |    47 +-
 .../controller/RootServiceResponseFactoryTest.java |   145 +-
 .../AbstractControllerResourceProviderTest.java    |    10 +-
 .../internal/AbstractDRResourceProviderTest.java   |     2 -
 .../AbstractPrivilegeResourceProviderTest.java     |    38 -
 .../internal/AbstractResourceProviderTest.java     |    26 +-
 .../internal/ActionResourceProviderTest.java       |     4 -
 .../ActiveWidgetLayoutResourceProviderTest.java    |     6 +-
 .../AlertDefinitionResourceProviderTest.java       |     4 +-
 .../internal/BlueprintResourceProviderTest.java    |    21 +-
 .../internal/ClientConfigResourceProviderTest.java |    10 -
 .../internal/ClusterControllerImplTest.java        |    14 +-
 ...sterKerberosDescriptorResourceProviderTest.java |    17 -
 .../internal/ClusterResourceProviderTest.java      |    14 -
 .../ClusterStackVersionResourceProviderTest.java   |    12 +-
 .../internal/ConfigGroupResourceProviderTest.java  |     2 -
 .../ConfigurationResourceProviderTest.java         |     6 -
 .../internal/CredentialResourceProviderTest.java   |    23 -
 .../internal/ExtensionResourceProviderTest.java    |     2 -
 .../internal/FeedResourceProviderTest.java         |    29 +-
 .../GroupPrivilegeResourceProviderTest.java        |    46 +-
 .../internal/GroupResourceProviderTest.java        |     8 -
 .../HostComponentProcessResourceProviderTest.java  |     2 -
 .../HostComponentResourceProviderTest.java         |    49 +-
 .../HostKerberosIdentityResourceProviderTest.java  |    15 +-
 .../internal/HostResourceProviderTest.java         |    53 +-
 .../HostStackVersionResourceProviderTest.java      |    14 +-
 .../internal/InstanceResourceProviderTest.java     |    29 +-
 .../controller/internal/JMXHostProviderTest.java   |     5 +-
 .../internal/JobResourceProviderTest.java          |    37 +-
 .../KerberosDescriptorResourceProviderTest.java    |     6 +-
 .../internal/MemberResourceProviderTest.java       |    25 +-
 .../OverriddenMetricsHostProviderTest.java         |    95 +
 .../internal/RepositoryResourceProviderTest.java   |     2 +
 .../RepositoryVersionResourceProviderTest.java     |     5 +-
 .../controller/internal/RequestImplTest.java       |     7 -
 .../internal/RequestResourceProviderTest.java      |   265 +-
 .../RequestScheduleResourceProviderTest.java       |     2 -
 ...ComponentConfigurationResourceProviderTest.java |   192 +-
 .../RootServiceComponentResourceProviderTest.java  |     2 -
 ...otServiceHostComponentResourceProviderTest.java |     2 -
 .../internal/RootServiceResourceProviderTest.java  |     2 -
 .../internal/ScaleClusterRequestTest.java          |    38 +-
 .../internal/StackAdvisorResourceProviderTest.java |    12 +-
 .../StackArtifactResourceProviderTest.java         |     2 -
 ...onfigurationDependencyResourceProviderTest.java |     2 -
 .../StackConfigurationResourceProviderTest.java    |     4 -
 .../StackDependencyResourceProviderTest.java       |     5 +-
 ...tackLevelConfigurationResourceProviderTest.java |     4 -
 .../internal/StackResourceProviderTest.java        |     2 -
 .../internal/StackServiceResourceProviderTest.java |     4 -
 .../TargetClusterResourceProviderTest.java         |    28 +-
 .../internal/TaskAttemptResourceProviderTest.java  |     2 +-
 .../internal/TaskResourceProviderTest.java         |    22 +-
 .../internal/TestIvoryProviderModule.java          |     6 +-
 .../internal/UpgradeResourceProviderTest.java      |     4 +-
 ...erAuthenticationSourceResourceProviderTest.java |   448 +
 .../UserPrivilegeResourceProviderTest.java         |   109 +-
 .../internal/UserResourceProviderDBTest.java       |   438 +-
 .../internal/UserResourceProviderTest.java         |   749 +-
 .../internal/ValidationResourceProviderTest.java   |     3 +-
 .../VersionDefinitionResourceProviderTest.java     |     2 +-
 .../internal/WorkflowResourceProviderTest.java     |    30 +-
 .../server/controller/jmx/JMXMetricHolderTest.java |    75 +
 .../server/ldap/AmbariLdapConfigurationTest.java   |   143 +
 .../ambari/server/orm/DBAccessorImplTest.java      |    30 +
 .../apache/ambari/server/orm/OrmTestHelper.java    |    10 +-
 .../ambari/server/orm/dao/HostVersionDAOTest.java  |    12 +
 .../apache/ambari/server/orm/dao/UserDAOTest.java  |    53 +-
 .../org/apache/ambari/server/orm/db/DDLTests.java  |     2 +-
 .../server/security/SecurityHelperImplTest.java    |     7 +-
 .../server/security/TestAuthenticationFactory.java |    26 +-
 .../AbstractAuthenticationProviderTest.java        |   217 +
 .../AmbariBasicAuthenticationFilterTest.java       |   136 +-
 .../AmbariJWTAuthenticationFilterTest.java         |   191 -
 .../AmbariLocalAuthenticationProviderTest.java     |    90 +
 .../jwt/AmbariJwtAuthenticationFilterTest.java     |   493 +
 .../jwt/JwtAuthenticationPropertiesTest.java       |    51 +
 .../AmbariAuthToLocalUserDetailsServiceTest.java   |    33 +-
 .../AmbariKerberosAuthenticationFilterTest.java    |   183 +-
 ...AmbariKerberosAuthenticationPropertiesTest.java |    16 -
 .../pam/AmbariPamAuthenticationProviderTest.java   |   285 +
 .../authorization/AmbariAuthenticationTest.java    |   334 -
 .../AmbariAuthorizationFilterTest.java             |     5 +-
 ...AmbariAuthorizationProviderDisableUserTest.java |    99 -
 ...apAuthenticationProviderForDNWithSpaceTest.java |    34 +-
 ...AuthenticationProviderForDuplicateUserTest.java |    21 +-
 .../AmbariLdapAuthenticationProviderTest.java      |    54 +-
 .../AmbariLdapBindAuthenticatorTest.java           |    91 +-
 .../authorization/AmbariLocalUserProviderTest.java |   166 -
 .../AmbariPamAuthenticationProviderTest.java       |   151 -
 .../AmbariUserAuthenticationFilterTest.java        |    20 +-
 .../authorization/AuthorizationHelperTest.java     |    24 +-
 .../authorization/AuthorizationTestModule.java     |     3 +-
 .../AuthorizationTestModuleForLdapDNWithSpace.java |     5 +-
 .../authorization/LdapServerPropertiesTest.java    |    20 +-
 .../TestAmbariLdapAuthoritiesPopulator.java        |     4 +-
 .../server/security/authorization/TestUsers.java   |   320 +-
 .../server/security/authorization/UsersTest.java   |    17 +-
 .../jwt/JwtAuthenticationFilterTest.java           |   373 -
 .../jwt/JwtAuthenticationPropertiesTest.java       |    51 -
 .../security/ldap/AmbariLdapDataPopulatorTest.java |   331 +-
 .../server/security/ldap/LdapPerformanceTest.java  |    28 +-
 .../kerberos/ADKerberosOperationHandlerTest.java   |    15 +-
 .../ConfigureAmbariIdentitiesServerActionTest.java |    36 +-
 .../kerberos/FinalizeKerberosServerActionTest.java |     5 +-
 .../kerberos/IPAKerberosOperationHandlerTest.java  |    19 +-
 .../kerberos/KerberosOperationHandlerTest.java     |    16 +
 .../kerberos/KerberosServerActionTest.java         |    26 +-
 .../kerberos/MITKerberosOperationHandlerTest.java  |    19 +-
 .../upgrades/PreconfigureKerberosActionTest.java   |    16 +-
 .../stack/QuickLinksConfigurationModuleTest.java   |     3 +
 .../ambari/server/state/UpgradeHelperTest.java     |    14 +-
 .../ambari/server/state/alert/AlertUriTest.java    |    60 +
 .../ambari/server/state/alert/JmxInfoTest.java     |    85 +
 .../ambari/server/state/cluster/ClusterTest.java   |     4 +
 .../state/repository/VersionDefinitionTest.java    |    55 +
 .../state/stack/ConfigUpgradeValidityTest.java     |    41 +-
 .../ambari/server/topology/AmbariContextTest.java  |     5 +-
 .../server/topology/AsyncCallableServiceTest.java  |    29 +-
 .../ambari/server/topology/BlueprintImplTest.java  |    26 +-
 .../server/topology/ConfigureClusterTaskTest.java  |     2 +-
 .../server/topology/TopologyManagerTest.java       |     7 +
 .../server/upgrade/UpgradeCatalog260Test.java      |     1 +
 .../server/upgrade/UpgradeCatalog300Test.java      |   362 +-
 .../ambari/server/utils/PasswordUtilsTest.java     |   126 +
 ambari-server/src/test/python/TestAmbariServer.py  |     4 +-
 .../python/stacks/2.0.6/OOZIE/test_oozie_server.py |    24 +-
 .../hooks/after-INSTALL/test_after_install.py      |     8 +-
 .../stacks/2.2/KERBEROS/test_kerberos_client.py    |     2 +-
 .../python/stacks/2.3/common/test_stack_advisor.py |    17 +
 .../python/stacks/2.4/LOGSEARCH/test_logfeeder.py  |    34 +-
 .../python/stacks/2.4/LOGSEARCH/test_logsearch.py  |    31 +-
 .../test/python/stacks/2.4/configs/default.json    |     2 +-
 .../python/stacks/2.5/SPARK/test_spark_livy.py     |     3 +-
 .../python/stacks/2.5/common/test_stack_advisor.py |     1 +
 .../2.6/KAFKA/test_kafka_broker_other_sasl.py      |    16 +
 .../python/stacks/2.6/RANGER/test_ranger_admin.py  |    10 +-
 .../python/stacks/2.6/SPARK2/test_spark_livy2.py   |     5 +-
 .../2.6/ZEPPELIN/interpreter_json_generated.py     |     8 +-
 .../stacks/2.6/ZEPPELIN/test_zeppelin_070.py       |    47 +
 .../test/python/stacks/2.6/configs/default.json    |     2 +
 .../stacks/2.6/configs/secure_kafka_sasl_ssl.json  |   632 +
 ambari-server/src/test/resources/ambari.properties |     4 +-
 .../resources/child_quicklinks_to_override.json    |     4 +
 .../HDP/2.2.0/upgrades/upgrade_test_conditions.xml |    22 +-
 ambari-web/app/assets/img/install-box.svg          |    28 +
 ambari-web/app/assets/test/tests.js                |     3 +-
 ambari-web/app/controllers/installer.js            |    44 +-
 .../hawq/addStandby/step3_controller.js            |     3 +-
 .../main/admin/kerberos/step1_controller.js        |   105 +-
 .../main/admin/kerberos/step2_controller.js        |     4 +-
 .../main/admin/kerberos/wizard_controller.js       |    18 +-
 .../main/admin/stack_and_upgrade_controller.js     |     3 +-
 .../main/host/bulk_operations_controller.js        |   369 +-
 ambari-web/app/controllers/main/host/details.js    |    46 +-
 .../app/controllers/main/service/info/configs.js   |    41 +-
 .../app/controllers/main/service/info/metric.js    |    13 +
 ambari-web/app/controllers/main/service/item.js    |    33 +-
 .../app/controllers/wizard/step3_controller.js     |     2 +-
 .../app/controllers/wizard/step4_controller.js     |   128 +-
 .../app/controllers/wizard/step6_controller.js     |    12 -
 .../app/controllers/wizard/step8_controller.js     |    10 +-
 ambari-web/app/data/db_properties_info.js          |    15 +-
 ambari-web/app/mappers/stack_service_mapper.js     |     4 +
 ambari-web/app/messages.js                         |    74 +-
 .../mixins/common/configs/configs_comparator.js    |     5 +-
 .../app/mixins/common/configs/configs_loader.js    |     8 +-
 .../app/mixins/common/widgets/widget_mixin.js      |     1 +
 .../configs/component_actions_by_configs.js        |     4 +-
 ambari-web/app/models/configs/config_group.js      |     8 +
 ambari-web/app/models/host_component.js            |     6 +
 ambari-web/app/models/repository.js                |     3 +-
 ambari-web/app/models/stack_service.js             |   103 +
 ambari-web/app/models/stack_service_component.js   |    33 +
 ambari-web/app/styles/application.less             |   321 +-
 ambari-web/app/styles/bootstrap_overrides.less     |     6 +-
 ambari-web/app/styles/common.less                  |     2 +
 ambari-web/app/styles/config_history_flow.less     |   414 -
 ambari-web/app/styles/config_versions_control.less |   148 +
 .../app/styles/enhanced_service_dashboard.less     |    31 +-
 ambari-web/app/styles/hosts.less                   |     5 +
 ambari-web/app/styles/modal_popups.less            |    27 +-
 ambari-web/app/styles/service_configurations.less  |   297 +
 ambari-web/app/styles/theme/bootstrap-ambari.css   |     7 +-
 ambari-web/app/styles/widgets.less                 |    14 +-
 ambari-web/app/styles/wizard.less                  |    54 +-
 ambari-web/app/templates.js                        |     2 +
 ambari-web/app/templates/application.hbs           |   135 +-
 .../templates/common/assign_master_components.hbs  |    24 +-
 .../templates/common/configs/compare_property.hbs  |    38 -
 .../common/configs/config_history_dropdown_row.hbs |    24 -
 .../common/configs/config_history_flow.hbs         |   148 -
 .../common/configs/config_versions_control.hbs     |    42 +
 .../common/configs/config_versions_dropdown.hbs    |    69 +
 .../common/configs/configs_comparison_cell.hbs     |    26 +
 .../common/configs/configs_comparison_row.hbs      |    79 +
 .../app/templates/common/configs/controls.hbs      |    12 +-
 .../templates/common/configs/service_config.hbs    |   125 +-
 .../common/configs/service_config_category.hbs     |   120 +-
 .../configs/service_config_layout_tab_compare.hbs  |    80 +
 .../common/configs/service_config_wizard.hbs       |     8 +-
 .../comparison/config_widget_comparison.hbs        |    37 -
 .../templates/common/configs/widgets/controls.hbs  |    15 -
 .../templates/common/filter_combo_cleanable.hbs    |     7 +-
 .../app/templates/common/host_progress_popup.hbs   |   115 +-
 .../common/modal_popups/widget_browser_footer.hbs  |     1 -
 .../app/templates/common/widget/gauge_widget.hbs   |     2 +-
 .../app/templates/common/widget/graph_widget.hbs   |     2 +-
 .../app/templates/common/widget/number_widget.hbs  |     2 +-
 .../templates/common/widget/template_widget.hbs    |     2 +-
 .../app/templates/main/admin/kerberos/step1.hbs    |    14 +-
 .../main/alerts/alert_notifications_popup.hbs      |    30 +-
 .../app/templates/main/dashboard/widgets.hbs       |     2 +-
 .../main/host/bulk_add_delete_confirm_popup.hbs    |    40 +
 .../app/templates/main/host/configs_service.hbs    |     2 +-
 .../main/host/delete_hosts_dry_run_popup.hbs       |    32 -
 .../app/templates/main/host/delete_hosts_popup.hbs |    21 +-
 .../main/host/delete_hosts_result_popup.hbs        |     4 +-
 .../app/templates/main/service/info/configs.hbs    |     2 +-
 .../app/templates/main/service/menu_item.hbs       |     8 +-
 ambari-web/app/templates/wizard/step3.hbs          |    12 +-
 ambari-web/app/templates/wizard/step4.hbs          |    58 +-
 ambari-web/app/templates/wizard/step6.hbs          |    30 +-
 .../templates/wizard/step6/step6_issues_popup.hbs  |    43 -
 ambari-web/app/utils/ajax/ajax.js                  |    36 +-
 ambari-web/app/views.js                            |     6 +-
 .../views/common/assign_master_components_view.js  |     4 +-
 ambari-web/app/views/common/breadcrumbs_view.js    |     4 +-
 .../views/common/configs/compare_property_view.js  |    25 -
 .../views/common/configs/config_history_flow.js    |   644 -
 .../common/configs/config_versions_control_view.js |   224 +
 .../configs/config_versions_dropdown_view.js       |    63 +
 .../common/configs/overriddenPropertyRow_view.js   |    31 -
 .../service_config_layout_tab_compare_view.js      |    41 +
 .../views/common/configs/service_config_view.js    |    69 +
 .../configs/service_configs_by_category_view.js    |    17 +-
 .../configs/widgets/combo_config_widget_view.js    |     8 +
 .../comparison/config_widget_comparison_view.js    |    23 -
 ambari-web/app/views/common/controls_view.js       |     7 +-
 .../app/views/common/filter_combo_cleanable.js     |     6 +-
 .../common/form/manage_credentials_form_view.js    |     3 +-
 .../views/common/host_progress_popup_body_view.js  |    12 +
 .../common/modal_popups/confirmation_popup.js      |    11 +-
 .../app/views/common/quick_view_link_view.js       |    64 +-
 .../stack_upgrade/upgrade_version_column_view.js   |    11 +-
 ambari-web/app/views/main/host/details.js          |     4 +
 ambari-web/app/views/main/menu.js                  |     4 +
 ambari-web/app/views/main/service/item.js          |     4 +
 .../main/service/widgets/create/wizard_view.js     |     2 +-
 .../nameNode/step3_controller_test.js              |    23 +-
 .../kerberos/kerberos_wizard_controler_test.js     |     8 +-
 .../main/admin/kerberos/step2_controller_test.js   |     2 +-
 .../test/controllers/main/host/details_test.js     |    23 +-
 ambari-web/test/controllers/wizard/step4_test.js   |    45 +-
 ambari-web/test/controllers/wizard/step8_test.js   |    41 +-
 .../common/configs/configs_comparator_test.js      |     5 -
 ambari-web/test/utils/date/timezone_test.js        |     2 +-
 .../test/views/common/breadcrumbs_view_test.js     |     5 +
 .../test/views/common/chart/linear_time_test.js    |    10 +-
 .../common/configs/config_history_flow_test.js     |   756 -
 .../configs/config_versions_control_view_test.js   |   151 +
 .../configs/config_versions_dropdown_view_test.js  |    82 +
 .../common/configs/overriddenProperty_view_test.js |    42 -
 .../common/configs/service_config_view_test.js     |    52 +-
 .../service_configs_by_category_view_test.js       |    18 +-
 ambari-web/test/views/common/controls_view_test.js |    64 +-
 .../common/host_progress_popup_body_view_test.js   |    99 +-
 .../test/views/common/quick_link_view_test.js      |    15 +-
 .../management-packs/isilon-onefs-mpack/.gitignore |     1 +
 .../management-packs/isilon-onefs-mpack/pom.xml    |   133 +
 .../src/main/assemblies/isilon-onefs-mpack.xml     |    40 +
 .../addon-services/ONEFS/1.0.0/alerts.json         |   122 +
 .../ONEFS/1.0.0/configuration/core-site.xml        |   100 +
 .../ONEFS/1.0.0/configuration/hadoop-env.xml       |   404 +
 .../ONEFS/1.0.0/configuration/hdfs-site.xml        |    65 +
 .../ONEFS/1.0.0/configuration/onefs.xml            |    30 +
 .../addon-services/ONEFS/1.0.0/kerberos.json       |    73 +
 .../addon-services/ONEFS/1.0.0/metainfo.xml        |   111 +
 .../addon-services/ONEFS/1.0.0/metrics.json        |   230 +
 .../ONEFS/1.0.0/package/scripts/__init__.py        |    20 +
 .../ONEFS/1.0.0/package/scripts/onefs_client.py    |    63 +
 .../ONEFS/1.0.0/package/scripts/params.py          |    29 +
 .../ONEFS/1.0.0/package/scripts/params_linux.py    |    70 +
 .../ONEFS/1.0.0/package/scripts/params_windows.py  |    83 +
 .../ONEFS/1.0.0/package/scripts/service_check.py   |    59 +
 .../ONEFS/1.0.0}/package/scripts/status_params.py  |     0
 .../ONEFS/1.0.0/quicklinks/quicklinks.json         |    31 +
 .../addon-services/ONEFS/1.0.0/service_advisor.py  |   122 +
 .../addon-services/ONEFS/1.0.0/themes/theme.json   |    60 +
 .../addon-services/ONEFS/1.0.0/widgets.json        |   141 +
 .../src/main/resources/mpack.json                  |    28 +
 .../src/test/python/TestServiceAdvisor.py          |    67 +
 .../src/test/python/unitTests.py                   |   132 +
 .../ODPi/2.0/services/YARN/package/scripts/yarn.py |     4 +-
 .../view/commons/hdfs/FileOperationService.java    |     4 +-
 .../resources/ui/app/services/file-operation.js    |     2 +-
 dev-support/build-ambari.sh                        |    58 +
 docs/pom.xml                                       |     2 +-
 docs/src/site/apt/index.apt                        |     2 +-
 docs/src/site/apt/whats-new.apt                    |    14 +-
 docs/src/site/site.xml                             |    16 +-
 pom.xml                                            |     1 +
 1167 files changed, 63757 insertions(+), 38510 deletions(-)

diff --cc ambari-logsearch/ambari-logsearch-web/src/app/services/logs-container.service.ts
index 26bad11,baa3972..403cbac
--- 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
@@@ -46,8 -46,8 +46,9 @@@ import 
    FilterCondition, TimeUnitListItem, SortingListItem, SearchBoxParameter, SearchBoxParameterTriggered
  } from '@app/classes/filtering';
  import {ListItem} from '@app/classes/list-item';
+ import {HomogeneousObject} from '@app/classes/object';
  import {LogsType, ScrollType, SortingType} from '@app/classes/string';
 +
  import {Tab} from '@app/classes/models/tab';
  import {LogField} from '@app/classes/models/log-field';
  import {AuditLog} from '@app/classes/models/audit-log';
diff --cc ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
index daff89f,2b82fe3..2aabdc0
--- a/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/agent/HeartBeatHandler.java
@@@ -26,8 -26,8 +26,9 @@@ import java.io.File
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.util.ArrayList;
+ import java.util.Collection;
  import java.util.HashMap;
 +import java.util.LinkedList;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
@@@ -106,14 -107,10 +109,11 @@@ public class HeartBeatHandler 
    @Inject
    private RecoveryConfigHelper recoveryConfigHelper;
  
-   /**
-    * KerberosIdentityDataFileReaderFactory used to create KerberosIdentityDataFileReader instances
-    */
    @Inject
-   private KerberosIdentityDataFileReaderFactory kerberosIdentityDataFileReaderFactory;
+   private KerberosKeytabController kerberosKeytabController;
  
    private Map<String, Long> hostResponseIds = new ConcurrentHashMap<>();
 +  private Set<String> refreshCacheForHosts = new ConcurrentHashSet<>();
  
    private Map<String, HeartBeatResponse> hostResponses = new ConcurrentHashMap<>();
  
diff --cc ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index 007ec32,af0b700..f5abc6c
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@@ -34,9 -34,9 +34,10 @@@ import java.util.HashSet
  import java.util.Iterator;
  import java.util.List;
  import java.util.Map;
+ import java.util.Objects;
  import java.util.Scanner;
  import java.util.Set;
 +import java.util.stream.Collectors;
  
  import javax.xml.bind.JAXBException;
  
@@@ -155,9 -142,8 +159,9 @@@ public class AmbariMetaInfo 
    private File serverVersionFile;
    private File commonWidgetsDescriptorFile;
    private File customActionRoot;
 +  private File mpacksV2Staging;
    private String commonKerberosDescriptorFileLocation;
-   private Map<String, VersionDefinitionXml> versionDefinitions = null;
+   Map<String, VersionDefinitionXml> versionDefinitions = null;
  
  
    @Inject
diff --cc ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
index eedd415,b14ffa7..fec7025
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseService.java
@@@ -49,47 -49,47 +49,46 @@@ import org.slf4j.LoggerFactory
  public abstract class BaseService {
    public final static MediaType MEDIA_TYPE_TEXT_CSV_TYPE = new MediaType("text", "csv");
  
 -  public static final String MSG_SUCCESSFUL_OPERATION = "Successful operation";
 -  public static final String MSG_REQUEST_ACCEPTED = "Request is accepted, but not completely processed yet";
 -  public static final String MSG_INVALID_ARGUMENTS = "Invalid arguments";
 -  public static final String MSG_INVALID_REQUEST = "Invalid request";
 -  public static final String MSG_CLUSTER_NOT_FOUND = "Cluster not found";
 -  public static final String MSG_CLUSTER_OR_HOST_NOT_FOUND = "Cluster or host not found";
 -  public static final String MSG_NOT_AUTHENTICATED = "Not authenticated";
 -  public static final String MSG_PERMISSION_DENIED = "Not permitted to perform the operation";
 -  public static final String MSG_SERVER_ERROR = "Internal server error";
 -  public static final String MSG_RESOURCE_ALREADY_EXISTS = "The requested resource already exists.";
 -  public static final String MSG_RESOURCE_NOT_FOUND = "The requested resource doesn't exist.";
 -
 -  public static final String QUERY_FIELDS = "fields";
 -  public static final String QUERY_FILTER_DESCRIPTION = "Filter fields in the response (identifier fields are mandatory)";
 -  public static final String QUERY_SORT = "sortBy";
 -  public static final String QUERY_SORT_DESCRIPTION = "Sort resources in result by (asc | desc)";
 -  public static final String QUERY_PAGE_SIZE = "page_size";
 -  public static final String QUERY_PAGE_SIZE_DESCRIPTION = "The number of resources to be returned for the paged response.";
 -  public static final String DEFAULT_PAGE_SIZE = "10";
 -  public static final String QUERY_FROM = "from";
 -  public static final String QUERY_FROM_DESCRIPTION = "The starting page resource (inclusive).  \"start\" is also accepted.";
 -  public static final String QUERY_FROM_VALUES = "range[0, infinity]";
 -  public static final String DEFAULT_FROM = "0";
 -  public static final String QUERY_TO = "to";
 -  public static final String QUERY_TO_DESCRIPTION = "The ending page resource (inclusive).  \"end\" is also accepted.";
 -  public static final String QUERY_TO_TYPE = "integer";
 -  public static final String QUERY_TO_VALUES = "range[1, infinity]";
 -  public static final String QUERY_PREDICATE = "{predicate}";
 -  public static final String QUERY_PREDICATE_DESCRIPTION = "The predicate to filter resources by. Omitting the predicate will " +
 +  protected static final String MSG_SUCCESSFUL_OPERATION = "Successful operation";
 +  protected static final String MSG_REQUEST_ACCEPTED = "Request is accepted, but not completely processed yet";
 +  protected static final String MSG_INVALID_ARGUMENTS = "Invalid arguments";
 +  protected static final String MSG_INVALID_REQUEST = "Invalid request";
 +  protected static final String MSG_CLUSTER_NOT_FOUND = "Cluster not found";
 +  protected static final String MSG_CLUSTER_OR_HOST_NOT_FOUND = "Cluster or host not found";
 +  protected static final String MSG_NOT_AUTHENTICATED = "Not authenticated";
 +  protected static final String MSG_PERMISSION_DENIED = "Not permitted to perform the operation";
 +  protected static final String MSG_SERVER_ERROR = "Internal server error";
 +  protected static final String MSG_RESOURCE_ALREADY_EXISTS = "The requested resource already exists.";
 +  protected static final String MSG_RESOURCE_NOT_FOUND = "The requested resource doesn't exist.";
 +
 +  protected static final String QUERY_FIELDS = "fields";
 +  protected static final String QUERY_FILTER_DESCRIPTION = "Filter fields in the response (identifier fields are mandatory)";
 +  protected static final String QUERY_SORT = "sortBy";
 +  protected static final String QUERY_SORT_DESCRIPTION = "Sort resources in result by (asc | desc)";
 +  protected static final String QUERY_PAGE_SIZE = "page_size";
 +  protected static final String QUERY_PAGE_SIZE_DESCRIPTION = "The number of resources to be returned for the paged response.";
 +  protected static final String DEFAULT_PAGE_SIZE = "10";
 +  protected static final String QUERY_FROM = "from";
 +  protected static final String QUERY_FROM_DESCRIPTION = "The starting page resource (inclusive).  \"start\" is also accepted.";
 +  protected static final String QUERY_FROM_VALUES = "range[0, infinity]";
 +  protected static final String DEFAULT_FROM = "0";
 +  protected static final String QUERY_TO = "to";
 +  protected static final String QUERY_TO_DESCRIPTION = "The ending page resource (inclusive).  \"end\" is also accepted.";
 +  protected static final String QUERY_TO_TYPE = "integer";
 +  protected static final String QUERY_TO_VALUES = "range[1, infinity]";
 +  protected static final String QUERY_PREDICATE = "{predicate}";
 +  protected static final String QUERY_PREDICATE_DESCRIPTION = "The predicate to filter resources by. Omitting the predicate will " +
        "match all resources.";
  
 -  public static final String RESPONSE_CONTAINER_LIST = "List";
 +  protected static final String RESPONSE_CONTAINER_LIST = "List";
  
 -  public static final String DATA_TYPE_INT = "integer";
 -  public static final String DATA_TYPE_STRING = "string";
 +  protected static final String DATA_TYPE_INT = "integer";
 +  protected static final String DATA_TYPE_STRING = "string";
  
 -  public static final String PARAM_TYPE_QUERY = "query";
 -  public static final String PARAM_TYPE_BODY = "body";
 -
 -  public static final String FIELDS_SEPARATOR = ", ";
 +  protected static final String PARAM_TYPE_QUERY = "query";
 +  protected static final String PARAM_TYPE_BODY = "body";
  
 +  protected static final String FIELDS_SEPARATOR = ", ";
- 
    private final static Logger LOG = LoggerFactory.getLogger(BaseService.class);
  
    /**
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
index c2bf783,45dc638..2064c0e
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementController.java
@@@ -127,18 -116,9 +127,9 @@@ public interface AmbariManagementContro
     * @return config created
     */
    Config createConfig(Cluster cluster, StackId stackId, String type, Map<String, String> properties,
 -                      String versionTag, Map<String, Map<String, String>> propertiesAttributes);
 +                      String versionTag, Map<String, Map<String, String>> propertiesAttributes, Long serviceId);
  
    /**
-    * Creates users.
-    *
-    * @param requests the request objects which define the user.
-    *
-    * @throws AmbariException when the user cannot be created.
-    */
-   void createUsers(Set<UserRequest> requests) throws AmbariException;
- 
-   /**
     * Creates groups.
     *
     * @param requests the request objects which define the groups.
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
index 8bd2f0c,b6fc0d1..7989fe7
--- 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
@@@ -902,8 -801,9 +900,7 @@@ public class AmbariManagementController
  
      // If the config type is for a service, then allow a user with SERVICE_MODIFY_CONFIGS to
      // update, else ensure the user has CLUSTER_MODIFY_CONFIGS
 -    String service = cluster.getServiceByConfigType(configType);
 -
 -
 +    Service service = cluster.getServiceByConfigType(configType);
- 
      // Get the changes so that the user's intention can be determined. For example, maybe
      // the user wants to change the run-as user for a service or maybe the the cluster-wide
      // recovery mode setting.
@@@ -3261,8 -3010,14 +3180,14 @@@
            continue;
          }
  
+         if (StringUtils.isBlank(stage.getHostParamsStage())) {
+           RepositoryVersionEntity repositoryVersion = component.getDesiredRepositoryVersion();
+           stage.setHostParamsStage(StageUtils.getGson().toJson(
+               customCommandExecutionHelper.createDefaultHostParams(cluster, repositoryVersion.getStackId())));
+         }
+ 
          customCommandExecutionHelper.addServiceCheckAction(stage, clientHost, smokeTestRole,
 -            nowTimestamp, serviceName, componentName, null, false, false);
 +            nowTimestamp, service.getServiceGroupName(), service.getName(), componentName, null, false, false);
        }
  
        RoleCommandOrder rco = getRoleCommandOrder(cluster);
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index 95bc525,c0e9692..d6147a2
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@@ -93,7 -92,7 +93,8 @@@ import org.apache.ambari.server.orm.dao
  import org.apache.ambari.server.orm.dao.UserDAO;
  import org.apache.ambari.server.orm.dao.ViewInstanceDAO;
  import org.apache.ambari.server.orm.entities.MetainfoEntity;
 +import org.apache.ambari.server.registry.RegistryAdvisor;
+ import org.apache.ambari.server.orm.entities.UserEntity;
  import org.apache.ambari.server.resources.ResourceManager;
  import org.apache.ambari.server.resources.api.rest.GetResource;
  import org.apache.ambari.server.scheduler.ExecutionScheduleManager;
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index f2ff181,d6db799..b99fcf1
--- 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
@@@ -74,11 -73,10 +74,13 @@@ import org.apache.ambari.server.control
  import org.apache.ambari.server.controller.internal.MemberResourceProvider;
  import org.apache.ambari.server.controller.internal.RepositoryVersionResourceProvider;
  import org.apache.ambari.server.controller.internal.RootServiceComponentConfigurationResourceProvider;
 +import org.apache.ambari.server.controller.internal.ServiceDependencyResourceProvider;
 +import org.apache.ambari.server.controller.internal.ServiceGroupDependencyResourceProvider;
 +import org.apache.ambari.server.controller.internal.ServiceGroupResourceProvider;
  import org.apache.ambari.server.controller.internal.ServiceResourceProvider;
  import org.apache.ambari.server.controller.internal.UpgradeResourceProvider;
+ import org.apache.ambari.server.controller.internal.UserAuthenticationSourceResourceProvider;
+ import org.apache.ambari.server.controller.internal.UserResourceProvider;
  import org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider;
  import org.apache.ambari.server.controller.logging.LoggingRequestHelperFactory;
  import org.apache.ambari.server.controller.logging.LoggingRequestHelperFactoryImpl;
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
index 01ddf5b,9837d70..19df6cd
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/DeleteIdentityHandler.java
@@@ -45,9 -45,9 +45,10 @@@ import org.apache.ambari.server.servera
  import org.apache.ambari.server.serveraction.kerberos.KDCType;
  import org.apache.ambari.server.serveraction.kerberos.KerberosOperationHandler;
  import org.apache.ambari.server.serveraction.kerberos.KerberosServerAction;
+ import org.apache.ambari.server.serveraction.kerberos.stageutils.ResolvedKerberosPrincipal;
  import org.apache.ambari.server.state.Cluster;
  import org.apache.ambari.server.state.Config;
 +import org.apache.ambari.server.state.Service;
  import org.apache.ambari.server.state.StackId;
  import org.apache.ambari.server.state.kerberos.KerberosDescriptor;
  import org.apache.ambari.server.state.svccomphost.ServiceComponentHostServerActionEvent;
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractControllerResourceProvider.java
index f98dbf2,15006b0..212a372
--- 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
@@@ -189,21 -162,7 +172,21 @@@ public abstract class AbstractControlle
        case Upgrade:
          return resourceProviderFactory.getUpgradeResourceProvider(managementController);
        case Stack:
-         return new StackResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackResourceProvider(managementController);
 +      case Registry:
 +        return new RegistryResourceProvider(managementController);
 +      case RegistryRecommendation:
 +        return new RegistryRecommendationResourceProvider(managementController);
 +      case RegistryValidation:
 +        return new RegistryValidationResourceProvider(managementController);
 +      case RegistryScenario:
 +        return new RegistryScenarioResourceProvider(managementController);
 +      case RegistryMpack:
 +        return new RegistryMpackResourceProvider(managementController);
 +      case RegistryMpackVersion:
 +        return new RegistryMpackVersionResourceProvider(managementController);
 +      case Mpack:
 +        return new MpackResourceProvider(managementController);
        case StackVersion:
          return new StackVersionResourceProvider(managementController);
        case ClusterStackVersion:
@@@ -211,27 -170,25 +194,27 @@@
        case HostStackVersion:
          return new HostStackVersionResourceProvider(managementController);
        case StackService:
-         return new StackServiceResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackServiceResourceProvider(managementController);
        case StackServiceComponent:
-         return new StackServiceComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackServiceComponentResourceProvider(managementController);
        case StackConfiguration:
-         return new StackConfigurationResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackConfigurationResourceProvider(managementController);
 +      case RootStackSetting:
 +        return new RootStackSettingsResourceProvider(managementController);
        case StackConfigurationDependency:
-         return new StackConfigurationDependencyResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackConfigurationDependencyResourceProvider(managementController);
        case StackLevelConfiguration:
-         return new StackLevelConfigurationResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new StackLevelConfigurationResourceProvider(managementController);
        case ExtensionLink:
-           return new ExtensionLinkResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new ExtensionLinkResourceProvider(managementController);
        case Extension:
-         return new ExtensionResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new ExtensionResourceProvider(managementController);
        case ExtensionVersion:
-         return new ExtensionVersionResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new ExtensionVersionResourceProvider(managementController);
        case RootService:
-         return new RootServiceResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new RootServiceResourceProvider(managementController);
        case RootServiceComponent:
-         return new RootServiceComponentResourceProvider(propertyIds, keyPropertyIds, managementController);
+         return new RootServiceComponentResourceProvider(managementController);
        case RootServiceComponentConfiguration:
          return resourceProviderFactory.getRootServiceHostComponentConfigurationResourceProvider();
        case RootServiceHostComponent:
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java
index 21a70ca,40e1b2d..810f191
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AbstractResourceProvider.java
@@@ -61,7 -61,7 +61,7 @@@ public abstract class AbstractResourceP
    /**
     * Key property mapping by resource type.
     */
--  private final Map<Resource.Type, String> keyPropertyIds;
++  protected final Map<Resource.Type, String> keyPropertyIds;
  
    /**
     * Observers of this observable resource provider.
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProvider.java
index af014b7,dcafdea..fdbb034
--- 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
@@@ -123,12 -125,24 +125,25 @@@ public class ClientConfigResourceProvid
  
    private final Gson gson;
  
-   private static Set<String> pkPropertyIds =
-     new HashSet<>(Arrays.asList(new String[]{
+   /**
+    * The key property ids for a ClientConfig resource.
+    */
+   private static Map<Resource.Type, String> keyPropertyIds = ImmutableMap.<Resource.Type, String>builder()
+       .put(Resource.Type.Cluster, COMPONENT_CLUSTER_NAME_PROPERTY_ID)
+       .put(Resource.Type.Service, COMPONENT_SERVICE_NAME_PROPERTY_ID)
+       .put(Resource.Type.Component, COMPONENT_COMPONENT_NAME_PROPERTY_ID)
+       .put(Resource.Type.Host, HOST_COMPONENT_HOST_NAME_PROPERTY_ID)
+       .build();
+ 
+   /**
+    * The property ids for a ClientConfig resource.
+    */
+   private static Set<String> propertyIds = Sets.newHashSet(
        COMPONENT_CLUSTER_NAME_PROPERTY_ID,
 +      COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID,
        COMPONENT_SERVICE_NAME_PROPERTY_ID,
-       COMPONENT_COMPONENT_NAME_PROPERTY_ID}));
+       COMPONENT_COMPONENT_NAME_PROPERTY_ID,
+       HOST_COMPONENT_HOST_NAME_PROPERTY_ID);
  
    private MaintenanceStateHelper maintenanceStateHelper;
    private static final Logger LOG = LoggerFactory.getLogger(ClientConfigResourceProvider.class);
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
index 435ac4d,e1bef2a..8facd21
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/HostComponentResourceProvider.java
@@@ -87,39 -85,78 +88,69 @@@ public class HostComponentResourceProvi
    // ----- Property ID constants ---------------------------------------------
  
    // Host Components
 +  public static final String HOST_COMPONENT_CLUSTER_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_id";
 +  public static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "cluster_name";
 +  public static final String HOST_COMPONENT_SERVICE_GROUP_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_id";
 +  public static final String HOST_COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_group_name";
 +  public static final String HOST_COMPONENT_SERVICE_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_id";
 +  public static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_name";
 +  public static final String HOST_COMPONENT_SERVICE_TYPE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "service_type";
 +  public static final String HOST_COMPONENT_HOST_COMPONENT_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "id";
 +  public static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "component_name";
 +  public static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "display_name";
 +  public static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "host_name";
 +  public static final String HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "public_host_name";
 +  public static final String HOST_COMPONENT_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "state";
 +  public static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_state";
 +  public static final String HOST_COMPONENT_VERSION_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "version";
 +  public static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_stack_id";
 +  public static final String HOST_COMPONENT_DESIRED_REPOSITORY_VERSION = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_repository_version";
 +  public static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "actual_configs";
 +  public static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stale_configs";
 +  public static final String HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID = PropertyHelper.getPropertyId("HostRoles", "reload_configs");
 +  public static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "desired_admin_state";
 +  public static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "maintenance_state";
 +  public static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "upgrade_state";
+   public static final String HOST_COMPONENT_ROLE_ID
+       = PropertyHelper.getPropertyId("HostRoles", "role_id");
 -  public static final String HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "cluster_name");
 -  public static final String HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "service_name");
 -  public static final String HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "component_name");
 -  public static final String HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "display_name");
 -  public static final String HOST_COMPONENT_HOST_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "host_name");
 -  public static final String HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "public_host_name");
 -  public static final String HOST_COMPONENT_STATE_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "state");
 -  public static final String HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "desired_state");
 -  public static final String HOST_COMPONENT_VERSION_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "version");
 -  public static final String HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "desired_stack_id");
 -  public static final String HOST_COMPONENT_DESIRED_REPOSITORY_VERSION
 -    = PropertyHelper.getPropertyId("HostRoles", "desired_repository_version");
 -  public static final String HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "actual_configs");
 -  public static final String HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "stale_configs");
 -  public static final String HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "reload_configs");
 -  public static final String HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID
 -      = PropertyHelper.getPropertyId("HostRoles", "desired_admin_state");
 -  public static final String HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID
 -      = "HostRoles/maintenance_state";
 -  public static final String HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID = "HostRoles/upgrade_state";
  
    //Parameters from the predicate
    private static final String QUERY_PARAMETERS_RUN_SMOKE_TEST_ID = "params/run_smoke_test";
-   private static Set<String> pkPropertyIds =
-     new HashSet<>(Arrays.asList(new String[]{
+ 
+   /**
+    * The key property ids for a HostComponent resource.
+    */
+   public static Map<Resource.Type, String> keyPropertyIds = ImmutableMap.<Resource.Type, String>builder()
+       .put(Resource.Type.Cluster, HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID)
+       .put(Resource.Type.Host, HOST_COMPONENT_HOST_NAME_PROPERTY_ID)
+       .put(Resource.Type.HostComponent, HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID)
+       .put(Resource.Type.Component, HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID)
+       .build();
+ 
+   /**
+    * The property ids for a HostComponent resource.
+    */
+   protected static Set<String> propertyIds = Sets.newHashSet(
+       HOST_COMPONENT_ROLE_ID,
        HOST_COMPONENT_CLUSTER_NAME_PROPERTY_ID,
 +      HOST_COMPONENT_SERVICE_GROUP_NAME_PROPERTY_ID,
        HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID,
        HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID,
-       HOST_COMPONENT_HOST_NAME_PROPERTY_ID}));
+       HOST_COMPONENT_DISPLAY_NAME_PROPERTY_ID,
+       HOST_COMPONENT_HOST_NAME_PROPERTY_ID,
+       HOST_COMPONENT_PUBLIC_HOST_NAME_PROPERTY_ID,
+       HOST_COMPONENT_STATE_PROPERTY_ID,
+       HOST_COMPONENT_DESIRED_STATE_PROPERTY_ID,
+       HOST_COMPONENT_VERSION_PROPERTY_ID,
+       HOST_COMPONENT_DESIRED_STACK_ID_PROPERTY_ID,
+       HOST_COMPONENT_DESIRED_REPOSITORY_VERSION,
+       HOST_COMPONENT_ACTUAL_CONFIGS_PROPERTY_ID,
+       HOST_COMPONENT_STALE_CONFIGS_PROPERTY_ID,
+       HOST_COMPONENT_RELOAD_CONFIGS_PROPERTY_ID,
+       HOST_COMPONENT_DESIRED_ADMIN_STATE_PROPERTY_ID,
+       HOST_COMPONENT_MAINTENANCE_STATE_PROPERTY_ID,
+       HOST_COMPONENT_UPGRADE_STATE_PROPERTY_ID,
+       QUERY_PARAMETERS_RUN_SMOKE_TEST_ID);
  
    /**
     * maintenance state helper
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java
index 5a6dff4,543cf94..1f54429
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProvider.java
@@@ -84,14 -81,10 +87,14 @@@ public class RootServiceComponentConfig
    }
  
    @Inject
 +  private AmbariEventPublisher publisher;
 +
 +  @Inject
    private RootServiceComponentConfigurationHandlerFactory rootServiceComponentConfigurationHandlerFactory;
  
 +
    public RootServiceComponentConfigurationResourceProvider() {
-     super(PROPERTIES, PK_PROPERTY_MAP);
+     super(Resource.Type.RootServiceComponentConfiguration, PROPERTIES, PK_PROPERTY_MAP);
  
      Set<RoleAuthorization> authorizations = EnumSet.of(RoleAuthorization.AMBARI_MANAGE_CONFIGURATION);
      setRequiredCreateAuthorizations(authorizations);
diff --cc ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
index 0633628,f2e6d1a..bdc5855
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackVersionResourceProvider.java
@@@ -36,72 -34,57 +36,73 @@@ import org.apache.ambari.server.control
  import org.apache.ambari.server.controller.spi.Predicate;
  import org.apache.ambari.server.controller.spi.Request;
  import org.apache.ambari.server.controller.spi.Resource;
 -import org.apache.ambari.server.controller.spi.Resource.Type;
  import org.apache.ambari.server.controller.spi.SystemException;
  import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 +import org.apache.ambari.server.controller.utilities.PredicateHelper;
  import org.apache.ambari.server.controller.utilities.PropertyHelper;
 +import org.apache.ambari.server.orm.dao.StackDAO;
 +import org.apache.ambari.server.orm.entities.StackEntity;
 +
 +import com.google.inject.Inject;
  
 -import com.google.common.collect.ImmutableMap;
 -import com.google.common.collect.Sets;
+ 
  @StaticallyInject
  public class StackVersionResourceProvider extends ReadOnlyResourceProvider {
 -
 -  public static final String STACK_VERSION_PROPERTY_ID     = PropertyHelper.getPropertyId("Versions", "stack_version");
 -  public static final String STACK_NAME_PROPERTY_ID        = PropertyHelper.getPropertyId("Versions", "stack_name");
 -  public static final String STACK_MIN_VERSION_PROPERTY_ID = PropertyHelper.getPropertyId("Versions", "min_upgrade_version");
 -  public static final String STACK_ACTIVE_PROPERTY_ID      = PropertyHelper.getPropertyId("Versions", "active");
 -  public static final String STACK_VALID_PROPERTY_ID      = PropertyHelper.getPropertyId("Versions", "valid");
 -  public static final String STACK_ERROR_SET      = PropertyHelper.getPropertyId("Versions", "stack-errors");
 -  public static final String STACK_CONFIG_TYPES            = PropertyHelper.getPropertyId("Versions", "config_types");
 -  public static final String STACK_PARENT_PROPERTY_ID      = PropertyHelper.getPropertyId("Versions", "parent_stack_version");
 -  public static final String UPGRADE_PACKS_PROPERTY_ID = PropertyHelper.getPropertyId("Versions", "upgrade_packs");
 -  public static final String STACK_MIN_JDK     = PropertyHelper.getPropertyId("Versions", "min_jdk");
 -  public static final String STACK_MAX_JDK     = PropertyHelper.getPropertyId("Versions", "max_jdk");
 +  public static final String RESPONSE_KEY = "Versions";
 +  public static final String ALL_PROPERTIES = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "*";
 +  public static final String STACK_VERSION_PROPERTY_ID     = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stack_version";
 +  public static final String STACK_NAME_PROPERTY_ID        = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stack_name";
 +  public static final String STACK_MIN_VERSION_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "min_upgrade_version";
 +  public static final String STACK_ACTIVE_PROPERTY_ID      = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "active";
 +  public static final String STACK_VALID_PROPERTY_ID      = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "valid";
 +  public static final String STACK_ERROR_SET      = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP +"stack-errors";
 +  public static final String STACK_CONFIG_TYPES            = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "config_types";
 +  public static final String STACK_PARENT_PROPERTY_ID      = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "parent_stack_version";
 +  public static final String UPGRADE_PACKS_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "upgrade_packs";
 +  public static final String STACK_MIN_JDK     = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "min_jdk";
 +  public static final String STACK_MAX_JDK     = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "max_jdk";
 +  public static final String MPACK_ID     = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_id";
 +
 +  public static final Set<String> PROPERTY_IDS = new HashSet<>();
 +
 +  @Inject
 +  protected static StackDAO stackDAO;
 +
 +  private static Set<String> pkPropertyIds = new HashSet<>(
 +    Arrays.asList(new String[]{STACK_NAME_PROPERTY_ID, STACK_VERSION_PROPERTY_ID, MPACK_ID}));
  
    /**
 -   * The key property ids for a StackVersion resource.
 +   * The key property ids for a mpack resource.
     */
 -  protected static Map<Resource.Type, String> keyPropertyIds = ImmutableMap.<Resource.Type, String>builder()
 -      .put(Type.Stack, STACK_NAME_PROPERTY_ID)
 -      .put(Type.StackVersion, STACK_VERSION_PROPERTY_ID)
 -      .build();
 +  public static final Map<Resource.Type, String> KEY_PROPERTY_IDS = new HashMap<>();
 +
 +  static {
 +    // properties
 +    PROPERTY_IDS.add(MPACK_ID);
 +    PROPERTY_IDS.add(STACK_VERSION_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_NAME_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_MIN_VERSION_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_ACTIVE_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_VALID_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_ERROR_SET);
 +    PROPERTY_IDS.add(STACK_CONFIG_TYPES);
 +    PROPERTY_IDS.add(STACK_PARENT_PROPERTY_ID);
 +    PROPERTY_IDS.add(UPGRADE_PACKS_PROPERTY_ID);
 +    PROPERTY_IDS.add(STACK_MIN_JDK);
 +    PROPERTY_IDS.add(STACK_MAX_JDK);
 +
 +    // keys
 +    KEY_PROPERTY_IDS.put(Resource.Type.Mpack, MPACK_ID);
 +    KEY_PROPERTY_IDS.put(Resource.Type.Stack, STACK_NAME_PROPERTY_ID);
 +    KEY_PROPERTY_IDS.put(Resource.Type.StackVersion, STACK_VERSION_PROPERTY_ID);
  
 -  /**
 -   * The property ids for a StackVersion resource.
 -   */
 -  protected static Set<String> propertyIds = Sets.newHashSet(
 -      STACK_VERSION_PROPERTY_ID,
 -      STACK_NAME_PROPERTY_ID,
 -      STACK_MIN_VERSION_PROPERTY_ID,
 -      STACK_ACTIVE_PROPERTY_ID,
 -      STACK_VALID_PROPERTY_ID,
 -      STACK_ERROR_SET,
 -      STACK_CONFIG_TYPES,
 -      STACK_PARENT_PROPERTY_ID,
 -      UPGRADE_PACKS_PROPERTY_ID,
 -      STACK_MIN_JDK,
 -      STACK_MAX_JDK);
 -
 -  protected StackVersionResourceProvider(AmbariManagementController managementController) {
 -    super(Type.StackVersion, propertyIds, keyPropertyIds, managementController);
    }
  
 +  StackVersionResourceProvider(AmbariManagementController controller) {
-     super(PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
++    super(Resource.Type.StackVersion, PROPERTY_IDS, KEY_PROPERTY_IDS, controller);
 +  }
 +
 +
    @Override
    public Set<Resource> getResources(Request request, Predicate predicate)
        throws SystemException, UnsupportedPropertyException,
diff --cc ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListener.java
index b4a1529,4b3e42a..5f61c7d
--- a/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListener.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/events/listeners/upgrade/HostVersionOutOfSyncListener.java
@@@ -128,14 -128,20 +128,22 @@@ public class HostVersionOutOfSyncListen
          // We perform check per-stack version, because component may be not versionAdvertised in current
          // stack, but become versionAdvertised in some future (installed, but not yet upgraded to) stack
          String serviceName = event.getServiceName();
 +        String serviceType = event.getServiceType();
          String componentName = event.getComponentName();
+ 
+         // Skip lookup if stack does not contain the component
+         if (!ami.get().isValidServiceComponent(hostStackId.getStackName(),
+             hostStackId.getStackVersion(), serviceName, componentName)) {
+           LOG.debug("Component not found is host stack, stack={}, version={}, service={}, component={}",
+               hostStackId.getStackName(), hostStackId.getStackVersion(), serviceName, componentName);
+           continue;
+         }
          ComponentInfo component = ami.get().getComponent(hostStackId.getStackName(),
 -                hostStackId.getStackVersion(), serviceName, componentName);
 +                hostStackId.getStackVersion(), serviceType, componentName);
  
          if (!component.isVersionAdvertised()) {
 -          RepositoryVersionState state = checkAllHostComponents(hostStackId, hostVersionEntity.getHostEntity());
 +          RepositoryVersionState state = checkAllHostComponents(hostStackId, serviceName, serviceType,
 +                                                                hostVersionEntity.getHostEntity());
            if (null != state) {
              hostVersionEntity.setState(state);
              hostVersionDAO.get().merge(hostVersionEntity);
@@@ -218,8 -223,16 +226,16 @@@
      Collection<HostComponentDesiredStateEntity> hostComponents = host.getHostComponentDesiredStateEntities();
  
      for (HostComponentDesiredStateEntity hostComponent : hostComponents) {
+       // Skip lookup if stack does not contain the component
+       if (!ami.get().isValidServiceComponent(stackId.getStackName(),
+           stackId.getStackVersion(), hostComponent.getServiceName(), hostComponent.getComponentName())) {
+         LOG.debug("Component not found is host stack, stack={}, version={}, service={}, component={}",
+             stackId.getStackName(), stackId.getStackVersion(),
+             hostComponent.getServiceName(), hostComponent.getComponentName());
+         continue;
+       }
        ComponentInfo ci = ami.get().getComponent(stackId.getStackName(), stackId.getStackVersion(),
 -          hostComponent.getServiceName(), hostComponent.getComponentName());
 +        stackServiceName, hostComponent.getComponentName());
  
        if (ci.isVersionAdvertised()) {
          return null;
@@@ -259,10 -273,19 +275,18 @@@
            // We perform check per-stack version, because component may be not versionAdvertised in current
            // stack, but become versionAdvertised in some future (installed, but not yet upgraded to) stack
            boolean hasChangedComponentsWithVersions = false;
 -          String serviceName = event.getServiceName();
            for (ServiceComponent comp : affectedHosts.get(hostName)) {
              String componentName = comp.getName();
+ 
+             // Skip lookup if stack does not contain the component
+             if (!ami.get().isValidServiceComponent(repositoryVersion.getStackName(),
+                 repositoryVersion.getStackVersion(), serviceName, componentName)) {
+               LOG.debug("Component not found is host stack, stack={}, version={}, service={}, component={}",
+                   repositoryVersion.getStackName(), repositoryVersion.getStackVersion(), serviceName, componentName);
+               continue;
+             }
              ComponentInfo component = ami.get().getComponent(repositoryVersion.getStackName(),
 -                    repositoryVersion.getStackVersion(), serviceName, componentName);
 +                    repositoryVersion.getStackVersion(), comp.getServiceType(), componentName);
              if (component.isVersionAdvertised()) {
                hasChangedComponentsWithVersions = true;
              }
diff --cc ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
index d12e8cd,62226af..8ec5c3a
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Cluster.java
@@@ -901,9 -666,20 +901,18 @@@ public interface Cluster 
     * maps are not modified.
     * <p/>
     *
 -   * @param commandParams
 -   *          the command parameter map to supplement (not {@code null}).
 -   * @param roleParams
 -   *          the role parameter map to supplement (not {@code null}).
 +   * @param commandParams the command parameter map to supplement (not {@code null}).
 +   * @param roleParams    the role parameter map to supplement (not {@code null}).
     */
    void addSuspendedUpgradeParameters(Map<String, String> commandParams,
 -      Map<String, String> roleParams);
 +                                     Map<String, String> roleParams);
+ 
+   /**
+    * Gets a mapping of service to component/version for every installed
+    * component in the cluster which advertises a version and for which the
+    * repository has been resolved.
+    *
+    * @return a mapping of service to component version, or an empty map.
+    */
+   Map<String, Map<String, String>> getComponentVersionMap();
  }
diff --cc ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
index a811c5e,2f3afd6..4ab3a3d
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
@@@ -1885,7 -1336,7 +1888,8 @@@ public class ClusterImpl implements Clu
      try {
        refresh();
        deleteAllServices();
 +      deleteAllServiceGroups();
+       resetHostVersions();
  
        refresh(); // update one-to-many clusterServiceEntities
        removeEntities();
@@@ -1905,9 -1356,17 +1909,18 @@@
      clusterDAO.removeByPK(clusterId);
    }
  
 +  //TODO this needs to be reworked to support multiple instance of same service
+   private void resetHostVersions() {
+     for (HostVersionEntity hostVersionEntity : hostVersionDAO.findByCluster(getClusterName())) {
+       if (!hostVersionEntity.getState().equals(RepositoryVersionState.NOT_REQUIRED)) {
+         hostVersionEntity.setState(RepositoryVersionState.NOT_REQUIRED);
+         hostVersionDAO.merge(hostVersionEntity);
+       }
+     }
+   }
+ 
    @Override
 -  public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs) {
 +  public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs) throws AmbariException {
      return addDesiredConfig(user, configs, null);
    }
  
@@@ -2125,49 -1581,41 +2138,53 @@@
      return response;
    }
  
 +  //TODO this needs to be reworked to support multiple instance of same service
    @Override
 -  public String getServiceForConfigTypes(Collection<String> configTypes) {
 -    List<String> serviceNames = configTypes.stream()
 -      .map(this::getServiceByConfigType)
 -      .filter(Objects::nonNull)
 -      .collect(toList());
 -    boolean allTheSame = new HashSet<>(serviceNames).size() <= 1;
 -    if (!allTheSame) {
 -      throw new IllegalArgumentException(String.format(
 -        "Config types: %s should belong to a single installed service. But they belong to: %s", configTypes, serviceNames));
 +  public Long getServiceForConfigTypes(Collection<String> configTypes) {
 +    //debug
 +    LOG.info("Looking for service for config types {}", configTypes);
 +    List<Long> resultingServiceIds = new ArrayList<>();
 +
 +    for (Long serviceId : serviceConfigTypes.keySet()) {
 +      Set<String> configTypesForServiceId = serviceConfigTypes.get(serviceId);
 +      if (configTypesForServiceId.containsAll(configTypes)) {
 +          resultingServiceIds.add(serviceId);
 +      }
 +    }
 +    if (resultingServiceIds.isEmpty()) {
 +      LOG.warn("Can't find serviceIds for {}, there is a problem if there's no cluster-env", configTypes);
 +      return null;
 +    } else {
 +      LOG.info("Service {} returning", getServiceOrNull(resultingServiceIds.get(0)));
      }
 -    return serviceNames.isEmpty() ? null : serviceNames.get(0);
 -  }
  
 -  public List<String> serviceNameByConfigType(String configType) {
 -    return serviceConfigTypes.entries().stream()
 -      .filter(entry -> StringUtils.equals(entry.getValue(), configType))
 -      .map(entry -> entry.getKey())
 -      .collect(toList());
 +    //TODO this needs to be reworked to support multiple instance of same service
 +    return resultingServiceIds.get(0);
    }
  
 +  //TODO this needs to be reworked to support multiple instance of same service
    @Override
 -  public String getServiceByConfigType(String configType) {
 -    return serviceNameByConfigType(configType).stream()
 -      .filter(this::isServiceInstalled)
 -      .findFirst()
 -      .orElse(null);
 +  public Service getServiceByConfigType(String configType) {
 +    List<Long> resultingServiceIds = new ArrayList<>();
 +    for (Long serviceId : serviceConfigTypes.keySet()) {
 +      if (serviceConfigTypes.get(serviceId).contains(configType)) {
 +        resultingServiceIds.add(serviceId);
 +      }
 +    }
 +    if (resultingServiceIds.isEmpty()) {
 +      LOG.warn("Can't find service for {}", configType);
 +      return null;
 +    }
 +    //TODO this needs to be reworked to support multiple instance of same service
 +    return getServiceOrNull(resultingServiceIds.get(0));
    }
  
+   private boolean isServiceInstalled(String serviceName) {
+     return services.get(serviceName) != null;
+   }
+ 
    @Override
 -  public ServiceConfigVersionResponse setServiceConfigVersion(String serviceName, Long version, String user, String note) throws AmbariException {
 +  public ServiceConfigVersionResponse setServiceConfigVersion(Long serviceId, Long version, String user, String note) throws AmbariException {
      if (null == user) {
        throw new NullPointerException("User must be specified.");
      }
@@@ -2434,30 -1892,9 +2451,29 @@@
      return convertToServiceConfigVersionResponse(serviceConfigEntityClone);
    }
  
 +  //TODO this needs to be reworked to support multiple instance of same service
    @Transactional
 -  ServiceConfigVersionResponse applyConfigs(Set<Config> configs, String user, String serviceConfigVersionNote) {
 -    String serviceName = getServiceForConfigTypes(configs.stream().map(Config::getType).collect(toList()));
 +  ServiceConfigVersionResponse applyConfigs(Set<Config> configs, String user, String serviceConfigVersionNote) throws AmbariException {
 +    Long resultingServiceId = null;
 +    for (Config config : configs) {
 +      for (Long serviceId : serviceConfigTypes.keySet()) {
 +        if (serviceConfigTypes.get(serviceId).contains(config.getType())) {
 +          if (resultingServiceId == null) {
 +            resultingServiceId = serviceId;
 +            break;
 +          } else if (!resultingServiceId.equals(serviceId)) {
 +            String error = String.format("Updating configs for multiple services by a " +
 +                "single API request isn't supported. Conflicting services %s and %s for %s",
 +                getService(serviceId).getName(), getService(resultingServiceId).getName(), config.getType());
 +            IllegalArgumentException exception = new IllegalArgumentException(error);
 +            LOG.error(error + ", config version not created for {}", getService(resultingServiceId).getName());
 +            throw exception;
 +          } else {
 +            break;
 +          }
 +        }
 +      }
 +    }
- 
      // update the selected flag for every config type
      ClusterEntity clusterEntity = getClusterEntity();
      Collection<ClusterConfigEntity> clusterConfigs = clusterEntity.getClusterConfigEntities();
diff --cc ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
index b5ae330,0e940ae..f8260ef
--- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
@@@ -1168,18 -1087,10 +1195,20 @@@ CREATE INDEX idx_alert_notice_state on 
  -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
  -- BEGIN;
  INSERT INTO ambari_sequences (sequence_name, sequence_value)
+   SELECT 'kkp_id_seq', 0 FROM SYSIBM.SYSDUMMY1
+   UNION ALL
    SELECT 'cluster_id_seq', 1 FROM SYSIBM.SYSDUMMY1
    UNION ALL
 +  SELECT 'cluster_setting_id_seq', 1 FROM SYSIBM.SYSDUMMY1
 +  UNION ALL
 +  SELECT 'service_group_id_seq', 1 FROM SYSIBM.SYSDUMMY1
 +  UNION ALL
 +  SELECT 'service_group_dependency_id_seq', 1 FROM SYSIBM.SYSDUMMY1
 +  UNION ALL
 +  SELECT 'service_dependency_id_seq', 1 FROM SYSIBM.SYSDUMMY1
 +  UNION ALL
 +  SELECT 'service_id_seq', 1 FROM SYSIBM.SYSDUMMY1
 +  UNION ALL
    SELECT 'host_id_seq', 0 FROM SYSIBM.SYSDUMMY1
    UNION ALL
    SELECT 'user_id_seq', 2 FROM SYSIBM.SYSDUMMY1
diff --cc ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
index 0d2d0dc,da14dcb..b7807bc
--- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
@@@ -1181,12 -1104,8 +1211,13 @@@ CREATE INDEX idx_alert_notice_state on 
  
  -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
  INSERT INTO ambari_sequences(sequence_name, sequence_value) VALUES
+   ('kkp_id_seq', 0),
    ('cluster_id_seq', 1),
 +  ('cluster_setting_id_seq', 1),
 +  ('service_group_id_seq', 1),
 +  ('service_dependency_id_seq', 1),
 +  ('service_group_dependency_id_seq', 1),
 +  ('service_id_seq', 1),
    ('host_id_seq', 0),
    ('host_role_command_id_seq', 1),
    ('user_id_seq', 2),
diff --cc ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
index c954cd3,d5cf42a..c4d94d4
--- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
@@@ -1158,14 -1082,11 +1188,16 @@@ CREATE INDEX idx_alert_group_name on al
  CREATE INDEX idx_alert_notice_state on alert_notice(notify_state);
  
  ---------inserting some data-----------
+ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('kkp_id_seq', 0);
  -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_role_command_id_seq', 0);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_setting_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_dependency_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_dependency_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_id_seq', 1);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('user_id_seq', 1);
+ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('user_authentication_id_seq', 1);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('group_id_seq', 0);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('member_id_seq', 0);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_id_seq', 0);
diff --cc ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index e8850e3,f2b3da3..6044262
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@@ -1131,14 -1085,11 +1162,16 @@@ CREATE INDEX idx_alert_notice_state on 
  -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
  BEGIN;
  INSERT INTO ambari_sequences (sequence_name, sequence_value) VALUES
+   ('kkp_id_seq', 0),
    ('cluster_id_seq', 1),
 +  ('cluster_setting_id_seq', 1),
 +  ('service_group_id_seq', 1),
 +  ('service_group_dependency_id_seq', 1),
 +  ('service_id_seq', 1),
 +  ('service_dependency_id_seq', 1),
    ('host_id_seq', 0),
    ('user_id_seq', 2),
+   ('user_authentication_id_seq', 2),
    ('group_id_seq', 1),
    ('member_id_seq', 1),
    ('host_role_command_id_seq', 1),
diff --cc ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
index cbd5aaf,a62a7d2..b9a4f0e
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
@@@ -1157,13 -1080,9 +1187,14 @@@ CREATE INDEX idx_alert_history_state o
  CREATE INDEX idx_alert_group_name on alert_group(group_name);
  CREATE INDEX idx_alert_notice_state on alert_notice(notify_state);
  
+ INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('kkp_id_seq', 0);
  -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0.
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_setting_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_dependency_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_dependency_id_seq', 1);
 +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_id_seq', 1);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_id_seq', 0);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_role_command_id_seq', 1);
  INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('user_id_seq', 2);
diff --cc ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
index ad83318,d84cd70..fe9e987
--- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
@@@ -1185,14 -1108,11 +1215,16 @@@ CREATE INDEX idx_alert_notice_state on 
  BEGIN TRANSACTION
    INSERT INTO ambari_sequences (sequence_name, [sequence_value])
    VALUES
+     ('kkp_id_seq', 0),
      ('cluster_id_seq', 1),
 +    ('cluster_setting_id_seq', 1),
 +    ('service_group_id_seq', 1),
 +    ('service_dependency_id_seq', 1),
 +    ('service_group_dependency_id_seq', 1),
 +    ('service_id_seq', 1),
      ('host_id_seq', 0),
      ('user_id_seq', 2),
+     ('user_authentication_id_seq', 2),
      ('group_id_seq', 1),
      ('member_id_seq', 1),
      ('host_role_command_id_seq', 1),
diff --cc ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
index 8c44632,b7d977e..6cd1504
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/AmbariMetaInfoTest.java
@@@ -1721,10 -1715,10 +1720,10 @@@ public class AmbariMetaInfoTest 
  
      RepositoryVersionEntity repositoryVersion = ormHelper.getOrCreateRepositoryVersion(
          cluster.getCurrentStackVersion(), repoVersion);
 -
 -    cluster.addService("HDFS", repositoryVersion);
 +    ServiceGroup sg = cluster.addServiceGroup("core");
 +    cluster.addService(sg, "HDFS", "HDFS", repositoryVersion);
  
-     metaInfo.reconcileAlertDefinitions(clusters);
+     metaInfo.reconcileAlertDefinitions(clusters, false);
  
      AlertDefinitionDAO dao = injector.getInstance(AlertDefinitionDAO.class);
      List<AlertDefinitionEntity> definitions = dao.findAll(clusterId);
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
index 462b917,1bee291..1f869f9
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/KerberosHelperTest.java
@@@ -80,8 -79,9 +80,10 @@@ import org.apache.ambari.server.mpack.M
  import org.apache.ambari.server.orm.DBAccessor;
  import org.apache.ambari.server.orm.dao.ArtifactDAO;
  import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
+ import org.apache.ambari.server.orm.dao.KerberosKeytabPrincipalDAO;
  import org.apache.ambari.server.orm.dao.KerberosPrincipalDAO;
 +import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
+ import org.apache.ambari.server.orm.entities.KerberosKeytabPrincipalEntity;
  import org.apache.ambari.server.security.SecurityHelper;
  import org.apache.ambari.server.security.credential.PrincipalKeyCredential;
  import org.apache.ambari.server.security.encryption.CredentialStoreService;
@@@ -260,10 -261,9 +263,11 @@@ public class KerberosHelperTest extend
          bind(AuditLogger.class).toInstance(createNiceMock(AuditLogger.class));
          bind(ArtifactDAO.class).toInstance(createNiceMock(ArtifactDAO.class));
          bind(KerberosPrincipalDAO.class).toInstance(createNiceMock(KerberosPrincipalDAO.class));
+         bind(KerberosKeytabPrincipalDAO.class).toInstance(createNiceMock(KerberosKeytabPrincipalDAO.class));
          bind(RoleCommandOrderProvider.class).to(CachedRoleCommandOrderProvider.class);
          bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class);
 +        bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
 +        bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
  
          requestStaticInjection(KerberosChecker.class);
        }
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
index 1cd553c,c5994c5..a17e94f
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClientConfigResourceProviderTest.java
@@@ -216,11 -210,9 +212,9 @@@ public class ClientConfigResourceProvid
  
      ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
          type,
-         PropertyHelper.getPropertyIds(type),
-         PropertyHelper.getKeyPropertyIds(type),
          managementController);
  
 -    String clusterName = "C1";
 +    String clusterName = "c1";
      String serviceName = "PIG";
      String componentName = "PIG";
      String displayName = "Pig Client";
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
index 622dd7f,650dc78..f0337bb
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostComponentResourceProviderTest.java
@@@ -114,12 -109,11 +112,11 @@@ public class HostComponentResourceProvi
  
      AbstractControllerResourceProvider.init(resourceProviderFactory);
  
 -    managementController.createHostComponents(
 -        AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
 -            "Cluster100", "Service100", "Component100", "Host100", null, null));
 +    ServiceComponentHostRequest request = new ServiceComponentHostRequest("Cluster100", SERVICE_GROUP_NAME, "Service100", "Component100", "Host100", null);
 +    Set<ServiceComponentHostRequest> expectedRequests = Collections.singleton(request);
 +    expect(managementController.createHostComponents(eq(expectedRequests))).andReturn(null).once();
  
-     expect(resourceProviderFactory.getHostComponentResourceProvider(EasyMock.anyObject(),
-         EasyMock.anyObject(),
+     expect(resourceProviderFactory.getHostComponentResourceProvider(
          eq(managementController))).
          andReturn(hostComponentResourceProvider).anyTimes();
  
@@@ -456,13 -442,12 +447,11 @@@
      Injector injector = createNiceMock(Injector.class);
  
      HostComponentResourceProvider provider =
-         new HostComponentResourceProvider(PropertyHelper.getPropertyIds(type),
-             PropertyHelper.getKeyPropertyIds(type),
-             managementController, injector);
+         new HostComponentResourceProvider(managementController, injector);
  
      // set expectations
 -    expect(managementController.deleteHostComponents(
 -        AbstractResourceProviderTest.Matcher.getHostComponentRequestSet(
 -            null, null, "Component100", "Host100", null, null))).andReturn(deleteStatusMetaData);
 +    ServiceComponentHostRequest request = new ServiceComponentHostRequest(null, null, null, "Component100", "Host100", null);
 +    expect(managementController.deleteHostComponents(Collections.singleton(request))).andReturn(deleteStatusMetaData);
  
      // replay
      replay(managementController, deleteStatusMetaData);
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
index 9ad233f,670c187..0ea3a56
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/HostStackVersionResourceProviderTest.java
@@@ -232,10 -229,10 +230,10 @@@ public class HostStackVersionResourcePr
      expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
      expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
      expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
 -    expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
 +    expect(managementController.getPackagesForStackServiceHost(anyObject(StackInfo.class),anyObject(ServiceInfo.class),
              EasyMock.anyObject(), anyObject(String.class))).andReturn(packages).anyTimes();
  
-     expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
+     expect(resourceProviderFactory.getHostResourceProvider(
          eq(managementController))).andReturn(csvResourceProvider).anyTimes();
  
      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
@@@ -330,10 -323,10 +326,10 @@@
      expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
      expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
      expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
 -    expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
 +    expect(managementController.getPackagesForStackServiceHost(anyObject(StackInfo.class),anyObject(ServiceInfo.class),
        anyObject(Map.class), anyObject(String.class))).andReturn(packages).anyTimes();
  
-     expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class), anyObject(Map.class),
+     expect(resourceProviderFactory.getHostResourceProvider(
        eq(managementController))).andReturn(csvResourceProvider).anyTimes();
  
      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
@@@ -429,10 -419,10 +423,10 @@@
      expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
      expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
      expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
 -    expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),
 +    expect(managementController.getPackagesForStackServiceHost(anyObject(StackInfo.class),anyObject(ServiceInfo.class),
              EasyMock.anyObject(), anyObject(String.class))).andReturn(packages).anyTimes();
  
-     expect(resourceProviderFactory.getHostResourceProvider(EasyMock.anyObject(), EasyMock.anyObject(),
+     expect(resourceProviderFactory.getHostResourceProvider(
              eq(managementController))).andReturn(csvResourceProvider).anyTimes();
  
      expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
diff --cc ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
index 4ce9352,aaddda2..a34bf23
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
@@@ -18,14 -18,21 +18,22 @@@
  
  package org.apache.ambari.server.controller.internal;
  
++import org.apache.ambari.server.security.authorization.Users;
+ import static org.easymock.EasyMock.anyObject;
+ import static org.easymock.EasyMock.capture;
  import static org.easymock.EasyMock.expect;
  import static org.easymock.EasyMock.expectLastCall;
+ import static org.easymock.EasyMock.getCurrentArguments;
+ import static org.easymock.EasyMock.newCapture;
  
+ import java.util.ArrayList;
  import java.util.Arrays;
+ import java.util.Calendar;
  import java.util.Collections;
+ import java.util.Date;
+ import java.util.HashMap;
  import java.util.HashSet;
  import java.util.LinkedHashMap;
- import java.util.LinkedHashSet;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
@@@ -53,12 -65,25 +66,29 @@@ import org.apache.ambari.server.hooks.H
  import org.apache.ambari.server.hooks.HookService;
  import org.apache.ambari.server.metadata.CachedRoleCommandOrderProvider;
  import org.apache.ambari.server.metadata.RoleCommandOrderProvider;
 +import org.apache.ambari.server.mpack.MpackManagerFactory;
  import org.apache.ambari.server.orm.DBAccessor;
+ import org.apache.ambari.server.orm.dao.GroupDAO;
  import org.apache.ambari.server.orm.dao.HostRoleCommandDAO;
 +import org.apache.ambari.server.registry.RegistryFactory;
 +import org.apache.ambari.server.registry.RegistryManager;
 +import org.apache.ambari.server.resources.RootLevelSettingsManagerFactory;
+ import org.apache.ambari.server.orm.dao.MemberDAO;
+ import org.apache.ambari.server.orm.dao.PermissionDAO;
+ import org.apache.ambari.server.orm.dao.PrincipalDAO;
+ import org.apache.ambari.server.orm.dao.PrincipalTypeDAO;
+ import org.apache.ambari.server.orm.dao.PrivilegeDAO;
+ import org.apache.ambari.server.orm.dao.ResourceDAO;
+ import org.apache.ambari.server.orm.dao.UserAuthenticationDAO;
+ import org.apache.ambari.server.orm.dao.UserDAO;
+ import org.apache.ambari.server.orm.entities.MemberEntity;
+ import org.apache.ambari.server.orm.entities.PermissionEntity;
+ import org.apache.ambari.server.orm.entities.PrincipalEntity;
+ import org.apache.ambari.server.orm.entities.PrincipalTypeEntity;
+ import org.apache.ambari.server.orm.entities.PrivilegeEntity;
+ import org.apache.ambari.server.orm.entities.ResourceEntity;
+ import org.apache.ambari.server.orm.entities.UserAuthenticationEntity;
+ import org.apache.ambari.server.orm.entities.UserEntity;
  import org.apache.ambari.server.scheduler.ExecutionScheduler;
  import org.apache.ambari.server.security.TestAuthenticationFactory;
  import org.apache.ambari.server.security.authorization.AuthorizationException;
@@@ -236,40 -389,43 +396,50 @@@ public class UserResourceProviderTest e
          install(new FactoryModuleBuilder().build(UpgradeContextFactory.class));
          install(new FactoryModuleBuilder().build(RoleGraphFactory.class));
  
-         bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
-         bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
-         bind(ActionDBAccessor.class).toInstance(createNiceMock(ActionDBAccessor.class));
-         bind(ExecutionScheduler.class).toInstance(createNiceMock(ExecutionScheduler.class));
-         bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
+         bind(EntityManager.class).toInstance(createMock(EntityManager.class));
+         bind(DBAccessor.class).toInstance(createMock(DBAccessor.class));
+         bind(ActionDBAccessor.class).toInstance(createMock(ActionDBAccessor.class));
+         bind(ExecutionScheduler.class).toInstance(createMock(ExecutionScheduler.class));
+         bind(OsFamily.class).toInstance(createMock(OsFamily.class));
          bind(AmbariMetaInfo.class).toInstance(createMock(AmbariMetaInfo.class));
-         bind(ActionManager.class).toInstance(createNiceMock(ActionManager.class));
-         bind(RequestFactory.class).toInstance(createNiceMock(RequestFactory.class));
-         bind(RequestExecutionFactory.class).toInstance(createNiceMock(RequestExecutionFactory.class));
-         bind(StageFactory.class).toInstance(createNiceMock(StageFactory.class));
-         bind(Clusters.class).toInstance(createNiceMock(Clusters.class));
-         bind(AbstractRootServiceResponseFactory.class).toInstance(createNiceMock(AbstractRootServiceResponseFactory.class));
+         bind(ActionManager.class).toInstance(createMock(ActionManager.class));
+         bind(RequestFactory.class).toInstance(createMock(RequestFactory.class));
+         bind(RequestExecutionFactory.class).toInstance(createMock(RequestExecutionFactory.class));
+         bind(StageFactory.class).toInstance(createMock(StageFactory.class));
+         bind(Clusters.class).toInstance(createMock(Clusters.class));
+         bind(AbstractRootServiceResponseFactory.class).toInstance(createMock(AbstractRootServiceResponseFactory.class));
 -        bind(StackManagerFactory.class).toInstance(createMock(StackManagerFactory.class));
 +        bind(StackManagerFactory.class).toInstance(createNiceMock(StackManagerFactory.class));
-         bind(ConfigFactory.class).toInstance(createNiceMock(ConfigFactory.class));
-         bind(ConfigGroupFactory.class).toInstance(createNiceMock(ConfigGroupFactory.class));
+         bind(ConfigFactory.class).toInstance(createMock(ConfigFactory.class));
+         bind(ConfigGroupFactory.class).toInstance(createMock(ConfigGroupFactory.class));
 +        bind(ServiceGroupFactory.class).toInstance(createNiceMock(ServiceGroupFactory.class));
-         bind(ServiceFactory.class).toInstance(createNiceMock(ServiceFactory.class));
-         bind(ServiceComponentFactory.class).toInstance(createNiceMock(ServiceComponentFactory.class));
-         bind(ServiceComponentHostFactory.class).toInstance(createNiceMock(ServiceComponentHostFactory.class));
-         bind(PasswordEncoder.class).toInstance(createNiceMock(PasswordEncoder.class));
-         bind(KerberosHelper.class).toInstance(createNiceMock(KerberosHelper.class));
+         bind(ServiceFactory.class).toInstance(createMock(ServiceFactory.class));
+         bind(ServiceComponentFactory.class).toInstance(createMock(ServiceComponentFactory.class));
+         bind(ServiceComponentHostFactory.class).toInstance(createMock(ServiceComponentHostFactory.class));
+         bind(PasswordEncoder.class).toInstance(createMock(PasswordEncoder.class));
+         bind(KerberosHelper.class).toInstance(createMock(KerberosHelper.class));
 +        bind(Users.class).toInstance(createMock(Users.class));
-         bind(AmbariManagementController.class).to(AmbariManagementControllerImpl.class);
+         bind(AmbariManagementController.class).toInstance(createMock(AmbariManagementController.class));
          bind(RoleCommandOrderProvider.class).to(CachedRoleCommandOrderProvider.class);
          bind(CredentialStoreService.class).to(CredentialStoreServiceImpl.class);
          bind(HostRoleCommandDAO.class).toInstance(createMock(HostRoleCommandDAO.class));
          bind(HookService.class).toInstance(createMock(HookService.class));
          bind(HookContextFactory.class).toInstance(createMock(HookContextFactory.class));
          bind(HostRoleCommandFactory.class).to(HostRoleCommandFactoryImpl.class);
 +        bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
 +        bind(RegistryFactory.class).toInstance(createNiceMock(RegistryFactory.class));
 +        bind(RegistryManager.class).toInstance(createNiceMock(RegistryManager.class));
 +        bind(RootLevelSettingsManagerFactory.class).toInstance(createNiceMock(RootLevelSettingsManagerFactory.class));
 +        bind(ClusterSettingFactory.class).toInstance(createNiceMock(ClusterSettingFactory.class));
+         bind(UserDAO.class).toInstance(createMock(UserDAO.class));
+ 
+         bind(UserAuthenticationDAO.class).toInstance(createMock(UserAuthenticationDAO.class));
+         bind(GroupDAO.class).toInstance(createMock(GroupDAO.class));
+         bind(MemberDAO.class).toInstance(createMock(MemberDAO.class));
+         bind(PrincipalDAO.class).toInstance(createMock(PrincipalDAO.class));
+         bind(PermissionDAO.class).toInstance(createMock(PermissionDAO.class));
+         bind(PrivilegeDAO.class).toInstance(createMock(PrivilegeDAO.class));
+         bind(ResourceDAO.class).toInstance(createMock(ResourceDAO.class));
+         bind(PrincipalTypeDAO.class).toInstance(createMock(PrincipalTypeDAO.class));
        }
      });
    }
diff --cc ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
index 96348b5,8b37f72..e6c71f4
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
@@@ -1381,9 -1385,10 +1383,10 @@@ public class ClusterTest 
    public void testAllServiceConfigVersionsWithConfigGroups() throws Exception {
      // Given
      createDefaultCluster();
+     c1.addService("HDFS", helper.getOrCreateRepositoryVersion(new StackId("HDP", "0.1"), "0.1"));
  
      Config hdfsSiteConfigV1 = configFactory.createNew(c1, "hdfs-site", "version1",
 -        ImmutableMap.of("p1", "v1"), ImmutableMap.of());
 +        ImmutableMap.of("p1", "v1"), new HashMap<>());
  
      ServiceConfigVersionResponse hdfsSiteConfigResponseV1 = c1.addDesiredConfig("admin", Collections.singleton(hdfsSiteConfigV1));
      List<ConfigurationResponse> configResponsesDefaultGroup =  Collections.singletonList(
@@@ -1430,9 -1445,10 +1433,10 @@@
    public void testAllServiceConfigVersionsWithDeletedConfigGroups() throws Exception {
      // Given
      createDefaultCluster();
+     c1.addService("HDFS", helper.getOrCreateRepositoryVersion(new StackId("HDP", "0.1"), "0.1"));
  
      Config hdfsSiteConfigV1 = configFactory.createNew(c1, "hdfs-site", "version1",
 -        ImmutableMap.of("p1", "v1"), ImmutableMap.of());
 +        ImmutableMap.of("p1", "v1"), new HashMap<>());
  
      ServiceConfigVersionResponse hdfsSiteConfigResponseV1 = c1.addDesiredConfig("admin", Collections.singleton(hdfsSiteConfigV1));
      List<ConfigurationResponse> configResponsesDefaultGroup =  Collections.singletonList(
diff --cc ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java
index 8b7f5c5,6dbc9fa..5109d8d
--- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog300Test.java
@@@ -23,9 -28,37 +28,38 @@@ import static org.apache.ambari.server.
  import static org.apache.ambari.server.upgrade.UpgradeCatalog300.AMBARI_CONFIGURATION_TABLE;
  import static org.apache.ambari.server.upgrade.UpgradeCatalog300.COMPONENT_DESIRED_STATE_TABLE;
  import static org.apache.ambari.server.upgrade.UpgradeCatalog300.COMPONENT_STATE_TABLE;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.MEMBERS_GROUP_ID_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.MEMBERS_MEMBER_ID_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.MEMBERS_TABLE;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.MEMBERS_USER_ID_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.REQUEST_DISPLAY_STATUS_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.REQUEST_TABLE;
  import static org.apache.ambari.server.upgrade.UpgradeCatalog300.SECURITY_STATE_COLUMN;
  import static org.apache.ambari.server.upgrade.UpgradeCatalog300.SERVICE_DESIRED_STATE_TABLE;
 +import static org.easymock.EasyMock.anyLong;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.STAGE_DISPLAY_STATUS_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.STAGE_STATUS_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.STAGE_TABLE;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.UNIQUE_USERS_0_INDEX;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_CONSECUTIVE_FAILURES_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_DISPLAY_NAME_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_LDAP_USER_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_LOCAL_USERNAME_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_TABLE;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_USER_ID_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_USER_NAME_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_USER_PASSWORD_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_USER_TYPE_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USERS_VERSION_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_AUTHENTICATION_KEY_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_AUTHENTICATION_TYPE_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_CREATE_TIME_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_PRIMARY_KEY;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_TABLE;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_UPDATE_TIME_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_USER_AUTHENTICATION_ID_COLUMN;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_USER_AUTHENTICATION_USERS_FOREIGN_KEY;
+ import static org.apache.ambari.server.upgrade.UpgradeCatalog300.USER_AUTHENTICATION_USER_ID_COLUMN;
  import static org.easymock.EasyMock.anyObject;
  import static org.easymock.EasyMock.anyString;
  import static org.easymock.EasyMock.capture;

-- 
To stop receiving notification emails like this one, please contact
mradhakrishnan@apache.org.