~0x44/nova/extdoc

« back to all changes in this revision

Viewing changes to nova/tests/glance/stubs.py

  • Committer: Tarmac
  • Author(s): Brian Waldon
  • Date: 2011-09-13 15:23:15 UTC
  • mfrom: (1517.2.17 image-service-cleanup)
  • Revision ID: tarmac-20110913152315-a21jg0bvjjlyga82
- remove translation of non-recognized attributes to user metadata, now just ignored
- ensure all keys are defined in image dictionaries, defaulting to None if glance client doesn't provide one
- remove BaseImageService
- reorganize some GlanceImageService tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
import StringIO
18
18
 
 
19
from nova import exception
19
20
from nova.image import glance
20
21
 
21
22
 
78
79
    def get_image(self, image_id):
79
80
        image = self.IMAGE_FIXTURES[int(image_id)]
80
81
        return image['image_meta'], image['image_data']
 
82
 
 
83
 
 
84
NOW_GLANCE_FORMAT = "2010-10-11T10:30:22"
 
85
 
 
86
 
 
87
class StubGlanceClient(object):
 
88
 
 
89
    def __init__(self, images=None):
 
90
        self.images = []
 
91
        _images = images or []
 
92
        map(lambda image: self.add_image(image, None), _images)
 
93
 
 
94
    def set_auth_token(self, auth_tok):
 
95
        pass
 
96
 
 
97
    def get_image_meta(self, image_id):
 
98
        for image in self.images:
 
99
            if image['id'] == str(image_id):
 
100
                return image
 
101
        raise exception.ImageNotFound(image_id=image_id)
 
102
 
 
103
    #TODO(bcwaldon): implement filters
 
104
    def get_images_detailed(self, filters=None, marker=None, limit=3):
 
105
        if marker is None:
 
106
            index = 0
 
107
        else:
 
108
            for index, image in enumerate(self.images):
 
109
                if image['id'] == str(marker):
 
110
                    index += 1
 
111
                    break
 
112
 
 
113
        return self.images[index:index + limit]
 
114
 
 
115
    def get_image(self, image_id):
 
116
        return self.get_image_meta(image_id), []
 
117
 
 
118
    def add_image(self, metadata, data):
 
119
        metadata['created_at'] = NOW_GLANCE_FORMAT
 
120
        metadata['updated_at'] = NOW_GLANCE_FORMAT
 
121
 
 
122
        self.images.append(metadata)
 
123
 
 
124
        try:
 
125
            image_id = str(metadata['id'])
 
126
        except KeyError:
 
127
            # auto-generate an id if one wasn't provided
 
128
            image_id = str(len(self.images))
 
129
 
 
130
        self.images[-1]['id'] = image_id
 
131
 
 
132
        return self.images[-1]
 
133
 
 
134
    def update_image(self, image_id, metadata, data):
 
135
        for i, image in enumerate(self.images):
 
136
            if image['id'] == str(image_id):
 
137
                if 'id' in metadata:
 
138
                    metadata['id'] = str(metadata['id'])
 
139
                self.images[i].update(metadata)
 
140
                return self.images[i]
 
141
        raise exception.ImageNotFound(image_id=image_id)
 
142
 
 
143
    def delete_image(self, image_id):
 
144
        for i, image in enumerate(self.images):
 
145
            if image['id'] == image_id:
 
146
                del self.images[i]
 
147
                return
 
148
        raise exception.ImageNotFound(image_id=image_id)