def list_events(self, start, end=None, resource_id=None, project_id=None, q_filter=None, event_type_filter=None, service=None): """Events belong to resource during the timespan.""" start_iso = ck_utils.ts2iso(start) req_filter = self.gen_filter(start_timestamp=start_iso) if resource_id: if service == 'compute': req_filter.extend(self.gen_filter(instance_id=resource_id)) else: req_filter.extend(self.gen_filter(resource_id=resource_id)) if project_id: req_filter.extend(self.gen_filter(tenant_id=project_id)) if end: end_iso = ck_utils.ts2iso(end) req_filter.extend(self.gen_filter(end_timestamp=end_iso)) if isinstance(q_filter, list): req_filter.extend(q_filter) elif q_filter: req_filter.append(q_filter) resources_events = {} for event_type in event_type_filter: new_req_filter = copy.copy(req_filter) new_req_filter.extend(self.gen_filter(event_type=event_type)) events = self._conn.events.list(q=new_req_filter) for event in events: if service == 'compute': resource_id = event.traits[11]['value'] elif service == 'volume': resource_id = event.traits[11]['value'] if resource_id in resources_events: resources_events[resource_id].append(event) else: resources_events[resource_id] = [event] for resource in resources_events: resources_events[resource].sort(key=lambda x:(x.generated)) # resource_events = self._conn.events.list(q=req_filter) # if event_type_filter != None and resource_events != None: # ghost_instance_events = list(resource_events) # # for event in ghost_instance_events: # if service == 'compute': # pass # if str(event.event_type) not in event_type_filter: # resource_events.remove(event) # # return resource_events return resources_events
def split_storage_data(raw_data): final_data = [] for frame in raw_data: frame['period']['begin'] = ck_utils.ts2iso(frame['period']['begin']) frame['period']['end'] = ck_utils.ts2iso(frame['period']['end']) usage_buffer = frame.pop('usage') for service, data in usage_buffer.items(): new_frame = copy.deepcopy(frame) new_frame['usage'] = {service: data} new_frame['usage'][service][0]['tenant_id'] = TENANT final_data.append(new_frame) return final_data
def split_storage_data(raw_data): final_data = [] for frame in raw_data: frame['period']['begin'] = ck_utils.ts2iso(frame['period']['begin']) frame['period']['end'] = ck_utils.ts2iso(frame['period']['end']) usage_buffer = frame.pop('usage') # Sort to have a consistent result as we are converting it to a list for service, data in sorted(usage_buffer.items()): new_frame = copy.deepcopy(frame) new_frame['usage'] = {service: data} new_frame['usage'][service][0]['tenant_id'] = TENANT final_data.append(new_frame) return final_data
def split_storage_data(raw_data): final_data = [] for frame in raw_data: frame['period']['begin'] = ck_utils.ts2iso(frame['period']['begin']) frame['period']['end'] = ck_utils.ts2iso(frame['period']['end']) usage_buffer = frame.pop('usage') # Sort to have a consistent result as we are converting it to a list for service, data in sorted(six.iteritems(usage_buffer)): new_frame = copy.deepcopy(frame) new_frame['usage'] = {service: data} new_frame['usage'][service][0]['tenant_id'] = TENANT final_data.append(new_frame) return final_data
def resource_samples(self, resource_type, resource_id, start, end=None, q_filter=None): """Resources samples during the timespan.""" start_iso = ck_utils.ts2iso(start) req_filter = self.gen_filter(op='ge', timestamp=start_iso) if resource_id: req_filter.extend(self.gen_filter(resource_id=resource_id)) if end: end_iso = ck_utils.ts2iso(end) req_filter.extend(self.gen_filter(op='le', timestamp=end_iso)) if isinstance(q_filter, list): req_filter.extend(q_filter) elif q_filter: req_filter.append(q_filter) resource_samples = self._conn.samples.list(meter_name=resource_type, q=req_filter) return resource_samples
def resources_stats(self, meter, start, end=None, project_id=None, q_filter=None): """Resources statistics during the timespan.""" start_iso = ck_utils.ts2iso(start) req_filter = self.gen_filter(op='ge', timestamp=start_iso) if project_id: req_filter.extend(self.gen_filter(project=project_id)) if end: end_iso = ck_utils.ts2iso(end) req_filter.extend(self.gen_filter(op='le', timestamp=end_iso)) if isinstance(q_filter, list): req_filter.extend(q_filter) elif q_filter: req_filter.append(q_filter) resources_stats = self._conn.statistics.list(meter_name=meter, period=0, q=req_filter, groupby=['resource_id']) return resources_stats
def test_ts2iso(self): trans_iso = ck_utils.ts2iso(self.date_ts) self.assertEqual(self.date_iso, trans_iso)
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. # # @author: Stéphane Albert # import copy import decimal from cloudkitty.default_metrics_conf import DEFAULT_METRICS_CONF from cloudkitty import utils as ck_utils TENANT = 'f266f30b11f246b589fd266f85eeec39' INITIAL_TIMESTAMP = 1420070400 FIRST_PERIOD_BEGIN = INITIAL_TIMESTAMP FIRST_PERIOD_BEGIN_ISO = ck_utils.ts2iso(FIRST_PERIOD_BEGIN) FIRST_PERIOD_END = FIRST_PERIOD_BEGIN + 3600 FIRST_PERIOD_END_ISO = ck_utils.ts2iso(FIRST_PERIOD_END) SECOND_PERIOD_BEGIN = FIRST_PERIOD_END SECOND_PERIOD_BEGIN_ISO = ck_utils.ts2iso(SECOND_PERIOD_BEGIN) SECOND_PERIOD_END = SECOND_PERIOD_BEGIN + 3600 SECOND_PERIOD_END_ISO = ck_utils.ts2iso(SECOND_PERIOD_END) COMPUTE_METADATA = { 'availability_zone': 'nova', 'flavor': 'm1.nano', 'image_id': 'f5600101-8fa2-4864-899e-ebcb7ed6b568', 'instance_id': '26c084e1-b8f1-4cbc-a7ec-e8b356788a17', 'resource_id': '1558f911-b55a-4fd2-9173-c8f1f23e5639', 'memory': '64', 'metadata': {
# License for the specific language governing permissions and limitations # under the License. # # @author: Stéphane Albert # import copy import decimal import six from cloudkitty import utils as ck_utils TENANT = 'f266f30b11f246b589fd266f85eeec39' INITIAL_TIMESTAMP = 1420070400 FIRST_PERIOD_BEGIN = INITIAL_TIMESTAMP FIRST_PERIOD_BEGIN_ISO = ck_utils.ts2iso(FIRST_PERIOD_BEGIN) FIRST_PERIOD_END = FIRST_PERIOD_BEGIN + 3600 FIRST_PERIOD_END_ISO = ck_utils.ts2iso(FIRST_PERIOD_END) SECOND_PERIOD_BEGIN = FIRST_PERIOD_END SECOND_PERIOD_BEGIN_ISO = ck_utils.ts2iso(SECOND_PERIOD_BEGIN) SECOND_PERIOD_END = SECOND_PERIOD_BEGIN + 3600 SECOND_PERIOD_END_ISO = ck_utils.ts2iso(SECOND_PERIOD_END) COMPUTE_METADATA = { 'availability_zone': 'nova', 'flavor': 'm1.nano', 'image_id': 'f5600101-8fa2-4864-899e-ebcb7ed6b568', 'instance_id': '26c084e1-b8f1-4cbc-a7ec-e8b356788a17', 'memory': '64', 'metadata': { 'farm': 'prod'