Browse Source

AMBARI-7533. Wrong hive client configs (aonishuk)

Andrew Onishuk 10 years ago
parent
commit
a172f7555c
22 changed files with 335 additions and 371 deletions
  1. 4 1
      ambari-agent/src/main/python/ambari_agent/ActionQueue.py
  2. 3 2
      ambari-agent/src/main/python/ambari_agent/ActualConfigHandler.py
  3. 55 0
      ambari-agent/src/test/python/ambari_agent/TestActionQueue.py
  4. 23 2
      ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py
  5. 1 0
      ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
  6. 6 0
      ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java
  7. 28 0
      ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java
  8. 20 1
      ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java
  9. 6 0
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/metainfo.xml
  10. 13 23
      ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/package/scripts/hive.py
  11. 6 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/metainfo.xml
  12. 16 15
      ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/package/scripts/hive.py
  13. 1 0
      ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
  14. 16 42
      ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_client.py
  15. 10 36
      ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_metastore.py
  16. 12 38
      ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_server.py
  17. 26 52
      ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py
  18. 27 53
      ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_metastore.py
  19. 27 53
      ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py
  20. 27 53
      ambari-server/src/test/python/stacks/2.1/HIVE/test_hive_metastore.py
  21. 5 0
      ambari-server/src/test/resources/stacks/HDP/2.0.5/services/HIVE/metainfo.xml
  22. 3 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HIVE/metainfo.xml

+ 4 - 1
ambari-agent/src/main/python/ambari_agent/ActionQueue.py

@@ -274,7 +274,10 @@ class ActionQueue(threading.Thread):
         command['hostLevelParams'].has_key('custom_command') and \
         command['hostLevelParams']['custom_command'] == self.CUSTOM_COMMAND_RESTART)):
         configHandler.write_actual_component(command['role'], command['configurationTags'])
-        configHandler.write_client_components(command['serviceName'], command['configurationTags'])
+        if command['hostLevelParams'].has_key('clientsToUpdateConfigs') and \
+          command['hostLevelParams']['clientsToUpdateConfigs']:
+          configHandler.write_client_components(command['serviceName'], command['configurationTags'],
+                                                command['hostLevelParams']['clientsToUpdateConfigs'])
         roleResult['configurationTags'] = configHandler.read_actual_component(command['role'])
 
     self.commandStatuses.put_command_status(command, roleResult)

+ 3 - 2
ambari-agent/src/main/python/ambari_agent/ActualConfigHandler.py

@@ -47,13 +47,14 @@ class ActualConfigHandler:
     filename = component + "_" + self.CONFIG_NAME
     self.write_file(filename, tags)
 
-  def write_client_components(self, serviceName, tags):
+  def write_client_components(self, serviceName, tags, components):
     from LiveStatus import LiveStatus
     for comp in LiveStatus.CLIENT_COMPONENTS:
       if comp['serviceName'] == serviceName:
         componentName = comp['componentName']
         if componentName in self.configTags and \
-            tags != self.configTags[componentName]:
+            tags != self.configTags[componentName] and \
+            (components == ["*"] or componentName in components):
           self.write_actual_component(componentName, tags)
     pass
 

+ 55 - 0
ambari-agent/src/test/python/ambari_agent/TestActionQueue.py

@@ -133,6 +133,19 @@ class TestActionQueue(TestCase):
   }
 
   datanode_restart_command = {
+    'commandType': 'EXECUTION_COMMAND',
+    'role': u'DATANODE',
+    'roleCommand': u'CUSTOM_COMMAND',
+    'commandId': '1-1',
+    'taskId': 9,
+    'clusterName': u'cc',
+    'serviceName': u'HDFS',
+    'configurations':{'global' : {}},
+    'configurationTags':{'global' : { 'tag': 'v123' }},
+    'hostLevelParams':{'custom_command': 'RESTART', 'clientsToUpdateConfigs': []}
+  }
+
+  datanode_restart_command_no_clients_update = {
     'commandType': 'EXECUTION_COMMAND',
     'role': u'DATANODE',
     'roleCommand': u'CUSTOM_COMMAND',
@@ -473,6 +486,48 @@ class TestActionQueue(TestCase):
     self.assertEqual(len(report['reports']), 1)
     self.assertEqual(expected, report['reports'][0])
 
+  @patch.object(ActualConfigHandler, "write_client_components")
+  @patch.object(CustomServiceOrchestrator, "runCommand")
+  @patch("CommandStatusDict.CommandStatusDict")
+  @patch.object(ActionQueue, "status_update_callback")
+  def test_store_configuration_tags_no_clients(self, status_update_callback_mock,
+                                    command_status_dict_mock,
+                                    cso_runCommand_mock, write_client_components_mock):
+    custom_service_orchestrator_execution_result_dict = {
+      'stdout': 'out',
+      'stderr': 'stderr',
+      'structuredOut' : '',
+      'exitcode' : 0
+    }
+    cso_runCommand_mock.return_value = custom_service_orchestrator_execution_result_dict
+
+    config = AmbariConfig().getConfig()
+    tempdir = tempfile.gettempdir()
+    config.set('agent', 'prefix', tempdir)
+    config.set('agent', 'cache_dir', "/var/lib/ambari-agent/cache")
+    config.set('agent', 'tolerate_download_failures', "true")
+    dummy_controller = MagicMock()
+    actionQueue = ActionQueue(config, dummy_controller)
+    actionQueue.execute_command(self.datanode_restart_command_no_clients_update)
+    report = actionQueue.result()
+    expected = {'status': 'COMPLETED',
+                'configurationTags': {'global': {'tag': 'v123'}},
+                'stderr': 'stderr',
+                'stdout': 'out',
+                'clusterName': u'cc',
+                'structuredOut': '""',
+                'roleCommand': u'CUSTOM_COMMAND',
+                'serviceName': u'HDFS',
+                'role': u'DATANODE',
+                'actionId': '1-1',
+                'taskId': 9,
+                'customCommand': 'RESTART',
+                'exitCode': 0}
+    # Agent caches configurationTags if custom_command RESTART completed
+    self.assertEqual(len(report['reports']), 1)
+    self.assertEqual(expected, report['reports'][0])
+    self.assertFalse(write_client_components_mock.called)
+
   @patch.object(ActionQueue, "status_update_callback")
   @patch.object(StackVersionsFileHandler, "read_stack_version")
   @patch.object(CustomServiceOrchestrator, "requestComponentStatus")

+ 23 - 2
ambari-agent/src/test/python/ambari_agent/TestActualConfigHandler.py

@@ -193,6 +193,7 @@ class TestActualConfigHandler(TestCase):
 
     tags1 = { "global": "version1", "core-site": "version2" }
     tags2 = { "global": "version33", "core-site": "version33" }
+    clientsToUpdateConfigs1 = ["*"]
     handler = ActualConfigHandler(config, {})
     handler.write_actual_component('HDFS_CLIENT', tags1)
     handler.write_actual_component('HBASE_CLIENT', tags1)
@@ -201,7 +202,7 @@ class TestActualConfigHandler(TestCase):
     handler.write_actual_component('DATANODE', tags2)
     self.assertEquals(tags2, handler.read_actual_component('DATANODE'))
     self.assertEquals(tags1, handler.read_actual_component('HDFS_CLIENT'))
-    handler.write_client_components('HDFS', tags2)
+    handler.write_client_components('HDFS', tags2, clientsToUpdateConfigs1)
     self.assertEquals(tags2, handler.read_actual_component('HDFS_CLIENT'))
     self.assertEquals(tags1, handler.read_actual_component('HBASE_CLIENT'))
 
@@ -218,16 +219,36 @@ class TestActualConfigHandler(TestCase):
     tags0 = {"global": "version0", "core-site": "version0"}
     tags1 = {"global": "version1", "core-site": "version2"}
     tags2 = {"global": "version33", "core-site": "version33"}
+    clientsToUpdateConfigs1 = ["HDFS_CLIENT","HBASE_CLIENT"]
     configTags = {'HDFS_CLIENT': tags0, 'HBASE_CLIENT': tags1}
     handler = ActualConfigHandler(config, configTags)
     self.assertEquals(tags0, handler.read_actual_component('HDFS_CLIENT'))
     self.assertEquals(tags1, handler.read_actual_component('HBASE_CLIENT'))
-    handler.write_client_components('HDFS', tags2)
+    handler.write_client_components('HDFS', tags2, clientsToUpdateConfigs1)
     self.assertEquals(tags2, handler.read_actual_component('HDFS_CLIENT'))
     self.assertEquals(tags1, handler.read_actual_component('HBASE_CLIENT'))
     self.assertTrue(write_file_mock.called)
     self.assertEqual(1, write_file_mock.call_count)
 
+  @patch.object(ActualConfigHandler, "write_file")
+  def test_write_empty_client_components(self, write_file_mock):
+    config = AmbariConfig().getConfig()
+    tmpdir = tempfile.gettempdir()
+    config.set('agent', 'prefix', tmpdir)
+
+    tags0 = {"global": "version0", "core-site": "version0"}
+    tags1 = {"global": "version1", "core-site": "version2"}
+    tags2 = {"global": "version33", "core-site": "version33"}
+    clientsToUpdateConfigs1 = []
+    configTags = {'HDFS_CLIENT': tags0, 'HBASE_CLIENT': tags1}
+    handler = ActualConfigHandler(config, configTags)
+    self.assertEquals(tags0, handler.read_actual_component('HDFS_CLIENT'))
+    self.assertEquals(tags1, handler.read_actual_component('HBASE_CLIENT'))
+    handler.write_client_components('HDFS', tags2, clientsToUpdateConfigs1)
+    self.assertEquals(tags0, handler.read_actual_component('HDFS_CLIENT'))
+    self.assertEquals(tags1, handler.read_actual_component('HBASE_CLIENT'))
+    self.assertFalse(write_file_mock.called)
+
   @patch.object(ActualConfigHandler, "write_file")
   @patch.object(ActualConfigHandler, "read_file")
   def test_read_actual_component_inmemory(self, read_file_mock, write_file_mock):

+ 1 - 0
ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java

@@ -294,6 +294,7 @@ public class ExecutionCommand extends AgentCommand {
     String MYSQL_JDBC_URL = "mysql_jdbc_url";
     String ORACLE_JDBC_URL = "oracle_jdbc_url";
     String DB_DRIVER_FILENAME = "db_driver_filename";
+    String CLIENTS_TO_UPDATE_CONFIGS = "clientsToUpdateConfigs";
     String REPO_INFO = "repo_info";
     String DB_NAME = "db_name";
     String GLOBAL = "global";

+ 6 - 0
ambari-server/src/main/java/org/apache/ambari/server/api/util/StackExtensionHelper.java

@@ -331,6 +331,7 @@ public class StackExtensionHelper {
     CommandScriptDefinition commandScript = child.getCommandScript();
     String category = child.getCategory();
     String cardinality = child.getCardinality();
+    List<String> clientsToUpdateConfigs = child.getClientsToUpdateConfigs();
 
     if (commandScript != null) {
       result.setCommandScript(child.getCommandScript());
@@ -354,6 +355,11 @@ public class StackExtensionHelper {
     } else {
       result.setClientConfigFiles(parent.getClientConfigFiles());
     }
+    if (clientsToUpdateConfigs != null) {
+      result.setClientsToUpdateConfigs(child.getClientsToUpdateConfigs());
+    } else {
+      result.setClientsToUpdateConfigs(parent.getClientsToUpdateConfigs());
+    }
     // Merge custom command definitions for service
     List<CustomCommandDefinition> mergedCustomCommands =
                 mergeCustomCommandLists(parent.getCustomCommands(),

+ 28 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariManagementControllerImpl.java

@@ -42,6 +42,7 @@ import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_NAM
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_VERSION;
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.GROUP_LIST;
+import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.CLIENTS_TO_UPDATE_CONFIGS;
 
 import java.io.File;
 import java.io.IOException;
@@ -1658,6 +1659,14 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
       .MYSQL_DB_NAME)) {
       hostParams.put(DB_DRIVER_FILENAME, configs.getMySQLJarName());
     }
+
+    List<String> clientsToUpdateConfigsList = componentInfo.getClientsToUpdateConfigs();
+    if (clientsToUpdateConfigsList == null) {
+      clientsToUpdateConfigsList = new ArrayList<String>();
+      clientsToUpdateConfigsList.add("*");
+    }
+    String clientsToUpdateConfigs = gson.toJson(clientsToUpdateConfigsList);
+    hostParams.put(CLIENTS_TO_UPDATE_CONFIGS, clientsToUpdateConfigs);
     execCmd.setHostLevelParams(hostParams);
 
     Map<String, String> roleParams = new TreeMap<String, String>();
@@ -3004,6 +3013,25 @@ public class AmbariManagementControllerImpl implements AmbariManagementControlle
       clusterHostInfo = StageUtils.getClusterHostInfo(
         clusters.getHostsForCluster(cluster.getClusterName()), cluster);
       hostParamsStage = createDefaultHostParams(cluster);
+      StackId stackId = cluster.getDesiredStackVersion();
+      String componentName = null;
+      String serviceName = null;
+      if (actionExecContext.getOperationLevel() != null) {
+        componentName = actionExecContext.getOperationLevel().getHostComponentName();
+        serviceName = actionExecContext.getOperationLevel().getServiceName();
+      }
+      if (serviceName != null && componentName != null) {
+        ComponentInfo componentInfo = ambariMetaInfo.getComponent(
+                stackId.getStackName(), stackId.getStackVersion(),
+                serviceName, componentName);
+        List<String> clientsToUpdateConfigsList = componentInfo.getClientsToUpdateConfigs();
+        if (clientsToUpdateConfigsList == null) {
+          clientsToUpdateConfigsList = new ArrayList<String>();
+          clientsToUpdateConfigsList.add("*");
+        }
+        String clientsToUpdateConfigs = gson.toJson(clientsToUpdateConfigsList);
+        hostParamsStage.put(CLIENTS_TO_UPDATE_CONFIGS, clientsToUpdateConfigs);
+      }
       clusterHostInfoJson = StageUtils.getGson().toJson(clusterHostInfo);
     }
 

+ 20 - 1
ambari-server/src/main/java/org/apache/ambari/server/state/ComponentInfo.java

@@ -40,7 +40,17 @@ public class ComponentInfo {
   private CommandScriptDefinition commandScript;
 
   /**
-   *
+   * List of clients which configs are updated with master component.
+   * If clientsToUpdateConfigs is not specified all clients are considered to be updated.
+   * If clientsToUpdateConfigs is empty no clients are considered to be updated
+   */
+  @XmlElementWrapper(name = "clientsToUpdateConfigs")
+  @XmlElements(@XmlElement(name = "client"))
+  private List<String> clientsToUpdateConfigs;
+
+  /**
+   * Client configuration files
+   * List of files to download in client configuration tar
    */
   @XmlElementWrapper(name = "configFiles")
   @XmlElements(@XmlElement(name = "configFile"))
@@ -79,6 +89,7 @@ public class ComponentInfo {
     category = prototype.category;
     deleted = prototype.deleted;
     cardinality = prototype.cardinality;
+    clientsToUpdateConfigs = prototype.clientsToUpdateConfigs;
     commandScript = prototype.commandScript;
     customCommands = prototype.customCommands;
     dependencies = prototype.dependencies;
@@ -207,4 +218,12 @@ public class ComponentInfo {
   public String getCardinality() {
     return cardinality;
   }
+
+  public List<String> getClientsToUpdateConfigs() {
+    return clientsToUpdateConfigs;
+  }
+
+  public void setClientsToUpdateConfigs(List<String> clientsToUpdateConfigs) {
+    this.clientsToUpdateConfigs = clientsToUpdateConfigs;
+  }
 }

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/metainfo.xml

@@ -30,6 +30,7 @@
           <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <auto-deploy>
             <enabled>true</enabled>
             <co-locate>HIVE/HIVE_SERVER</co-locate>
@@ -46,6 +47,7 @@
           <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
@@ -74,6 +76,7 @@
           <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <commandScript>
             <script>scripts/mysql_server.py</script>
             <scriptType>PYTHON</scriptType>
@@ -85,6 +88,9 @@
           <displayName>WebHCat Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs>
+            <client>HCAT</client>
+          </clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>HDFS/HDFS_CLIENT</name>

+ 13 - 23
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/HIVE/package/scripts/hive.py

@@ -53,23 +53,6 @@ def hive(name=None):
             recursive=True
   )
 
-  XmlConfig("hive-site.xml",
-            conf_dir=params.hive_conf_dir,
-            configurations=params.config['configurations']['hive-site'],
-            configuration_attributes=params.config['configuration_attributes']['hive-site'],
-            owner=params.hive_user,
-            group=params.user_group,
-            mode=0644
-  )
-
-  XmlConfig("hive-site.xml",
-            conf_dir=params.hive_server_conf_dir,
-            configurations=params.config['configurations']['hive-site'],
-            configuration_attributes=params.config['configuration_attributes']['hive-site'],
-            owner=params.hive_user,
-            group=params.user_group,
-            mode=0600
-  )
 
   environment = {
     "no_proxy": format("{ambari_server_hostname}")
@@ -100,14 +83,21 @@ def hive(name=None):
     crt_directory(params.hive_pid_dir)
     crt_directory(params.hive_log_dir)
     crt_directory(params.hive_var_lib)
+    # Setting mode for hive-site
+    hive_site_mode = 0600
+  else:
+    # Setting mode for hive-site
+    hive_site_mode = 0644
 
-  File(format("{hive_conf_dir}/hive-env.sh"),
-       owner=params.hive_user,
-       group=params.user_group,
-       content=InlineTemplate(params.hive_env_sh_template)
+  XmlConfig("hive-site.xml",
+            conf_dir=params.hive_config_dir,
+            configurations=params.config['configurations']['hive-site'],
+            configuration_attributes=params.config['configuration_attributes']['hive-site'],
+            owner=params.hive_user,
+            group=params.user_group,
+            mode=hive_site_mode
   )
-
-  File(format("{hive_server_conf_dir}/hive-env.sh"),
+  File(format("{hive_config_dir}/hive-env.sh"),
        owner=params.hive_user,
        group=params.user_group,
        content=InlineTemplate(params.hive_env_sh_template)

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/metainfo.xml

@@ -30,6 +30,7 @@
           <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <auto-deploy>
             <enabled>true</enabled>
             <co-locate>HIVE/HIVE_SERVER</co-locate>
@@ -46,6 +47,7 @@
           <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
@@ -80,6 +82,9 @@
           <displayName>WebHCat Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs>
+            <client>HCAT</client>
+          </clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>HDFS/HDFS_CLIENT</name>
@@ -129,6 +134,7 @@
           <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>0-1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <commandScript>
             <script>scripts/mysql_server.py</script>
             <scriptType>PYTHON</scriptType>

+ 16 - 15
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/HIVE/package/scripts/hive.py

@@ -92,7 +92,21 @@ def hive(name=None):
     crt_directory(params.hive_pid_dir)
     crt_directory(params.hive_log_dir)
     crt_directory(params.hive_var_lib)
-    
+
+  XmlConfig("hive-site.xml",
+            conf_dir=params.hive_config_dir,
+            configurations=params.config['configurations']['hive-site'],
+            configuration_attributes=params.config['configuration_attributes']['hive-site'],
+            owner=params.hive_user,
+            group=params.user_group,
+            mode=0644)
+
+  File(format("{hive_config_dir}/hive-env.sh"),
+       owner=params.hive_user,
+       group=params.user_group,
+       content=InlineTemplate(params.hive_env_sh_template)
+    )
+
 def fill_conf_dir(component_conf_dir):
   import params
   
@@ -110,20 +124,7 @@ def fill_conf_dir(component_conf_dir):
             group=params.user_group,
             mode=0644)
 
-  XmlConfig("hive-site.xml",
-            conf_dir=component_conf_dir,
-            configurations=params.config['configurations']['hive-site'],
-            configuration_attributes=params.config['configuration_attributes']['hive-site'],
-            owner=params.hive_user,
-            group=params.user_group,
-            mode=0644)
-  
-  File(format("{component_conf_dir}/hive-env.sh"),
-       owner=params.hive_user,
-       group=params.user_group,
-       content=InlineTemplate(params.hive_env_sh_template)
-  )
-  
+
   crt_file(format("{component_conf_dir}/hive-default.xml.template"))
   crt_file(format("{component_conf_dir}/hive-env.sh.template"))
 

+ 1 - 0
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java

@@ -6588,6 +6588,7 @@ public class AmbariManagementControllerTest {
       (0).getExecutionCommandWrapper().getExecutionCommand()
       .getHostLevelParams();
     Assert.assertNotNull(paramsCmd.get("repo_info"));
+    Assert.assertNotNull(paramsCmd.get("clientsToUpdateConfigs"));
   }
 
   @Test

+ 16 - 42
ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_client.py

@@ -38,32 +38,19 @@ class TestHiveClient(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0644,
-      conf_dir = '/etc/hive/conf',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-      content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-      owner = 'hive',
-      group = 'hadoop',
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              owner = 'hive',
+                              group = 'hadoop',
+                              mode = 0644,
+                              conf_dir = '/etc/hive/conf',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
     )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
       owner = 'hive',
       group = 'hadoop',
@@ -110,32 +97,19 @@ class TestHiveClient(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0644,
-      conf_dir = '/etc/hive/conf',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-      content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-      owner = 'hive',
-      group = 'hadoop',
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              owner = 'hive',
+                              group = 'hadoop',
+                              mode = 0644,
+                              conf_dir = '/etc/hive/conf',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
     )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
       owner = 'hive',
       group = 'hadoop',

+ 10 - 36
ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_metastore.py

@@ -174,22 +174,6 @@ class TestHiveMetastore(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0644,
-      conf_dir = '/etc/hive/conf',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
@@ -216,10 +200,13 @@ class TestHiveMetastore(RMFTestCase):
       mode = 0755,
       recursive = True,
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-      content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
       owner = 'hive',
       group = 'hadoop',
+      mode = 0600,
+      conf_dir = '/etc/hive/conf.server',
+      configurations = self.getConfig()['configurations']['hive-site'],
+      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
     )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
@@ -251,22 +238,6 @@ class TestHiveMetastore(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0644,
-      conf_dir = '/etc/hive/conf',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
@@ -293,10 +264,13 @@ class TestHiveMetastore(RMFTestCase):
       mode = 0755,
       recursive = True,
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-      content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
       owner = 'hive',
       group = 'hadoop',
+      mode = 0600,
+      conf_dir = '/etc/hive/conf.server',
+      configurations = self.getConfig()['configurations']['hive-site'],
+      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
     )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),

+ 12 - 38
ambari-server/src/test/python/stacks/1.3.2/HIVE/test_hive_server.py

@@ -220,22 +220,6 @@ class TestHiveServer(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-                              owner = 'hive',
-                              group = 'hadoop',
-                              mode = 0644,
-                              conf_dir = '/etc/hive/conf',
-                              configurations = self.getConfig()['configurations']['hive-site'],
-                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
@@ -262,11 +246,14 @@ class TestHiveServer(RMFTestCase):
       mode = 0755,
       recursive = True,
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
                               owner = 'hive',
                               group = 'hadoop',
-                              )
+                              mode = 0600,
+                              conf_dir = '/etc/hive/conf.server',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
+    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
       owner = 'hive',
@@ -325,22 +312,6 @@ class TestHiveServer(RMFTestCase):
       group = 'hadoop',
       recursive = True,
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-                              owner = 'hive',
-                              group = 'hadoop',
-                              mode = 0644,
-                              conf_dir = '/etc/hive/conf',
-                              configurations = self.getConfig()['configurations']['hive-site'],
-                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-      owner = 'hive',
-      group = 'hadoop',
-      mode = 0600,
-      conf_dir = '/etc/hive/conf.server',
-      configurations = self.getConfig()['configurations']['hive-site'],
-      configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
-    )
     self.assertResourceCalled('Execute', "/bin/sh -c 'cd /usr/lib/ambari-agent/ && curl -kf -x \"\" --retry 5 http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar -o DBConnectionVerification.jar'",
       not_if = '[ -f DBConnectionVerification.jar]',
       environment = {'no_proxy': 'c6401.ambari.apache.org'}
@@ -367,11 +338,14 @@ class TestHiveServer(RMFTestCase):
       mode = 0755,
       recursive = True,
     )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
                               owner = 'hive',
                               group = 'hadoop',
-                              )
+                              mode = 0600,
+                              conf_dir = '/etc/hive/conf.server',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
+    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
       content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
       owner = 'hive',

+ 26 - 52
ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py

@@ -41,19 +41,6 @@ class TestHiveClient(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -87,19 +74,6 @@ class TestHiveClient(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -124,6 +98,19 @@ class TestHiveClient(RMFTestCase):
         environment = {'no_proxy': 'c6401.ambari.apache.org'},
         not_if = '[ -f DBConnectionVerification.jar]',
     )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
     self.assertNoMoreResources()
 
 
@@ -147,19 +134,6 @@ class TestHiveClient(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -193,19 +167,6 @@ class TestHiveClient(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -230,4 +191,17 @@ class TestHiveClient(RMFTestCase):
         environment = {'no_proxy': 'c6401.ambari.apache.org'},
         not_if = '[ -f DBConnectionVerification.jar]',
     )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
     self.assertNoMoreResources()

+ 27 - 53
ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_metastore.py

@@ -120,19 +120,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -166,19 +153,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -231,6 +205,19 @@ class TestHiveMetastore(RMFTestCase):
         mode = 0755,
         recursive = True,
     )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
 
   def assert_configure_secured(self):
     self.assertResourceCalled('Directory', '/etc/hive/conf.server',
@@ -246,19 +233,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -292,19 +266,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -356,4 +317,17 @@ class TestHiveMetastore(RMFTestCase):
         group = 'hadoop',
         mode = 0755,
         recursive = True,
-    )
+    )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )

+ 27 - 53
ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_server.py

@@ -229,19 +229,6 @@ class TestHiveServer(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -275,19 +262,6 @@ class TestHiveServer(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -340,7 +314,20 @@ class TestHiveServer(RMFTestCase):
         mode = 0755,
         recursive = True,
     )
-    
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
+
   def assert_configure_secured(self):
     self.assertResourceCalled('HdfsDirectory', '/apps/hive/warehouse',
         security_enabled = True,
@@ -386,19 +373,6 @@ class TestHiveServer(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -432,19 +406,6 @@ class TestHiveServer(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -497,6 +458,19 @@ class TestHiveServer(RMFTestCase):
         mode = 0755,
         recursive = True,
     )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
 
   @patch("hive_service.check_fs_root")
   @patch("time.time")

+ 27 - 53
ambari-server/src/test/python/stacks/2.1/HIVE/test_hive_metastore.py

@@ -122,19 +122,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -156,19 +143,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -212,6 +186,19 @@ class TestHiveMetastore(RMFTestCase):
         mode = 0755,
         recursive = True,
     )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )
 
   def assert_configure_secured(self):
     self.assertResourceCalled('Directory', '/etc/hive/conf.server',
@@ -227,19 +214,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf.server',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf.server/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -261,19 +235,6 @@ class TestHiveMetastore(RMFTestCase):
         owner = 'hive',
         configurations = self.getConfig()['configurations']['mapred-site'],
     )
-    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
-        group = 'hadoop',
-        conf_dir = '/etc/hive/conf',
-        mode = 0644,
-        configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
-        owner = 'hive',
-        configurations = self.getConfig()['configurations']['hive-site'],
-    )
-    self.assertResourceCalled('File', '/etc/hive/conf/hive-env.sh',
-        content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
-        owner = 'hive',
-        group = 'hadoop',
-    )
     self.assertResourceCalled('File', '/etc/hive/conf/hive-default.xml.template',
         owner = 'hive',
         group = 'hadoop',
@@ -316,4 +277,17 @@ class TestHiveMetastore(RMFTestCase):
         group = 'hadoop',
         mode = 0755,
         recursive = True,
-    )
+    )
+    self.assertResourceCalled('XmlConfig', 'hive-site.xml',
+                              group = 'hadoop',
+                              conf_dir = '/etc/hive/conf.server',
+                              mode = 0644,
+                              configuration_attributes = self.getConfig()['configuration_attributes']['hive-site'],
+                              owner = 'hive',
+                              configurations = self.getConfig()['configurations']['hive-site'],
+                              )
+    self.assertResourceCalled('File', '/etc/hive/conf.server/hive-env.sh',
+                              content = InlineTemplate(self.getConfig()['configurations']['hive-env']['content']),
+                              owner = 'hive',
+                              group = 'hadoop',
+                              )

+ 5 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.5/services/HIVE/metainfo.xml

@@ -28,6 +28,7 @@
           <name>HIVE_METASTORE</name>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <auto-deploy>
             <enabled>true</enabled>
             <co-locate>HIVE/HIVE_SERVER</co-locate>
@@ -43,6 +44,7 @@
           <name>HIVE_SERVER</name>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
@@ -85,6 +87,9 @@
           <displayName>WebHCat Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs>
+            <client>HCAT</client>
+          </clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>HDFS/HDFS_CLIENT</name>

+ 3 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HIVE/metainfo.xml

@@ -32,6 +32,7 @@
           <displayName>Hive Metastore</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <auto-deploy>
             <enabled>true</enabled>
             <co-locate>HIVE/HIVE_SERVER</co-locate>
@@ -48,6 +49,7 @@
           <displayName>HiveServer2</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <dependencies>
             <dependency>
               <name>ZOOKEEPER/ZOOKEEPER_SERVER</name>
@@ -90,6 +92,7 @@
           <displayName>MySQL Server</displayName>
           <category>MASTER</category>
           <cardinality>1</cardinality>
+          <clientsToUpdateConfigs></clientsToUpdateConfigs>
           <commandScript>
             <script>scripts/mysql_server.py</script>
             <scriptType>PYTHON</scriptType>