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

aonishuk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new d4467fb  AMBARI-22561. Need to address HDP-GPL repo update after user 
accepts license in post-install scenario (aonishuk)
d4467fb is described below

commit d4467fb18448d4b10d12692217ba1c57a00b37b0
Author: Andrew Onishuk <[email protected]>
AuthorDate: Sun Jan 28 12:52:31 2018 +0200

    AMBARI-22561. Need to address HDP-GPL repo update after user accepts 
license in post-install scenario (aonishuk)
---
 .../libraries/functions/lzo_utils.py               |   9 +-
 .../libraries/functions/repository_util.py         |  99 ++++++++------
 .../resource_management/libraries/script/script.py |  10 +-
 .../ambari/server/agent/CommandRepository.java     |   8 ++
 .../custom_actions/scripts/install_packages.py     |   8 +-
 .../before-INSTALL/scripts/repo_initialization.py  |   9 +-
 .../python/stacks/2.0.6/OOZIE/test_oozie_server.py | 152 ++++++++++++++++++++-
 .../python/stacks/2.2/configs/oozie-upgrade.json   |  39 +++++-
 .../src/test/python/stacks/utils/RMFTestCase.py    |   2 +
 9 files changed, 283 insertions(+), 53 deletions(-)

diff --git 
a/ambari-common/src/main/python/resource_management/libraries/functions/lzo_utils.py
 
b/ambari-common/src/main/python/resource_management/libraries/functions/lzo_utils.py
index 68ee607..c505969 100644
--- 
a/ambari-common/src/main/python/resource_management/libraries/functions/lzo_utils.py
+++ 
b/ambari-common/src/main/python/resource_management/libraries/functions/lzo_utils.py
@@ -54,6 +54,9 @@ def get_lzo_packages():
 
   return lzo_packages
 
+def is_gpl_license_accepted():
+  return default("/hostLevelParams/gpl_license_accepted", False)
+
 def should_install_lzo():
   """
   Return true if lzo is enabled via core-site.xml and GPL license (required 
for lzo) is accepted.
@@ -65,8 +68,7 @@ def should_install_lzo():
   if not lzo_enabled:
     return False
 
-  is_gpl_license_accepted = default("/hostLevelParams/gpl_license_accepted", 
False)
-  if not is_gpl_license_accepted:
+  if not is_gpl_license_accepted():
     Logger.warning(INSTALLING_LZO_WITHOUT_GPL)
     return False
 
@@ -79,6 +81,9 @@ def install_lzo_if_needed():
   if not should_install_lzo():
     return
 
+  # If user has just accepted GPL license. GPL repository can not yet be 
present.
+  Script.repository_util.create_repo_files()
+
   lzo_packages = get_lzo_packages()
 
   config = Script.get_config()
diff --git 
a/ambari-common/src/main/python/resource_management/libraries/functions/repository_util.py
 
b/ambari-common/src/main/python/resource_management/libraries/functions/repository_util.py
index ef54f40..7faa33f 100644
--- 
a/ambari-common/src/main/python/resource_management/libraries/functions/repository_util.py
+++ 
b/ambari-common/src/main/python/resource_management/libraries/functions/repository_util.py
@@ -17,61 +17,83 @@ limitations under the License.
 
 """
 
+from ambari_commons.os_check import OSCheck
 from resource_management.core.exceptions import Fail
 from resource_management.core.logger import Logger
 from resource_management.libraries.resources.repository import Repository
+from resource_management.libraries.functions.is_empty import is_empty
 import ambari_simplejson as json
 
 
-__all__ = ["create_repo_files", "CommandRepository"]
+__all__ = ["RepositoryUtil", "CommandRepository"]
 
 # components_lits = repoName + postfix
 UBUNTU_REPO_COMPONENTS_POSTFIX = "main"
 
+class RepositoryUtil:
+  def __init__(self, config, tags_to_skip):
+    self.tags_to_skip = tags_to_skip
 
-def create_repo_files(template, command_repository):
-  """
-  Creates repositories in a consistent manner for all types
-  :param command_repository: a CommandRepository instance
-  :type command_repository CommandRepository
-  :return: a dictionary with repo ID => repo file name mapping
-  """
+    # repo templates
+    repo_file = config['repositoryFile']
+    repo_rhel_suse =  
config['configurations']['cluster-env']['repo_suse_rhel_template']
+    repo_ubuntu =  
config['configurations']['cluster-env']['repo_ubuntu_template']
 
-  if command_repository.version_id is None:
-    raise Fail("The command repository was not parsed correctly")
+    if is_empty(repo_file):
+      return
 
-  if 0 == len(command_repository.items):
-    Logger.warning(
-      "Repository for {0}/{1} has no repositories.  Ambari may not be managing 
this version.".format(
-        command_repository.stack_name, command_repository.version_string))
-    return {}
+    self.template = repo_rhel_suse if OSCheck.is_redhat_family() or 
OSCheck.is_suse_family() else repo_ubuntu
+    self.command_repository = CommandRepository(repo_file)
 
-  append_to_file = False  # initialize to False to create the file anew.
-  repo_files = {}
-
-  for repository in command_repository.items:
-
-    if repository.repo_id is None:
-      raise Fail("Repository with url {0} has no 
id".format(repository.base_url))
+  def create_repo_files(self):
+    """
+    Creates repositories in a consistent manner for all types
+    :return: a dictionary with repo ID => repo file name mapping
+    """
+    if self.command_repository.version_id is None:
+      raise Fail("The command repository was not parsed correctly")
 
-    if not repository.ambari_managed:
+    if 0 == len(self.command_repository.items):
       Logger.warning(
-        "Repository for {0}/{1}/{2} is not managed by Ambari".format(
-          command_repository.stack_name, command_repository.version_string, 
repository.repo_id))
-    else:
-      Repository(repository.repo_id,
-                 action="create",
-                 base_url=repository.base_url,
-                 mirror_list=repository.mirrors_list,
-                 repo_file_name=command_repository.repo_filename,
-                 repo_template=template,
-                 components=repository.ubuntu_components,
-                 append_to_file=append_to_file)
-      append_to_file = True
-      repo_files[repository.repo_id] = command_repository.repo_filename
-
-  return repo_files
+        "Repository for {0}/{1} has no repositories.  Ambari may not be 
managing this version.".format(
+          self.command_repository.stack_name, 
self.command_repository.version_string))
+      return {}
+
+    append_to_file = False  # initialize to False to create the file anew.
+    repo_files = {}
+    for repository in self.command_repository.items:
+      if repository.repo_id is None:
+        raise Fail("Repository with url {0} has no 
id".format(repository.base_url))
+
+      if self.tags_to_skip & repository.tags:
+        Logger.info("Repository with url {0} is not created due to its tags: 
{1}".format(repository.base_url, repository.tags))
+        continue
+
+      if not repository.ambari_managed:
+        Logger.warning(
+          "Repository for {0}/{1}/{2} is not managed by Ambari".format(
+            self.command_repository.stack_name, 
self.command_repository.version_string, repository.repo_id))
+      else:
+        Repository(repository.repo_id,
+                   action="create",
+                   base_url=repository.base_url,
+                   mirror_list=repository.mirrors_list,
+                   repo_file_name=self.command_repository.repo_filename,
+                   repo_template=self.template,
+                   components=repository.ubuntu_components,
+                   append_to_file=append_to_file)
+        append_to_file = True
+        repo_files[repository.repo_id] = self.command_repository.repo_filename
+
+    return repo_files
 
+def create_repo_files(template, command_repository):
+  """
+  DEPRECATED. Is present for usage by old mpacks.
+  Please use Script.repository_util.create_repo_files() instead.
+  """
+  from resource_management.libraries.script import Script
+  return RepositoryUtil(Script.get_config(), set()).create_repo_files()
 
 def _find_value(dictionary, key, default=None):
   """
@@ -146,6 +168,7 @@ class CommandRepositoryItem(object):
     self.components = _find_value(json_dict, 'components')
     self.base_url = _find_value(json_dict, 'baseUrl')
     self.mirrors_list = _find_value(json_dict, 'mirrorsList')
+    self.tags = set(_find_value(json_dict, 'tags', default=[]))
     self.ambari_managed = _find_value(json_dict, 'ambariManaged', default=True)
 
     self.ubuntu_components = [self.distribution if self.distribution else 
self.repo_name] + \
diff --git 
a/ambari-common/src/main/python/resource_management/libraries/script/script.py 
b/ambari-common/src/main/python/resource_management/libraries/script/script.py
index 88e5336..1faaf51 100644
--- 
a/ambari-common/src/main/python/resource_management/libraries/script/script.py
+++ 
b/ambari-common/src/main/python/resource_management/libraries/script/script.py
@@ -53,7 +53,7 @@ from resource_management.libraries.functions.version import 
format_stack_version
 from resource_management.libraries.functions import stack_tools
 from resource_management.libraries.functions.constants import Direction
 from resource_management.libraries.script.config_dictionary import 
ConfigDictionary, UnknownConfiguration
-from resource_management.libraries.functions.repository_util import 
CommandRepository
+from resource_management.libraries.functions.repository_util import 
CommandRepository, RepositoryUtil
 from resource_management.core.resources.system import Execute
 from contextlib import closing
 from resource_management.libraries.functions.stack_features import 
check_stack_feature
@@ -356,6 +356,14 @@ class Script(object):
       Logger.logger.exception("Can not read json file with command parameters: 
")
       sys.exit(1)
 
+    from resource_management.libraries.functions import lzo_utils
+
+    repo_tags_to_skip = set()
+    if not lzo_utils.is_gpl_license_accepted():
+      repo_tags_to_skip.add("GPL")
+
+    Script.repository_util = RepositoryUtil(Script.config, repo_tags_to_skip)
+
     # Run class method depending on a command type
     try:
       method = self.choose_method_to_execute(self.command_name)
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
index 449d2d5..83914ff 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
@@ -20,11 +20,13 @@ package org.apache.ambari.server.agent;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.ambari.annotations.Experimental;
 import org.apache.ambari.annotations.ExperimentalFeature;
 import org.apache.ambari.server.orm.entities.RepositoryEntity;
 import org.apache.ambari.server.state.RepositoryInfo;
+import org.apache.ambari.server.state.stack.RepoTag;
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 import com.google.gson.annotations.SerializedName;
@@ -255,6 +257,10 @@ public class CommandRepository {
     @SerializedName("mirrorsList")
     private String m_mirrorsList;
 
+    @SerializedName("tags")
+    private Set<RepoTag> m_tags;
+
+
     private transient String m_osType;
 
     private Repository(RepositoryInfo info) {
@@ -265,6 +271,7 @@ public class CommandRepository {
       m_distribution = info.getDistribution();
       m_components = info.getComponents();
       m_mirrorsList = info.getMirrorsList();
+      m_tags = info.getTags();
     }
 
     private Repository(String osType, RepositoryEntity entity) {
@@ -275,6 +282,7 @@ public class CommandRepository {
       m_components = entity.getComponents();
       m_mirrorsList = entity.getMirrorsList();
       m_osType = osType;
+      m_tags = entity.getTags();
     }
 
     public void setRepoId(String repoId){
diff --git 
a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py 
b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
index 11b571b..cd172af 100644
--- 
a/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
+++ 
b/ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
@@ -36,7 +36,7 @@ from 
resource_management.libraries.functions.repo_version_history \
 from resource_management.core.providers import get_provider
 from resource_management.core.resources.system import Link
 from resource_management.libraries.functions import StackFeature
-from resource_management.libraries.functions.repository_util import 
create_repo_files, CommandRepository
+from resource_management.libraries.functions.repository_util import 
CommandRepository
 from resource_management.libraries.functions.stack_features import 
check_stack_feature
 from resource_management.libraries.resources.repository import Repository
 from resource_management.libraries.script.script import Script
@@ -71,10 +71,6 @@ class InstallPackages(Script):
     except KeyError:
       raise Fail("The command repository indicated by 'repositoryFile' was not 
found")
 
-    repo_rhel_suse = 
config['configurations']['cluster-env']['repo_suse_rhel_template']
-    repo_ubuntu = 
config['configurations']['cluster-env']['repo_ubuntu_template']
-    template = repo_rhel_suse if OSCheck.is_redhat_family() or 
OSCheck.is_suse_family() else repo_ubuntu
-
     # Handle a SIGTERM and SIGINT gracefully
     signal.signal(signal.SIGTERM, self.abort_handler)
     signal.signal(signal.SIGINT, self.abort_handler)
@@ -109,7 +105,7 @@ class InstallPackages(Script):
       else:
         Logger.info(
           "Will install packages for repository version 
{0}".format(self.repository_version))
-        new_repo_files = create_repo_files(template, command_repository)
+        new_repo_files = Script.repository_util.create_repo_files()
         self.repo_files.update(new_repo_files)
     except Exception as err:
       Logger.logger.exception("Cannot install repository files. Error: 
{0}".format(str(err)))
diff --git 
a/ambari-server/src/main/resources/stack-hooks/before-INSTALL/scripts/repo_initialization.py
 
b/ambari-server/src/main/resources/stack-hooks/before-INSTALL/scripts/repo_initialization.py
index 9f2b344..9a698b4 100644
--- 
a/ambari-server/src/main/resources/stack-hooks/before-INSTALL/scripts/repo_initialization.py
+++ 
b/ambari-server/src/main/resources/stack-hooks/before-INSTALL/scripts/repo_initialization.py
@@ -19,7 +19,8 @@ limitations under the License.
 
 from ambari_commons.os_check import OSCheck
 from resource_management.libraries.resources.repository import Repository
-from resource_management.libraries.functions.repository_util import 
create_repo_files, CommandRepository, UBUNTU_REPO_COMPONENTS_POSTFIX
+from resource_management.libraries.functions.repository_util import 
CommandRepository, UBUNTU_REPO_COMPONENTS_POSTFIX
+from resource_management.libraries.script.script import Script
 from resource_management.core.logger import Logger
 import ambari_simplejson as json
 
@@ -62,13 +63,13 @@ def install_repos():
   if params.host_sys_prepped:
     return
 
-  template = params.repo_rhel_suse if OSCheck.is_suse_family() or 
OSCheck.is_redhat_family() else params.repo_ubuntu
-
   # use this newer way of specifying repositories, if available
   if params.repo_file is not None:
-    create_repo_files(template, CommandRepository(params.repo_file))
+    Script.repository_util.create_repo_files()
     return
 
+  template = params.repo_rhel_suse if OSCheck.is_suse_family() or 
OSCheck.is_redhat_family() else params.repo_ubuntu
+
   _alter_repo("create", params.repo_info, template)
 
   if params.service_repo_info:
diff --git 
a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py 
b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
index 10a83d6..09c4227 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/OOZIE/test_oozie_server.py
@@ -28,6 +28,44 @@ from resource_management.libraries import functions
 from resource_management.libraries.providers.hdfs_resource import WebHDFSUtil
 import tempfile
 
+REPOSITORY_FILE_DICT = {
+        "resolved": True, 
+        "repoVersion": "2.6.4.0-52", 
+        "repositories": [
+            {
+                "tags": [], 
+                "ambariManaged": True, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52";,
 
+                "repoName": "HDP", 
+                "repoId": "HDP-2.6-repo-1", 
+                "applicableServices": []
+            }, 
+            {
+                "repoName": "HDP-GPL", 
+                "tags": [
+                    "GPL"
+                ], 
+                "ambariManaged": True, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52";,
 
+                "repoId": "HDP-2.6-GPL-repo-1"
+            }, 
+            {
+                "repoName": "HDP-UTILS", 
+                "tags": [], 
+                "ambariManaged": True, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6";, 
+                "repoId": "HDP-UTILS-1.1.0.22-repo-1"
+            }
+        ], 
+        "feature": {
+            "preInstalled": False, 
+            "scoped": True
+        }, 
+        "stackName": "HDP", 
+        "repoVersionId": 1, 
+        "repoFileName": "ambari-hdp-1"
+    }
+
 def format_package_name_side_effect(name):
   return name.replace("${stack_version}", "1_2_3_4")
 
@@ -1219,6 +1257,34 @@ class TestOozieServer(RMFTestCase):
       sudo = True )
 
     self.assertResourceCalled('Directory', 
'/usr/hdp/current/oozie-server/libext', mode = 0777)
+    
+    self.assertResourceCalled('Repository', 'HDP-2.6-repo-1',
+        append_to_file = False,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = [u'HDP', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-2.6-GPL-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = [u'HDP-GPL', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-UTILS-1.1.0.22-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6',
+        action = ['create'],
+        components = [u'HDP-UTILS', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
     self.assertResourceCalled('Package', ('lzo'), retry_count=5, 
retry_on_repo_unavailability= False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4'), retry_count = 
5, retry_on_repo_unavailability = False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4-native'), 
retry_count = 5, retry_on_repo_unavailability = False)
@@ -1260,6 +1326,7 @@ class TestOozieServer(RMFTestCase):
     version = '2.3.0.0-1234'
     json_content['commandParams']['version'] = version
     json_content['hostLevelParams']['stack_version'] = "2.3"
+    json_content['repositoryFile'] = REPOSITORY_FILE_DICT
 
     mocks_dict = {}
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + 
"/scripts/oozie_server.py",
@@ -1283,6 +1350,33 @@ class TestOozieServer(RMFTestCase):
 
     self.assertResourceCalled('Directory', 
'/usr/hdp/current/oozie-server/libext', mode = 0777)
 
+    self.assertResourceCalled('Repository', 'HDP-2.6-repo-1',
+        append_to_file = False,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-2.6-GPL-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP-GPL', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-UTILS-1.1.0.22-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6',
+        action = ['create'],
+        components = ['HDP-UTILS', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
     self.assertResourceCalled('Package', ('lzo'), retry_count=5, 
retry_on_repo_unavailability= False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4'), retry_count = 
5, retry_on_repo_unavailability = False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4-native'), 
retry_count = 5, retry_on_repo_unavailability = False)
@@ -1331,6 +1425,7 @@ class TestOozieServer(RMFTestCase):
       'type': 'rolling_upgrade',
       'orchestration': 'STANDARD'
     }
+    json_content['repositoryFile'] = REPOSITORY_FILE_DICT
 
     mocks_dict = {}
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + 
"/scripts/oozie_server.py",
@@ -1355,6 +1450,33 @@ class TestOozieServer(RMFTestCase):
 
     self.assertResourceCalled('Directory', 
'/usr/hdp/current/oozie-server/libext', mode = 0777)
 
+    self.assertResourceCalled('Repository', 'HDP-2.6-repo-1',
+        append_to_file = False,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-2.6-GPL-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP-GPL', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-UTILS-1.1.0.22-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6',
+        action = ['create'],
+        components = ['HDP-UTILS', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
     self.assertResourceCalled('Package', ('lzo'), retry_count=5, 
retry_on_repo_unavailability= False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4'), retry_count = 
5, retry_on_repo_unavailability = False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4-native'), 
retry_count = 5, retry_on_repo_unavailability = False)
@@ -1573,7 +1695,8 @@ class TestOozieServer(RMFTestCase):
     version = '2.3.0.0-1234'
     json_content['commandParams']['version'] = version
     json_content['clusterHostInfo']['falcon_server_hosts'] = 
['c6401.ambari.apache.org']
-
+    json_content['repositoryFile'] = REPOSITORY_FILE_DICT
+    
     mocks_dict = {}
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + 
"/scripts/oozie_server.py",
      classname = "OozieServer", command = "pre_upgrade_restart", config_dict = 
json_content,
@@ -1595,6 +1718,33 @@ class TestOozieServer(RMFTestCase):
 
     self.assertResourceCalled('Directory', 
'/usr/hdp/current/oozie-server/libext', mode = 0777)
 
+    self.assertResourceCalled('Repository', 'HDP-2.6-repo-1',
+        append_to_file = False,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-2.6-GPL-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52',
+        action = ['create'],
+        components = ['HDP-GPL', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
+    self.assertResourceCalled('Repository', 'HDP-UTILS-1.1.0.22-repo-1',
+        append_to_file = True,
+        base_url = 
'http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6',
+        action = ['create'],
+        components = ['HDP-UTILS', 'main'],
+        repo_template = UnknownConfigurationMock(),
+        repo_file_name = 'ambari-hdp-1',
+        mirror_list = None,
+    )
     self.assertResourceCalled('Package', ('lzo'), retry_count=5, 
retry_on_repo_unavailability= False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4'), retry_count = 
5, retry_on_repo_unavailability = False)
     self.assertResourceCalled('Package', ('hadooplzo_1_2_3_4-native'), 
retry_count = 5, retry_on_repo_unavailability = False)
diff --git 
a/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json 
b/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json
index 29cbddc..4e9a62f 100644
--- a/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json
+++ b/ambari-server/src/test/python/stacks/2.2/configs/oozie-upgrade.json
@@ -66,7 +66,44 @@
     "role": "OOZIE_SERVER",
     "forceRefreshConfigTags": [], 
     "taskId": 305, 
-    "public_hostname": "c6402.ambari.apache.org", 
+    "public_hostname": "c6402.ambari.apache.org",
+    "repositoryFile": {
+        "resolved": true, 
+        "repoVersion": "2.6.4.0-52", 
+        "repositories": [
+            {
+                "tags": [], 
+                "ambariManaged": true, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.6.4.0-52";,
 
+                "repoName": "HDP", 
+                "repoId": "HDP-2.6-repo-1", 
+                "applicableServices": []
+            }, 
+            {
+                "repoName": "HDP-GPL", 
+                "tags": [
+                    "GPL"
+                ], 
+                "ambariManaged": true, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP-GPL/centos6/2.x/BUILDS/2.6.4.0-52";,
 
+                "repoId": "HDP-2.6-GPL-repo-1"
+            }, 
+            {
+                "repoName": "HDP-UTILS", 
+                "tags": [], 
+                "ambariManaged": true, 
+                "baseUrl": 
"http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos6";, 
+                "repoId": "HDP-UTILS-1.1.0.22-repo-1"
+            }
+        ], 
+        "feature": {
+            "preInstalled": false, 
+            "scoped": true
+        }, 
+        "stackName": "HDP", 
+        "repoVersionId": 1, 
+        "repoFileName": "ambari-hdp-1"
+    },
     "configurations": {
         "oozie-env": {
             "oozie_heapsize": "2048m", 
diff --git a/ambari-server/src/test/python/stacks/utils/RMFTestCase.py 
b/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
index ae33a2a..00dc738 100644
--- a/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
+++ b/ambari-server/src/test/python/stacks/utils/RMFTestCase.py
@@ -38,6 +38,7 @@ with patch("platform.linux_distribution", return_value = 
('Suse','11','Final')):
     from resource_management.libraries.script.config_dictionary import 
ConfigDictionary
     from resource_management.libraries.script.script import Script
     from resource_management.libraries.script.config_dictionary import 
UnknownConfiguration
+    from resource_management.libraries.functions.repository_util import 
RepositoryUtil
 
 PATH_TO_STACKS = "main/resources/stacks/HDP"
 PATH_TO_STACK_TESTS = "test/python/stacks/"
@@ -127,6 +128,7 @@ class RMFTestCase(TestCase):
         script_class_inst = RMFTestCase._get_attr(script_module, classname)()
         script_class_inst.log_out_files = log_out_files
         script_class_inst.available_packages_in_repos = 
available_packages_in_repos
+        Script.repository_util = RepositoryUtil(self.config_dict, set())
         method = RMFTestCase._get_attr(script_class_inst, command)
     except IOError, err:
       raise RuntimeError("Cannot load class %s from %s: %s" % (classname, 
norm_path, err.message))

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to