This is an automated email from the ASF dual-hosted git repository. vjasani pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ambari-metrics.git
The following commit(s) were added to refs/heads/master by this push: new 70d1f6b AMBARI-26020: upgrade Ambari Metrics to python3 (#126) 70d1f6b is described below commit 70d1f6b1436f364152f2117bc8b34ec4ae2d3079 Author: jialiang <2510095...@qq.com> AuthorDate: Thu Apr 25 06:58:50 2024 +0800 AMBARI-26020: upgrade Ambari Metrics to python3 (#126) --- ambari-metrics-assembly/pom.xml | 6 ++-- .../src/main/package/deb/control/prerm | 2 +- .../conf/unix/ambari-metrics-monitor | 18 +++------- .../src/main/package/rpm/preremove.sh | 2 +- .../src/main/python/__init__.py | 2 +- .../src/main/python/core/__init__.py | 13 ++++---- .../src/main/python/core/aggregator.py | 8 ++--- .../src/main/python/core/application_metric_map.py | 26 +++++++-------- .../src/main/python/core/blacklisted_set.py | 10 +++--- .../src/main/python/core/config_reader.py | 16 ++++----- .../src/main/python/core/controller.py | 22 ++++++------- .../src/main/python/core/emitter.py | 18 +++++----- .../src/main/python/core/event_definition.py | 4 +-- .../src/main/python/core/host_info.py | 20 ++++++------ .../src/main/python/core/instance_type_provider.py | 2 +- .../src/main/python/core/krberr.py | 2 +- .../src/main/python/core/metering.py | 6 ++-- .../src/main/python/core/metric_collector.py | 6 ++-- .../src/main/python/core/security.py | 10 +++--- .../src/main/python/core/spnego_kerberos_auth.py | 18 +++++----- .../src/main/python/core/stop_handler.py | 2 +- .../src/main/python/main.py | 17 ++++++---- .../src/main/python/psutil/Makefile | 8 ++--- .../src/main/python/psutil/build.py | 6 ++-- .../src/main/python/psutil/docs/conf.py | 10 +++--- .../src/main/python/psutil/examples/disk_usage.py | 2 +- .../src/main/python/psutil/examples/free.py | 2 +- .../src/main/python/psutil/examples/iotop.py | 2 +- .../src/main/python/psutil/examples/killall.py | 2 +- .../src/main/python/psutil/examples/meminfo.py | 2 +- .../src/main/python/psutil/examples/netstat.py | 2 +- .../src/main/python/psutil/examples/nettop.py | 2 +- .../src/main/python/psutil/examples/pmap.py | 2 +- .../main/python/psutil/examples/process_detail.py | 2 +- .../src/main/python/psutil/examples/top.py | 2 +- .../src/main/python/psutil/examples/who.py | 2 +- .../src/main/python/psutil/psutil/__init__.py | 20 ++++++------ .../src/main/python/psutil/psutil/_common.py | 2 +- .../src/main/python/psutil/psutil/_compat.py | 2 +- .../src/main/python/psutil/psutil/_psbsd.py | 2 +- .../src/main/python/psutil/psutil/_pslinux.py | 6 ++-- .../src/main/python/psutil/psutil/_psosx.py | 2 +- .../src/main/python/psutil/psutil/_psposix.py | 2 +- .../src/main/python/psutil/psutil/_pssunos.py | 2 +- .../src/main/python/psutil/psutil/_pswindows.py | 4 +-- .../src/main/python/psutil/setup.py | 2 +- .../src/main/unix/ambari-python-wrap | 21 ++++-------- .../test/python/core/TestApplicationMetricMap.py | 2 +- .../src/test/python/core/TestEmitter.py | 2 +- .../src/test/python/core/TestHostInfo.py | 2 +- .../src/test/python/core/TestMetricCollector.py | 2 +- .../src/test/python/mock/docs/conf.py | 8 ++--- .../src/test/python/mock/mock.py | 12 +++---- .../src/test/python/unitTests.py | 2 +- .../conf/unix/sqlline/phoenix_utils.py | 32 +++++++++--------- .../conf/unix/sqlline/sqlline.py | 10 +++--- .../python/ambari_metrics_collector/__init__.py | 2 +- .../python/ambari_metrics_collector/properties.py | 33 +++++++++++-------- .../serviceConfiguration.py | 8 ++--- .../src/main/python/amc_service.py | 4 +-- .../src/main/python/embedded_hbase_service.py | 18 +++++----- .../src/main/python/main.py | 16 ++++----- .../src/main/resources/scripts/ams_query.py | 38 +++++++++++----------- pom.xml | 6 ++-- 64 files changed, 266 insertions(+), 272 deletions(-) diff --git a/ambari-metrics-assembly/pom.xml b/ambari-metrics-assembly/pom.xml index 1f5f10e..8f26a5e 100644 --- a/ambari-metrics-assembly/pom.xml +++ b/ambari-metrics-assembly/pom.xml @@ -41,13 +41,13 @@ <storm-sink.dir>${project.basedir}/../ambari-metrics-storm-sink</storm-sink.dir> <flume-sink.dir>${project.basedir}/../ambari-metrics-flume-sink</flume-sink.dir> <kafka-sink.dir>${project.basedir}/../ambari-metrics-kafka-sink</kafka-sink.dir> - <python.ver>python >= 2.6</python.ver> - <python.devel>python-devel</python.devel> + <python.ver>python3 >= 3.0</python.ver> + <python.devel>python3-devel</python.devel> <deb.publisher>Apache</deb.publisher> <deb.section>universe/admin</deb.section> <deb.architecture>i386 amd64</deb.architecture> <deb.priority>extra</deb.priority> - <deb.python.ver>python (>= 2.6)</deb.python.ver> + <deb.python.ver>python3 (>= 3.0)</deb.python.ver> <deb.architecture>amd64</deb.architecture> <deb.dependency.list>${deb.python.ver},python-dev,gcc</deb.dependency.list> <hadoop.sink.jar>ambari-metrics-hadoop-sink-with-common-${project.version}.jar</hadoop.sink.jar> diff --git a/ambari-metrics-assembly/src/main/package/deb/control/prerm b/ambari-metrics-assembly/src/main/package/deb/control/prerm index f50d88a..a231fdb 100644 --- a/ambari-metrics-assembly/src/main/package/deb/control/prerm +++ b/ambari-metrics-assembly/src/main/package/deb/control/prerm @@ -17,7 +17,7 @@ # during package update. See http://www.ibm.com/developerworks/library/l-rpm2/ # for details -RESOURCE_MONITORING_DIR=/usr/lib/python2.6/site-packages/resource_monitoring +RESOURCE_MONITORING_DIR=/usr/lib/python3.9/site-packages/resource_monitoring PSUTIL_DIR="${RESOURCE_MONITORING_DIR}/psutil" diff --git a/ambari-metrics-host-monitoring/conf/unix/ambari-metrics-monitor b/ambari-metrics-host-monitoring/conf/unix/ambari-metrics-monitor index 7cde266..977fe20 100644 --- a/ambari-metrics-host-monitoring/conf/unix/ambari-metrics-monitor +++ b/ambari-metrics-host-monitoring/conf/unix/ambari-metrics-monitor @@ -18,7 +18,7 @@ MONITOR_CONF_DIR=/etc/ambari-metrics-monitor/conf/ METRIC_MONITOR=ambari-metrics-monitor -RESOURCE_MONITORING_DIR=/usr/lib/python2.6/site-packages/resource_monitoring +RESOURCE_MONITORING_DIR=/usr/lib/python3.9/site-packages/resource_monitoring METRIC_MONITOR_PY_SCRIPT=${RESOURCE_MONITORING_DIR}/main.py PIDFILE=/var/run/ambari-metrics-monitor/ambari-metrics-monitor.pid @@ -30,20 +30,12 @@ OK=0 NOTOK=1 # checking for default Python 2 -if [ -a /usr/bin/python2 ] && [ -z "$PYTHON" ]; then - PYTHON=/usr/bin/python2 +if [ -a /usr/bin/python3 ] && [ -z "$PYTHON" ]; then + PYTHON=/usr/bin/python3 fi -if [ -a /usr/bin/python2.7 ] && [ -z "${PYTHON}" ]; then - PYTHON=/usr/bin/python2.7 -fi - -if [ -a /usr/bin/python2.6 ] && [ -z "${PYTHON}" ]; then - PYTHON=/usr/bin/python2.6 -fi - -if [ "x$PYTHON" == "x" ]; then - PYTHON=/usr/bin/python +if [ -a /usr/bin/python3.9 ] && [ -z "${PYTHON}" ]; then + PYTHON=/usr/bin/python3.9 fi export PYTHON=${PYTHON} diff --git a/ambari-metrics-host-monitoring/src/main/package/rpm/preremove.sh b/ambari-metrics-host-monitoring/src/main/package/rpm/preremove.sh index 9789127..d191fe5 100644 --- a/ambari-metrics-host-monitoring/src/main/package/rpm/preremove.sh +++ b/ambari-metrics-host-monitoring/src/main/package/rpm/preremove.sh @@ -17,7 +17,7 @@ # during package update. See http://www.ibm.com/developerworks/library/l-rpm2/ # for details -RESOURCE_MONITORING_DIR=/usr/lib/python2.6/site-packages/resource_monitoring +RESOURCE_MONITORING_DIR=/usr/lib/python3.9/site-packages/resource_monitoring PSUTIL_DIR="${RESOURCE_MONITORING_DIR}/psutil" diff --git a/ambari-metrics-host-monitoring/src/main/python/__init__.py b/ambari-metrics-host-monitoring/src/main/python/__init__.py index adfc71c..a082e43 100644 --- a/ambari-metrics-host-monitoring/src/main/python/__init__.py +++ b/ambari-metrics-host-monitoring/src/main/python/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/main/python/core/__init__.py b/ambari-metrics-host-monitoring/src/main/python/core/__init__.py index 264a95d..8b1fff1 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/__init__.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file @@ -26,12 +26,13 @@ path = os.path.join(os.path.dirname(os.path.dirname(path)), "psutil", "build") IS_WINDOWS = platform.system() == "Windows" if not IS_WINDOWS: - for dir in os.walk(path).next()[1]: - if 'lib' in dir: - sys.path.insert(1, os.path.join(path, dir)) + for root, dirs, files in os.walk(path): + for dir in dirs: + if 'lib' in dir: + sys.path.insert(1, os.path.join(path, dir)) try: import psutil except ImportError: - print 'psutil binaries need to be built by running, psutil/build.py ' \ - 'manually or by running a, mvn clean package, command.' + print('psutil binaries need to be built by running, psutil/build.py ' \ + 'manually or by running a, mvn clean package, command.') diff --git a/ambari-metrics-host-monitoring/src/main/python/core/aggregator.py b/ambari-metrics-host-monitoring/src/main/python/core/aggregator.py index 59cdd27..88af469 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/aggregator.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/aggregator.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -21,7 +21,7 @@ limitations under the License. import threading import subprocess import logging -import urllib2 +import urllib.request, urllib.error, urllib.parse logger = logging.getLogger() class Aggregator(threading.Thread): @@ -82,11 +82,11 @@ class AggregatorWatchdog(threading.Thread): if 0 == self._stop_handler.wait(self.SLEEP_TIME): break try: - conn = urllib2.urlopen(self.URL, timeout=self.CONNECTION_TIMEOUT) + conn = urllib.request.urlopen(self.URL, timeout=self.CONNECTION_TIMEOUT) self.set_is_ok(True) except (KeyboardInterrupt, SystemExit): raise - except Exception, e: + except Exception as e: self.set_is_ok(False) continue if conn.code != 200: diff --git a/ambari-metrics-host-monitoring/src/main/python/core/application_metric_map.py b/ambari-metrics-host-monitoring/src/main/python/core/application_metric_map.py index 59d4af0..ed08a17 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/application_metric_map.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/application_metric_map.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -46,7 +46,7 @@ class ApplicationMetricMap: def put_metric(self, application_id, metric_id_to_value_map, timestamp): with self.lock: - for metric_name, value in metric_id_to_value_map.iteritems(): + for metric_name, value in metric_id_to_value_map.items(): metric_map = self.app_metric_map.get(application_id) if not metric_map: @@ -79,7 +79,7 @@ class ApplicationMetricMap: local_metric_map = {} if application_id: - if self.app_metric_map.has_key(application_id): + if application_id in self.app_metric_map: local_metric_map = { application_id : self.app_metric_map[application_id] } else: logger.info("application_id: {0}, not present in the map.".format(application_id)) @@ -87,9 +87,9 @@ class ApplicationMetricMap: local_metric_map = self.app_metric_map.copy() pass - for appId, metrics in local_metric_map.iteritems(): + for appId, metrics in local_metric_map.items(): current_app_id = "HOST" if "HOST" in appId else appId - for metricId, metricData in dict(metrics).iteritems(): + for metricId, metricData in dict(metrics).items(): # Create a timeline metric object result_instanceid = "" if set_instanceid: @@ -116,14 +116,14 @@ class ApplicationMetricMap: def get_start_time(self, app_id, metric_id): with self.lock: - if self.cached_metric_map.has_key(app_id): - if self.cached_metric_map.get(app_id).has_key(metric_id): + if app_id in self.cached_metric_map: + if metric_id in self.cached_metric_map.get(app_id): metrics = self.cached_metric_map.get(app_id).get(metric_id) - return min(metrics.iterkeys()) - if self.app_metric_map.has_key(app_id): - if self.app_metric_map.get(app_id).has_key(metric_id): + return min(metrics.keys()) + if app_id in self.app_metric_map: + if metric_id in self.app_metric_map.get(app_id): metrics = self.app_metric_map.get(app_id).get(metric_id) - return min(metrics.iterkeys()) + return min(metrics.keys()) pass def format_app_id(self, app_id, instance_id = None): @@ -164,11 +164,11 @@ class ApplicationMetricMap: # check if needs to be cached # in case there can't be any more datapoints in last minute just post the metrics, # otherwise need to cut off and cache the last uncompleted minute - max_time = max(metricData.iterkeys()) + max_time = max(metricData.keys()) if max_time % 60000 <= 60000 - 10000: max_minute = max_time / 60000 metric_data_copy = metricData.copy() - for time,value in metric_data_copy.iteritems(): + for time,value in metric_data_copy.items(): if time / 60000 == max_minute: cached_metric_map = self.cached_metric_map.get(appId) if not cached_metric_map: diff --git a/ambari-metrics-host-monitoring/src/main/python/core/blacklisted_set.py b/ambari-metrics-host-monitoring/src/main/python/core/blacklisted_set.py index dab54c0..57991d7 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/blacklisted_set.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/blacklisted_set.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -38,7 +38,7 @@ class BlacklistedSet(set): def __iter__(self): for item in set.__iter__(self): - if time.time() > self.__dict.get(item): + if time.time() > self.__dict.get(item, 0): yield item def get_actual_size(self): @@ -62,12 +62,12 @@ if __name__ == "__main__": hosts = [1, 2, 3, 4] bs = BlacklistedSet(hosts) bs.blacklist(4) - print bs + print(bs) for a in bs: - print a + print(a) time.sleep(2) bs.blacklist(1) bs.blacklist(5) for a in bs: - print a + print(a) diff --git a/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py b/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py index 18ade5b..043298e 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -18,8 +18,8 @@ See the License for the specific language governing permissions and limitations under the License. ''' -import ConfigParser -import StringIO +import configparser +import io import json import os @@ -54,7 +54,7 @@ class ConfigDefaultsLinux(ConfigDefaults): configDefaults = ConfigDefaultsLinux() -config = ConfigParser.RawConfigParser() +config = configparser.RawConfigParser() CONFIG_DIR = configDefaults.get_config_dir() CONFIG_FILE_PATH = configDefaults.get_config_file_path() @@ -147,17 +147,17 @@ class Configuration: def __init__(self): global config_content - self.config = ConfigParser.RawConfigParser() + self.config = configparser.RawConfigParser() if os.path.exists(CONFIG_FILE_PATH): self.config.read(CONFIG_FILE_PATH) else: - self.config.readfp(StringIO.StringIO(config_content)) + self.config.readfp(io.StringIO(config_content)) pass if os.path.exists(METRIC_FILE_PATH): with open(METRIC_FILE_PATH, 'r') as f: self.metric_groups = json.load(f) else: - print 'No metric configs found at {0}'.format(METRIC_FILE_PATH) + print('No metric configs found at {0}'.format(METRIC_FILE_PATH)) self.metric_groups = \ { 'host_metric_groups': [], @@ -166,7 +166,7 @@ class Configuration: pass self._ca_cert_file_path = CA_CERTS_FILE_PATH self.hostname_script = None - ambari_agent_config = ConfigParser.RawConfigParser() + ambari_agent_config = configparser.RawConfigParser() if os.path.exists(AMBARI_AGENT_CONF): try: ambari_agent_config.read(AMBARI_AGENT_CONF) diff --git a/ambari-metrics-host-monitoring/src/main/python/core/controller.py b/ambari-metrics-host-monitoring/src/main/python/core/controller.py index 080eaca..7fa937e 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/controller.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/controller.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -20,15 +20,15 @@ limitations under the License. import logging import threading -from Queue import Queue +from queue import Queue from threading import Timer -from application_metric_map import ApplicationMetricMap -from event_definition import HostMetricCollectEvent, ProcessMetricCollectEvent -from metric_collector import MetricsCollector -from emitter import Emitter -from host_info import HostInfo -from aggregator import Aggregator -from aggregator import AggregatorWatchdog +from resource_monitoring.core.application_metric_map import ApplicationMetricMap +from resource_monitoring.core.event_definition import HostMetricCollectEvent, ProcessMetricCollectEvent +from resource_monitoring.core.metric_collector import MetricsCollector +from resource_monitoring.core.emitter import Emitter +from resource_monitoring.core.host_info import HostInfo +from resource_monitoring.core.aggregator import Aggregator +from resource_monitoring.core.aggregator import AggregatorWatchdog logger = logging.getLogger() @@ -107,13 +107,13 @@ class Controller(threading.Thread): try: host_metrics_groups = self.metrics_config['host_metric_groups'] process_metrics_groups = self.metrics_config['process_metric_groups'] - except KeyError, ke: + except KeyError as ke: logger.warn('Error loading metric groups.') raise ke pass if host_metrics_groups: - for name, properties in host_metrics_groups.iteritems(): + for name, properties in host_metrics_groups.items(): event = HostMetricCollectEvent(properties, name) logger.info('Adding event to cache, {0} : {1}'.format(name, properties)) self.events_cache.append(event) diff --git a/ambari-metrics-host-monitoring/src/main/python/core/emitter.py b/ambari-metrics-host-monitoring/src/main/python/core/emitter.py index 4c0dd96..d220b7a 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/emitter.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/emitter.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -21,10 +21,10 @@ limitations under the License. import logging import threading -from security import CachedHTTPSConnection, CachedHTTPConnection -from blacklisted_set import BlacklistedSet -from config_reader import ROUND_ROBIN_FAILOVER_STRATEGY -from spnego_kerberos_auth import SPNEGOKerberosAuth +from resource_monitoring.core.security import CachedHTTPSConnection, CachedHTTPConnection +from resource_monitoring.core.blacklisted_set import BlacklistedSet +from resource_monitoring.core.config_reader import ROUND_ROBIN_FAILOVER_STRATEGY +from resource_monitoring.core.spnego_kerberos_auth import SPNEGOKerberosAuth logger = logging.getLogger() @@ -80,7 +80,7 @@ class Emitter(threading.Thread): while True: try: self.submit_metrics() - except Exception, e: + except Exception as e: logger.warn('Unable to emit events. %s' % str(e)) self.cookie_cached = {} pass @@ -129,7 +129,7 @@ class Emitter(threading.Thread): if self.cookie_cached[connection.host]: headers["Cookie"] = self.cookie_cached[connection.host] logger.debug("Cookie: %s" % self.cookie_cached[connection.host]) - except Exception, e: + except Exception as e: self.cookie_cached = {} pass @@ -197,7 +197,7 @@ class Emitter(threading.Thread): .format(response.status, response.reason)) logger.debug(str(response.read())) return response - except Exception, e: + except Exception as e: logger.warn('Error sending metrics to server. %s' % str(e)) self.cookie_cached = {} return None @@ -213,7 +213,7 @@ class Emitter(threading.Thread): def compute_hash(self, hostname): hash = 11987 length = len(hostname) - for i in xrange(0, length - 1): + for i in range(0, length - 1): hash = 31*hash + ord(hostname[i]) return hash diff --git a/ambari-metrics-host-monitoring/src/main/python/core/event_definition.py b/ambari-metrics-host-monitoring/src/main/python/core/event_definition.py index 8c905da..45c9c1a 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/event_definition.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/event_definition.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -54,7 +54,7 @@ class HostMetricCollectEvent(Event): try: self.group_interval = group_config['collect_every'] self.metrics = group_config['metrics'] - except KeyError, ex: + except KeyError as ex: logger.warn('Unable to create event from metric group. {0}'.format( group_config)) raise ex diff --git a/ambari-metrics-host-monitoring/src/main/python/core/host_info.py b/ambari-metrics-host-monitoring/src/main/python/core/host_info.py index 6198c53..b33ba46 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/host_info.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/host_info.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -69,7 +69,7 @@ class HostInfo(): 'cpu_intr': cpu_times.irq if hasattr(cpu_times, 'irq') else 0, 'cpu_sintr': cpu_times.softirq if hasattr(cpu_times, 'softirq') else 0, 'cpu_steal': cpu_times.steal if hasattr(cpu_times, 'steal') else 0, - 'boottime': long(boot_time) if boot_time else 0 + 'boottime': int(boot_time) if boot_time else 0 } if platform.system() != "Windows": load_avg = os.getloadavg() @@ -157,7 +157,7 @@ class HostInfo(): skip_virtual_interfaces = self.get_virtual_network_interfaces() if self.__config.get_virtual_interfaces_skip() == 'True' else [] skip_network_patterns = self.__config.get_network_interfaces_skip_pattern() skip_network_patterns_list = skip_network_patterns.split(',') if skip_network_patterns and skip_network_patterns != 'None' else [] - for interface, values in net_stats.iteritems(): + for interface, values in net_stats.items(): if interface != 'lo' and not interface in skip_virtual_interfaces: ignore_network = False for p in skip_network_patterns_list: @@ -171,8 +171,8 @@ class HostInfo(): } with self.__last_network_lock: - result = dict((k, (v - self.__last_network_data.get(k, 0)) / delta) for k, v in new_net_stats.iteritems()) - result = dict((k, 0 if v < 0 else v) for k, v in result.iteritems()) + result = dict((k, (v - self.__last_network_data.get(k, 0)) / delta) for k, v in new_net_stats.items()) + result = dict((k, 0 if v < 0 else v) for k, v in result.items()) self.__last_network_data = new_net_stats return result @@ -199,7 +199,7 @@ class HostInfo(): pass try: usage = psutil.disk_usage(part.mountpoint) - except Exception, e: + except Exception as e: logger.debug('Failed to read disk_usage for a mountpoint : ' + str(e)) continue @@ -267,7 +267,7 @@ class HostInfo(): logger.debug('skip_disk_patterns: %s' % skip_disk_patterns) if not skip_disk_patterns or skip_disk_patterns == 'None': io_counters = psutil.disk_io_counters() - print io_counters + print(io_counters) else: sdiskio = namedtuple('sdiskio', ['read_count', 'write_count', 'read_bytes', 'write_bytes', @@ -277,14 +277,14 @@ class HostInfo(): if not rawdict: raise RuntimeError("Couldn't find any physical disk") trimmed_dict = {} - for disk, fields in rawdict.items(): + for disk, fields in list(rawdict.items()): ignore_disk = False for p in skip_disk_pattern_list: if re.match(p, disk): ignore_disk = True if not ignore_disk: trimmed_dict[disk] = sdiskio(*fields) - io_counters = sdiskio(*[sum(x) for x in zip(*trimmed_dict.values())]) + io_counters = sdiskio(*[sum(x) for x in zip(*list(trimmed_dict.values()))]) new_disk_stats = { 'read_count' : io_counters.read_count if hasattr(io_counters, 'read_count') else 0, @@ -309,7 +309,7 @@ class HostInfo(): disk_io_counters = psutil.disk_io_counters(True) per_disk_io_counters = {} - sortByKey = lambda x: sorted(x.items(), key=operator.itemgetter(0)) + sortByKey = lambda x: sorted(list(x.items()), key=operator.itemgetter(0)) disk_counter = 0 if disk_io_counters: diff --git a/ambari-metrics-host-monitoring/src/main/python/core/instance_type_provider.py b/ambari-metrics-host-monitoring/src/main/python/core/instance_type_provider.py index 2e0a321..5eb1002 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/instance_type_provider.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/instance_type_provider.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/main/python/core/krberr.py b/ambari-metrics-host-monitoring/src/main/python/core/krberr.py index c5e0163..0b3ce53 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/krberr.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/krberr.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/main/python/core/metering.py b/ambari-metrics-host-monitoring/src/main/python/core/metering.py index bac71e6..842bfa9 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/metering.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/metering.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -21,7 +21,7 @@ limitations under the License. import logging import time import json -from instance_type_provider import HostInstanceTypeProvider +from resource_monitoring.core.instance_type_provider import HostInstanceTypeProvider logger = logging.getLogger() @@ -50,7 +50,7 @@ class MeteringMetricHandler: def get_metering_metrics(self, metrics): metering_metrics = {} curr_time = int(round(time.time() * 1000)) - for metric_name, value in metrics.iteritems(): + for metric_name, value in metrics.items(): if metric_name in self.metering_metric_list: end_time_metric_key = self.metering_metric_key_prefix + "~" + metric_name + "~" + str(value) + "~" + self.METERING_ALIVE_TIME_METRIC_SUFFIX metering_metrics[end_time_metric_key] = curr_time diff --git a/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py b/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py index f728c2d..f0318b6 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/metric_collector.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -20,8 +20,8 @@ limitations under the License. import logging from time import time -from event_definition import HostMetricCollectEvent, ProcessMetricCollectEvent -from metering import MeteringMetricHandler +from resource_monitoring.core.event_definition import HostMetricCollectEvent, ProcessMetricCollectEvent +from resource_monitoring.core.metering import MeteringMetricHandler logger = logging.getLogger() diff --git a/ambari-metrics-host-monitoring/src/main/python/core/security.py b/ambari-metrics-host-monitoring/src/main/python/core/security.py index e36e01d..bfb2131 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/security.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/security.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -21,17 +21,17 @@ limitations under the License. import logging import ssl import socket -import httplib +import http.client logger = logging.getLogger() # TODO merge this with security.py in ambari-agent and move to ambrari commons -class VerifiedHTTPSConnection(httplib.HTTPSConnection): +class VerifiedHTTPSConnection(http.client.HTTPSConnection): """ Connecting using ssl wrapped sockets """ def __init__(self, host, port, timeout, ca_certs): - httplib.HTTPSConnection.__init__(self, host, port=port, timeout=timeout) + http.client.HTTPSConnection.__init__(self, host, port=port, timeout=timeout) self.ca_certs = ca_certs def connect(self): @@ -85,7 +85,7 @@ class CachedHTTPConnection: return self.httpconn.getresponse() def create_connection(self): - return httplib.HTTPConnection(self.host, self.port, self.timeout) + return http.client.HTTPConnection(self.host, self.port, self.timeout) class CachedHTTPSConnection(CachedHTTPConnection): """ Caches an ssl socket and uses a single https connection to the server. """ diff --git a/ambari-metrics-host-monitoring/src/main/python/core/spnego_kerberos_auth.py b/ambari-metrics-host-monitoring/src/main/python/core/spnego_kerberos_auth.py index e49712f..401f66d 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/spnego_kerberos_auth.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/spnego_kerberos_auth.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -19,14 +19,14 @@ limitations under the License. ''' import logging -import httplib +import http.client import os logger = logging.getLogger() try: import kerberos except ImportError: - import krberr as kerberos + from resource_monitoring.core import krberr as kerberos logger.warn('import kerberos exception: %s' % str(ImportError)) pass @@ -70,7 +70,7 @@ class SPNEGOKerberosAuth: try: connection.request(method, service_url, body, headers) response = connection.getresponse() - except Exception, e: + except Exception as e: logger.warn('2nd HTTP request exception from server: %s' % str(e)) return None pass @@ -88,7 +88,7 @@ class SPNEGOKerberosAuth: if result == -1: logger.warn('authGSSClientInit result: {0}'.format(result)) return None - except kerberos.GSSError, e: + except kerberos.GSSError as e: logger.warn('authGSSClientInit exception: %s' % str(e)) return None pass @@ -99,7 +99,7 @@ class SPNEGOKerberosAuth: if result == -1: logger.warn('authGSSClientStep result for authenticate client: {0}'.format(result)) return None - except kerberos.GSSError, e: + except kerberos.GSSError as e: logger.warn('authGSSClientStep exception for authenticate client: %s' % str(e)) return None pass @@ -108,7 +108,7 @@ class SPNEGOKerberosAuth: try: negotiate_value = kerberos.authGSSClientResponse(self.krb_context) logger.debug("authGSSClientResponse response:{0}".format(negotiate_value)) - except kerberos.GSSError, e: + except kerberos.GSSError as e: logger.warn('authGSSClientResponse exception: %s' % str(e)) return None pass @@ -127,7 +127,7 @@ class SPNEGOKerberosAuth: result = kerberos.authGSSClientStep(self.krb_context, negotiate_value) if result == -1: logger.warn('authGSSClientStep result for authenticate server: {0}'.format(result)) - except kerberos.GSSError, e: + except kerberos.GSSError as e: logger.warn('authGSSClientStep exception for authenticate server: %s' % str(e)) result = -1 pass @@ -138,7 +138,7 @@ class SPNEGOKerberosAuth: try: result = kerberos.authGSSClientClean(self.krb_context) logger.debug("authGSSClientClean result:{0}".format(result)) - except kerberos.GSSError, e: + except kerberos.GSSError as e: logger.warn('authGSSClientClean exception: %s' % str(e)) result = -1 pass diff --git a/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py b/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py index ba77be6..134edf6 100644 --- a/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py +++ b/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/main/python/main.py b/ambari-metrics-host-monitoring/src/main/python/main.py index 02914da..ef674ed 100644 --- a/ambari-metrics-host-monitoring/src/main/python/main.py +++ b/ambari-metrics-host-monitoring/src/main/python/main.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -23,9 +23,14 @@ import logging.handlers import os import sys import signal -from core.controller import Controller -from core.config_reader import Configuration, PID_OUT_FILE -from core.stop_handler import bind_signal_handlers + +current_dir = os.path.dirname(os.path.abspath(__file__)) +parent_dir = os.path.dirname(current_dir) +sys.path.append(parent_dir) + +from resource_monitoring.core.config_reader import Configuration, PID_OUT_FILE +from resource_monitoring.core.stop_handler import bind_signal_handlers +from resource_monitoring.core.controller import Controller logger = logging.getLogger() @@ -65,8 +70,8 @@ def server_process_main(stop_handler, scmStatus=None): logger.info('Starting Server RPC Thread: %s' % ' '.join(sys.argv)) controller.start() - print "Server out at: " + main_config.ams_monitor_out_file() - print "Server log at: " + main_config.ams_monitor_log_file() + print("Server out at: " + main_config.ams_monitor_out_file()) + print("Server log at: " + main_config.ams_monitor_log_file()) save_pid(os.getpid(), PID_OUT_FILE) diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/Makefile b/ambari-metrics-host-monitoring/src/main/python/psutil/Makefile index b812527..59b0862 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/Makefile +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/Makefile @@ -3,7 +3,7 @@ # $ make install PYTHON=python3.3 # You can set these variables from the command line. -PYTHON = python +PYTHON = python3 TSCRIPT = test/test_psutil.py all: test @@ -26,7 +26,7 @@ build: clean $(PYTHON) setup.py build install: build - if test $(PYTHON) = python2.4; then \ + if test $(PYTHON) = python3.9; then \ $(PYTHON) setup.py install; \ elif test $(PYTHON) = python2.5; then \ $(PYTHON) setup.py install; \ @@ -35,8 +35,8 @@ install: build fi uninstall: - if test $(PYTHON) = python2.4; then \ - pip-2.4 uninstall -y -v psutil; \ + if test $(PYTHON) = python3.9; then \ + pip-3.9 uninstall -y -v psutil; \ else \ cd ..; $(PYTHON) -m pip uninstall -y -v psutil; \ fi diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/build.py b/ambari-metrics-host-monitoring/src/main/python/psutil/build.py index 09fb411..66bcd06 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/build.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/build.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -37,7 +37,7 @@ def build(): cwd = os.getcwd() os.chdir(path) - print 'Executing make at location: %s ' % path + print('Executing make at location: %s ' % path) if sys.platform.startswith("win"): # Windows @@ -50,7 +50,7 @@ def build(): os.chdir(cwd) if returncode != 0: - print 'psutil build failed. Please find build output at: %s' % build_out_path + print('psutil build failed. Please find build output at: %s' % build_out_path) pass if __name__ == '__main__': diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/docs/conf.py b/ambari-metrics-host-monitoring/src/main/python/psutil/docs/conf.py index 0c6608a..417f0ec 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/docs/conf.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/docs/conf.py @@ -16,8 +16,8 @@ import datetime import os -PROJECT_NAME = u"psutil" -AUTHOR = u"Giampaolo Rodola'" +PROJECT_NAME = "psutil" +AUTHOR = "Giampaolo Rodola'" THIS_YEAR = str(datetime.datetime.now().year) HERE = os.path.abspath(os.path.dirname(__file__)) @@ -68,7 +68,7 @@ master_doc = 'index' # General information about the project. project = PROJECT_NAME -copyright = u'2009-%s, %s' % (THIS_YEAR, AUTHOR) +copyright = '2009-%s, %s' % (THIS_YEAR, AUTHOR) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -214,7 +214,7 @@ htmlhelp_basename = '%s-doc' % PROJECT_NAME # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', '%s.tex' % PROJECT_NAME, - u'%s documentation' % PROJECT_NAME, AUTHOR), + '%s documentation' % PROJECT_NAME, AUTHOR), ] # The name of an image file (relative to this directory) to place at the top of @@ -246,7 +246,7 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('index', PROJECT_NAME, u'%s documentation' % PROJECT_NAME, [AUTHOR], 1) + ('index', PROJECT_NAME, '%s documentation' % PROJECT_NAME, [AUTHOR], 1) ] # If true, show URL addresses after external links. diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/disk_usage.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/disk_usage.py index 787cb0f..0c6ff84 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/disk_usage.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/disk_usage.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/free.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/free.py index 95e11fb..0114783 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/free.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/free.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/iotop.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/iotop.py index 47f1ca5..3a1f10f 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/iotop.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/iotop.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/killall.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/killall.py index b548e7b..7b5a38c 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/killall.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/killall.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/meminfo.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/meminfo.py index 671f907..a404702 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/meminfo.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/meminfo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/netstat.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/netstat.py index 70bc231..d9d9cbe 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/netstat.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/netstat.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/nettop.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/nettop.py index 857285c..2cc03b2 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/nettop.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/nettop.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # $Id: iotop.py 1160 2011-10-14 18:50:36Z g.rod...@gmail.com $ # diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/pmap.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/pmap.py index 1936c0b..ee39cf9 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/pmap.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/pmap.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/process_detail.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/process_detail.py index 371142c..50b686f 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/process_detail.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/process_detail.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/top.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/top.py index 479c797..93ac6c5 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/top.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/top.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/who.py b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/who.py index 8ffbc81..a1bc155 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/examples/who.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/examples/who.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/__init__.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/__init__.py index 3068b10..166a2c1 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/__init__.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. @@ -10,7 +10,7 @@ running processes and system utilization (CPU, memory, disks, network) in Python. """ -from __future__ import division + __author__ = "Giampaolo Rodola'" __version__ = "2.1.1" @@ -754,7 +754,7 @@ class Process(object): pass else: # Windows only (faster) - for pid, ppid in ppid_map.items(): + for pid, ppid in list(ppid_map.items()): if ppid == self.pid: try: child = Process(pid) @@ -775,7 +775,7 @@ class Process(object): except NoSuchProcess: pass else: - for pid, ppid in ppid_map.items(): + for pid, ppid in list(ppid_map.items()): try: p = Process(pid) table[ppid].append(p) @@ -925,7 +925,7 @@ class Process(object): path = tupl[2] nums = tupl[3:] try: - d[path] = map(lambda x, y: x + y, d[path], nums) + d[path] = list(map(lambda x, y: x + y, d[path], nums)) except KeyError: d[path] = nums nt = _psplatform.pmmap_grouped @@ -1725,11 +1725,11 @@ def disk_io_counters(perdisk=False): if not rawdict: raise RuntimeError("couldn't find any physical disk") if perdisk: - for disk, fields in rawdict.items(): + for disk, fields in list(rawdict.items()): rawdict[disk] = _nt_sys_diskio(*fields) return rawdict else: - return _nt_sys_diskio(*[sum(x) for x in zip(*rawdict.values())]) + return _nt_sys_diskio(*[sum(x) for x in zip(*list(rawdict.values()))]) # ===================================================================== @@ -1759,11 +1759,11 @@ def net_io_counters(pernic=False): if not rawdict: raise RuntimeError("couldn't find any network interface") if pernic: - for nic, fields in rawdict.items(): + for nic, fields in list(rawdict.items()): rawdict[nic] = _nt_sys_netio(*fields) return rawdict else: - return _nt_sys_netio(*[sum(x) for x in zip(*rawdict.values())]) + return _nt_sys_netio(*[sum(x) for x in zip(*list(rawdict.values()))]) def net_connections(kind='inet'): @@ -1979,7 +1979,7 @@ def _replace_module(): _replace_module() -del property, memoize, division, _replace_module +del property, memoize, _replace_module if sys.version_info < (3, 0): del num diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_common.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_common.py index 3d2f27c..88708cb 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_common.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_common.py @@ -6,7 +6,7 @@ """Common objects shared by all _ps* modules.""" -from __future__ import division + import errno import os import socket diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_compat.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_compat.py index b6ac933..11a98bb 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_compat.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_compat.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psbsd.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psbsd.py index 5663736..62d51d6 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psbsd.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psbsd.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pslinux.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pslinux.py index d20b267..407fd90 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pslinux.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pslinux.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be @@ -6,7 +6,7 @@ """Linux platform implementation.""" -from __future__ import division + import base64 import errno @@ -1061,7 +1061,7 @@ class Process(object): @wrap_exceptions def cpu_affinity_get(self): - from_bitmask = lambda x: [i for i in xrange(64) if (1 << i) & x] + from_bitmask = lambda x: [i for i in range(64) if (1 << i) & x] bitmask = cext.proc_cpu_affinity_get(self.pid) return from_bitmask(bitmask) diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psosx.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psosx.py index 8953867..8b21ae1 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psosx.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psosx.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psposix.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psposix.py index 1188c9f..3a68b03 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psposix.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_psposix.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pssunos.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pssunos.py index bc18427..ba8143a 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pssunos.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pssunos.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pswindows.py b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pswindows.py index 1a786f1..ee56109 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pswindows.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/psutil/_pswindows.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be @@ -444,7 +444,7 @@ class Process(object): @wrap_exceptions def cpu_affinity_get(self): - from_bitmask = lambda x: [i for i in xrange(64) if (1 << i) & x] + from_bitmask = lambda x: [i for i in range(64) if (1 << i) & x] bitmask = cext.proc_cpu_affinity_get(self.pid) return from_bitmask(bitmask) diff --git a/ambari-metrics-host-monitoring/src/main/python/psutil/setup.py b/ambari-metrics-host-monitoring/src/main/python/psutil/setup.py index 98b24a1..cb7835f 100644 --- a/ambari-metrics-host-monitoring/src/main/python/psutil/setup.py +++ b/ambari-metrics-host-monitoring/src/main/python/psutil/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2009 Giampaolo Rodola'. All rights reserved. # Use of this source code is governed by a BSD-style license that can be diff --git a/ambari-metrics-host-monitoring/src/main/unix/ambari-python-wrap b/ambari-metrics-host-monitoring/src/main/unix/ambari-python-wrap index 72041ef..099fee6 100755 --- a/ambari-metrics-host-monitoring/src/main/unix/ambari-python-wrap +++ b/ambari-metrics-host-monitoring/src/main/unix/ambari-python-wrap @@ -17,24 +17,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -export PYTHONPATH=/usr/lib/python2.6/site-packages:$PYTHONPATH +export PYTHONPATH=/usr/lib/python3.9/site-packages:$PYTHONPATH -# checking for default Python 2 -if [ -a /usr/bin/python2 ] && [ -z "$PYTHON" ]; then - PYTHON=/usr/bin/python2 +# checking for default Python 3 +if [ -a /usr/bin/python3 ] && [ -z "$PYTHON" ]; then + PYTHON=/usr/bin/python3 fi -if [ -a /usr/bin/python2.7 ] && [ -z "$PYTHON" ]; then - PYTHON=/usr/bin/python2.7 -fi - -if [ -a /usr/bin/python2.6 ] && [ -z "$PYTHON" ]; then - PYTHON=/usr/bin/python2.6 -fi - -# if no preferable python versions found, try to use system one. Hoping it's Python 2 -if [[ -z "$PYTHON" ]]; then - PYTHON=/usr/bin/python +if [ -a /usr/bin/python3.9 ] && [ -z "$PYTHON" ]; then + PYTHON=/usr/bin/python3.9 fi # execute script diff --git a/ambari-metrics-host-monitoring/src/test/python/core/TestApplicationMetricMap.py b/ambari-metrics-host-monitoring/src/test/python/core/TestApplicationMetricMap.py index d9ea55d..08af2ea 100644 --- a/ambari-metrics-host-monitoring/src/test/python/core/TestApplicationMetricMap.py +++ b/ambari-metrics-host-monitoring/src/test/python/core/TestApplicationMetricMap.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/test/python/core/TestEmitter.py b/ambari-metrics-host-monitoring/src/test/python/core/TestEmitter.py index aa83026..bce5e75 100644 --- a/ambari-metrics-host-monitoring/src/test/python/core/TestEmitter.py +++ b/ambari-metrics-host-monitoring/src/test/python/core/TestEmitter.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py b/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py index 1b249c7..058a57e 100644 --- a/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py +++ b/ambari-metrics-host-monitoring/src/test/python/core/TestHostInfo.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/test/python/core/TestMetricCollector.py b/ambari-metrics-host-monitoring/src/test/python/core/TestMetricCollector.py index 64df3e6..d6593aa 100644 --- a/ambari-metrics-host-monitoring/src/test/python/core/TestMetricCollector.py +++ b/ambari-metrics-host-monitoring/src/test/python/core/TestMetricCollector.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-host-monitoring/src/test/python/mock/docs/conf.py b/ambari-metrics-host-monitoring/src/test/python/mock/docs/conf.py index 62f0491..51ca069 100644 --- a/ambari-metrics-host-monitoring/src/test/python/mock/docs/conf.py +++ b/ambari-metrics-host-monitoring/src/test/python/mock/docs/conf.py @@ -65,8 +65,8 @@ source_suffix = '.txt' master_doc = 'index' # General substitutions. -project = u'Mock' -copyright = u'2007-2012, Michael Foord & the mock team' +project = 'Mock' +copyright = '2007-2012, Michael Foord & the mock team' # The default replacements for |version| and |release|, also used in various # other places throughout the built documents. @@ -187,8 +187,8 @@ latex_font_size = '12pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, document class [howto/manual]). latex_documents = [ - ('index', 'Mock.tex', u'Mock Documentation', - u'Michael Foord', 'manual'), + ('index', 'Mock.tex', 'Mock Documentation', + 'Michael Foord', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of diff --git a/ambari-metrics-host-monitoring/src/test/python/mock/mock.py b/ambari-metrics-host-monitoring/src/test/python/mock/mock.py index 2a3f869..accf619 100644 --- a/ambari-metrics-host-monitoring/src/test/python/mock/mock.py +++ b/ambari-metrics-host-monitoring/src/test/python/mock/mock.py @@ -86,7 +86,7 @@ try: next except NameError: def next(obj): - return obj.next() + return obj.__next__() BaseExceptions = (BaseException,) @@ -616,7 +616,7 @@ class NonCallableMock(Base): self.call_args_list = _CallList() self.method_calls = _CallList() - for child in self._mock_children.values(): + for child in list(self._mock_children.values()): if isinstance(child, _SpecState): continue child.reset_mock() @@ -635,7 +635,7 @@ class NonCallableMock(Base): >>> attrs = {'method.return_value': 3, 'other.side_effect': KeyError} >>> mock.configure_mock(**attrs)""" - for arg, val in sorted(kwargs.items(), + for arg, val in sorted(list(kwargs.items()), # we sort on the number of dots so that # attributes are set before we set attributes on # attributes @@ -1216,7 +1216,7 @@ class _patch(object): # not in Python 3 patched.compat_co_firstlineno = getattr( func, "compat_co_firstlineno", - func.func_code.co_firstlineno + func.__code__.co_firstlineno ) return patched @@ -1764,7 +1764,7 @@ _calculate_return_value = { '__hash__': lambda self: object.__hash__(self), '__str__': lambda self: object.__str__(self), '__sizeof__': lambda self: object.__sizeof__(self), - '__unicode__': lambda self: unicode(object.__str__(self)), + '__unicode__': lambda self: str(object.__str__(self)), } _return_values = { @@ -1951,7 +1951,7 @@ def _format_call_signature(name, args, kwargs): formatted_args = '' args_string = ', '.join([repr(arg) for arg in args]) kwargs_string = ', '.join([ - '%s=%r' % (key, value) for key, value in kwargs.items() + '%s=%r' % (key, value) for key, value in list(kwargs.items()) ]) if args_string: formatted_args = args_string diff --git a/ambari-metrics-host-monitoring/src/test/python/unitTests.py b/ambari-metrics-host-monitoring/src/test/python/unitTests.py index f4aa845..7fb1b54 100644 --- a/ambari-metrics-host-monitoring/src/test/python/unitTests.py +++ b/ambari-metrics-host-monitoring/src/test/python/unitTests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one diff --git a/ambari-metrics-timelineservice/conf/unix/sqlline/phoenix_utils.py b/ambari-metrics-timelineservice/conf/unix/sqlline/phoenix_utils.py index 492764b..5a2daf6 100644 --- a/ambari-metrics-timelineservice/conf/unix/sqlline/phoenix_utils.py +++ b/ambari-metrics-timelineservice/conf/unix/sqlline/phoenix_utils.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ############################################################################ # # Licensed to the Apache Software Foundation (ASF) under one @@ -175,18 +175,18 @@ def shell_quote(args): if __name__ == "__main__": setPath() - print "phoenix_class_path:", phoenix_class_path - print "hbase_conf_dir:", hbase_conf_dir - print "hbase_conf_path:", hbase_conf_path - print "current_dir:", current_dir - print "phoenix_jar_path:", phoenix_jar_path - print "phoenix_client_jar:", phoenix_client_jar - print "phoenix_test_jar_path:", phoenix_test_jar_path - print "hadoop_common_jar_path:", hadoop_common_jar_path - print "hadoop_common_jar:", hadoop_common_jar - print "hadoop_hdfs_jar_path:", hadoop_hdfs_jar_path - print "hadoop_hdfs_jar:", hadoop_hdfs_jar - print "testjar:", testjar - print "phoenix_queryserver_jar:", phoenix_queryserver_jar - print "phoenix_thin_client_jar:", phoenix_thin_client_jar - print "hadoop_classpath:", hadoop_classpath + print("phoenix_class_path:", phoenix_class_path) + print("hbase_conf_dir:", hbase_conf_dir) + print("hbase_conf_path:", hbase_conf_path) + print("current_dir:", current_dir) + print("phoenix_jar_path:", phoenix_jar_path) + print("phoenix_client_jar:", phoenix_client_jar) + print("phoenix_test_jar_path:", phoenix_test_jar_path) + print("hadoop_common_jar_path:", hadoop_common_jar_path) + print("hadoop_common_jar:", hadoop_common_jar) + print("hadoop_hdfs_jar_path:", hadoop_hdfs_jar_path) + print("hadoop_hdfs_jar:", hadoop_hdfs_jar) + print("testjar:", testjar) + print("phoenix_queryserver_jar:", phoenix_queryserver_jar) + print("phoenix_thin_client_jar:", phoenix_thin_client_jar) + print("hadoop_classpath:", hadoop_classpath) diff --git a/ambari-metrics-timelineservice/conf/unix/sqlline/sqlline.py b/ambari-metrics-timelineservice/conf/unix/sqlline/sqlline.py index 852f264..ef064ba 100644 --- a/ambari-metrics-timelineservice/conf/unix/sqlline/sqlline.py +++ b/ambari-metrics-timelineservice/conf/unix/sqlline/sqlline.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ############################################################################ # # Licensed to the Apache Software Foundation (ASF) under one @@ -57,9 +57,9 @@ def find_java(): #phoenix_utils.setPath() if len(sys.argv) < 2: - print "Zookeeper not specified. \nUsage: sqlline.py <zookeeper> \ + print("Zookeeper not specified. \nUsage: sqlline.py <zookeeper> \ <optional_sql_file> \nExample: \n 1. sqlline.py localhost:2181:/hbase \n 2. sqlline.py \ -localhost:2181:/hbase ../examples/stock_symbol.sql" +localhost:2181:/hbase ../examples/stock_symbol.sql") sys.exit() sqlfile = "" @@ -79,7 +79,7 @@ hadoop_classpath = os.environ.get('HADOOP_CLASSPATH', '/usr/lib/ams-hbase/lib') PATH_PREFIX = '/usr/lib/ambari-metrics-collector/' if not os.path.exists(PATH_PREFIX): - print 'Fatal Error: ' + PATH_PREFIX + ' not a valid path.' + print('Fatal Error: ' + PATH_PREFIX + ' not a valid path.') sys.exit(1) current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -93,7 +93,7 @@ java_cmd = find_java() + ' -cp "' + phoenix_client_path + \ " -n none -p none --color=" + colorSetting + " --fastConnect=false --verbose=true \ --isolation=TRANSACTION_READ_COMMITTED " + sqlfile -print 'java command: %s' % str(java_cmd) +print('java command: %s' % str(java_cmd)) childProc = subprocess.Popen(java_cmd, shell=True) #Wait for child process exit diff --git a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py index 38e1a5e..ec4a97c 100644 --- a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py +++ b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file diff --git a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py index 8e00762..878f4de 100644 --- a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py +++ b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -87,7 +87,7 @@ class Properties(object): first, last = m.span() sepidx = last - 1 while line[-1] == '\\': - nextline = i.next() + nextline = next(i) nextline = nextline.strip() lineno += 1 line = line[:-1] + nextline @@ -114,7 +114,7 @@ class Properties(object): oldvalue = self.unescape(oldvalue) value = self.unescape(value) self._props[key] = None if value is None else value.strip() - if self._keymap.has_key(key): + if key in self._keymap: oldkey = self._keymap.get(key) self._origprops[oldkey] = None if oldvalue is None else oldvalue.strip() else: @@ -129,20 +129,20 @@ class Properties(object): return newvalue def removeOldProp(self, key): - if self._origprops.has_key(key): + if key in self._origprops: del self._origprops[key] pass def removeProp(self, key): - if self._props.has_key(key): + if key in self._props: del self._props[key] pass def load(self, stream): if type(stream) is not file: - raise TypeError, 'Argument should be a file object!' + raise TypeError('Argument should be a file object!') if stream.mode != 'r': - raise ValueError, 'Stream should be opened in read-only mode!' + raise ValueError('Stream should be opened in read-only mode!') try: self.fileName = os.path.abspath(stream.name) lines = stream.readlines() @@ -154,7 +154,7 @@ class Properties(object): return self._props.get(key, '') def propertyNames(self): - return self._props.keys() + return list(self._props.keys()) def getPropertyDict(self): return self._props @@ -168,10 +168,15 @@ class Properties(object): except KeyError: if hasattr(self._props, name): return getattr(self._props, name) + else: + raise NotImplementedError("The method '{}' is not implemented.".format(name)) + + def __contains__(self, key): + return key in self._props def sort_props(self): tmp_props = {} - for key in sorted(self._props.iterkeys()): + for key in sorted(self._props.keys()): tmp_props[key] = self._props[key] self._props = tmp_props pass @@ -179,7 +184,7 @@ class Properties(object): def sort_origprops(self): tmp_props = self._origprops.copy() self._origprops.clear() - for key in sorted(tmp_props.iterkeys()): + for key in sorted(tmp_props.keys()): self._origprops[key] = tmp_props[key] pass @@ -187,7 +192,7 @@ class Properties(object): """ Write the properties list to the stream 'out' along with the optional 'header' """ if out.mode[0] != 'w': - raise ValueError, 'Steam should be opened in write mode!' + raise ValueError('Steam should be opened in write mode!') try: out.write(''.join(('#', ASF_LICENSE_HEADER, '\n'))) out.write(''.join(('#', header, '\n'))) @@ -195,7 +200,7 @@ class Properties(object): tstamp = time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime()) out.write(''.join(('#', tstamp, '\n'))) # Write properties from the pristine dictionary - for prop, val in self._origprops.items(): + for prop, val in list(self._origprops.items()): if val is not None: out.write(''.join((prop, '=', val, '\n'))) out.close() @@ -206,7 +211,7 @@ class Properties(object): """ Write the properties list to the stream 'out' along with the optional 'header' """ if out.mode[0] != 'w': - raise ValueError, 'Steam should be opened in write mode!' + raise ValueError('Steam should be opened in write mode!') try: out.write(''.join(('#', ASF_LICENSE_HEADER, '\n'))) out.write(''.join(('#', header, '\n'))) @@ -214,7 +219,7 @@ class Properties(object): tstamp = time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime()) out.write(''.join(('#', tstamp, '\n'))) # Write properties from the pristine dictionary - for key in sorted(self._origprops.iterkeys()): + for key in sorted(self._origprops.keys()): val = self._origprops[key] if val is not None: out.write(''.join((key, '=', val, '\n'))) diff --git a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py index 5e73e24..0348d6a 100644 --- a/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py +++ b/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -82,7 +82,7 @@ def find_properties_file(): if conf_file is None: err = 'File %s not found in search path $%s: %s' % (AMS_PROPERTIES_FILE, AMS_CONF_VAR, get_conf_dir()) - print err + print(err) raise FatalException(1, err) else: print_info_msg('Loading properties from ' + conf_file) @@ -96,8 +96,8 @@ def get_properties(): try: properties = Properties() properties.load(open(conf_file)) - except (Exception), e: - print 'Could not read "%s": %s' % (conf_file, e) + except (Exception) as e: + print('Could not read "%s": %s' % (conf_file, e)) return -1 return properties diff --git a/ambari-metrics-timelineservice/src/main/python/amc_service.py b/ambari-metrics-timelineservice/src/main/python/amc_service.py index a19fd11..592a93d 100644 --- a/ambari-metrics-timelineservice/src/main/python/amc_service.py +++ b/ambari-metrics-timelineservice/src/main/python/amc_service.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -136,7 +136,7 @@ def svcstatus(options): options.exit_message = None statusStr = AMCollectorService.QueryStatus() - print "Ambari Metrics Collector is " + statusStr + print("Ambari Metrics Collector is " + statusStr) def setup(options): diff --git a/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py b/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py index 2040959..ebd1ded 100644 --- a/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py +++ b/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -80,7 +80,7 @@ class EmbeddedHBaseService: @classmethod def Install(cls, startupMode = "auto", username = None, password = None): - print "Installing service %s" % (cls._svc_name_) + print("Installing service %s" % (cls._svc_name_)) # Configure master.xml, which drives the java subprocess32 java_path = get_java_exe_path() @@ -120,18 +120,18 @@ class EmbeddedHBaseService: None, username, password) - print "Service installed" + print("Service installed") win32service.CloseServiceHandle(hs) finally: win32service.CloseServiceHandle(hscm) - except win32service.error, exc: + except win32service.error as exc: if exc.winerror==winerror.ERROR_SERVICE_EXISTS: cls.Update(username, password) else: - print "Error installing service: %s (%d)" % (exc.strerror, exc.winerror) + print("Error installing service: %s (%d)" % (exc.strerror, exc.winerror)) err = exc.winerror - except ValueError, msg: # Can be raised by custom option handler. - print "Error installing service: %s" % str(msg) + except ValueError as msg: # Can be raised by custom option handler. + print("Error installing service: %s" % str(msg)) err = -1 # xxx - maybe I should remove after _any_ failed install - however, # xxx - it may be useful to help debug to leave the service as it failed. @@ -141,7 +141,7 @@ class EmbeddedHBaseService: try: RemoveService(cls._svc_name_) except win32api.error: - print "Warning - could not remove the partially installed service." + print("Warning - could not remove the partially installed service.") @classmethod def Update(cls, startupMode = "auto", username = None, password = None): @@ -170,7 +170,7 @@ class EmbeddedHBaseService: username, password, cls._svc_display_name_) - print "Service updated" + print("Service updated") finally: win32service.CloseServiceHandle(hs) finally: diff --git a/ambari-metrics-timelineservice/src/main/python/main.py b/ambari-metrics-timelineservice/src/main/python/main.py index 2467ea3..ec12a22 100644 --- a/ambari-metrics-timelineservice/src/main/python/main.py +++ b/ambari-metrics-timelineservice/src/main/python/main.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -122,7 +122,7 @@ def server_process_main(options, scmStatus=None): suspend_mode = 'y' if SUSPEND_START_MODE else 'n' command = command_base.format(java_class_path, java_heap_max, suspend_mode) if not os.path.exists(PID_DIR): - os.makedirs(PID_DIR, 0755) + os.makedirs(PID_DIR, 0o755) #Ignore the requirement to run as root. In Windows, by default the child process inherits the security context # and the environment from the parent process. @@ -132,7 +132,7 @@ def server_process_main(options, scmStatus=None): procJava = subprocess32.Popen(param_list, env=os.environ) #wait for server process for SERVER_START_TIMEOUT seconds - print "Waiting for server start..." + print("Waiting for server start...") pidJava = procJava.pid if pidJava <= 0: @@ -146,9 +146,9 @@ def server_process_main(options, scmStatus=None): raise FatalException(-1, AMC_DIE_MSG.format(exitcode, SERVER_OUT_FILE)) else: save_pid(pidJava, PID_OUT_FILE) - print "Server PID at: " + PID_OUT_FILE - print "Server out at: " + SERVER_OUT_FILE - print "Server log at: " + SERVER_LOG_FILE + print("Server PID at: " + PID_OUT_FILE) + print("Server out at: " + SERVER_OUT_FILE) + print("Server log at: " + SERVER_LOG_FILE) if scmStatus is not None: scmStatus.reportStarted() @@ -167,7 +167,7 @@ def main(): init_service_debug(options) if len(args) == 0: - print parser.print_help() + print(parser.print_help()) parser.error("No action entered") action = args[0] @@ -203,7 +203,7 @@ def main(): print_warning_msg(e.reason) if options.exit_message is not None: - print options.exit_message + print(options.exit_message) if __name__ == "__main__": diff --git a/ambari-metrics-timelineservice/src/main/resources/scripts/ams_query.py b/ambari-metrics-timelineservice/src/main/resources/scripts/ams_query.py index 0247990..d130f31 100644 --- a/ambari-metrics-timelineservice/src/main/resources/scripts/ams_query.py +++ b/ambari-metrics-timelineservice/src/main/resources/scripts/ams_query.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ''' Licensed to the Apache Software Foundation (ASF) under one @@ -18,7 +18,7 @@ See the License for the specific language governing permissions and limitations under the License. ''' -import urllib2 +import urllib.request, urllib.error, urllib.parse import signal import sys import optparse @@ -92,11 +92,11 @@ def main(argv=None): (options, args) = parser.parse_args() if options.host is None: - print "Ambari Metrics host name is required (--host or -h)" + print("Ambari Metrics host name is required (--host or -h)") exit(-1) if options.node_names is None: - print "cluster nodes are required (--nodes or -n)" + print("cluster nodes are required (--nodes or -n)") exit(3) global start_time_secs, metrics_test_host, hostnames @@ -121,8 +121,8 @@ def run(): hostname = ','.join(hostnames) qs = QuerySender(metrics_test_host, True) for metric_name in all_metrics: - print - print 'Querying for ' + metric_name + ' metrics' + print() + print('Querying for ' + metric_name + ' metrics') current_time_secs = start_time_secs qs.query_all_app_metrics(hostname, metric_name, all_metrics[metric_name], @@ -136,7 +136,7 @@ def add_query_metrics_for_app_id(app_id, metric_timing): def print_all_metrics(metrics): - print 'Metrics Summary' + print('Metrics Summary') for app_id in sorted(metrics): first = True for single_query_metrics in metrics[app_id]: @@ -147,12 +147,12 @@ def print_all_metrics(metrics): def print_app_metrics(app_id, metric_timing, header=False): #header if header: - print app_id + ': ' + ','.join(sorted(metric_timing.keys())) + print(app_id + ': ' + ','.join(sorted(metric_timing.keys()))) #vals - print app_id + ':', + print(app_id + ':', end=' ') for key in sorted(metric_timing): - print '%.3f,' % metric_timing[key], - print + print('%.3f,' % metric_timing[key], end=' ') + print() class QuerySender: @@ -163,14 +163,14 @@ class QuerySender: def query_all_app_metrics(self, hostname, app_id, metrics, current_time_secs): metric_timing = {} for key in metrics: - print 'Getting metrics for', key + print('Getting metrics for', key) query_time = time.time() metric_names = ','.join(metrics[key]) self.query(hostname, app_id, metric_names, current_time_secs) query_time_elapsed = time.time() - query_time - print 'Query for "%s" took %s' % (key, query_time_elapsed) + print('Query for "%s" took %s' % (key, query_time_elapsed)) metric_timing[key] = query_time_elapsed add_query_metrics_for_app_id(app_id, metric_timing) @@ -179,21 +179,21 @@ class QuerySender: def query(self, hostname, app_id, metric_names, current_time_secs): url = self.create_url(hostname, metric_names, app_id, current_time_secs) - print url + print(url) response = self.send(url) if self.print_responses: - print response + print(response) pass def send(self, url): - request = urllib2.Request(url) + request = urllib.request.Request(url) try: - response = urllib2.urlopen(request, timeout=int(30)) + response = urllib.request.urlopen(request, timeout=int(30)) response = response.read() return response - except urllib2.URLError as e: - print e.reason + except urllib.error.URLError as e: + print(e.reason) def create_url(self, hostname, metric_names, app_id, current_time_secs): server = AMS_URL.format(self.metrics_address, diff --git a/pom.xml b/pom.xml index a8ecba5..5a1b6f4 100644 --- a/pom.xml +++ b/pom.xml @@ -35,8 +35,8 @@ </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <python.ver>python >= 2.6</python.ver> - <deb.python.ver>python (>= 2.6)</deb.python.ver> + <python.ver>python3 >= 3.0</python.ver> + <deb.python.ver>python3 (>= 3.0)</deb.python.ver> <slf4j.version>2.0.0</slf4j.version> <zookeeper.version>3.5.9</zookeeper.version> <kafka.version>2.8.1</kafka.version> @@ -53,7 +53,7 @@ <grafana.tar>https://dl.grafana.com/oss/release/grafana-9.5.6.linux-amd64.tar.gz</grafana.tar> <phoenix.tar>http://repo.bigtop.apache.org.s3.amazonaws.com/bigtop-stack-binary/3.2.0/centos-7/x86_64/phoenix-hbase-2.4-5.1.2-bin.tar.gz</phoenix.tar> <phoenix.folder>phoenix-hbase-2.4-5.1.2-bin</phoenix.folder> - <resmonitor.install.dir>/usr/lib/python2.6/site-packages/resource_monitoring</resmonitor.install.dir> + <resmonitor.install.dir>/usr/lib/python3.9/site-packages/resource_monitoring</resmonitor.install.dir> <powermock.version>1.6.2</powermock.version> <distMgmtSnapshotsId>apache.snapshots.https</distMgmtSnapshotsId> <distMgmtSnapshotsName>Apache Development Snapshot Repository</distMgmtSnapshotsName> --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@ambari.apache.org For additional commands, e-mail: commits-h...@ambari.apache.org