Пример #1
0
    def testPmQuery(self):
        # test the default value when not specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('pm_query') )
        self.assertEqual( cfg['pm_query'], False )

        # test with enterprise specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "4.5.0-1", 
            "boxtype"    : "cal-precise64",
            "pm_query"   : true,
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('pm_query') )
        self.assertEqual( cfg['pm_query'], True )
        
        # now test an invalid config
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "pm_query"   : true,
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        with self.assertRaisesRegexp(Exception,"PM local query option only supported.*"):
            cfg.validate()
Пример #2
0
    def testNonroot(self):
        # test the default value when not specified
        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('idbuser') )
        self.assertEqual( cfg['idbuser'], 'root' )
        self.assertEqual(cfg.infinidb_install_dir(), '/usr/local/Calpont')

        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "idbuser" : "calpont",
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('idbuser') )
        self.assertEqual( cfg['idbuser'], 'calpont' )
        self.assertEqual(cfg.infinidb_install_dir(), '/home/calpont/Calpont')
Пример #3
0
    def testHadoop(self):
        # test a success path
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64-hadoop",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              },
            "hadoop"     : {
              "instance-templates" : "1 hadoop-namenode+hadoop-jobtracker,2 hadoop-datanode+hadoop-tasktracker"
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('hadoop') )
        self.assertEqual( cfg['hadoop']['instance-templates'], "1 hadoop-namenode+hadoop-jobtracker,2 hadoop-datanode+hadoop-tasktracker" )

        # test hadoop without any hadoop attributes, to simulate
        # the usage for an EM type install
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64-hadoop",
            "upgrade"    : "3.5.2-2",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              },
            "hadoop"     : {
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('hadoop') )

        # test invalid boxtype
        s = """{
Пример #4
0
    def testEnterprise(self):
        # test the default value when not specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('enterprise') )
        self.assertEqual( cfg['enterprise'], True )

        # test with enterprise specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "enterprise" : false,
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('enterprise') )
        self.assertEqual( cfg['enterprise'], False )
Пример #5
0
    def testUpgrade(self):
        # test the default value when not specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('upgrade') )
        self.assertEqual( cfg['upgrade'], '' )

        # test with external storage enabled
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "upgrade"    : "3.5.2-2",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('upgrade') )
        self.assertEqual( cfg['upgrade'], '3.5.2-2' )
Пример #6
0
 def testHadoop(self):
     # test a success path
     s = """{
         "name"       : "e-cluster",
         "idbversion" : "3.5.1-4", 
         "boxtype"    : "cal-precise64-hadoop",
         "rolespec"   : {
             "pm" : {
                 "count"       : 2,
                 "memory"      : 1024,
                 "dbroots_per" : 2
             }
           },
         "hadoop"     : {
           "instance-templates" : "1 hadoop-namenode+hadoop-jobtracker,2 hadoop-datanode+hadoop-tasktracker"
           }
         }
         """
     cfg = ConfigSpec(s)
     self.assertTrue( cfg.has_key('hadoop') )
     self.assertEqual( cfg['hadoop']['instance-templates'], "1 hadoop-namenode+hadoop-jobtracker,2 hadoop-datanode+hadoop-tasktracker" )
Пример #7
0
    def testExtstore(self):
        # test the default value when not specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count"  : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('storage') )
        self.assertEqual( cfg['storage'], 'internal' )

        # test with external storage enabled
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "storage"    : "external",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count"  : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('storage') )
        self.assertEqual( cfg['storage'], 'external' )

        # test incorrect setting for external storage flag
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "storage"    : true,
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count"  : 1,
                    "memory" : 1024
                }
              }
            }
            """
        with self.assertRaisesRegexp(Exception,"ConfigSpec has wrong type for attribute storage.*"):
            cfg = ConfigSpec(s)
Пример #8
0
    def testBinary(self):
        # test the default value when not specified
        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('binary') )
        self.assertFalse( cfg['binary'] )

        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "binary"  : true,
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('binary') )
        self.assertTrue( cfg['binary'] )

        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "binary"  : false,
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('binary') )
        self.assertFalse( cfg['binary'] )

        s = """{
            "name" : "a-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype" : "cal-precise64",
            "idbuser" : "calpont",
            "binary"  : "true",
            "rolespec" : {
                "pm" : {
                    "count" : 4,
                    "memory" : 1024,
                    "dbroots_per" : 2
                },
                "um" : {
                    "count" : 1,
                    "memory" : 1024
                }
              }
            }
            """
        with self.assertRaisesRegexp(Exception,"ConfigSpec has wrong type for attribute binary.*"):        
            cfg = ConfigSpec(s)
Пример #9
0
    def testEm(self):
        # test the default value when not specified
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('em') )
        self.assertEqual( cfg['em'], None )

        # test with em option
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "4.5.0-1", 
            "boxtype"    : "cal-precise64",
            "em"         : { "present" : true },
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('em') )
        self.assertEqual( cfg['em']['present'], True )
        self.assertEqual( cfg['em']['emhost'], 'localhost' )
        self.assertEqual( cfg['em']['emport'], 9090 )
        self.assertEqual( cfg['em']['oamserver_role'], 'um1' )
        self.assertEqual( cfg['em']['invm'], False )
        self.assertFalse( cfg['em'].has_key('boxtype') )
        self.assertFalse( cfg['em'].has_key('version') )

        # test with fully specified em option
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "4.5.0-1", 
            "boxtype"    : "cal-precise64",
            "em"         : { "present" : true, "emhost" : "testhost", "emport" : 7120, "oamserver_role" : "pm1" },
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        self.assertTrue( cfg.has_key('em') )
        self.assertEqual( cfg['em']['present'], True )
        self.assertEqual( cfg['em']['emhost'], 'testhost' )
        self.assertEqual( cfg['em']['emport'], 7120 )
        self.assertEqual( cfg['em']['oamserver_role'], 'pm1' )
        self.assertEqual( cfg['em']['invm'], False )
        
        # now test an invalid config
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "em"         : { "foo" : "bar" },
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        with self.assertRaisesRegexp(Exception,"Must specify present flag.*"):
            cfg = ConfigSpec(s)

        # now test an invalid config
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "3.5.1-4", 
            "boxtype"    : "cal-precise64",
            "em"         : { "present" : true },
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        cfg = ConfigSpec(s)
        with self.assertRaisesRegexp(Exception,"Enterprise Manager.*only supported.*"):
            cfg.validate()
            
        # test the whether the global empresent property works
        s = """{
            "name"       : "e-cluster",
            "idbversion" : "4.5.0-1", 
            "boxtype"    : "cal-centos6",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        common.props['cluster.cluster.empresent'] = True
        try:
            cfg = ConfigSpec(s)
        except Exception, exc:
            common.props['cluster.cluster.empresent'] = False
            raise exc
Пример #10
0
            "idbversion" : "4.5.0-1", 
            "boxtype"    : "cal-centos6",
            "rolespec"   : {
                "pm" : {
                    "count"       : 2,
                    "memory"      : 1024,
                    "dbroots_per" : 2
                }
              }
            }
            """
        common.props['cluster.cluster.eminvm'] = True
        try:
            cfg = ConfigSpec(s)
        except Exception, exc:
            common.props['cluster.cluster.eminvm'] = False
            raise exc
        common.props['cluster.cluster.eminvm'] = False
        self.assertTrue( cfg.has_key('em') )
        self.assertEqual( cfg['em']['present'], True )
        self.assertEqual( cfg['em']['emhost'], 'localhost' )
        self.assertEqual( cfg['em']['emport'], 9090 )
        self.assertEqual( cfg['em']['oamserver_role'], 'um1' )
        self.assertEqual( cfg['em']['invm'], True )
        self.assertEqual( cfg['em']['boxtype'], 'cluster' )
        self.assertEqual( cfg['em']['version'], 'Latest' )

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()