You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/04/17 20:18:16 UTC
[22/34] ambari git commit: AMBARI-20762. Add more database options
for BEACON in stack advisor.(xiwang)
AMBARI-20762. Add more database options for BEACON in stack advisor.(xiwang)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c57300a3
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c57300a3
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c57300a3
Branch: refs/heads/branch-feature-AMBARI-12556
Commit: c57300a359bfdb3225e2660a661733fc58daac2c
Parents: 38f84bf
Author: Xi Wang <xi...@apache.org>
Authored: Thu Apr 13 14:10:16 2017 -0700
Committer: Xi Wang <xi...@apache.org>
Committed: Thu Apr 13 16:11:44 2017 -0700
----------------------------------------------------------------------
.../stacks/HDP/2.6/services/stack_advisor.py | 33 +++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/c57300a3/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py
index 38f46d7..4e1b4b6 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py
+++ b/ambari-server/src/main/resources/stacks/HDP/2.6/services/stack_advisor.py
@@ -40,11 +40,42 @@ class HDP26StackAdvisor(HDP25StackAdvisor):
"HIVE": self.recommendHIVEConfigurations,
"HBASE": self.recommendHBASEConfigurations,
"YARN": self.recommendYARNConfigurations,
- "KAFKA": self.recommendKAFKAConfigurations
+ "KAFKA": self.recommendKAFKAConfigurations,
+ "BEACON": self.recommendBEACONConfigurations
}
parentRecommendConfDict.update(childRecommendConfDict)
return parentRecommendConfDict
+ def recommendBEACONConfigurations(self, configurations, clusterData, services, hosts):
+ beaconEnvProperties = self.getSiteProperties(services['configurations'], 'beacon-env')
+ putbeaconEnvProperty = self.putProperty(configurations, "beacon-env", services)
+
+ # database URL and driver class recommendations
+ if beaconEnvProperties and self.checkSiteProperties(beaconEnvProperties, 'beacon_store_driver') and self.checkSiteProperties(beaconEnvProperties, 'beacon_database'):
+ putbeaconEnvProperty('beacon_store_driver', self.getDBDriver(beaconEnvProperties['beacon_database']))
+ if beaconEnvProperties and self.checkSiteProperties(beaconEnvProperties, 'beacon_store_db_name', 'beacon_store_url') and self.checkSiteProperties(beaconEnvProperties, 'beacon_database'):
+ beaconServerHost = self.getHostWithComponent('BEACON', 'BEACON_SERVER', services, hosts)
+ beaconDBConnectionURL = beaconEnvProperties['beacon_store_url']
+ protocol = self.getProtocol(beaconEnvProperties['beacon_database'])
+ oldSchemaName = self.getOldValue(services, "beacon-env", "beacon_store_db_name")
+ oldDBType = self.getOldValue(services, "beacon-env", "beacon_database")
+ # under these if constructions we are checking if beacon server hostname available,
+ # if it's default db connection url with "localhost" or if schema name was changed or if db type was changed (only for db type change from default mysql to existing mysql)
+ # or if protocol according to current db type differs with protocol in db connection url(other db types changes)
+ if beaconServerHost is not None:
+ if (beaconDBConnectionURL and "//localhost" in beaconDBConnectionURL) or oldSchemaName or oldDBType or (protocol and beaconDBConnectionURL and not beaconDBConnectionURL.startswith(protocol)):
+ dbConnection = self.getDBConnectionStringBeacon(beaconEnvProperties['beacon_database']).format(beaconServerHost['Hosts']['host_name'], beaconEnvProperties['beacon_store_db_name'])
+ putbeaconEnvProperty('beacon_store_url', dbConnection)
+
+ def getDBConnectionStringBeacon(self, databaseType):
+ driverDict = {
+ 'NEW DERBY DATABASE': 'jdbc:derby:${{beacon.data.dir}}/${{beacon.store.db.name}}-db;create=true',
+ 'EXISTING MYSQL DATABASE': 'jdbc:mysql://{0}/{1}',
+ 'EXISTING MYSQL / MARIADB DATABASE': 'jdbc:mysql://{0}/{1}',
+ 'EXISTING ORACLE DATABASE': 'jdbc:oracle:thin:@//{0}:1521/{1}'
+ }
+ return driverDict.get(databaseType.upper())
+
def recommendAtlasConfigurations(self, configurations, clusterData, services, hosts):
super(HDP26StackAdvisor, self).recommendAtlasConfigurations(configurations, clusterData, services, hosts)
servicesList = [service["StackServices"]["service_name"] for service in services["services"]]