Python Type Error: ‘OldSample’ object has no attribute ‘__getitem__’

The data set looks something like this, The data is from openstack ceilometer python API

[
 <OldSample
      {
        counter_name': cpu_util', 
         user_id': 7b', 
         resource_id': ef', 
         timestamp': 2015-07-02T08:13:55', 
         counter_volume': 0.774, 
          resource_metadata': 
                            {
                             ramdisk_id': None',
                             flavor.vcpus': 1',
                              OS-EXT-AZ.availability_zone': nova', 
                              display_name': ubuntu-io', 
                              flavor.id': 596642d8-', 
                              status': active', ephemeral_gb': 0', 
                              flavor.name': m1.small.io', 
                              disk_gb': 20', 
                              kernel_id': None', 
                              image.id': 5776a360-', 
                              flavor.ram': 2048', 
                              host': host', 
                              flavor.ephemeral': 0',
                               image.name': ubuntu-io', 
                               image_ref_url': http://b8dc', 
                               image.links': 
                                             [
                                             {
                                             'href': 'http://19', 
                                             'rel': 'bookmark'
                                             }
                                             ]", 
                                             cpu_number': 1', 
                                             flavor.disk': 20', 
                                             root_gb': 20',
                                              name': instance-000000d3', 
                                              memory_mb': 2048', 
                                              instance_type': 596642d', 
                                              vcpus': 1', image_ref': 5776a36', 
                                              flavor.links': 
                                              [
                                              {
                                              'href': 'http://192.168.26.1', 
                                              'rel': 'bookmark'
                                              }
                                              ]"
                                              }, 
                                              source': openstack', 
                                              counter_unit': %', 
                                              recorded_at': 2015-07-02T08:13:55.485000', 
                                              project_id': 1670f', 
                                              message_id': 4849', 
                                              4counter_type': gauge'
                                              }>]

My code looks something like this

auth=v2.Password(auth_url="http://", username="user", password="pass", tenant_id='id')

sess = session.Session(auth=auth,verify=False)     
token = auth.get_token(sess)

cclient = client.get_client(2, ceilometer_url="http:", token=token,verify=False)


data = cclient.samples.list(meter_name ='cpu_util')


thing = {}
msg = {}
cols = []

def __unicode__(self):
  return unicode(self.data)

for row in data:
    col = {}
    col['x'] = row['timestamp']
    col['y'] = row['counter_volume']
    cols.append(col)



msg['columns'] = cols

thing['message'] = msg

print thing

print json.dumps(thing)

My intended out out something like this

message: {
      columns: [
        ["x": 123, "y": "456"],
        ["y": 0.045, "x": "2015-06-30T15:53:55"]
      ]

here x is counter_volume and Y is timestamp
I need the output in this way because I want to plug this data into EON pubnub Charting Library. Problem is that no matter what I do it keeps on throwing me errors.I guess I need to learn some more how to manipulate list of dictionaries.


Source: json

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.