فهرست منبع

AMBARI-11814 - Views : Update view.xml xsd to allow for optional build-number (tbeerbower)

tbeerbower 10 سال پیش
والد
کامیت
5240ca45e6

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

@@ -46,9 +46,9 @@ public class ViewVersionResourceProvider extends AbstractResourceProvider {
    */
   public static final String VIEW_NAME_PROPERTY_ID          = "ViewVersionInfo/view_name";
   public static final String VIEW_VERSION_PROPERTY_ID       = "ViewVersionInfo/version";
+  public static final String VIEW_BUILD_PROPERTY_ID         = "ViewVersionInfo/build_number";
   public static final String LABEL_PROPERTY_ID              = "ViewVersionInfo/label";
   public static final String DESCRIPTION_PROPERTY_ID        = "ViewVersionInfo/description";
-  public static final String VERSION_PROPERTY_ID            = "ViewVersionInfo/version";
   public static final String MIN_AMBARI_VERSION_PROPERTY_ID = "ViewVersionInfo/min_ambari_version";
   public static final String MAX_AMBARI_VERSION_PROPERTY_ID = "ViewVersionInfo/max_ambari_version";
   public static final String PARAMETERS_PROPERTY_ID         = "ViewVersionInfo/parameters";
@@ -75,9 +75,9 @@ public class ViewVersionResourceProvider extends AbstractResourceProvider {
   static {
     propertyIds.add(VIEW_NAME_PROPERTY_ID);
     propertyIds.add(VIEW_VERSION_PROPERTY_ID);
+    propertyIds.add(VIEW_BUILD_PROPERTY_ID);
     propertyIds.add(LABEL_PROPERTY_ID);
     propertyIds.add(DESCRIPTION_PROPERTY_ID);
-    propertyIds.add(VERSION_PROPERTY_ID);
     propertyIds.add(MIN_AMBARI_VERSION_PROPERTY_ID);
     propertyIds.add(MAX_AMBARI_VERSION_PROPERTY_ID);
     propertyIds.add(PARAMETERS_PROPERTY_ID);
@@ -134,9 +134,9 @@ public class ViewVersionResourceProvider extends AbstractResourceProvider {
 
             setResourceProperty(resource, VIEW_NAME_PROPERTY_ID, viewDefinition.getCommonName(), requestedIds);
             setResourceProperty(resource, VIEW_VERSION_PROPERTY_ID, viewDefinition.getVersion(), requestedIds);
+            setResourceProperty(resource, VIEW_BUILD_PROPERTY_ID, viewDefinition.getBuild(), requestedIds);
             setResourceProperty(resource, LABEL_PROPERTY_ID, viewDefinition.getLabel(), requestedIds);
             setResourceProperty(resource, DESCRIPTION_PROPERTY_ID, viewDefinition.getDescription(), requestedIds);
-            setResourceProperty(resource, VERSION_PROPERTY_ID, viewDefinition.getVersion(), requestedIds);
             setResourceProperty(resource, MIN_AMBARI_VERSION_PROPERTY_ID,
                 viewDefinition.getConfiguration().getMinAmbariVersion(), requestedIds);
             setResourceProperty(resource, MAX_AMBARI_VERSION_PROPERTY_ID,

+ 22 - 0
ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewEntity.java

@@ -99,6 +99,13 @@ public class ViewEntity implements ViewDefinition {
   @Basic
   private String version;
 
+  /**
+   * The view build number.
+   */
+  @Column
+  @Basic
+  private String build;
+
   /**
    * The view archive.
    */
@@ -271,6 +278,7 @@ public class ViewEntity implements ViewDefinition {
     this.label       = configuration.getLabel();
     this.description = configuration.getDescription();
     this.version     = version;
+    this.build       = configuration.getBuild();
 
     this.mask        = configuration.getMasker();
     this.icon        = configuration.getIcon();
@@ -304,6 +312,11 @@ public class ViewEntity implements ViewDefinition {
     return version;
   }
 
+  @Override
+  public String getBuild() {
+    return build;
+  }
+
   @Override
   public ViewStatus getStatus() {
     return status;
@@ -376,6 +389,15 @@ public class ViewEntity implements ViewDefinition {
     this.version = version;
   }
 
+  /**
+   * Set the view build number.
+   *
+   * @param build the build
+   */
+  public void setBuild(String build) {
+    this.build = build;
+  }
+
   /**
    * Get the icon path.
    *

+ 3 - 0
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog210.java

@@ -90,6 +90,7 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
   private static final String WIDGET_TABLE = "widget";
   private static final String WIDGET_LAYOUT_TABLE = "widget_layout";
   private static final String WIDGET_LAYOUT_USER_WIDGET_TABLE = "widget_layout_user_widget";
+  private static final String VIEW_TABLE = "viewmain";
   private static final String VIEW_INSTANCE_TABLE = "viewinstance";
   private static final String VIEW_PARAMETER_TABLE = "viewparameter";
   private static final String STACK_TABLE = "stack";
@@ -284,6 +285,8 @@ public class UpgradeCatalog210 extends AbstractUpgradeCatalog {
     dbAccessor.addColumn(VIEW_INSTANCE_TABLE, new DBColumnInfo("alter_names", Integer.class, null, 0, false));
     // cluster configuration
     dbAccessor.addColumn(VIEW_PARAMETER_TABLE, new DBColumnInfo("cluster_config", String.class, 255, null, true));
+    // view build number
+    dbAccessor.addColumn(VIEW_TABLE, new DBColumnInfo("build", String.class, 128, null, true));
   }
 
   /**

+ 14 - 0
ambari-server/src/main/java/org/apache/ambari/server/view/configuration/ViewConfig.java

@@ -59,6 +59,11 @@ public class ViewConfig {
    */
   private String version;
 
+  /**
+   * The view version.
+   */
+  private String build;
+
   /**
    * The minimum Ambari version.
    */
@@ -198,6 +203,15 @@ public class ViewConfig {
     return version;
   }
 
+  /**
+   * Get the view build number.
+   *
+   * @return the build number
+   */
+  public String getBuild() {
+    return build;
+  }
+
   /**
    * Get the minimum version of Ambari required to run this view.
    *

+ 1 - 0
ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql

@@ -428,6 +428,7 @@ CREATE TABLE viewmain (
   label VARCHAR(255),
   description VARCHAR(2048),
   version VARCHAR(255),
+  build VARCHAR(128),
   resource_type_id INTEGER NOT NULL,
   icon VARCHAR(255),
   icon64 VARCHAR(255),

+ 1 - 0
ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql

@@ -418,6 +418,7 @@ CREATE TABLE viewmain (view_name VARCHAR(255) NOT NULL,
   label VARCHAR(255),
   description VARCHAR(2048),
   version VARCHAR(255),
+  build VARCHAR(128),
   resource_type_id NUMBER(10) NOT NULL,
   icon VARCHAR(255),
   icon64 VARCHAR(255),

+ 1 - 0
ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql

@@ -425,6 +425,7 @@ CREATE TABLE viewmain (
   label VARCHAR(255),
   description VARCHAR(2048),
   version VARCHAR(255),
+  build VARCHAR(128),
   resource_type_id INTEGER NOT NULL,
   icon VARCHAR(255),
   icon64 VARCHAR(255),

+ 1 - 0
ambari-server/src/main/resources/Ambari-DDL-Postgres-EMBEDDED-CREATE.sql

@@ -479,6 +479,7 @@ CREATE TABLE ambari.viewmain (
   label VARCHAR(255),
   description VARCHAR(2048),
   version VARCHAR(255),
+  build VARCHAR(128),
   resource_type_id INTEGER NOT NULL,
   icon VARCHAR(255),
   icon64 VARCHAR(255),

+ 1 - 0
ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql

@@ -493,6 +493,7 @@ CREATE TABLE viewmain (
   label VARCHAR(255),
   description VARCHAR(2048),
   version VARCHAR(255),
+  build VARCHAR(128),
   resource_type_id INTEGER NOT NULL,
   icon VARCHAR(255),
   icon64 VARCHAR(255),

+ 6 - 0
ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewEntityTest.java

@@ -110,6 +110,12 @@ public class ViewEntityTest {
     Assert.assertEquals("1.0.0", viewDefinition.getVersion());
   }
 
+  @Test
+  public void testGetBuild() throws Exception {
+    ViewEntity viewDefinition = getViewEntity();
+    Assert.assertEquals("99", viewDefinition.getBuild());
+  }
+
   @Test
   public void testGetIcon() throws Exception {
     ViewEntity viewDefinition = getViewEntity();

+ 11 - 0
ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalog210Test.java

@@ -559,10 +559,12 @@ public class UpgradeCatalog210Test {
       Capture<DBAccessor.DBColumnInfo> viewInstanceColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> viewInstanceAlterNamesColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
       Capture<DBAccessor.DBColumnInfo> viewParamColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
+      Capture<DBAccessor.DBColumnInfo> viewBuildColumnCapture = new Capture<DBAccessor.DBColumnInfo>();
 
       captures.put("viewinstance", viewInstanceColumnCapture);
       captures.put("viewinstance_alter_names", viewInstanceAlterNamesColumnCapture);
       captures.put("viewparameter", viewParamColumnCapture);
+      captures.put("viewmain", viewBuildColumnCapture);
     }
 
     /**
@@ -573,10 +575,12 @@ public class UpgradeCatalog210Test {
       Capture<DBColumnInfo> viewInstanceColumnCapture = captures.get("viewinstance");
       Capture<DBColumnInfo> viewInstanceAlterNamesColumnCapture = captures.get("viewinstance_alter_names");
       Capture<DBColumnInfo> viewParamColumnCapture = captures.get("viewparameter");
+      Capture<DBColumnInfo> viewBuildColumnCapture = captures.get("viewmain");
 
       dbAccessor.addColumn(eq("viewinstance"), capture(viewInstanceColumnCapture));
       dbAccessor.addColumn(eq("viewinstance"), capture(viewInstanceAlterNamesColumnCapture));
       dbAccessor.addColumn(eq("viewparameter"), capture(viewParamColumnCapture));
+      dbAccessor.addColumn(eq("viewmain"), capture(viewBuildColumnCapture));
     }
 
     /**
@@ -587,6 +591,7 @@ public class UpgradeCatalog210Test {
       verifyViewInstance(captures.get("viewinstance"));
       verifyViewInstanceAlterNames(captures.get("viewinstance_alter_names"));
       verifyViewParameter(captures.get("viewparameter"));
+      verifyViewBuild(captures.get("viewmain"));
     }
 
     private void verifyViewInstance(Capture<DBAccessor.DBColumnInfo> viewInstanceColumnCapture) {
@@ -606,6 +611,12 @@ public class UpgradeCatalog210Test {
       Assert.assertEquals(String.class, clusterConfigColumn.getType());
       Assert.assertEquals("cluster_config", clusterConfigColumn.getName());
     }
+
+    private void verifyViewBuild(Capture<DBAccessor.DBColumnInfo> viewBuildColumnCapture) {
+      DBColumnInfo clusterConfigColumn = viewBuildColumnCapture.getValue();
+      Assert.assertEquals(String.class, clusterConfigColumn.getType());
+      Assert.assertEquals("build", clusterConfigColumn.getName());
+    }
   }
 
   /**

+ 7 - 0
ambari-server/src/test/java/org/apache/ambari/server/view/configuration/ViewConfigTest.java

@@ -50,6 +50,7 @@ public class ViewConfigTest {
       "    <label>My View!</label>\n" +
       "    <description>Description</description>" +
       "    <version>1.0.0</version>\n" +
+      "    <build>99</build>\n" +
       "    <system>true</system>\n" +
       "    <icon64>/this/is/the/icon/url/icon64.png</icon64>\n" +
       "    <icon>/this/is/the/icon/url/icon.png</icon>\n" +
@@ -199,6 +200,12 @@ public class ViewConfigTest {
     Assert.assertEquals("1.0.0", config.getVersion());
   }
 
+  @Test
+  public void testGetBuild() throws Exception {
+    ViewConfig config = getConfig();
+    Assert.assertEquals("99", config.getBuild());
+  }
+
   @Test
   public void testGetIcon() throws Exception {
     ViewConfig config = getConfig();

+ 1 - 0
ambari-views/examples/phone-list-view/src/main/resources/view.xml

@@ -18,6 +18,7 @@ limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
   <name>PHONE_LIST</name>
   <label>The Phone List View</label>
   <version>1.0.0</version>
+  <build>001</build>
   <parameter>
     <name>data.store.enabled</name>
     <description>

+ 7 - 0
ambari-views/src/main/java/org/apache/ambari/view/ViewDefinition.java

@@ -51,6 +51,13 @@ public interface ViewDefinition {
    */
   public String getVersion();
 
+  /**
+   * Get the view build number.
+   *
+   * @return the build number
+   */
+  public String getBuild();
+
   /**
    * Get the mask class name.
    *

+ 5 - 0
ambari-views/src/main/resources/view.xsd

@@ -283,6 +283,11 @@
             <xs:documentation>The version of the view.</xs:documentation>
           </xs:annotation>
         </xs:element>
+        <xs:element type="xs:string" name="build" minOccurs="0" maxOccurs="1">
+          <xs:annotation>
+            <xs:documentation>The build number of the view.</xs:documentation>
+          </xs:annotation>
+        </xs:element>
         <xs:element type="xs:string" name="min-ambari-version" minOccurs="0" maxOccurs="1">
           <xs:annotation>
             <xs:documentation>The minimum version of Ambari server required to run this view.</xs:documentation>