24
24
25
25
from gnocchi .common import s3
26
26
from gnocchi import incoming
27
+ from gnocchi .status import get_s3_health_status
27
28
28
29
boto3 = s3 .boto3
29
30
botocore = s3 .botocore
@@ -42,21 +43,21 @@ def __init__(self, conf, greedy=True):
42
43
s3 .get_connection (conf )
43
44
)
44
45
45
- self ._bucket_name_measures = (
46
+ self ._bucket_name = (
46
47
self ._bucket_prefix + "-" + self .MEASURE_PREFIX
47
48
)
48
49
49
50
def __str__ (self ):
50
- return "%s: %s" % (self .__class__ .__name__ , self ._bucket_name_measures )
51
+ return "%s: %s" % (self .__class__ .__name__ , self ._bucket_name )
51
52
52
53
def _get_storage_sacks (self ):
53
- response = self .s3 .get_object (Bucket = self ._bucket_name_measures ,
54
+ response = self .s3 .get_object (Bucket = self ._bucket_name ,
54
55
Key = self .CFG_PREFIX )
55
56
return json .loads (response ['Body' ].read ().decode ())[self .CFG_SACKS ]
56
57
57
58
def set_storage_settings (self , num_sacks ):
58
59
data = {self .CFG_SACKS : num_sacks }
59
- self .s3 .put_object (Bucket = self ._bucket_name_measures ,
60
+ self .s3 .put_object (Bucket = self ._bucket_name ,
60
61
Key = self .CFG_PREFIX ,
61
62
Body = json .dumps (data ).encode ())
62
63
@@ -67,7 +68,7 @@ def remove_sacks(num_sacks):
67
68
68
69
def upgrade (self , num_sacks ):
69
70
try :
70
- s3 .create_bucket (self .s3 , self ._bucket_name_measures ,
71
+ s3 .create_bucket (self .s3 , self ._bucket_name ,
71
72
self ._region_name )
72
73
except botocore .exceptions .ClientError as e :
73
74
if e .response ['Error' ].get ('Code' ) not in (
@@ -80,7 +81,7 @@ def upgrade(self, num_sacks):
80
81
def _store_new_measures (self , metric_id , data ):
81
82
now = datetime .datetime .utcnow ().strftime ("_%Y%m%d_%H:%M:%S" )
82
83
self .s3 .put_object (
83
- Bucket = self ._bucket_name_measures ,
84
+ Bucket = self ._bucket_name ,
84
85
Key = "/" .join ((str (self .sack_for_metric (metric_id )),
85
86
str (metric_id ),
86
87
str (uuid .uuid4 ()) + now )),
@@ -97,7 +98,7 @@ def _build_report(self, details):
97
98
else :
98
99
kwargs = {}
99
100
response = self .s3 .list_objects_v2 (
100
- Bucket = self ._bucket_name_measures ,
101
+ Bucket = self ._bucket_name ,
101
102
** kwargs )
102
103
for c in response .get ('Contents' , ()):
103
104
if c ['Key' ] != self .CFG_PREFIX :
@@ -118,7 +119,7 @@ def _list_files(self, path_items, **kwargs):
118
119
except KeyError :
119
120
pass
120
121
response = self .s3 .list_objects_v2 (
121
- Bucket = self ._bucket_name_measures ,
122
+ Bucket = self ._bucket_name ,
122
123
Prefix = "/" .join (path_items ) + "/" ,
123
124
** kwargs )
124
125
yield response
@@ -136,7 +137,7 @@ def _list_measure_files_for_metric(self, sack, metric_id):
136
137
def delete_unprocessed_measures_for_metric (self , metric_id ):
137
138
sack = self .sack_for_metric (metric_id )
138
139
files = self ._list_measure_files_for_metric (sack , metric_id )
139
- s3 .bulk_delete (self .s3 , self ._bucket_name_measures , files )
140
+ s3 .bulk_delete (self .s3 , self ._bucket_name , files )
140
141
141
142
def has_unprocessed (self , metric_id ):
142
143
sack = self .sack_for_metric (metric_id )
@@ -152,7 +153,7 @@ def process_measure_for_metrics(self, metric_ids):
152
153
all_files .extend (files )
153
154
for f in files :
154
155
response = self .s3 .get_object (
155
- Bucket = self ._bucket_name_measures ,
156
+ Bucket = self ._bucket_name ,
156
157
Key = f )
157
158
measures [metric_id ] = numpy .concatenate ((
158
159
measures [metric_id ],
@@ -162,7 +163,7 @@ def process_measure_for_metrics(self, metric_ids):
162
163
yield measures
163
164
164
165
# Now clean objects
165
- s3 .bulk_delete (self .s3 , self ._bucket_name_measures , all_files )
166
+ s3 .bulk_delete (self .s3 , self ._bucket_name , all_files )
166
167
167
168
@contextlib .contextmanager
168
169
def process_measures_for_sack (self , sack ):
@@ -177,7 +178,7 @@ def process_measures_for_sack(self, sack):
177
178
continue
178
179
179
180
response = self .s3 .get_object (
180
- Bucket = self ._bucket_name_measures ,
181
+ Bucket = self ._bucket_name ,
181
182
Key = f )
182
183
measures [metric_id ] = numpy .concatenate ((
183
184
measures [metric_id ],
@@ -187,4 +188,7 @@ def process_measures_for_sack(self, sack):
187
188
yield measures
188
189
189
190
# Now clean objects
190
- s3 .bulk_delete (self .s3 , self ._bucket_name_measures , files )
191
+ s3 .bulk_delete (self .s3 , self ._bucket_name , files )
192
+
193
+ def get_health_status (self ):
194
+ return get_s3_health_status (self )
0 commit comments