Repository: ambari
Updated Branches:
  refs/heads/trunk fe05d3671 -> ef4a3ee52


AMBARI-16909. VDF builder script and XSD should be updated for package-version 
changes (ncole)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ef4a3ee5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ef4a3ee5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ef4a3ee5

Branch: refs/heads/trunk
Commit: ef4a3ee52f8a6aee6a6ff8c9510a6335616f3b8b
Parents: fe05d36
Author: Nate Cole <[email protected]>
Authored: Thu May 26 15:39:29 2016 -0400
Committer: Nate Cole <[email protected]>
Committed: Thu May 26 15:39:29 2016 -0400

----------------------------------------------------------------------
 .../src/main/resources/version_definition.xsd   |  2 ++
 contrib/version-builder/example.py              |  2 +-
 contrib/version-builder/example.sh              |  4 +++
 contrib/version-builder/version_builder.py      | 37 ++++++++++++++++++--
 4 files changed, 42 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ef4a3ee5/ambari-server/src/main/resources/version_definition.xsd
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/version_definition.xsd 
b/ambari-server/src/main/resources/version_definition.xsd
index 8c20c06..1c57e90 100644
--- a/ambari-server/src/main/resources/version_definition.xsd
+++ b/ambari-server/src/main/resources/version_definition.xsd
@@ -34,6 +34,7 @@
      <xs:element name="compatible-with" type="xs:string" minOccurs="0"/>
      <xs:element name="release-notes" type="xs:string" maxOccurs="1" />
      <xs:element name="display" type="xs:string" minOccurs="0" />
+     <!-- deprecated and will be removed -->
      <xs:element name="package-version" type="xs:string" minOccurs="0" />
     </xs:all>
   </xs:complexType>
@@ -113,6 +114,7 @@
       <xs:element name="os" maxOccurs="unbounded">
         <xs:complexType>
           <xs:sequence>
+            <xs:element name="package-version" minOccurs="0" />
             <xs:element name="repo" maxOccurs="unbounded">
               <xs:complexType>
                 <xs:sequence>

http://git-wip-us.apache.org/repos/asf/ambari/blob/ef4a3ee5/contrib/version-builder/example.py
----------------------------------------------------------------------
diff --git a/contrib/version-builder/example.py 
b/contrib/version-builder/example.py
index dd719bc..b9cdf56 100644
--- a/contrib/version-builder/example.py
+++ b/contrib/version-builder/example.py
@@ -24,7 +24,7 @@ def main(args):
 
   vb.set_release(type='STANDARD', stack="HDP-2.4", version="2.4.2.0", 
build="2468",
     notes="http://example.com";, display="HDP-2.4.2.0-2468", 
compatible="2.4.[0-9]+")
-  vb.set_release(package_version="2_4_2_0_*")
+  vb.set_os("redhat6", package_version="2_4_2_0_12345")
 
   vb.add_manifest("HDFS-271", "HDFS", "2.7.1.2.4.0")
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/ef4a3ee5/contrib/version-builder/example.sh
----------------------------------------------------------------------
diff --git a/contrib/version-builder/example.sh 
b/contrib/version-builder/example.sh
index ce60318..5bf8002 100755
--- a/contrib/version-builder/example.sh
+++ b/contrib/version-builder/example.sh
@@ -36,10 +36,14 @@ python version_builder.py --file $filename --manifest 
--manifest-id HBASE-132 --
 #call any number of times for the target services to upgrade
 python version_builder.py --file $filename --available --manifest-id HDFS-271
 
+# must be before repo calls
+python version_builder.py --file $filename --os --os-family redhat6 
--os-package-version 2_4_1_1_12345
+
 #call any number of times for repo per os
 python version_builder.py --file $filename --repo --repo-os redhat6 --repo-id 
HDP-2.4 --repo-name HDP --repo-url 
http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.4.1.1
 python version_builder.py --file $filename --repo --repo-os redhat6 --repo-id 
HDP-UTILS-1.1.0.20 --repo-name HDP-UTILS --repo-url 
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/centos6
 
+
 python version_builder.py --file $filename --finalize --xsd 
../../ambari-server/src/main/resources/version_definition.xsd
 
 # to upload this to running Ambari instance on localhost:

http://git-wip-us.apache.org/repos/asf/ambari/blob/ef4a3ee5/contrib/version-builder/version_builder.py
----------------------------------------------------------------------
diff --git a/contrib/version-builder/version_builder.py 
b/contrib/version-builder/version_builder.py
index 2e3fc7f..415e940 100644
--- a/contrib/version-builder/version_builder.py
+++ b/contrib/version-builder/version_builder.py
@@ -75,7 +75,7 @@ class VersionBuilder:
       print(stderr.decode("UTF-8"))
 
   def set_release(self, type=None, stack=None, version=None, build=None, 
notes=None, display=None,
-    compatible=None, package_version=None):
+    compatible=None):
     """
     Create elements of the 'release' parent
     """
@@ -105,8 +105,21 @@ class VersionBuilder:
     if display:
       update_simple(release_element, "display", display)
 
+  def set_os(self, os_family, package_version=None):
+    repo_parent = self.root_element.find("./repository-info")
+    if repo_parent is None:
+      raise Exception("'repository-info' element is not found")
+
+    os_element = self.findByAttributeValue(repo_parent, "./os", "family", 
os_family)
+    if os_element is None:
+      os_element = ET.SubElement(repo_parent, 'os')
+      os_element.set('family', os_family)
+
     if package_version:
-      update_simple(release_element, "package-version", package_version)
+      pv_element = os_element.find("package-version")
+      if pv_element is None:
+        pv_element = ET.SubElement(os_element, "package-version")
+      pv_element.text = package_version
 
 
   def add_manifest(self, id, service_name, version, version_id = None):
@@ -291,6 +304,12 @@ def process_available(vb, options):
   vb.add_available(options.manifest_id, options.available_components)
 
 
+def process_os(vb, options):
+  if not options.os:
+    return
+
+  vb.set_os(options.os_family, options.os_package_version)
+
 def process_repo(vb, options):
   """
   Processes repository options.  This method doesn't update or create 
individual elements, it
@@ -329,6 +348,13 @@ def validate_available(parser, options):
   if not options.manifest_id:
     parser.error("When specifying --available, --manifest-id is also required")
 
+def validate_os(parser, options):
+  if not options.os:
+    return
+
+  if not options.os_family:
+    parser.error("When specifying --os, --os-family is also required")
+
 def validate_repo(parser, options):
   """
   Validates repo options from the command line
@@ -394,6 +420,11 @@ def main(argv):
     help="A CSV of service components that are intended to be upgraded via 
patch. \
       Omitting this implies the entire service should be upgraded")
 
+  parser.add_option('--os', action='store_true', dest='os', help="Add OS data 
with options --os-family, --os-package-version")
+  parser.add_option('--os-family', dest='os_family', help="The operating 
system: i.e redhat7, debian7, ubuntu12, ubuntu14, suse11, suse12")
+  parser.add_option('--os-package-version', dest='os_package_version',
+    help="The package version to use for the OS")
+
   parser.add_option('--repo', action='store_true', dest='repo',
     help="Add repository data with options: --repo-os, --repo-url, --repo-id, 
--repo-name")
   parser.add_option('--repo-os', dest='repo_os',
@@ -415,6 +446,7 @@ def main(argv):
 
   validate_manifest(parser, options)
   validate_available(parser, options)
+  validate_os(parser, options)
   validate_repo(parser, options)
 
   vb = VersionBuilder(options.filename)
@@ -422,6 +454,7 @@ def main(argv):
   process_release(vb, options)
   process_manifest(vb, options)
   process_available(vb, options)
+  process_os(vb, options)
   process_repo(vb, options)
 
   # save file

Reply via email to