Пример #1
0
    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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
 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
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
 def test_ts2iso(self):
     trans_iso = ck_utils.ts2iso(self.date_ts)
     self.assertEqual(self.date_iso, trans_iso)
Пример #9
0
#    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': {
Пример #10
0
#    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'
Пример #11
0
 def test_ts2iso(self):
     trans_iso = ck_utils.ts2iso(self.date_ts)
     self.assertEqual(self.date_iso, trans_iso)