Skip to content

Commit 8bb1041

Browse files
MELROY RODRIGUESGitHub Enterprise
MELROY RODRIGUES
authored and
GitHub Enterprise
committed
Release 1.4.0
1 parent 49a580d commit 8bb1041

File tree

5 files changed

+66
-11
lines changed

5 files changed

+66
-11
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# CHANGELOG
22

3+
## 1.4.0
4+
5+
### Content
6+
7+
#### Features
8+
9+
* COS Request Metrics Monitoring
10+
* COS Quota
11+
* Object Versioning Metrics
12+
313
## 1.3.0
414

515
### Content

cos_config/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
__author__ = 'IBM'
2-
__version__ = '1.3.0'
2+
__version__ = '1.4.0'

cos_config/resource_configuration_v1.py

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def get_bucket_config(self, bucket, **kwargs):
113113
return response
114114

115115

116-
def update_bucket_config(self, bucket, firewall=None, activity_tracking=None, metrics_monitoring=None, if_match=None, **kwargs):
116+
def update_bucket_config(self, bucket, firewall=None, activity_tracking=None, metrics_monitoring=None, hard_quota=None, if_match=None, **kwargs):
117117
"""
118118
Make changes to a bucket's configuration.
119119
@@ -138,6 +138,7 @@ def update_bucket_config(self, bucket, firewall=None, activity_tracking=None, me
138138
:param MetricsMonitoring metrics_monitoring: Enables sending metrics to IBM Cloud
139139
Monitoring. All metrics are sent to the IBM Cloud Monitoring instance defined in
140140
the `monitoring_crn` field.
141+
:param int hard_quota: Maximum bytes for this bucket.
141142
:param str if_match: An Etag previously returned in a header when fetching or
142143
updating a bucket's metadata. If this value does not match the active Etag, the
143144
request will fail.
@@ -166,7 +167,8 @@ def update_bucket_config(self, bucket, firewall=None, activity_tracking=None, me
166167
data = {
167168
'firewall': firewall,
168169
'activity_tracking': activity_tracking,
169-
'metrics_monitoring': metrics_monitoring
170+
'metrics_monitoring': metrics_monitoring,
171+
'hard_quota': hard_quota
170172
}
171173

172174
url = '/b/{0}'.format(*self._encode_path_vars(bucket))
@@ -275,6 +277,13 @@ class Bucket(object):
275277
3339 format. Non-mutable.
276278
:attr int object_count: (optional) Total number of objects in the bucket. Non-mutable.
277279
:attr int bytes_used: (optional) Total size of all objects in the bucket. Non-mutable.
280+
:attr int noncurrent_object_count: (optional) Number of non-current object versions in
281+
the bucket. Non-mutable.
282+
:attr int noncurrent_bytes_used: (optional) Total size of all non-current object
283+
versions in the bucket. Non-mutable.
284+
:attr int delete_marker_count: (optional) Total number of delete markers in the
285+
bucket. Non-mutable.
286+
:attr int hard_quota: (optional) Maximum bytes for this bucket.
278287
:attr Firewall firewall: (optional) An access control mechanism based on the network
279288
(IP address) where request originated. Requests not originating from IP addresses
280289
listed in the `allowed_ip` field will be denied regardless of any access policies
@@ -289,7 +298,7 @@ class Bucket(object):
289298
the `monitoring_crn` field.
290299
"""
291300

292-
def __init__(self, name=None, crn=None, service_instance_id=None, service_instance_crn=None, time_created=None, time_updated=None, object_count=None, bytes_used=None, firewall=None, activity_tracking=None, metrics_monitoring=None):
301+
def __init__(self, name=None, crn=None, service_instance_id=None, service_instance_crn=None, time_created=None, time_updated=None, object_count=None, bytes_used=None, noncurrent_object_count=None, noncurrent_bytes_used=None, delete_marker_count=None, hard_quota=None, firewall=None, activity_tracking=None, metrics_monitoring=None):
293302
"""
294303
Initialize a Bucket object.
295304
@@ -308,6 +317,13 @@ def __init__(self, name=None, crn=None, service_instance_id=None, service_instan
308317
Non-mutable.
309318
:param int bytes_used: (optional) Total size of all objects in the bucket.
310319
Non-mutable.
320+
:param int noncurrent_object_count: (optional) Number of non-current object
321+
versions in the bucket. Non-mutable.
322+
:param int noncurrent_bytes_used: (optional) Total size of all non-current object
323+
versions in the bucket. Non-mutable.
324+
:param int delete_marker_count: (optional) Total number of delete markers in the
325+
bucket. Non-mutable.
326+
:param int hard_quota: (optional) Maximum bytes for this bucket.
311327
:param Firewall firewall: (optional) An access control mechanism based on the
312328
network (IP address) where request originated. Requests not originating from IP
313329
addresses listed in the `allowed_ip` field will be denied regardless of any access
@@ -330,6 +346,10 @@ def __init__(self, name=None, crn=None, service_instance_id=None, service_instan
330346
self.time_updated = time_updated
331347
self.object_count = object_count
332348
self.bytes_used = bytes_used
349+
self.noncurrent_object_count = noncurrent_object_count
350+
self.noncurrent_bytes_used = noncurrent_bytes_used
351+
self.delete_marker_count = delete_marker_count
352+
self.hard_quota = hard_quota
333353
self.firewall = firewall
334354
self.activity_tracking = activity_tracking
335355
self.metrics_monitoring = metrics_monitoring
@@ -338,7 +358,7 @@ def __init__(self, name=None, crn=None, service_instance_id=None, service_instan
338358
def _from_dict(cls, _dict):
339359
"""Initialize a Bucket object from a json dictionary."""
340360
args = {}
341-
validKeys = ['name', 'crn', 'service_instance_id', 'service_instance_crn', 'time_created', 'time_updated', 'object_count', 'bytes_used', 'firewall', 'activity_tracking', 'metrics_monitoring']
361+
validKeys = ['name', 'crn', 'service_instance_id', 'service_instance_crn', 'time_created', 'time_updated', 'object_count', 'bytes_used', 'noncurrent_object_count', 'noncurrent_bytes_used', 'delete_marker_count', 'hard_quota', 'firewall', 'activity_tracking', 'metrics_monitoring']
342362
badKeys = set(_dict.keys()) - set(validKeys)
343363
if badKeys:
344364
raise ValueError('Unrecognized keys detected in dictionary for class Bucket: ' + ', '.join(badKeys))
@@ -358,6 +378,14 @@ def _from_dict(cls, _dict):
358378
args['object_count'] = _dict.get('object_count')
359379
if 'bytes_used' in _dict:
360380
args['bytes_used'] = _dict.get('bytes_used')
381+
if 'noncurrent_object_count' in _dict:
382+
args['noncurrent_object_count'] = _dict.get('noncurrent_object_count')
383+
if 'noncurrent_bytes_used' in _dict:
384+
args['noncurrent_bytes_used'] = _dict.get('noncurrent_bytes_used')
385+
if 'delete_marker_count' in _dict:
386+
args['delete_marker_count'] = _dict.get('delete_marker_count')
387+
if 'hard_quota' in _dict:
388+
args['hard_quota'] = _dict.get('hard_quota')
361389
if 'firewall' in _dict:
362390
args['firewall'] = Firewall._from_dict(_dict.get('firewall'))
363391
if 'activity_tracking' in _dict:
@@ -385,6 +413,14 @@ def _to_dict(self):
385413
_dict['object_count'] = self.object_count
386414
if hasattr(self, 'bytes_used') and self.bytes_used is not None:
387415
_dict['bytes_used'] = self.bytes_used
416+
if hasattr(self, 'noncurrent_object_count') and self.noncurrent_object_count is not None:
417+
_dict['noncurrent_object_count'] = self.noncurrent_object_count
418+
if hasattr(self, 'noncurrent_bytes_used') and self.noncurrent_bytes_used is not None:
419+
_dict['noncurrent_bytes_used'] = self.noncurrent_bytes_used
420+
if hasattr(self, 'delete_marker_count') and self.delete_marker_count is not None:
421+
_dict['delete_marker_count'] = self.delete_marker_count
422+
if hasattr(self, 'hard_quota') and self.hard_quota is not None:
423+
_dict['hard_quota'] = self.hard_quota
388424
if hasattr(self, 'firewall') and self.firewall is not None:
389425
_dict['firewall'] = self.firewall._to_dict()
390426
if hasattr(self, 'activity_tracking') and self.activity_tracking is not None:
@@ -505,36 +541,43 @@ class MetricsMonitoring(object):
505541
506542
:attr bool usage_metrics_enabled: (optional) If set to `true`, all usage metrics (i.e.
507543
`bytes_used`) will be sent to the monitoring service.
544+
:attr bool request_metrics_enabled: (optional) If set to `true`, all request metrics
545+
(i.e. `rest.object.head`) will be sent to the monitoring service.
508546
:attr str metrics_monitoring_crn: (optional) Required the first time
509547
`metrics_monitoring` is configured. The instance of IBM Cloud Monitoring that will
510548
receive the bucket metrics. The format is "crn:v1:bluemix:public:logdnaat:{bucket
511549
location}:a/{storage account}:{monitoring service instance}::".
512550
"""
513551

514-
def __init__(self, usage_metrics_enabled=None, metrics_monitoring_crn=None):
552+
def __init__(self, usage_metrics_enabled=None, request_metrics_enabled=None, metrics_monitoring_crn=None):
515553
"""
516554
Initialize a MetricsMonitoring object.
517555
518556
:param bool usage_metrics_enabled: (optional) If set to `true`, all usage metrics
519557
(i.e. `bytes_used`) will be sent to the monitoring service.
558+
:param bool request_metrics_enabled: (optional) If set to `true`, all request
559+
metrics (i.e. `rest.object.head`) will be sent to the monitoring service.
520560
:param str metrics_monitoring_crn: (optional) Required the first time
521561
`metrics_monitoring` is configured. The instance of IBM Cloud Monitoring that will
522562
receive the bucket metrics. The format is "crn:v1:bluemix:public:logdnaat:{bucket
523563
location}:a/{storage account}:{monitoring service instance}::".
524564
"""
525565
self.usage_metrics_enabled = usage_metrics_enabled
566+
self.request_metrics_enabled = request_metrics_enabled
526567
self.metrics_monitoring_crn = metrics_monitoring_crn
527568

528569
@classmethod
529570
def _from_dict(cls, _dict):
530571
"""Initialize a MetricsMonitoring object from a json dictionary."""
531572
args = {}
532-
validKeys = ['usage_metrics_enabled', 'metrics_monitoring_crn']
573+
validKeys = ['usage_metrics_enabled', 'request_metrics_enabled', 'metrics_monitoring_crn']
533574
badKeys = set(_dict.keys()) - set(validKeys)
534575
if badKeys:
535576
raise ValueError('Unrecognized keys detected in dictionary for class MetricsMonitoring: ' + ', '.join(badKeys))
536577
if 'usage_metrics_enabled' in _dict:
537578
args['usage_metrics_enabled'] = _dict.get('usage_metrics_enabled')
579+
if 'request_metrics_enabled' in _dict:
580+
args['request_metrics_enabled'] = _dict.get('request_metrics_enabled')
538581
if 'metrics_monitoring_crn' in _dict:
539582
args['metrics_monitoring_crn'] = _dict.get('metrics_monitoring_crn')
540583
return cls(**args)
@@ -544,6 +587,8 @@ def _to_dict(self):
544587
_dict = {}
545588
if hasattr(self, 'usage_metrics_enabled') and self.usage_metrics_enabled is not None:
546589
_dict['usage_metrics_enabled'] = self.usage_metrics_enabled
590+
if hasattr(self, 'request_metrics_enabled') and self.request_metrics_enabled is not None:
591+
_dict['request_metrics_enabled'] = self.request_metrics_enabled
547592
if hasattr(self, 'metrics_monitoring_crn') and self.metrics_monitoring_crn is not None:
548593
_dict['metrics_monitoring_crn'] = self.metrics_monitoring_crn
549594
return _dict

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ibm-cloud-sdk-core>=0.4.2,<=0.5.0
1+
ibm-cloud-sdk-core>=0.5.3,<1.0.0

setup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ def get_version():
2828
scripts=[],
2929
packages=find_packages(exclude=['tests*']),
3030
include_package_data=True,
31-
python_requires='~=3.5',
31+
python_requires='~=3.6',
3232
install_requires=[
33-
'ibm-cloud-sdk-core>=0.4.2,<=0.5.0',
33+
'ibm-cloud-sdk-core>=0.5.3,<1.0.0',
3434
],
3535
license="Apache License 2.0",
3636
classifiers=[
@@ -40,9 +40,9 @@ def get_version():
4040
'License :: OSI Approved :: Apache Software License',
4141
'Programming Language :: Python',
4242
'Programming Language :: Python :: 3',
43-
'Programming Language :: Python :: 3.5',
4443
'Programming Language :: Python :: 3.6',
4544
'Programming Language :: Python :: 3.7',
4645
'Programming Language :: Python :: 3.8',
46+
'Programming Language :: Python :: 3.9',
4747
],
4848
)

0 commit comments

Comments
 (0)