[49/50] [abbrv] ambari git commit: AMBARI-21064. HDP 3.0 TP - create Service Advisor for Oozie.(vbrodetskyi)

2017-05-23 Thread jonathanhurley
AMBARI-21064. HDP 3.0 TP - create Service Advisor for Oozie.(vbrodetskyi)


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

Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 1c19200cd446159fba94395867184d2d144c48c7
Parents: a2eefe8
Author: Vitaly Brodetskyi 
Authored: Wed May 24 01:10:29 2017 +0300
Committer: Vitaly Brodetskyi 
Committed: Wed May 24 01:10:29 2017 +0300

--
 .../OOZIE/4.2.0.3.0/service_advisor.py  | 314 +++
 1 file changed, 314 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ambari/blob/1c19200c/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
--
diff --git 
a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
 
b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
new file mode 100644
index 000..d1e2b77
--- /dev/null
+++ 
b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
@@ -0,0 +1,314 @@
+#!/usr/bin/env ambari-python-wrap
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+# Python imports
+import imp
+import os
+import traceback
+import re
+import socket
+import fnmatch
+
+
+from resource_management.core.logger import Logger
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../stacks/')
+PARENT_FILE = os.path.join(STACKS_DIR, 'service_advisor.py')
+
+try:
+  with open(PARENT_FILE, 'rb') as fp:
+service_advisor = imp.load_module('service_advisor', fp, PARENT_FILE, 
('.py', 'rb', imp.PY_SOURCE))
+except Exception as e:
+  traceback.print_exc()
+  print "Failed to load parent"
+
+class OozieServiceAdvisor(service_advisor.ServiceAdvisor):
+
+  def __init__(self, *args, **kwargs):
+self.as_super = super(OozieServiceAdvisor, self)
+self.as_super.__init__(*args, **kwargs)
+
+# Always call these methods
+self.modifyMastersWithMultipleInstances()
+self.modifyCardinalitiesDict()
+self.modifyHeapSizeProperties()
+self.modifyNotValuableComponents()
+self.modifyComponentsNotPreferableOnServer()
+self.modifyComponentLayoutSchemes()
+
+  def modifyMastersWithMultipleInstances(self):
+"""
+Modify the set of masters with multiple instances.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyCardinalitiesDict(self):
+"""
+Modify the dictionary of cardinalities.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyHeapSizeProperties(self):
+"""
+Modify the dictionary of heap size properties.
+Must be overriden in child class.
+"""
+pass
+
+  def modifyNotValuableComponents(self):
+"""
+Modify the set of components whose host assignment is based on other 
services.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyComponentsNotPreferableOnServer(self):
+"""
+Modify the set of components that are not preferable on the server.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyComponentLayoutSchemes(self):
+"""
+Modify layout scheme dictionaries for components.
+The scheme dictionary basically maps the number of hosts to
+host index where component should exist.
+Must be overriden in child class.
+"""
+self.componentLayoutSchemes.update({
+  'OOZIE_SERVER': {6: 1, 31: 2, "else": 3},
+  })
+
+  def getServiceComponentLayoutValidations(self, services, hosts):
+"""
+Get a list of errors.
+Must be overriden in child class.
+"""
+
+return []
+
+  def getServiceConfigurationRecommendations(self, configurations, 
clusterData, services, hosts):
+"""
+Entry point.
+Must be 

ambari git commit: AMBARI-21064. HDP 3.0 TP - create Service Advisor for Oozie.(vbrodetskyi)

2017-05-23 Thread vbrodetskyi
Repository: ambari
Updated Branches:
  refs/heads/trunk a2eefe849 -> 1c19200cd


AMBARI-21064. HDP 3.0 TP - create Service Advisor for Oozie.(vbrodetskyi)


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

Branch: refs/heads/trunk
Commit: 1c19200cd446159fba94395867184d2d144c48c7
Parents: a2eefe8
Author: Vitaly Brodetskyi 
Authored: Wed May 24 01:10:29 2017 +0300
Committer: Vitaly Brodetskyi 
Committed: Wed May 24 01:10:29 2017 +0300

--
 .../OOZIE/4.2.0.3.0/service_advisor.py  | 314 +++
 1 file changed, 314 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ambari/blob/1c19200c/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
--
diff --git 
a/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
 
b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
new file mode 100644
index 000..d1e2b77
--- /dev/null
+++ 
b/ambari-server/src/main/resources/common-services/OOZIE/4.2.0.3.0/service_advisor.py
@@ -0,0 +1,314 @@
+#!/usr/bin/env ambari-python-wrap
+"""
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+
+# Python imports
+import imp
+import os
+import traceback
+import re
+import socket
+import fnmatch
+
+
+from resource_management.core.logger import Logger
+
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+STACKS_DIR = os.path.join(SCRIPT_DIR, '../../../stacks/')
+PARENT_FILE = os.path.join(STACKS_DIR, 'service_advisor.py')
+
+try:
+  with open(PARENT_FILE, 'rb') as fp:
+service_advisor = imp.load_module('service_advisor', fp, PARENT_FILE, 
('.py', 'rb', imp.PY_SOURCE))
+except Exception as e:
+  traceback.print_exc()
+  print "Failed to load parent"
+
+class OozieServiceAdvisor(service_advisor.ServiceAdvisor):
+
+  def __init__(self, *args, **kwargs):
+self.as_super = super(OozieServiceAdvisor, self)
+self.as_super.__init__(*args, **kwargs)
+
+# Always call these methods
+self.modifyMastersWithMultipleInstances()
+self.modifyCardinalitiesDict()
+self.modifyHeapSizeProperties()
+self.modifyNotValuableComponents()
+self.modifyComponentsNotPreferableOnServer()
+self.modifyComponentLayoutSchemes()
+
+  def modifyMastersWithMultipleInstances(self):
+"""
+Modify the set of masters with multiple instances.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyCardinalitiesDict(self):
+"""
+Modify the dictionary of cardinalities.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyHeapSizeProperties(self):
+"""
+Modify the dictionary of heap size properties.
+Must be overriden in child class.
+"""
+pass
+
+  def modifyNotValuableComponents(self):
+"""
+Modify the set of components whose host assignment is based on other 
services.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyComponentsNotPreferableOnServer(self):
+"""
+Modify the set of components that are not preferable on the server.
+Must be overriden in child class.
+"""
+# Nothing to do
+pass
+
+  def modifyComponentLayoutSchemes(self):
+"""
+Modify layout scheme dictionaries for components.
+The scheme dictionary basically maps the number of hosts to
+host index where component should exist.
+Must be overriden in child class.
+"""
+self.componentLayoutSchemes.update({
+  'OOZIE_SERVER': {6: 1, 31: 2, "else": 3},
+  })
+
+  def getServiceComponentLayoutValidations(self, services, hosts):
+"""
+Get a list of errors.
+Must be overriden in child class.
+"""
+
+return []
+
+  def getServiceConfigurationRecommendations(self, configurations, 
clusterData,