Pārlūkot izejas kodu

AMBARI-9175. Create Kerberos descriptors for HDP 2.0/2.1. (rlevas via yusaku)

Yusaku Sako 10 gadi atpakaļ
vecāks
revīzija
a89db038ce

+ 6 - 0
ambari-server/src/main/java/org/apache/ambari/server/stack/StackModule.java

@@ -207,6 +207,12 @@ public class StackModule extends BaseModule<StackModule, StackInfo> {
     if (stackInfo.getStackHooksFolder() == null) {
       stackInfo.setStackHooksFolder(parentStack.getModuleInfo().getStackHooksFolder());
     }
+
+    // grab stack level kerberos.json from parent stack
+    if (stackInfo.getKerberosDescriptorFileLocation() == null) {
+      stackInfo.setKerberosDescriptorFileLocation(parentStack.getModuleInfo().getKerberosDescriptorFileLocation());
+    }
+
     mergeServicesWithParent(parentStack, allStacks, commonServices);
   }
 

+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/FALCON/kerberos.json → ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/HBASE/kerberos.json → ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/HDFS/kerberos.json → ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/HIVE/kerberos.json → ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/KNOX/kerberos.json → ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/OOZIE/kerberos.json → ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/STORM/kerberos.json → ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/kerberos.json → ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/kerberos.json


+ 0 - 0
ambari-server/src/main/resources/stacks/HDP/2.2/services/ZOOKEEPER/kerberos.json → ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/kerberos.json


+ 60 - 9
ambari-server/src/test/java/org/apache/ambari/server/stack/KerberosDescriptorTest.java

@@ -69,30 +69,81 @@ public class KerberosDescriptorTest {
   }
 
   @Test
-  public void testHDP22HBASEServiceDescriptor() throws IOException {
-    File hbaseDirectory = new File(hdp22ServicesDirectory, "HBASE");
-    KerberosDescriptor descriptor = KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(hbaseDirectory, "kerberos.json"));
+  public void testCommonHBASEServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "HBASE", "0.96.0.2.0");
     Assert.notNull(descriptor);
     Assert.notNull(descriptor.getServices());
     Assert.notNull(descriptor.getService("HBASE"));
   }
 
   @Test
-  public void testHDP22HDFSServiceDescriptor() throws IOException {
-    File hdfsDirectory = new File(hdp22ServicesDirectory, "HDFS");
-    KerberosDescriptor descriptor = KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(hdfsDirectory, "kerberos.json"));
+  public void testCommonHDFSServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "HDFS", "2.1.0.2.0");
     Assert.notNull(descriptor);
     Assert.notNull(descriptor.getServices());
     Assert.notNull(descriptor.getService("HDFS"));
   }
 
   @Test
-  public void testHDP22YarnServiceDescriptor() throws IOException {
-    File yarnDirectory = new File(hdp22ServicesDirectory, "YARN");
-    KerberosDescriptor descriptor = KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(yarnDirectory, "kerberos.json"));
+  public void testCommonYarnServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "YARN", "2.1.0.2.0");
     Assert.notNull(descriptor);
     Assert.notNull(descriptor.getServices());
     Assert.notNull(descriptor.getService("YARN"));
     Assert.notNull(descriptor.getService("MAPREDUCE2"));
   }
+
+  @Test
+  public void testCommonFalconServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "FALCON", "0.5.0.2.1");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("FALCON"));
+  }
+
+  @Test
+  public void testCommonHiveServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "HIVE", "0.12.0.2.0");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("HIVE"));
+  }
+
+  @Test
+  public void testCommonKnoxServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "KNOX", "0.5.0.2.2");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("KNOX"));
+  }
+
+  @Test
+  public void testCommonOozieServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "OOZIE", "4.0.0.2.0");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("OOZIE"));
+  }
+
+  @Test
+  public void testCommonStormServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "STORM", "0.9.1.2.1");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("STORM"));
+  }
+
+  @Test
+  public void testCommonZookeepeerServiceDescriptor() throws IOException {
+    KerberosDescriptor descriptor = getKerberosDescriptor(commonServicesDirectory, "ZOOKEEPER", "3.4.5.2.0");
+    Assert.notNull(descriptor);
+    Assert.notNull(descriptor.getServices());
+    Assert.notNull(descriptor.getService("ZOOKEEPER"));
+  }
+
+  private KerberosDescriptor getKerberosDescriptor(File baseDirectory, String service, String version) throws IOException {
+    File serviceDirectory = new File(baseDirectory, service);
+    File serviceVersionDirectory = new File(serviceDirectory, version);
+    return KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(serviceVersionDirectory, "kerberos.json"));
+  }
 }

+ 8 - 0
ambari-server/src/test/java/org/apache/ambari/server/stack/StackManagerTest.java

@@ -577,5 +577,13 @@ public class StackManagerTest {
 
   }
 
+  @Test
+  public void testInheritKerberosDescriptor() throws Exception {
+    StackInfo stack = stackManager.getStack("HDP", "2.1.1");
+    String stacksFolder = ClassLoader.getSystemClassLoader().getResource("stacks").getPath();
+    assertEquals(new File(stacksFolder, "HDP/2.0.8/kerberos.json").getAbsolutePath(),
+        stack.getKerberosDescriptorFileLocation());
+  }
+
   //todo: component override assertions
 }