Quellcode durchsuchen

AMBARI-18350. Declare URL uniqueness in repoinfo.xml (dlysnichenko)

Lisnichenko Dmitro vor 9 Jahren
Ursprung
Commit
17ad59dbb5
77 geänderte Dateien mit 496 neuen und 14 gelöschten Zeilen
  1. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/0.1/repos/repoinfo.xml
  2. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/0.2/repos/repoinfo.xml
  3. 16 0
      ambari-funtest/src/test/resources/stacks/HDP/1.2.0/repos/repoinfo.xml
  4. 14 0
      ambari-funtest/src/test/resources/stacks/HDP/1.3.0/repos/repoinfo.xml
  5. 12 0
      ambari-funtest/src/test/resources/stacks/HDP/1.3.1/repos/repoinfo.xml
  6. 8 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
  7. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.5/repos/repoinfo.xml
  8. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.6.1/repos/repoinfo.xml
  9. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.6/repos/repoinfo.xml
  10. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.7/repos/repoinfo.xml
  11. 1 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.7/services/HBASE/metainfo.xml
  12. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.0.8/repos/repoinfo.xml
  13. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.1.1/repos/repoinfo.xml
  14. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.2.0.ECS/repos/repoinfo.xml
  15. 6 0
      ambari-funtest/src/test/resources/stacks/HDP/2.2.0/repos/repoinfo.xml
  16. 6 0
      ambari-funtest/src/test/resources/stacks/OTHER/1.0/repos/repoinfo.xml
  17. 6 0
      ambari-funtest/src/test/resources/stacks/OTHER/2.0/repos/repoinfo.xml
  18. 8 0
      ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java
  19. 3 0
      ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java
  20. 1 2
      ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java
  21. 8 0
      ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryEntity.java
  22. 17 0
      ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java
  23. 14 0
      ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java
  24. 4 0
      ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
  25. 2 0
      ambari-server/src/main/resources/stacks/BIGTOP/0.8/repos/repoinfo.xml
  26. 10 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/repos/repoinfo.xml
  27. 4 0
      ambari-server/src/main/resources/stacks/HDP/2.0.6/repos/repoinfo.xml
  28. 4 0
      ambari-server/src/main/resources/stacks/HDP/2.0/repos/repoinfo.xml
  29. 6 0
      ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/repos/repoinfo.xml
  30. 6 0
      ambari-server/src/main/resources/stacks/HDP/2.1/repos/repoinfo.xml
  31. 6 0
      ambari-server/src/main/resources/stacks/HDP/2.2/repos/repoinfo.xml
  32. 18 0
      ambari-server/src/main/resources/stacks/HDP/2.3.ECS/repos/repoinfo.xml
  33. 10 0
      ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/repos/repoinfo.xml
  34. 12 0
      ambari-server/src/main/resources/stacks/HDP/2.3/repos/repoinfo.xml
  35. 12 0
      ambari-server/src/main/resources/stacks/HDP/2.4/repos/repoinfo.xml
  36. 16 0
      ambari-server/src/main/resources/stacks/HDP/2.5/repos/repoinfo.xml
  37. 1 0
      ambari-server/src/main/resources/stacks/HDPWIN/2.1/repos/repoinfo.xml
  38. 1 0
      ambari-server/src/main/resources/stacks/HDPWIN/2.2/repos/repoinfo.xml
  39. 1 0
      ambari-server/src/main/resources/stacks/HDPWIN/2.3/repos/repoinfo.xml
  40. 1 0
      ambari-server/src/main/resources/version_definition.xsd
  41. 11 11
      ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java
  42. 2 1
      ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelperTest.java
  43. 1 0
      ambari-server/src/test/resources/bad-stacks/HDP/0.1/repos/repoinfo.xml
  44. 2 0
      ambari-server/src/test/resources/hbase_version_test.xml
  45. 6 0
      ambari-server/src/test/resources/stacks/HDP/0.1/repos/repoinfo.xml
  46. 6 0
      ambari-server/src/test/resources/stacks/HDP/0.2/repos/repoinfo.xml
  47. 16 0
      ambari-server/src/test/resources/stacks/HDP/1.2.0/repos/repoinfo.xml
  48. 14 0
      ambari-server/src/test/resources/stacks/HDP/1.3.0/repos/repoinfo.xml
  49. 12 0
      ambari-server/src/test/resources/stacks/HDP/1.3.1/repos/repoinfo.xml
  50. 8 0
      ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml
  51. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.0.5/repos/repoinfo.xml
  52. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.0.6.1/repos/repoinfo.xml
  53. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.0.6/repos/repoinfo.xml
  54. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/repos/repoinfo.xml
  55. 1 0
      ambari-server/src/test/resources/stacks/HDP/2.0.7/services/HBASE/metainfo.xml
  56. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.0.8/repos/repoinfo.xml
  57. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.1.1/repos/repoinfo.xml
  58. 6 0
      ambari-server/src/test/resources/stacks/HDP/2.2.0.ECS/repos/repoinfo.xml
  59. 2 0
      ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/repoinfo.xml
  60. 2 0
      ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/version-2.2.0.4-123.xml
  61. 2 0
      ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/version-2.2.0.4-124-suse11.xml
  62. 6 0
      ambari-server/src/test/resources/stacks/OTHER/1.0/repos/repoinfo.xml
  63. 6 0
      ambari-server/src/test/resources/stacks/OTHER/2.0/repos/repoinfo.xml
  64. 6 0
      ambari-server/src/test/resources/stacks_with_common_services/HDP/0.1/repos/repoinfo.xml
  65. 6 0
      ambari-server/src/test/resources/stacks_with_common_services/HDP/0.2/repos/repoinfo.xml
  66. 6 0
      ambari-server/src/test/resources/stacks_with_cycle/OTHER/1.0/repos/repoinfo.xml
  67. 6 0
      ambari-server/src/test/resources/stacks_with_cycle/OTHER/2.0/repos/repoinfo.xml
  68. 6 0
      ambari-server/src/test/resources/stacks_with_cycle2/stack1/1.0/repos/repoinfo.xml
  69. 6 0
      ambari-server/src/test/resources/stacks_with_cycle2/stack2/1.0/repos/repoinfo.xml
  70. 6 0
      ambari-server/src/test/resources/stacks_with_cycle2/stack3/1.0/repos/repoinfo.xml
  71. 6 0
      ambari-server/src/test/resources/stacks_with_extensions/HDP/0.1/repos/repoinfo.xml
  72. 6 0
      ambari-server/src/test/resources/stacks_with_extensions/HDP/0.2/repos/repoinfo.xml
  73. 2 0
      ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/repoinfo.xml
  74. 2 0
      ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/version-2.2.0.4-123.xml
  75. 3 0
      ambari-server/src/test/resources/version_definition_resource_provider.xml
  76. 4 0
      ambari-server/src/test/resources/version_definition_test.xml
  77. 4 0
      ambari-server/src/test/resources/version_definition_test_all_services.xml

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/0.1/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/0.2/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 16 - 0
ambari-funtest/src/test/resources/stacks/HDP/1.2.0/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -99,11 +111,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/suse11</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -112,11 +126,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/suse11</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 14 - 0
ambari-funtest/src/test/resources/stacks/HDP/1.3.0/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -99,6 +111,7 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/suse11</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
     <os family="sles11">
@@ -106,6 +119,7 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/suse11</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 12 - 0
ambari-funtest/src/test/resources/stacks/HDP/1.3.1/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 8 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 <!--
@@ -50,11 +54,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -63,11 +69,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.5/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos6</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos5</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos6</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos5</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/suse11</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/suse11</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.6.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.6/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.7/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 1 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.7/services/HBASE/metainfo.xml

@@ -92,6 +92,7 @@
             <baseurl>http://something.com/centos6/2.x/updates/1</baseurl>
             <repoid>Custom-repo-1</repoid>
             <reponame>Custom-repo</reponame>
+            <unique>true</unique>
           </repo>
           <packages>
             <package>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.0.8/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.1.1/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.2.0.ECS/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="any">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo.emc.com/ECS/2.2/updates/2.2.0.0</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/HDP/2.2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/OTHER/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-funtest/src/test/resources/stacks/OTHER/2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 8 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/RepositoryResponse.java

@@ -32,6 +32,7 @@ public class RepositoryResponse {
   private Long repositoryVersionId;
   private String versionDefinitionId;
   private Long clusterVersionId;
+  private boolean unique;
 
   public RepositoryResponse(String baseUrl, String osType, String repoId,
       String repoName, String mirrorsList, String defaultBaseUrl, String latestBaseUrl) {
@@ -158,4 +159,11 @@ public class RepositoryResponse {
     return clusterVersionId;
   }
 
+  public boolean isUnique() {
+    return unique;
+  }
+
+  public void setUnique(boolean unique) {
+    this.unique = unique;
+  }
 }

+ 3 - 0
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryResourceProvider.java

@@ -59,6 +59,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
   public static final String REPOSITORY_LATEST_BASE_URL_PROPERTY_ID       = PropertyHelper.getPropertyId("Repositories", "latest_base_url");
   public static final String REPOSITORY_REPOSITORY_VERSION_ID_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "repository_version_id");
   public static final String REPOSITORY_VERSION_DEFINITION_ID_PROPERTY_ID = PropertyHelper.getPropertyId("Repositories", "version_definition_id");
+  public static final String REPOSITORY_UNIQUE_PROPERTY_ID                = PropertyHelper.getPropertyId("Repositories", "unique");
 
   @SuppressWarnings("serial")
   private static Set<String> pkPropertyIds = new HashSet<String>() {
@@ -86,6 +87,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
       add(REPOSITORY_REPOSITORY_VERSION_ID_PROPERTY_ID);
       add(REPOSITORY_VERSION_DEFINITION_ID_PROPERTY_ID);
       add(REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID);
+      add(REPOSITORY_UNIQUE_PROPERTY_ID);
     }
   };
 
@@ -168,6 +170,7 @@ public class RepositoryResourceProvider extends AbstractControllerResourceProvid
         setResourceProperty(resource, REPOSITORY_MIRRORS_LIST_PROPERTY_ID, response.getMirrorsList(), requestedIds);
         setResourceProperty(resource, REPOSITORY_DEFAULT_BASE_URL_PROPERTY_ID, response.getDefaultBaseUrl(), requestedIds);
         setResourceProperty(resource, REPOSITORY_LATEST_BASE_URL_PROPERTY_ID, response.getLatestBaseUrl(), requestedIds);
+        setResourceProperty(resource, REPOSITORY_UNIQUE_PROPERTY_ID, response.isUnique(), requestedIds);
         if (null != response.getClusterVersionId()) {
           setResourceProperty(resource, REPOSITORY_CLUSTER_STACK_VERSION_PROPERTY_ID, response.getClusterVersionId(), requestedIds);
         }

+ 1 - 2
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProvider.java

@@ -461,8 +461,7 @@ public class RepositoryVersionResourceProvider extends AbstractAuthorizedResourc
     for (RepositoryVersionEntity existingRepoVersion : existingRepoVersions) {
       for (OperatingSystemEntity operatingSystemEntity : existingRepoVersion.getOperatingSystems()) {
         for (RepositoryEntity repositoryEntity : operatingSystemEntity.getRepositories()) {
-          if (! repositoryEntity.getRepositoryId().startsWith("HDP-UTILS") &&  // HDP-UTILS is shared between repo versions
-                  ! existingRepoVersion.getId().equals(repositoryVersion.getId())) { // Allow modifying already defined repo version
+          if (repositoryEntity.isUnique() && !existingRepoVersion.getId().equals(repositoryVersion.getId())) { // Allow modifying already defined repo version
             existingRepoUrls.add(repositoryEntity.getBaseUrl());
           }
         }

+ 8 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryEntity.java

@@ -25,6 +25,7 @@ public class RepositoryEntity {
   private String name;
   private String baseUrl;
   private String repositoryId;
+  private boolean unique;
 
   public String getName() {
     return name;
@@ -72,4 +73,11 @@ public class RepositoryEntity {
     return result;
   }
 
+  public boolean isUnique() {
+    return unique;
+  }
+
+  public void setUnique(boolean unique) {
+    this.unique = unique;
+  }
 }

+ 17 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/RepositoryInfo.java

@@ -29,6 +29,7 @@ public class RepositoryInfo {
   private String defaultBaseUrl;
   private String latestBaseUrl;
   private boolean baseSaved = false;
+  private boolean unique = false;
 
   /**
    * @return the baseUrl
@@ -150,6 +151,7 @@ public class RepositoryInfo {
         + ", baseUrl=" + baseUrl
         + ", repoName=" + repoName
         + ", mirrorsList=" + mirrorsList
+        + ", unique=" + unique
         + " ]";
   }
 
@@ -161,4 +163,19 @@ public class RepositoryInfo {
   }
 
 
+
+
+  /**
+   * @return true if version of HDP that change with each release
+   */
+  public boolean isUnique() {
+    return unique;
+  }
+
+  /**
+   * @param unique set is version of HDP that change with each release
+   */
+  public void setUnique(boolean unique) {
+    this.unique = unique;
+  }
 }

+ 14 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/stack/RepositoryXml.java

@@ -147,6 +147,7 @@ public class RepositoryXml implements Validable{
     private String repoid = null;
     private String reponame = null;
     private String latest = null;
+    private boolean unique = false;
 
     private Repo() {
     }
@@ -183,7 +184,19 @@ public class RepositoryXml implements Validable{
       return latest;
     }
 
+    /**
+     * @return true if version of HDP that change with each release
+     */
+    public boolean isUnique() {
+      return unique;
+    }
 
+    /**
+     * @param unique set is version of HDP that change with each release
+     */
+    public void setUnique(boolean unique) {
+      this.unique = unique;
+    }
   }
 
   /**
@@ -205,6 +218,7 @@ public class RepositoryXml implements Validable{
           ri.setRepoId(r.getRepoId());
           ri.setRepoName(r.getRepoName());
           ri.setLatestBaseUrl(r.getBaseUrl());
+          ri.setUnique(r.isUnique());
 
           repos.add(ri);
         }

+ 4 - 0
ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java

@@ -105,6 +105,9 @@ public class RepositoryVersionHelper {
         repositoryEntity.setBaseUrl(repositoryJson.getAsJsonObject().get(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID).getAsString());
         repositoryEntity.setName(repositoryJson.getAsJsonObject().get(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID).getAsString());
         repositoryEntity.setRepositoryId(repositoryJson.getAsJsonObject().get(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID).getAsString());
+        if (repositoryJson.getAsJsonObject().get(RepositoryResourceProvider.REPOSITORY_UNIQUE_PROPERTY_ID) != null) {
+          repositoryEntity.setUnique(repositoryJson.getAsJsonObject().get(RepositoryResourceProvider.REPOSITORY_UNIQUE_PROPERTY_ID).getAsBoolean());
+        }
         operatingSystemEntity.getRepositories().add(repositoryEntity);
       }
       operatingSystems.add(operatingSystemEntity);
@@ -152,6 +155,7 @@ public class RepositoryVersionHelper {
         repositoryJson.addProperty(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID, repository.getBaseUrl());
         repositoryJson.addProperty(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID, repository.getRepoName());
         repositoryJson.addProperty(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID, repository.getRepoId());
+        repositoryJson.addProperty(RepositoryResourceProvider.REPOSITORY_UNIQUE_PROPERTY_ID, repository.isUnique());
         repositoriesJson.add(repositoryJson);
       }
       operatingSystemJson.add(RepositoryVersionResourceProvider.SUBRESOURCE_REPOSITORIES_PROPERTY_ID, repositoriesJson);

+ 2 - 0
ambari-server/src/main/resources/stacks/BIGTOP/0.8/repos/repoinfo.xml

@@ -24,12 +24,14 @@
       <baseurl>http://bigtop.s3.amazonaws.com/releases/0.8.0/redhat/6/x86_64</baseurl>
       <repoid>BIGTOP-0.8</repoid>
       <reponame>BIGTOP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
   	  <!-- TODO build and host our own utils -->
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-UTILS-1.1.0.19/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.19</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 10 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6.GlusterFS/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6.GlusterFS</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>    
   </os>
   <os family="centos5">
@@ -33,11 +35,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6.GlusterFS</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>    
   </os>
   <os family="redhat6">
@@ -45,11 +49,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6.GlusterFS</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>     
   </os>
   <os family="redhat5">
@@ -57,11 +63,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6.GlusterFS</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>     
   </os>
   <os family="suse11">
@@ -69,10 +77,12 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6.GlusterFS</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/suse11</baseurl>
         <repoid>HDP-UTILS-1.1.0.17</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>      
     </repo>
   </os>

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/2.0.6/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.1</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -33,10 +35,12 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.1</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/suse11</baseurl>
         <repoid>HDP-UTILS-1.1.0.17</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </repo>
   </os>

+ 4 - 0
ambari-server/src/main/resources/stacks/HDP/2.0/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.10.0</baseurl>
       <repoid>HDP-2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.10.0</baseurl>
       <repoid>HDP-2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/2.1.GlusterFS/repos/repoinfo.xml

@@ -23,11 +23,13 @@
       <baseurl>REPLACE_WITH_CENTOS6_URL</baseurl>
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -35,11 +37,13 @@
       <baseurl>REPLACE_WITH_CENTOS5_URL</baseurl>      
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -47,11 +51,13 @@
       <baseurl>REPLACE_WITH_SUSE11_URL</baseurl>      
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.17/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.17</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/2.1/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.1.15.0</baseurl>
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.19/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.19</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.1.15.0</baseurl>
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.19/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.19</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -46,11 +50,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.1.15.0</baseurl>
       <repoid>HDP-2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.19/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.19</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.6.0</baseurl>
       <repoid>HDP-2.2</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.2.6.0</baseurl>
       <repoid>HDP-2.2</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -46,11 +50,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.2.6.0</baseurl>
       <repoid>HDP-2.2</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 18 - 0
ambari-server/src/main/resources/stacks/HDP/2.3.ECS/repos/repoinfo.xml

@@ -22,16 +22,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat7">
@@ -39,16 +42,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -56,16 +62,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -73,16 +82,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="debian7">
@@ -90,16 +102,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/debian6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="ubuntu14">
@@ -107,16 +122,19 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
     <repo>
       <baseurl>http://ECS_CLIENT_REPO/</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 10 - 0
ambari-server/src/main/resources/stacks/HDP/2.3.GlusterFS/repos/repoinfo.xml

@@ -23,11 +23,13 @@
       <baseurl>REPLACE_WITH_CENTOS6_URL</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -35,11 +37,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos5/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -47,11 +51,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP/suse11sp3/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -59,11 +65,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP/ubuntu12/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu7">
@@ -71,11 +79,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP/debian6/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/debian6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 12 - 0
ambari-server/src/main/resources/stacks/HDP/2.3/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="redhat7">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -46,11 +50,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -58,11 +64,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="debian7">
@@ -70,11 +78,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/debian6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu14">
@@ -82,11 +92,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.3.0.0</baseurl>
       <repoid>HDP-2.3</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 12 - 0
ambari-server/src/main/resources/stacks/HDP/2.4/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="redhat7">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -46,11 +50,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -58,11 +64,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="debian7">
@@ -70,11 +78,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/debian6</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu14">
@@ -82,11 +92,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.0.0</baseurl>
       <repoid>HDP-2.4</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.20</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 16 - 0
ambari-server/src/main/resources/stacks/HDP/2.5/repos/repoinfo.xml

@@ -22,11 +22,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="redhat7">
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -46,11 +50,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11sp3/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="suse12">
@@ -58,11 +64,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/sles12/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/suse11sp3</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu12">
@@ -70,11 +78,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu12/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="debian7">
@@ -82,11 +92,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/debian7/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/debian6</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu14">
@@ -94,11 +106,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
   <os family="ubuntu16">
@@ -106,11 +120,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.5.0.0</baseurl>
       <repoid>HDP-2.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/ubuntu12</baseurl>
       <repoid>HDP-UTILS-1.1.0.21</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
     </repo>
   </os>
 </reposinfo>

+ 1 - 0
ambari-server/src/main/resources/stacks/HDPWIN/2.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://dummy_repo</baseurl>
       <repoid>HDPWIN-2.1</repoid>
       <reponame>HDPWIN</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 1 - 0
ambari-server/src/main/resources/stacks/HDPWIN/2.2/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://dummy_repo</baseurl>
       <repoid>HDPWIN-2.2</repoid>
       <reponame>HDPWIN</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 1 - 0
ambari-server/src/main/resources/stacks/HDPWIN/2.3/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://dummy_repo</baseurl>
       <repoid>HDPWIN-2.3</repoid>
       <reponame>HDPWIN</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 1 - 0
ambari-server/src/main/resources/version_definition.xsd

@@ -122,6 +122,7 @@
                   <xs:element name="baseurl" type="xs:string" />
                   <xs:element name="repoid" type="xs:string" />
                   <xs:element name="reponame" type="xs:string" />
+                  <xs:element name="unique" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>

+ 11 - 11
ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RepositoryVersionResourceProviderTest.java

@@ -258,7 +258,7 @@ public class RepositoryVersionResourceProviderTest {
     final Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
     final Map<String, Object> properties = new LinkedHashMap<String, Object>();
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, "name");
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"1\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"1\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID, "HDP");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID, "1.1");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "1.1.1.1");
@@ -325,7 +325,7 @@ public class RepositoryVersionResourceProviderTest {
     entity.setDisplayName("name");
     entity.setStack(stackEntity);
     entity.setVersion("1.1");
-    entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
+    entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]");
 
     final RepositoryVersionDAO repositoryVersionDAO = injector.getInstance(RepositoryVersionDAO.class);
     AmbariMetaInfo info = injector.getInstance(AmbariMetaInfo.class);
@@ -369,7 +369,7 @@ public class RepositoryVersionResourceProviderTest {
     entity.setDisplayName("name");
     entity.setStack(stackEntity);
     entity.setVersion("1.1");
-    entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
+    entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]");
     repositoryVersionDAO.create(entity);
 
     final RepositoryVersionEntity entity2 = new RepositoryVersionEntity();
@@ -377,7 +377,7 @@ public class RepositoryVersionResourceProviderTest {
     entity2.setDisplayName("name2");
     entity2.setStack(stackEntity);
     entity2.setVersion("1.2");
-    entity2.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
+    entity2.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]");
 
     try {
       RepositoryVersionResourceProvider.validateRepositoryVersion(repositoryVersionDAO, info, entity2);
@@ -390,7 +390,7 @@ public class RepositoryVersionResourceProviderTest {
     entity3.setDisplayName("name2");
     entity3.setStack(stackEntity);
     entity3.setVersion("1.1");
-    entity3.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\": true, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
+    entity3.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\": true, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]");
 
     try {
       RepositoryVersionResourceProvider.validateRepositoryVersion(repositoryVersionDAO, info, entity3);
@@ -399,7 +399,7 @@ public class RepositoryVersionResourceProviderTest {
       // expected
     }
 
-    entity3.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\": false, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
+    entity3.setOperatingSystems("[{\"OperatingSystems/ambari_managed_repositories\": false, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]");
     RepositoryVersionResourceProvider.validateRepositoryVersion(repositoryVersionDAO, info, entity3);
 
   }
@@ -422,7 +422,7 @@ public class RepositoryVersionResourceProviderTest {
     final Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
     final Map<String, Object> properties = new LinkedHashMap<String, Object>();
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, "name");
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"1\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"1\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID, "HDP");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID, "1.1");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "1.1.1.2");
@@ -470,7 +470,7 @@ public class RepositoryVersionResourceProviderTest {
     final Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
     final Map<String, Object> properties = new LinkedHashMap<String, Object>();
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, "name");
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID, "HDP");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID, "1.1");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "1.1.1.1");
@@ -517,7 +517,7 @@ public class RepositoryVersionResourceProviderTest {
       }
     }
 
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"2\",\"Repositories/repo_name\":\"2\",\"Repositories/base_url\":\"2\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"2\",\"Repositories/repo_name\":\"2\",\"Repositories/base_url\":\"2\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     provider.updateResources(updateRequest, new AndPredicate(predicateStackName, predicateStackVersion));
     // Now, insert a cluster version whose state is INSTALL_FAILED, so the operation will not be permitted.
     Mockito.when(clusterVersionDAO.findByStackAndVersion(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenAnswer(
@@ -554,7 +554,7 @@ public class RepositoryVersionResourceProviderTest {
     final Set<Map<String, Object>> propertySet = new LinkedHashSet<Map<String, Object>>();
     final Map<String, Object> properties = new LinkedHashMap<String, Object>();
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, "name");
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID, "HDP");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID, "1.1");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_REPOSITORY_VERSION_PROPERTY_ID, "1.1.1.1");
@@ -575,7 +575,7 @@ public class RepositoryVersionResourceProviderTest {
 
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_ID_PROPERTY_ID, "1");
     properties.put(RepositoryVersionResourceProvider.REPOSITORY_VERSION_DISPLAY_NAME_PROPERTY_ID, "name2");
-    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/ambari_managed_repositories\":false, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]", Object.class));
+    properties.put(RepositoryVersionResourceProvider.SUBRESOURCE_OPERATING_SYSTEMS_PROPERTY_ID, new Gson().fromJson("[{\"OperatingSystems/ambari_managed_repositories\":false, \"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\",\"Repositories/unique\":\"true\"}]}]", Object.class));
     final Request updateRequest = PropertyHelper.getUpdateRequest(properties, null);
     provider.updateResources(updateRequest, new AndPredicate(predicateStackName, predicateStackVersion));
 

+ 2 - 1
ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelperTest.java

@@ -57,9 +57,10 @@ public class RepositoryVersionHelperTest {
     repository.setBaseUrl("baseurl");
     repository.setOsType("os");
     repository.setRepoId("repoId");
+    repository.setUnique(true);
     repositories.add(repository);
 
     final String serialized = helper.serializeOperatingSystems(repositories);
-    Assert.assertEquals("[{\"repositories\":[{\"Repositories/base_url\":\"baseurl\",\"Repositories/repo_id\":\"repoId\"}],\"OperatingSystems/os_type\":\"os\"}]", serialized);
+    Assert.assertEquals("[{\"repositories\":[{\"Repositories/base_url\":\"baseurl\",\"Repositories/repo_id\":\"repoId\",\"Repositories/unique\":true}],\"OperatingSystems/os_type\":\"os\"}]", serialized);
   }
 }

+ 1 - 0
ambari-server/src/test/resources/bad-stacks/HDP/0.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 2 - 0
ambari-server/src/test/resources/hbase_version_test.xml

@@ -43,11 +43,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
   </repository-info>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/0.1/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/0.2/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 16 - 0
ambari-server/src/test/resources/stacks/HDP/1.2.0/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos6</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/centos5</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -99,11 +111,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/suse11</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -112,11 +126,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.2.0/repos/suse11</baseurl>
       <repoid>HDP-1.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 14 - 0
ambari-server/src/test/resources/stacks/HDP/1.3.0/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos6</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/centos5</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -99,6 +111,7 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/suse11</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
     <os family="sles11">
@@ -106,6 +119,7 @@
       <baseurl>http://s3.amazonaws.com/dev.hortonworks.com/HDP-1.3.0/repos/suse11</baseurl>
       <repoid>HDP-1.3.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 12 - 0
ambari-server/src/test/resources/stacks/HDP/1.3.1/repos/repoinfo.xml

@@ -21,11 +21,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -34,11 +36,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -47,11 +51,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -60,11 +66,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>HDP-epel</repoid>
       <reponame>HDP-epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -73,11 +81,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -86,11 +96,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/1.x/updates/1.2.1</baseurl>
       <repoid>HDP-1.2.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 8 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos6</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.0.2/repos/centos5</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 <!--
@@ -50,11 +54,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>
@@ -63,11 +69,13 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-2.0.1/repos/suse11</baseurl>
       <repoid>HDP-2.0.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/suse11</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.5/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos6</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos5</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos6</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/centos5</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/suse11</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://dev.hortonworks.com.s3.amazonaws.com/HDP-2.0.5.0/repos/suse11</baseurl>
       <repoid>HDP-2.0.5</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.6.1/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.6/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.6</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.7/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.7</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

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

@@ -92,6 +92,7 @@
             <baseurl>http://something.com/centos6/2.x/updates/1</baseurl>
             <repoid>Custom-repo-1</repoid>
             <reponame>Custom-repo</reponame>
+            <unique>true</unique>
           </repo>
           <packages>
             <package>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.0.8/repos/repoinfo.xml

@@ -21,6 +21,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -28,6 +29,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -35,6 +37,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -42,6 +45,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -49,6 +53,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -56,6 +61,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.0.8</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.1.1/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/HDP/2.2.0.ECS/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="any">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo.emc.com/ECS/2.2/updates/2.2.0.0</baseurl>
       <repoid>ECS-2.2.0.0</repoid>
       <reponame>ECS</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 2 - 0
ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 2 - 0
ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/version-2.2.0.4-123.xml

@@ -38,11 +38,13 @@
         <baseurl>http://baseurl1</baseurl>
         <repoid>HDP-2.4</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://baseurl2</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
   </repository-info>

+ 2 - 0
ambari-server/src/test/resources/stacks/HDP/2.2.0/repos/version-2.2.0.4-124-suse11.xml

@@ -38,11 +38,13 @@
         <baseurl>http://baseurl3</baseurl>
         <repoid>HDP-2.4</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://baseurl4</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
 

+ 6 - 0
ambari-server/src/test/resources/stacks/OTHER/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks/OTHER/2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_common_services/HDP/0.1/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_common_services/HDP/0.2/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_cycle/OTHER/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_cycle/OTHER/2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_cycle2/stack1/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_cycle2/stack2/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_cycle2/stack3/1.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="centos5">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat6">
@@ -36,6 +38,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="redhat5">
@@ -43,6 +46,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos5/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -50,6 +54,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="sles11">
@@ -57,6 +62,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.0.6.0</baseurl>
       <repoid>HDP-2.1.1</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_extensions/HDP/0.1/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 6 - 0
ambari-server/src/test/resources/stacks_with_extensions/HDP/0.2/repos/repoinfo.xml

@@ -21,17 +21,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos6</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos6</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch]]></mirrorslist>
     </repo>
   </os>
@@ -40,17 +43,20 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP-1.1.1.16/repos/centos5</baseurl>
       <repoid>HDP-1.1.1.16</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
     <repo>
       <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.15/repos/centos5</baseurl>
       <repoid>HDP-UTILS-1.1.0.15</repoid>
       <reponame>HDP-UTILS</reponame>
+      <unique>false</unique>
       <mirrorslist></mirrorslist>
     </repo>
     <repo>
       <baseurl></baseurl>
       <repoid>epel</repoid>
       <reponame>epel</reponame>
+      <unique>true</unique>
       <mirrorslist><![CDATA[https://mirrors.fedoraproject.org/metalink?repo=epel-5&arch=$basearch]]></mirrorslist>
     </repo>
   </os>

+ 2 - 0
ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/repoinfo.xml

@@ -22,6 +22,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
   <os family="suse11">
@@ -29,6 +30,7 @@
       <baseurl>http://public-repo-1.hortonworks.com/HDP/suse11/2.x/updates/2.2.0.0</baseurl>
       <repoid>HDP-2.2.0</repoid>
       <reponame>HDP</reponame>
+      <unique>true</unique>
     </repo>
   </os>
 </reposinfo>

+ 2 - 0
ambari-server/src/test/resources/stacks_with_upgrade_cycle/HDP/2.2.0/repos/version-2.2.0.4-123.xml

@@ -38,11 +38,13 @@
         <baseurl>http://baseurl1</baseurl>
         <repoid>HDP-2.4</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://baseurl2</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
   </repository-info>

+ 3 - 0
ambari-server/src/test/resources/version_definition_resource_provider.xml

@@ -47,11 +47,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
     <os family="suse11">
@@ -59,6 +61,7 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
     </os>
 

+ 4 - 0
ambari-server/src/test/resources/version_definition_test.xml

@@ -49,11 +49,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
     <os family="redhat7">
@@ -61,11 +63,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
 

+ 4 - 0
ambari-server/src/test/resources/version_definition_test_all_services.xml

@@ -43,11 +43,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>
     <os family="redhat7">
@@ -55,11 +57,13 @@
         <baseurl>http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.3.0.0</baseurl>
         <repoid>HDP-2.3</repoid>
         <reponame>HDP</reponame>
+        <unique>true</unique>
       </repo>
       <repo>
         <baseurl>http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos7</baseurl>
         <repoid>HDP-UTILS-1.1.0.20</repoid>
         <reponame>HDP-UTILS</reponame>
+        <unique>false</unique>
       </repo>
     </os>