Import python-carbon-1.1.10
This commit is contained in:
		
						commit
						6c40e1584f
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | SOURCES/python-carbon-1.1.10.tar.gz | ||||||
							
								
								
									
										1
									
								
								.python-carbon.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.python-carbon.metadata
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | ea38f4e5ad9070c90dc9b68a4804164c9d4a3092 SOURCES/python-carbon-1.1.10.tar.gz | ||||||
							
								
								
									
										56
									
								
								SOURCES/carbon-aggregator.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								SOURCES/carbon-aggregator.1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | .TH CARBON-AGGREGATOR 1 | ||||||
|  | .SH NAME | ||||||
|  | carbon-aggregator \- buffer metrics over time before reporting to carbon-cache | ||||||
|  | .SH SYNOPSYS | ||||||
|  | .nf | ||||||
|  | .fam C | ||||||
|  | \fbcarbon-aggregator\fP [options] start | ||||||
|  | .fam T | ||||||
|  | .fi | ||||||
|  | .SH DESCRIPTION | ||||||
|  | carbon-aggregator can be run in front of carbon-cache to buffer metrics over | ||||||
|  | time before reporting them into whisper. | ||||||
|  | .PP | ||||||
|  | The options are described below. | ||||||
|  | .SH OPTIONS | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-h, \-\-help | ||||||
|  | Show the embedded help. | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-debug | ||||||
|  | Run in the foreground, log to stdout | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-profile=PROFILE | ||||||
|  | Record performance profile data to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-pidfile=PIDFILE | ||||||
|  | Write pid to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-config=CONFIG | ||||||
|  | Use the given config file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-logdir=LOGDIR | ||||||
|  | Write logs in the given directory | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-instance=INSTANCE | ||||||
|  | Manage a specific carbon instance | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-rules=RULES | ||||||
|  | Use the given aggregation rules file. | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-rewrite-rules=REWRITE_RULES | ||||||
|  | Use the given rewrite rules file. | ||||||
|  | .SH AUTHOR | ||||||
|  | \fBcarbon-aggregator\fP, created by Chris Davis. | ||||||
|  | .PP | ||||||
|  | This manual page was written by Jonas Genannt <jonas.genannt@capi2name.de, for | ||||||
|  | the Debian project (but may be used by others). | ||||||
							
								
								
									
										14
									
								
								SOURCES/carbon-aggregator.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								SOURCES/carbon-aggregator.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Aggregator | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-aggregator --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-aggregator.pid start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-aggregator.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
							
								
								
									
										15
									
								
								SOURCES/carbon-aggregator@.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SOURCES/carbon-aggregator@.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Aggregator Instance %I | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-aggregator --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-aggregator-%i.pid --instance=%i start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-aggregator-%i.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
|  | DefaultInstance=a | ||||||
							
								
								
									
										50
									
								
								SOURCES/carbon-cache.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								SOURCES/carbon-cache.1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | |||||||
|  | .TH CARBON-CACHE 1 | ||||||
|  | .SH NAME | ||||||
|  | carbon-cache \- accepts metrics over various protocols and writes them to disk | ||||||
|  | .SH SYNOPSYS | ||||||
|  | .nf | ||||||
|  | .fam C | ||||||
|  | \fbcarbon-cache\fP [options] start | ||||||
|  | .fam T | ||||||
|  | .fi | ||||||
|  | .SH DESCRIPTION | ||||||
|  | carbon-cache accepts metrics over various protocols and writes them to disk as | ||||||
|  | efficiently as possible. This requires caching metric values in RAM as they are | ||||||
|  | received, and flushing them to disk on an interval using the underlying | ||||||
|  | whisper library. | ||||||
|  | .PP | ||||||
|  | The options are described below. | ||||||
|  | .SH OPTIONS | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-h, \-\-help | ||||||
|  | Show the embedded help. | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-debug | ||||||
|  | Run in the foreground, log to stdout | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-profile=PROFILE | ||||||
|  | Record performance profile data to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-pidfile=PIDFILE | ||||||
|  | Write pid to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-config=CONFIG | ||||||
|  | Use the given config file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-logdir=LOGDIR | ||||||
|  | Write logs in the given directory | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-instance=INSTANCE | ||||||
|  | Manage a specific carbon instance | ||||||
|  | .SH AUTHOR | ||||||
|  | \fBcarbon-cache\fP, created by Chris Davis. | ||||||
|  | .PP | ||||||
|  | This manual page was written by Jonas Genannt <jonas.genannt@capi2name.de, for | ||||||
|  | the Debian project (but may be used by others). | ||||||
							
								
								
									
										14
									
								
								SOURCES/carbon-cache.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								SOURCES/carbon-cache.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Cache | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-cache --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-cache.pid start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-cache.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
							
								
								
									
										15
									
								
								SOURCES/carbon-cache@.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SOURCES/carbon-cache@.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Cache Instance %I | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-cache --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-cache-%i.pid --instance=%i start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-cache-%i.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
|  | DefaultInstance=a | ||||||
							
								
								
									
										51
									
								
								SOURCES/carbon-relay.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								SOURCES/carbon-relay.1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | .TH CARBON-RELAY 1 | ||||||
|  | .SH NAME | ||||||
|  | carbon-relay \- replication and sharding data | ||||||
|  | .SH SYNOPSYS | ||||||
|  | .nf | ||||||
|  | .fam C | ||||||
|  | \fbcarbon-relay\fP [options] start | ||||||
|  | .fam T | ||||||
|  | .fi | ||||||
|  | .SH DESCRIPTION | ||||||
|  | carbon-relay serves two distinct purposes: replication and sharding. | ||||||
|  | .PP | ||||||
|  | The options are described below. | ||||||
|  | .SH OPTIONS | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-h, \-\-help | ||||||
|  | Show the embedded help. | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-debug | ||||||
|  | Run in the foreground, log to stdout | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-profile=PROFILE | ||||||
|  | Record performance profile data to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-pidfile=PIDFILE | ||||||
|  | Write pid to the given file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-config=CONFIG | ||||||
|  | Use the given config file | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-logdir=LOGDIR | ||||||
|  | Write logs in the given directory | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-instance=INSTANCE | ||||||
|  | Manage a specific carbon instance | ||||||
|  | .TP | ||||||
|  | .B | ||||||
|  | \-\-rules=RULES | ||||||
|  | se the given relay rules file. | ||||||
|  | .SH AUTHOR | ||||||
|  | \fBcarbon-relay\fP, created by Chris Davis. | ||||||
|  | .PP | ||||||
|  | This manual page was written by Jonas Genannt <jonas.genannt@capi2name.de, for | ||||||
|  | the Debian project (but may be used by others). | ||||||
							
								
								
									
										14
									
								
								SOURCES/carbon-relay.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								SOURCES/carbon-relay.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Relay | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-relay --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-relay.pid start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-relay.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
							
								
								
									
										15
									
								
								SOURCES/carbon-relay@.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								SOURCES/carbon-relay@.service
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=Graphite Carbon Relay Instance %I | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=forking | ||||||
|  | StandardOutput=syslog | ||||||
|  | StandardError=syslog | ||||||
|  | ExecStart=/usr/bin/carbon-relay --config=/etc/carbon/carbon.conf --pidfile=/var/run/carbon-relay-%i.pid --instance=%i start | ||||||
|  | ExecReload=/bin/kill -USR1 $MAINPID | ||||||
|  | PIDFile=/var/run/carbon-relay-%i.pid | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
|  | DefaultInstance=a | ||||||
							
								
								
									
										25
									
								
								SOURCES/python-carbon-0.10.0-Set-sane-defaults.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								SOURCES/python-carbon-0.10.0-Set-sane-defaults.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | --- carbon-6a016c2533716d7bf6f44f4459c43976421bf650.orig/conf/carbon.conf.example	2016-09-13 22:44:40.000000000 +0200
 | ||||||
|  | +++ carbon-6a016c2533716d7bf6f44f4459c43976421bf650/conf/carbon.conf.example	2016-09-18 22:11:02.358319492 +0200
 | ||||||
|  | @@ -30,6 +30,13 @@
 | ||||||
|  |  # | ||||||
|  |  #LOCAL_DATA_DIR = /opt/graphite/storage/whisper/ | ||||||
|  |   | ||||||
|  | +STORAGE_DIR    = /var/lib/carbon/
 | ||||||
|  | +LOCAL_DATA_DIR = /var/lib/carbon/whisper/
 | ||||||
|  | +WHITELISTS_DIR = /var/lib/carbon/lists/
 | ||||||
|  | +CONF_DIR       = /etc/carbon/
 | ||||||
|  | +LOG_DIR        = /var/log/carbon/
 | ||||||
|  | +PID_DIR        = /var/run/
 | ||||||
|  | +
 | ||||||
|  |  # Specify the database library used to store metric data on disk. Each database | ||||||
|  |  # may have configurable options to change the behaviour of how it writes to | ||||||
|  |  # persistent storage. | ||||||
|  | @@ -41,7 +48,7 @@
 | ||||||
|  |  # Specify the user to drop privileges to | ||||||
|  |  # If this is blank carbon-cache runs as the user that invokes it | ||||||
|  |  # This user must have write access to the local data directory | ||||||
|  | -USER =
 | ||||||
|  | +USER = carbon
 | ||||||
|  |   | ||||||
|  |  # Limit the size of the cache to avoid swapping or becoming CPU bound. | ||||||
|  |  # Sorts and serving cache queries gets more expensive as the cache grows. | ||||||
| @ -0,0 +1,25 @@ | |||||||
|  | From c0f5af17e7e789166af627175f03739b0cf7cce1 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Jamie Nguyen <j@jamielinux.com> | ||||||
|  | Date: Sun, 28 Sep 2014 12:51:12 +0100 | ||||||
|  | Subject: [PATCH] Fix path to storage-schemas.conf | ||||||
|  | 
 | ||||||
|  | ---
 | ||||||
|  |  bin/validate-storage-schemas.py | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/bin/validate-storage-schemas.py b/bin/validate-storage-schemas.py
 | ||||||
|  | index 51a1108..5797593 100755
 | ||||||
|  | --- a/bin/validate-storage-schemas.py
 | ||||||
|  | +++ b/bin/validate-storage-schemas.py
 | ||||||
|  | @@ -22,7 +22,7 @@ if len(sys.argv) == 2:
 | ||||||
|  |    SCHEMAS_FILE = sys.argv[1] | ||||||
|  |    print("Loading storage-schemas configuration from: '%s'" % SCHEMAS_FILE) | ||||||
|  |  else: | ||||||
|  | -  SCHEMAS_FILE = realpath(join(dirname(__file__), '..', 'conf', 'storage-schemas.conf'))
 | ||||||
|  | +  SCHEMAS_FILE = '/etc/carbon/storage-schemas.conf'
 | ||||||
|  |    print("Loading storage-schemas configuration from default location at: '%s'" % SCHEMAS_FILE) | ||||||
|  |   | ||||||
|  |  config_parser = ConfigParser() | ||||||
|  | -- 
 | ||||||
|  | 1.9.3 | ||||||
|  | 
 | ||||||
							
								
								
									
										258
									
								
								SOURCES/python-carbon-1.1.10-Py3.12-support.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										258
									
								
								SOURCES/python-carbon-1.1.10-Py3.12-support.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,258 @@ | |||||||
|  | diff -up carbon-1.1.10/lib/carbon/routers.py.orig carbon-1.1.10/lib/carbon/routers.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/routers.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/routers.py	2023-08-02 19:34:36.065846924 -0600
 | ||||||
|  | @@ -1,4 +1,3 @@
 | ||||||
|  | -import imp
 | ||||||
|  |  from carbon.hashing import ConsistentHashRing, carbonHash | ||||||
|  |  from carbon.util import PluginRegistrar | ||||||
|  |  from six import with_metaclass | ||||||
|  | @@ -125,17 +124,6 @@ class ConsistentHashingRouter(DatapointR
 | ||||||
|  |    def getKey(self, metric): | ||||||
|  |      return metric | ||||||
|  |   | ||||||
|  | -  def setKeyFunction(self, func):
 | ||||||
|  | -    self.getKey = func
 | ||||||
|  | -
 | ||||||
|  | -  def setKeyFunctionFromModule(self, keyfunc_spec):
 | ||||||
|  | -    module_path, func_name = keyfunc_spec.rsplit(':', 1)
 | ||||||
|  | -    module_file = open(module_path, 'U')
 | ||||||
|  | -    description = ('.py', 'U', imp.PY_SOURCE)
 | ||||||
|  | -    module = imp.load_module('keyfunc_module', module_file, module_path, description)
 | ||||||
|  | -    keyfunc = getattr(module, func_name)
 | ||||||
|  | -    self.setKeyFunction(keyfunc)
 | ||||||
|  | -
 | ||||||
|  |   | ||||||
|  |  class AggregatedConsistentHashingRouter(DatapointRouter): | ||||||
|  |    plugin_name = 'aggregated-consistent-hashing' | ||||||
|  | diff -up carbon-1.1.10/lib/carbon/tests/test_log.py.orig carbon-1.1.10/lib/carbon/tests/test_log.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/tests/test_log.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/tests/test_log.py	2023-08-02 19:33:17.940175832 -0600
 | ||||||
|  | @@ -23,4 +23,4 @@ class CarbonLogFileTest(TestCase):
 | ||||||
|  |   | ||||||
|  |              with open(path.join(tmpdir, 'creates.log')) as logfile: | ||||||
|  |                  read_line = logfile.readline() | ||||||
|  | -                self.assertRegexpMatches(read_line, '.*😀😀😀😀 test !!!!')
 | ||||||
|  | +                self.assertRegex(read_line, '.*😀😀😀😀 test !!!!')
 | ||||||
|  | diff -up carbon-1.1.10/lib/carbon/tests/test_protocols.py.orig carbon-1.1.10/lib/carbon/tests/test_protocols.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/tests/test_protocols.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/tests/test_protocols.py	2023-08-02 19:33:17.941175827 -0600
 | ||||||
|  | @@ -34,7 +34,7 @@ class TestMetricReceiversHandler(TestCas
 | ||||||
|  |   | ||||||
|  |      expected_plugins = sorted(expected_plugins) | ||||||
|  |      plugins = sorted(MetricReceiver.plugins.keys()) | ||||||
|  | -    self.assertEquals(expected_plugins, plugins)
 | ||||||
|  | +    self.assertEqual(expected_plugins, plugins)
 | ||||||
|  |   | ||||||
|  |      class _FakeService(object): | ||||||
|  |        def addService(_, __): | ||||||
|  | @@ -244,19 +244,19 @@ class TestMetricPickleReceiver(TestCase)
 | ||||||
|  |          self.receiver.stringReceived(b"i") | ||||||
|  |          # ImportError | ||||||
|  |          self.receiver.stringReceived(b"iii") | ||||||
|  | -        MetricReceiver.metricReceived.not_called()
 | ||||||
|  | +        MetricReceiver.metricReceived.assert_not_called()
 | ||||||
|  |   | ||||||
|  |      def test_decode_pickle(self): | ||||||
|  |          """ Missing timestamp/value should not call metricReceived """ | ||||||
|  |          metrics = [('foo.bar', 1)] | ||||||
|  |          self.receiver.stringReceived(pickle.dumps(metrics)) | ||||||
|  | -        MetricReceiver.metricReceived.not_called()
 | ||||||
|  | +        MetricReceiver.metricReceived.assert_not_called()
 | ||||||
|  |   | ||||||
|  |      def test_invalid_types(self): | ||||||
|  |          """ Timestamp/value in wrong type should not call metricReceived """ | ||||||
|  |          metrics = [('foo.bar', ('a', 'b'))] | ||||||
|  |          self.receiver.stringReceived(pickle.dumps(metrics)) | ||||||
|  | -        MetricReceiver.metricReceived.not_called()
 | ||||||
|  | +        MetricReceiver.metricReceived.assert_not_called()
 | ||||||
|  |   | ||||||
|  |      def test_py2_unicode_to_string_conversion(self): | ||||||
|  |          """ Metricname in python2 unicode type should be transformed to str """ | ||||||
|  | @@ -339,7 +339,7 @@ class TestCacheManagementHandler(TestCas
 | ||||||
|  |   | ||||||
|  |    def test_cache_query_returns_empty_if_no_match(self): | ||||||
|  |      self.send_request('cache-query', metric='carbon.foo') | ||||||
|  | -    self.assertEquals({'datapoints': []}, self.response)
 | ||||||
|  | +    self.assertEqual({'datapoints': []}, self.response)
 | ||||||
|  |   | ||||||
|  |    def test_cache_query_returns_cached_datapoints_if_matches(self): | ||||||
|  |      self.cache.store('carbon.foo', (600, 1.0)) | ||||||
|  | @@ -356,7 +356,7 @@ class TestCacheManagementHandler(TestCas
 | ||||||
|  |   | ||||||
|  |    def test_cache_bulk_query_response_returns_empty_if_no_match(self): | ||||||
|  |      self.send_request('cache-query-bulk', metrics=[]) | ||||||
|  | -    self.assertEquals({'datapointsByMetric': {}}, self.response)
 | ||||||
|  | +    self.assertEqual({'datapointsByMetric': {}}, self.response)
 | ||||||
|  |   | ||||||
|  |    def test_cache_bulk_query_response(self): | ||||||
|  |      self.cache.store('carbon.foo', (600, 1.0)) | ||||||
|  | @@ -364,4 +364,4 @@ class TestCacheManagementHandler(TestCas
 | ||||||
|  |   | ||||||
|  |      expected_response = {'carbon.foo': [(600, 1.0)], 'carbon.bar': [(600, 2.0)]} | ||||||
|  |      self.send_request('cache-query-bulk', metrics=['carbon.foo', 'carbon.bar']) | ||||||
|  | -    self.assertEquals({'datapointsByMetric': expected_response}, self.response)
 | ||||||
|  | +    self.assertEqual({'datapointsByMetric': expected_response}, self.response)
 | ||||||
|  | diff -up carbon-1.1.10/lib/carbon/tests/test_routers.py.orig carbon-1.1.10/lib/carbon/tests/test_routers.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/tests/test_routers.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/tests/test_routers.py	2023-08-02 19:33:17.941175827 -0600
 | ||||||
|  | @@ -36,7 +36,7 @@ class TestRelayRulesRouter(unittest.Test
 | ||||||
|  |          router = routers.RelayRulesRouter(createSettings()) | ||||||
|  |          for destination in DESTINATIONS: | ||||||
|  |              router.addDestination(parseDestination(destination)) | ||||||
|  | -        self.assertEquals(len(list(router.getDestinations('foo.bar'))), 1)
 | ||||||
|  | +        self.assertEqual(len(list(router.getDestinations('foo.bar'))), 1)
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  class TestOtherRouters(unittest.TestCase): | ||||||
|  | @@ -48,9 +48,9 @@ class TestOtherRouters(unittest.TestCase
 | ||||||
|  |                  continue | ||||||
|  |   | ||||||
|  |              router = routers.DatapointRouter.plugins[plugin](settings) | ||||||
|  | -            self.assertEquals(len(list(router.getDestinations('foo.bar'))), 0)
 | ||||||
|  | +            self.assertEqual(len(list(router.getDestinations('foo.bar'))), 0)
 | ||||||
|  |   | ||||||
|  |              for destination in DESTINATIONS: | ||||||
|  |                  router.addDestination(parseDestination(destination)) | ||||||
|  | -            self.assertEquals(len(list(router.getDestinations('foo.bar'))),
 | ||||||
|  | +            self.assertEqual(len(list(router.getDestinations('foo.bar'))),
 | ||||||
|  |                                settings['REPLICATION_FACTOR']) | ||||||
|  | diff -up carbon-1.1.10/lib/carbon/tests/test_storage.py.orig carbon-1.1.10/lib/carbon/tests/test_storage.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/tests/test_storage.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/tests/test_storage.py	2023-08-02 19:33:17.941175827 -0600
 | ||||||
|  | @@ -21,9 +21,9 @@ from carbon.database import WhisperDatab
 | ||||||
|  |  #     def test_loadAggregationSchemas_load_default_schema(self): | ||||||
|  |  #         from carbon.storage import loadAggregationSchemas, defaultAggregation | ||||||
|  |  #         schema_list = loadAggregationSchemas() | ||||||
|  | -#         self.assertEquals(len(schema_list), 1)
 | ||||||
|  | +#         self.assertEqual(len(schema_list), 1)
 | ||||||
|  |  #         schema = schema_list[0] | ||||||
|  | -#         self.assertEquals(schema, defaultAggregation)
 | ||||||
|  | +#         self.assertEqual(schema, defaultAggregation)
 | ||||||
|  |   | ||||||
|  |  #     def test_loadStorageSchemas_raise_CarbonConfigException(self): | ||||||
|  |  #         from carbon.storage import loadStorageSchemas | ||||||
|  | @@ -51,28 +51,28 @@ class ExistingConfigSchemaLoadingTest(Te
 | ||||||
|  |      def test_loadStorageSchemas_return_schemas(self): | ||||||
|  |          from carbon.storage import loadStorageSchemas, PatternSchema, Archive | ||||||
|  |          schema_list = loadStorageSchemas() | ||||||
|  | -        self.assertEquals(len(schema_list), 3)
 | ||||||
|  | +        self.assertEqual(len(schema_list), 3)
 | ||||||
|  |          expected = [ | ||||||
|  |              PatternSchema('carbon', r'^carbon\.', [Archive.fromString('60:90d')]), | ||||||
|  |              PatternSchema('default_1min_for_1day', '.*', [Archive.fromString('60s:1d')]) | ||||||
|  |          ] | ||||||
|  |          for schema, expected_schema in zip(schema_list[:-1], expected): | ||||||
|  | -            self.assertEquals(schema.name, expected_schema.name)
 | ||||||
|  | -            self.assertEquals(schema.pattern, expected_schema.pattern)
 | ||||||
|  | +            self.assertEqual(schema.name, expected_schema.name)
 | ||||||
|  | +            self.assertEqual(schema.pattern, expected_schema.pattern)
 | ||||||
|  |              for (archive, expected_archive) in zip(schema.archives, expected_schema.archives): | ||||||
|  | -                self.assertEquals(archive.getTuple(), expected_archive.getTuple())
 | ||||||
|  | +                self.assertEqual(archive.getTuple(), expected_archive.getTuple())
 | ||||||
|  |   | ||||||
|  |      def test_loadStorageSchemas_return_the_default_schema_last(self): | ||||||
|  |          from carbon.storage import loadStorageSchemas, defaultSchema | ||||||
|  |          schema_list = loadStorageSchemas() | ||||||
|  |          last_schema = schema_list[-1] | ||||||
|  | -        self.assertEquals(last_schema.name, defaultSchema.name)
 | ||||||
|  | -        self.assertEquals(last_schema.archives, defaultSchema.archives)
 | ||||||
|  | +        self.assertEqual(last_schema.name, defaultSchema.name)
 | ||||||
|  | +        self.assertEqual(last_schema.archives, defaultSchema.archives)
 | ||||||
|  |   | ||||||
|  |      def test_loadAggregationSchemas_return_schemas(self): | ||||||
|  |          from carbon.storage import loadAggregationSchemas, PatternSchema | ||||||
|  |          schema_list = loadAggregationSchemas() | ||||||
|  | -        self.assertEquals(len(schema_list), 5)
 | ||||||
|  | +        self.assertEqual(len(schema_list), 5)
 | ||||||
|  |          expected = [ | ||||||
|  |              PatternSchema('min', r'\.min$', (0.1, 'min')), | ||||||
|  |              PatternSchema('max', r'\.max$', (0.1, 'max')), | ||||||
|  | @@ -80,12 +80,12 @@ class ExistingConfigSchemaLoadingTest(Te
 | ||||||
|  |              PatternSchema('default_average', '.*', (0.5, 'average')) | ||||||
|  |          ] | ||||||
|  |          for schema, expected_schema in zip(schema_list[:-1], expected): | ||||||
|  | -            self.assertEquals(schema.name, expected_schema.name)
 | ||||||
|  | -            self.assertEquals(schema.pattern, expected_schema.pattern)
 | ||||||
|  | -            self.assertEquals(schema.archives, expected_schema.archives)
 | ||||||
|  | +            self.assertEqual(schema.name, expected_schema.name)
 | ||||||
|  | +            self.assertEqual(schema.pattern, expected_schema.pattern)
 | ||||||
|  | +            self.assertEqual(schema.archives, expected_schema.archives)
 | ||||||
|  |   | ||||||
|  |      def test_loadAggregationSchema_return_the_default_schema_last(self): | ||||||
|  |          from carbon.storage import loadAggregationSchemas, defaultAggregation | ||||||
|  |          schema_list = loadAggregationSchemas() | ||||||
|  |          last_schema = schema_list[-1] | ||||||
|  | -        self.assertEquals(last_schema, defaultAggregation)
 | ||||||
|  | +        self.assertEqual(last_schema, defaultAggregation)
 | ||||||
|  | diff -up carbon-1.1.10/lib/carbon/tests/test_util.py.orig carbon-1.1.10/lib/carbon/tests/test_util.py
 | ||||||
|  | --- carbon-1.1.10/lib/carbon/tests/test_util.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/lib/carbon/tests/test_util.py	2023-08-02 19:33:17.942175823 -0600
 | ||||||
|  | @@ -21,7 +21,7 @@ class UtilTest(unittest.TestCase):
 | ||||||
|  |                  s.setsockopt(socket.SOL_TCP, socket.SO_KEEPALIVE, value) | ||||||
|  |   | ||||||
|  |          enableTcpKeepAlive(_Transport(), True, None) | ||||||
|  | -        self.assertEquals(s.getsockopt(socket.SOL_TCP, socket.SO_KEEPALIVE), 1)
 | ||||||
|  | +        self.assertEqual(s.getsockopt(socket.SOL_TCP, socket.SO_KEEPALIVE), 1)
 | ||||||
|  |   | ||||||
|  |      def test_sanitizing_name_as_tag_value(self): | ||||||
|  |          test_cases = [ | ||||||
|  | @@ -61,7 +61,7 @@ class UtilTest(unittest.TestCase):
 | ||||||
|  |                  ) | ||||||
|  |              else: | ||||||
|  |                  result = TaggedSeries.sanitize_name_as_tag_value(test_case['original']) | ||||||
|  | -                self.assertEquals(result, test_case['expected'])
 | ||||||
|  | +                self.assertEqual(result, test_case['expected'])
 | ||||||
|  |   | ||||||
|  |      def test_validate_tag_key_and_value(self): | ||||||
|  |          # assert that it raises exception when sanitized name is still not valid | ||||||
|  | @@ -114,10 +114,10 @@ class ParseDestinationsTest(unittest.Tes
 | ||||||
|  |          ] | ||||||
|  |   | ||||||
|  |          actual = parseDestinations(dests) | ||||||
|  | -        self.assertEquals(len(expected), len(actual))
 | ||||||
|  | +        self.assertEqual(len(expected), len(actual))
 | ||||||
|  |   | ||||||
|  |          for exp, act in zip(expected, actual): | ||||||
|  | -            self.assertEquals(exp, act)
 | ||||||
|  | +            self.assertEqual(exp, act)
 | ||||||
|  |   | ||||||
|  |      def test_valid_dest_bracketed(self): | ||||||
|  |          # Tests valid destinations in the bracketed form of <host>. | ||||||
|  | @@ -136,10 +136,10 @@ class ParseDestinationsTest(unittest.Tes
 | ||||||
|  |          ] | ||||||
|  |   | ||||||
|  |          actual = parseDestinations(dests) | ||||||
|  | -        self.assertEquals(len(expected), len(actual))
 | ||||||
|  | +        self.assertEqual(len(expected), len(actual))
 | ||||||
|  |   | ||||||
|  |          for exp, act in zip(expected, actual): | ||||||
|  | -            self.assertEquals(exp, act)
 | ||||||
|  | +            self.assertEqual(exp, act)
 | ||||||
|  |   | ||||||
|  |      def test_valid_dest_without_instance(self): | ||||||
|  |          # Tests destinations without instance specified. | ||||||
|  | @@ -160,10 +160,10 @@ class ParseDestinationsTest(unittest.Tes
 | ||||||
|  |          ] | ||||||
|  |   | ||||||
|  |          actual = parseDestinations(dests) | ||||||
|  | -        self.assertEquals(len(expected), len(actual))
 | ||||||
|  | +        self.assertEqual(len(expected), len(actual))
 | ||||||
|  |   | ||||||
|  |          for exp, act in zip(expected, actual): | ||||||
|  | -            self.assertEquals(exp, act)
 | ||||||
|  | +            self.assertEqual(exp, act)
 | ||||||
|  |   | ||||||
|  |      def test_wrong_dest(self): | ||||||
|  |          # Some cases of invalid input, e.g. invalid/missing port. | ||||||
|  | diff -up carbon-1.1.10/setup.py.orig carbon-1.1.10/setup.py
 | ||||||
|  | --- carbon-1.1.10/setup.py.orig	2022-05-22 11:58:01.000000000 -0600
 | ||||||
|  | +++ carbon-1.1.10/setup.py	2023-08-02 19:33:17.942175823 -0600
 | ||||||
|  | @@ -24,7 +24,7 @@ cf = ConfigParser()
 | ||||||
|  |  with open('setup.cfg', 'r') as f: | ||||||
|  |      orig_setup_cfg = f.read() | ||||||
|  |      f.seek(0) | ||||||
|  | -    cf.readfp(f, 'setup.cfg')
 | ||||||
|  | +    cf.read_file(f, 'setup.cfg')
 | ||||||
|  |   | ||||||
|  |  if os.environ.get('GRAPHITE_NO_PREFIX'): | ||||||
|  |      cf.remove_section('install') | ||||||
							
								
								
									
										10
									
								
								SOURCES/python-carbon.logrotate
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								SOURCES/python-carbon.logrotate
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | /var/log/carbon/*.log { | ||||||
|  |     weekly | ||||||
|  |     missingok | ||||||
|  |     rotate 7 | ||||||
|  |     compress | ||||||
|  |     delaycompress | ||||||
|  |     notifempty | ||||||
|  |     sharedscripts | ||||||
|  |     nocreate | ||||||
|  | } | ||||||
							
								
								
									
										4
									
								
								SOURCES/python-carbon.sysconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								SOURCES/python-carbon.sysconfig
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | # Configuration file for carbon | ||||||
|  | 
 | ||||||
|  | # CONFIG=/etc/carbon/carbon.conf | ||||||
|  | # LOG_DIR=/var/log/carbon | ||||||
							
								
								
									
										17
									
								
								SOURCES/validate-storage-schemas.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								SOURCES/validate-storage-schemas.1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | .TH VALIDATE-STORAGE-SCHEMAS 1 | ||||||
|  | .SH NAME | ||||||
|  | validate-storage-schemas \- validates the storage schemas | ||||||
|  | .SH SYNOPSYS | ||||||
|  | .nf | ||||||
|  | .fam C | ||||||
|  | \fbvalidate-storage-schemas\fP | ||||||
|  | .fam T | ||||||
|  | .fi | ||||||
|  | .SH DESCRIPTION | ||||||
|  | validates the storage schemas from the configuration | ||||||
|  | file /etc/carbon/storage-schemas.conf. | ||||||
|  | .SH AUTHOR | ||||||
|  | \fBvalidate-storage-schemas\fP, created by Chris Davis. | ||||||
|  | .PP | ||||||
|  | This manual page was written by Jonas Genannt <jonas.genannt@capi2name.de, for | ||||||
|  | the Debian project (but may be used by others). | ||||||
							
								
								
									
										437
									
								
								SPECS/python-carbon.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										437
									
								
								SPECS/python-carbon.spec
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,437 @@ | |||||||
|  | %global srcname carbon | ||||||
|  | 
 | ||||||
|  | %global desc %{expand: \ | ||||||
|  | Carbon is one of the components of Graphite, and is responsible for | ||||||
|  | receiving metrics over the network and writing them down to disk using | ||||||
|  | a storage back-end.} | ||||||
|  | 
 | ||||||
|  | Name:           python-%{srcname} | ||||||
|  | Version:        1.1.10 | ||||||
|  | Release:        5%{?dist} | ||||||
|  | 
 | ||||||
|  | Summary:        Back-end data caching and persistence daemon for Graphite | ||||||
|  | License:        ASL 2.0 | ||||||
|  | URL:            https://github.com/graphite-project/carbon | ||||||
|  | 
 | ||||||
|  | Source0:	%{url}/archive/%{version}/%{name}-%{version}.tar.gz | ||||||
|  | 
 | ||||||
|  | Source10:       carbon-aggregator.1 | ||||||
|  | Source11:       carbon-cache.1 | ||||||
|  | Source13:       carbon-relay.1 | ||||||
|  | Source14:       validate-storage-schemas.1 | ||||||
|  | Source20:       %{name}.logrotate | ||||||
|  | 
 | ||||||
|  | Source30:       carbon-aggregator.service | ||||||
|  | Source31:       carbon-cache.service | ||||||
|  | Source32:       carbon-relay.service | ||||||
|  | Source33:       carbon-aggregator@.service | ||||||
|  | Source34:       carbon-cache@.service | ||||||
|  | Source35:       carbon-relay@.service | ||||||
|  | 
 | ||||||
|  | Source43:       %{name}.sysconfig | ||||||
|  | 
 | ||||||
|  | # Set sane default filesystem paths. | ||||||
|  | Patch1:         %{name}-0.10.0-Set-sane-defaults.patch | ||||||
|  | # Fix path to storage-schemas.conf. | ||||||
|  | Patch2:         %{name}-0.9.13-Fix-path-to-storage-schemas.conf.patch | ||||||
|  | # Python 3.12 support https://github.com/graphite-project/carbon/issues/946 | ||||||
|  | Patch3: %{name}-1.1.10-Py3.12-support.patch | ||||||
|  | 
 | ||||||
|  | BuildArch:      noarch | ||||||
|  | 
 | ||||||
|  | BuildRequires:  python3-cachetools | ||||||
|  | BuildRequires:  python3-twisted | ||||||
|  | BuildRequires:  python3-urllib3 | ||||||
|  | BuildRequires:  python3-cachetools | ||||||
|  | BuildRequires:  python3-twisted | ||||||
|  | BuildRequires:  python3-urllib3 | ||||||
|  | BuildRequires:	python3-devel | ||||||
|  | BuildRequires:	python3-pytest | ||||||
|  | BuildRequires:	python3-protobuf | ||||||
|  | BuildRequires:	python3-whisper | ||||||
|  | BuildRequires:	pyproject-rpm-macros | ||||||
|  | BuildRequires:	systemd | ||||||
|  | %py_provides python3-%{pypi_name} | ||||||
|  | 
 | ||||||
|  | %description | ||||||
|  | %{desc} | ||||||
|  | 
 | ||||||
|  | %package -n python3-%{srcname} | ||||||
|  | Summary:        %{summary} | ||||||
|  | Requires:	logrotate | ||||||
|  | Requires(pre):	shadow-utils | ||||||
|  | Requires(post):   systemd | ||||||
|  | Requires(preun):  systemd | ||||||
|  | Requires(postun): systemd | ||||||
|  | %{?python_provide:%python_provide python3-%{srcname}} | ||||||
|  | 
 | ||||||
|  | %description -n python3-%{srcname} | ||||||
|  | %{desc} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %prep | ||||||
|  | %autosetup -p1 -n %{srcname}-%{version} | ||||||
|  | 
 | ||||||
|  | # ugly prefix hack.. | ||||||
|  | export GRAPHITE_NO_PREFIX=True | ||||||
|  | sed -i -e '/data_files=install_files,/d' setup.py | ||||||
|  | cat << EOF >> setup.cfg | ||||||
|  | [install] | ||||||
|  | install-lib= | ||||||
|  | EOF | ||||||
|  | 
 | ||||||
|  | # txAMQP is orphaned in 2020 | ||||||
|  | sed -i "s/, 'txAMQP'//" setup.py | ||||||
|  | sed -i '/txAMQP/d' requirements.txt | ||||||
|  | # shebangs shebang.. | ||||||
|  | sed -i '1s|^#!/usr/bin/env python|#!/usr/bin/python3|' lib/carbon/amqp_listener.py | ||||||
|  | sed -i '1s|^#!/usr/bin/env python|#!/usr/bin/python3|' lib/carbon/amqp_publisher.py | ||||||
|  | # disable tests which use mmh3 hash | ||||||
|  | sed -i "s|plugin == 'rules'|plugin == 'rules' or plugin.startswith('fast-')|" lib/carbon/tests/test_routers.py | ||||||
|  | # Disable internal log rotation. | ||||||
|  | sed -i -e 's/ENABLE_LOGROTATION.*/ENABLE_LOGROTATION = False/g' conf/carbon.conf.example | ||||||
|  | # Skip Ceres database test, not actively maintained | ||||||
|  | rm lib/carbon/tests/test_database.py | ||||||
|  | 
 | ||||||
|  | # Use the standard library instead of a backport | ||||||
|  | sed -i -e 's/^import mock/from unittest import mock/' \ | ||||||
|  |        -e 's/^from mock import /from unittest.mock import /' \ | ||||||
|  |     lib/carbon/tests/*.py | ||||||
|  | 
 | ||||||
|  | %generate_buildrequires | ||||||
|  | %pyproject_buildrequires -r | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %build | ||||||
|  | %py3_build | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %install | ||||||
|  | %{py3_install -- \ | ||||||
|  |     --install-data=%{_localstatedir}/lib/carbon \ | ||||||
|  |     --install-lib=%{python3_sitelib} \ | ||||||
|  |     --install-scripts=%{_bindir}} | ||||||
|  | 
 | ||||||
|  | rm -rf %{buildroot}%{_localstatedir}/lib/carbon/* | ||||||
|  | mkdir -p %{buildroot}%{_localstatedir}/lib/carbon/lists | ||||||
|  | mkdir -p %{buildroot}%{_localstatedir}/lib/carbon/rrd | ||||||
|  | mkdir -p %{buildroot}%{_localstatedir}/lib/carbon/whisper | ||||||
|  | 
 | ||||||
|  | # default config | ||||||
|  | mkdir -p %{buildroot}%{_sysconfdir}/carbon | ||||||
|  | install -D -p -m0644 conf/carbon.conf.example \ | ||||||
|  |     %{buildroot}%{_sysconfdir}/carbon/carbon.conf | ||||||
|  | install -D -p -m0644 conf/storage-aggregation.conf.example \ | ||||||
|  |     %{buildroot}%{_sysconfdir}/carbon/storage-aggregation.conf | ||||||
|  | install -D -p -m0644 conf/storage-schemas.conf.example \ | ||||||
|  |     %{buildroot}%{_sysconfdir}/carbon/storage-schemas.conf | ||||||
|  | 
 | ||||||
|  | # man pages | ||||||
|  | mkdir -p %{buildroot}%{_mandir}/man1 | ||||||
|  | install -D -p -m0644 %{SOURCE10} %{buildroot}%{_mandir}/man1 | ||||||
|  | install -D -p -m0644 %{SOURCE11} %{buildroot}%{_mandir}/man1 | ||||||
|  | install -D -p -m0644 %{SOURCE13} %{buildroot}%{_mandir}/man1 | ||||||
|  | install -D -p -m0644 %{SOURCE14} %{buildroot}%{_mandir}/man1 | ||||||
|  | 
 | ||||||
|  | # log files | ||||||
|  | mkdir -p %{buildroot}%{_localstatedir}/log/carbon | ||||||
|  | install -D -p -m0644 %{SOURCE20} \ | ||||||
|  |     %{buildroot}%{_sysconfdir}/logrotate.d/python3-%{srcname} | ||||||
|  | 
 | ||||||
|  | # init scripts | ||||||
|  | install -D -p -m0644 %{SOURCE30} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-aggregator.service | ||||||
|  | install -D -p -m0644 %{SOURCE31} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-cache.service | ||||||
|  | install -D -p -m0644 %{SOURCE32} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-relay.service | ||||||
|  | install -D -p -m0644 %{SOURCE33} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-aggregator@.service | ||||||
|  | install -D -p -m0644 %{SOURCE34} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-cache@.service | ||||||
|  | install -D -p -m0644 %{SOURCE35} \ | ||||||
|  |     %{buildroot}%{_unitdir}/carbon-relay@.service | ||||||
|  | 
 | ||||||
|  | # remove .py suffix | ||||||
|  | for i in %{buildroot}%{_bindir}/*.py; do | ||||||
|  |     mv ${i} ${i%%.py} | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # fix permissions | ||||||
|  | chmod 755 %{buildroot}%{python3_sitelib}/carbon/amqp_listener.py | ||||||
|  | chmod 755 %{buildroot}%{python3_sitelib}/carbon/amqp_publisher.py | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %pre -n python3-%{srcname} | ||||||
|  | getent group carbon >/dev/null || groupadd -r carbon | ||||||
|  | getent passwd carbon >/dev/null || \ | ||||||
|  |     useradd -r -g carbon -d %{_localstatedir}/lib/carbon \ | ||||||
|  |     -s /sbin/nologin -c "Carbon cache daemon" carbon | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %post -n python3-%{srcname} | ||||||
|  | %systemd_post carbon-aggregator.service | ||||||
|  | %systemd_post carbon-cache.service | ||||||
|  | %systemd_post carbon-relay.service | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %preun -n python3-%{srcname} | ||||||
|  | %systemd_preun carbon-aggregator.service | ||||||
|  | %systemd_preun carbon-cache.service | ||||||
|  | %systemd_preun carbon-relay.service | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %postun -n python3-%{srcname} | ||||||
|  | %systemd_postun_with_restart carbon-aggregator.service | ||||||
|  | %systemd_postun_with_restart carbon-cache.service | ||||||
|  | %systemd_postun_with_restart carbon-relay.service | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %check | ||||||
|  | %pytest -v | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %files -n python3-%{srcname} | ||||||
|  | %doc README.md | ||||||
|  | %doc conf/ examples/ distro/redhat/init.d/ | ||||||
|  | 
 | ||||||
|  | %{python3_sitelib}/carbon | ||||||
|  | %{python3_sitelib}/carbon-*-py%{python3_version}.egg-info | ||||||
|  | %{python3_sitelib}/twisted/plugins/* | ||||||
|  | 
 | ||||||
|  | %dir %{_sysconfdir}/carbon | ||||||
|  | %config(noreplace) %{_sysconfdir}/carbon/carbon.conf | ||||||
|  | %config(noreplace) %{_sysconfdir}/carbon/storage-aggregation.conf | ||||||
|  | %config(noreplace) %{_sysconfdir}/carbon/storage-schemas.conf | ||||||
|  | 
 | ||||||
|  | %config(noreplace) %{_sysconfdir}/logrotate.d/python3-%{srcname} | ||||||
|  | 
 | ||||||
|  | %attr(0755,carbon,carbon) %dir %{_localstatedir}/lib/carbon | ||||||
|  | %attr(0755,carbon,carbon) %dir %{_localstatedir}/lib/carbon/lists | ||||||
|  | %attr(0755,carbon,carbon) %dir %{_localstatedir}/lib/carbon/rrd | ||||||
|  | %attr(0755,carbon,carbon) %dir %{_localstatedir}/lib/carbon/whisper | ||||||
|  | %attr(0755,carbon,carbon) %dir %{_localstatedir}/log/carbon | ||||||
|  | 
 | ||||||
|  | %{_bindir}/carbon-aggregator | ||||||
|  | %{_bindir}/carbon-aggregator-cache | ||||||
|  | %{_bindir}/carbon-cache | ||||||
|  | %{_bindir}/carbon-relay | ||||||
|  | %{_bindir}/validate-storage-schemas | ||||||
|  | 
 | ||||||
|  | %{_mandir}/man1/carbon-aggregator.1* | ||||||
|  | %{_mandir}/man1/carbon-cache.1* | ||||||
|  | %{_mandir}/man1/carbon-relay.1* | ||||||
|  | %{_mandir}/man1/validate-storage-schemas.1* | ||||||
|  | 
 | ||||||
|  | %{_unitdir}/carbon-aggregator.service | ||||||
|  | %{_unitdir}/carbon-cache.service | ||||||
|  | %{_unitdir}/carbon-relay.service | ||||||
|  | %{_unitdir}/carbon-aggregator@.service | ||||||
|  | %{_unitdir}/carbon-cache@.service | ||||||
|  | %{_unitdir}/carbon-relay@.service | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | %changelog | ||||||
|  | 
 | ||||||
|  | * Fri Aug 25 2023 Sofia Boldyreva <sboldyreva@almalinux.org> - 1.1.10-5 | ||||||
|  | - Added to BuildRequires: python3-cachetools, python3-twisted, python3-urllib3 to be able to build on AlmaLinux | ||||||
|  | - Replaced %pyproject_wheel with %py3_build in %build to be able to build on AlmaLinux | ||||||
|  | - Replaced %pyproject_install, %pyproject_save_files %{srcname} twisted with py3_install lines | ||||||
|  | - Removed -f %{pyproject_files} in %files to be able to build on AlmaLinux | ||||||
|  | - Added %{python3_sitelib}/carbon, %{python3_sitelib}/carbon-*-py%{python3_version}.egg-info, %{python3_sitelib}/twisted/plugins/* in %files to be able to build on AlmaLinux | ||||||
|  | 
 | ||||||
|  | * Fri Aug 04 2023 Jonathan Steffan <jsteffan@fedoraproject.org> - 1.1.10-5 | ||||||
|  | - Patch for Python 3.12 (RHBZ#2226168) | ||||||
|  | 
 | ||||||
|  | * Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.10-4 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Jun 28 2023 Python Maint <python-maint@redhat.com> - 1.1.10-3 | ||||||
|  | - Rebuilt for Python 3.12 | ||||||
|  | 
 | ||||||
|  | * Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.10-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Jul 25 2022 Ali Erdinc Koroglu <aekoroglu@fedoraproject.org> - 1.1.10-1 | ||||||
|  | - Update to 1.1.10 (RHBZ #2056668 and #2101243) | ||||||
|  | 
 | ||||||
|  | * Tue Jun 14 2022 Python Maint <python-maint@redhat.com> - 1.1.6-11 | ||||||
|  | - Rebuilt for Python 3.11 | ||||||
|  | 
 | ||||||
|  | * Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.6-10 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Jan 12 2022 Miro Hrončok <mhroncok@redhat.com> - 1.1.6-9 | ||||||
|  | - Fix tests for mock 4+ | ||||||
|  | 
 | ||||||
|  | * Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.6-8 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 1.1.6-7 | ||||||
|  | - Rebuilt for Python 3.10 | ||||||
|  | 
 | ||||||
|  | * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.1.6-6 | ||||||
|  | - Rebuilt for updated systemd-rpm-macros | ||||||
|  |   See https://pagure.io/fesco/issue/2583. | ||||||
|  | 
 | ||||||
|  | * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.6-5 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.6-4 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 1.1.6-3 | ||||||
|  | - Rebuilt for Python 3.9 | ||||||
|  | 
 | ||||||
|  | * Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.6-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Sat Jan 18 2020 Piotr Popieluch <piotr1212@gmail.com> - 1.1.6-1 | ||||||
|  | - Update to 1.1.6 | ||||||
|  | - -- adds options to py3_install after \ #1792050 | ||||||
|  | 
 | ||||||
|  | * Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 1.1.5-6 | ||||||
|  | - Rebuilt for Python 3.8.0rc1 (#1748018) | ||||||
|  | 
 | ||||||
|  | * Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 1.1.5-5 | ||||||
|  | - Rebuilt for Python 3.8 | ||||||
|  | 
 | ||||||
|  | * Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.5-4 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Feb 11 2019 Piotr Popieluch <piotr1212@gmail.com> - 1.1.5-3 | ||||||
|  | - Remove requires on configparser | ||||||
|  | 
 | ||||||
|  | * Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.5-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Jan 14 2019 Piotr Popieluch <piotr1212@gmail.com> - 1.1.5-1 | ||||||
|  | - Update to 1.1.5 | ||||||
|  | 
 | ||||||
|  | * Thu Sep 27 2018 Piotr Popieluch <piotr1212@gmail.com> - 1.1.4-2 | ||||||
|  | - Remove Python 2 Subpackage | ||||||
|  | 
 | ||||||
|  | * Sat Sep 15 2018 Piotr Popieluch <piotr1212@gmail.com> - 1.1.4-1 | ||||||
|  | - Update to 1.1.4 | ||||||
|  | 
 | ||||||
|  | * Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.3-3 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Apr 09 2018 Piotr Popieluch <piotr1212@gmail.com> - 1.1.3-2 | ||||||
|  | - Switch to Python 3 by default | ||||||
|  | - Remove sys-v init | ||||||
|  | 
 | ||||||
|  | * Mon Apr 09 2018 Piotr Popieluch <piotr1212@gmail.com> - 1.1.3-1 | ||||||
|  | - Update to 1.1.3 | ||||||
|  | 
 | ||||||
|  | * Wed Feb 28 2018 Piotr Popieluch <piotr1212@gmail.com> - 1.1.2-1 | ||||||
|  | - Update to 1.1.2 | ||||||
|  | - Build python3-carbon | ||||||
|  | 
 | ||||||
|  | * Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.1.1-4 | ||||||
|  | - Update Python 2 dependency declarations to new packaging standards | ||||||
|  |   (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) | ||||||
|  | 
 | ||||||
|  | * Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.1-3 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Dec 27 2017 Piotr Popieluch <piotr1212@gmail.com> - 1.1.1-2 | ||||||
|  | - Add tests | ||||||
|  | - Add missing Requires | ||||||
|  | 
 | ||||||
|  | * Tue Dec 26 2017 Piotr Popieluch <piotr1212@gmail.com> - 1.1.1-1 | ||||||
|  | - Update to 1.1.1 | ||||||
|  | 
 | ||||||
|  | * Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-0.4.rc1 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-0.3.rc1 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Jan 25 2017 piotr1212@gmail.com - 0.10.0-0.2.rc1 | ||||||
|  | - Fix requires | ||||||
|  | - Fix logrotate name | ||||||
|  | 
 | ||||||
|  | * Thu Sep 22 2016 Piotr Popieluch <piotr1212@gmail.com> - 0.10.0-0.1.rc1 | ||||||
|  | - Update to 0.10.0-rc1 | ||||||
|  | 
 | ||||||
|  | * Sun Sep 18 2016 Piotr Popieluch <piotr1212@gmail.com> - - 0.9.15-6 | ||||||
|  | - Set correct interpreter for amqp listener and publiser | ||||||
|  | 
 | ||||||
|  | * Sun Sep 18 2016 Piotr Popieluch <piotr1212@gmail.com> - 0.9.15-5 | ||||||
|  | - Add example init script to upstream, rhbz#1360469 | ||||||
|  | - Enable logrotate by default, fixes rhbz#1285727 | ||||||
|  | - Add storage-aggregation.conf, fixes rhbz#1285725 | ||||||
|  | - Update to newer package guidelines | ||||||
|  | - Remove el5 support | ||||||
|  | - Remove obsoleted macros | ||||||
|  | - Update URL | ||||||
|  | 
 | ||||||
|  | * Wed Aug 03 2016 Piotr Popieluch <piotr1212@gmail.com> - 0.9.15-4 | ||||||
|  | - Add systemd unit files with instances | ||||||
|  | 
 | ||||||
|  | * Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.15-3 | ||||||
|  | - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages | ||||||
|  | 
 | ||||||
|  | * Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.15-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Sat Nov 28 2015 Piotr Popieluch <piotr1212@gmail.com> - 0.9.15-1 | ||||||
|  | - Update to new version | ||||||
|  | 
 | ||||||
|  | * Sun Nov 08 2015 Piotr Popieluch <piotr1212@gmail.com> - 0.9.14-1 | ||||||
|  | - Update to new version | ||||||
|  | 
 | ||||||
|  | * Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.13-0.2.pre1 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Jan 19 2015 Piotr Popieluch <piotr1212@gmail.com> - 0.9.13-0.1.pre1 | ||||||
|  | - update to 0.9.13-pre1 | ||||||
|  | 
 | ||||||
|  | * Mon Nov 24 2014 Jamie Nguyen <jamielinux@fedoraproject.org> - 0.9.12-7 | ||||||
|  | - patch setup.py to prevent installation of upstream init scripts | ||||||
|  | 
 | ||||||
|  | * Fri Nov 14 2014 Jamie Nguyen <jamielinux@fedoraproject.org> - 0.9.12-6 | ||||||
|  | - conditionally define macros for EPEL 6 and below | ||||||
|  | 
 | ||||||
|  | * Wed Oct 01 2014 Jamie Nguyen <jamielinux@fedoraproject.org> - 0.9.12-5 | ||||||
|  | - update URL | ||||||
|  | - improve description | ||||||
|  | - use commit hash for Source URL | ||||||
|  | - use loop to rename files | ||||||
|  | - include README.md and examples/ | ||||||
|  | - amend patch for filesystem default paths | ||||||
|  | - fix path to storage-schemas.conf | ||||||
|  | - add man pages from Debian | ||||||
|  | - disable internal log rotation and include logrotate configuration | ||||||
|  |   for Fedora >= 21 and EPEL >= 7 | ||||||
|  | - be more explicit in %%files | ||||||
|  | - include python egg | ||||||
|  | - migrate to systemd on Fedora >= 21 and EPEL >= 7 | ||||||
|  | 
 | ||||||
|  | * Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.12-4 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Sep 30 2013 Jonathan Steffan <jsteffan@fedoraproject.org> - 0.9.12-3 | ||||||
|  | - Update default runtime user to carbon for carbon-aggregator and | ||||||
|  |   carbon-relay (RHBZ#1013813) | ||||||
|  | 
 | ||||||
|  | * Tue Sep 24 2013 Jonathan Steffan <jsteffan@fedoraproject.org> - 0.9.12-2 | ||||||
|  | - Add strict python-whisper Requires (RHBZ#1010432) | ||||||
|  | - Don't cleanup user and user data on package remove (RHBZ#1010430) | ||||||
|  | 
 | ||||||
|  | * Mon Sep 02 2013 Jonathan Steffan <jsteffan@fedoraproject.org> - 0.9.12-1 | ||||||
|  | - Update to 0.9.12 | ||||||
|  | 
 | ||||||
|  | * Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.10-4 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.10-3 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Sat Nov 24 2012 Jonathan Steffan <jsteffan@fedoraproject.org> - 0.9.10-2 | ||||||
|  | - Update spec to build on el5 | ||||||
|  | - Fix python_sitelib definition | ||||||
|  | 
 | ||||||
|  | * Wed May 30 2012 Jonathan Steffan <jsteffan@fedoraproject.org> - 0.9.10-1 | ||||||
|  | - Initial Package | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user