Revision d984eedc

b/snf-cyclades-app/synnefo/api/images.py
121 121
        d['progress'] = 100 if status == 'ACTIVE' else 0
122 122
        d['user_id'] = image['owner']
123 123
        d['tenant_id'] = image['owner']
124
        d['public'] = image["is_public"]
124 125
        d['links'] = util.image_to_links(image["id"])
125 126
        if image["properties"]:
126 127
            d['metadata'] = image['properties']
b/snf-cyclades-app/synnefo/api/tests/images.py
101 101
        self.maxDiff = None
102 102
        images = [{'id': 1,
103 103
                   'name': 'image-1',
104
                   'status':'available',
104
                   'status': 'available',
105 105
                   'created_at': '2012-11-26 11:52:54',
106 106
                   'updated_at': '2012-12-26 11:52:54',
107 107
                   'owner': 'user1',
108 108
                   'deleted_at': '',
109 109
                   'is_snapshot': False,
110
                   'properties': {'foo':'bar'}},
110
                   'is_public': True,
111
                   'properties': {'foo': 'bar'}},
111 112
                  {'id': 2,
112 113
                   'name': 'image-2',
113 114
                   'status': 'deleted',
......
116 117
                   'owner': 'user1',
117 118
                   'deleted_at': '2012-12-27 11:52:54',
118 119
                   'is_snapshot': False,
120
                   'is_public': True,
119 121
                   'properties': ''},
120 122
                  {'id': 3,
121 123
                   'name': 'image-3',
......
125 127
                   'updated_at': '2012-12-26 11:52:54',
126 128
                   'owner': 'user1',
127 129
                   'is_snapshot': False,
130
                   'is_public': False,
128 131
                   'properties': ''}]
129 132
        result_images = [
130 133
                  {'id': 1,
131 134
                   'name': 'image-1',
132
                   'status':'ACTIVE',
135
                   'status': 'ACTIVE',
133 136
                   'progress': 100,
134 137
                   'created': '2012-11-26T11:52:54+00:00',
135 138
                   'updated': '2012-12-26T11:52:54+00:00',
136 139
                   'user_id': 'user1',
137 140
                   'tenant_id': 'user1',
138 141
                   'is_snapshot': False,
139
                   'metadata': {'foo':'bar'}},
142
                   'public': True,
143
                   'metadata': {'foo': 'bar'}},
140 144
                  {'id': 2,
141 145
                   'name': 'image-2',
142 146
                   'status': 'DELETED',
......
146 150
                   'created': '2012-11-26T11:52:54+00:00',
147 151
                   'updated': '2012-12-26T11:52:54+00:00',
148 152
                   'is_snapshot': False,
153
                   'public': True,
149 154
                   'metadata': {}},
150 155
                  {'id': 3,
151 156
                   'name': 'image-3',
......
156 161
                   'created': '2012-11-26T11:52:54+00:00',
157 162
                   'updated': '2012-12-26T11:52:54+00:00',
158 163
                   'is_snapshot': False,
164
                   'public': False,
159 165
                   'metadata': {}}]
160 166
        mimage().list_images.return_value = images
161 167
        response = self.myget('images/detail', 'user')
......
175 181
        images = [
176 182
                  {'id': 1,
177 183
                   'name': 'image-1',
178
                   'status':'available',
184
                   'status': 'available',
179 185
                   'progress': 100,
180 186
                   'created_at': old_time.isoformat(),
181 187
                   'deleted_at': '',
182 188
                   'updated_at': old_time.isoformat(),
183 189
                   'owner': 'user1',
184 190
                   'is_snapshot': False,
191
                   'is_public': True,
185 192
                   'properties': ''},
186 193
                  {'id': 2,
187 194
                   'name': 'image-2',
......
192 199
                   'updated_at': new_time.isoformat(),
193 200
                   'deleted_at': new_time.isoformat(),
194 201
                   'is_snapshot': False,
202
                   'is_public': False,
195 203
                   'properties': ''}]
196 204
        mimage().list_images.return_value = images
197 205
        response =\
......
211 219
                 'deleted_at': '',
212 220
                 'owner': 'user1',
213 221
                 'is_snapshot': False,
222
                 'is_public': True,
214 223
                 'properties': {'foo': 'bar'}}
215 224
        result_image = \
216 225
                  {'id': 42,
......
222 231
                   'user_id': 'user1',
223 232
                   'tenant_id': 'user1',
224 233
                   'is_snapshot': False,
234
                   'public': True,
225 235
                   'metadata': {'foo': 'bar'}}
226 236
        mimage.return_value.get_image.return_value = image
227 237
        response = self.myget('images/42', 'user')
......
232 242

  
233 243
    @assert_backend_closed
234 244
    def test_invalid_image(self, mimage):
235
        mimage.return_value.get_image.side_effect = faults.ItemNotFound('Image not found')
245
        mimage.return_value.get_image.side_effect = \
246
            faults.ItemNotFound('Image not found')
236 247
        response = self.myget('images/42', 'user')
237 248
        self.assertItemNotFound(response)
238 249

  
......
248 259
        response = self.myget('nonexistent')
249 260
        self.assertEqual(response.status_code, 400)
250 261
        try:
251
            error = json.loads(response.content)
262
            json.loads(response.content)
252 263
        except ValueError:
253 264
            self.assertTrue(False)
254 265

  
......
287 298
class ImageMetadataAPITest(ComputeAPITest):
288 299
    def setUp(self):
289 300
        self.image = {'id': 42,
290
                 'name': 'image-1',
291
                 'status': 'available',
292
                 'created_at': '2012-11-26 11:52:54',
293
                 'updated_at': '2012-12-26 11:52:54',
294
                 'deleted_at': '',
295
                 'properties': {'foo': 'bar', 'foo2': 'bar2'}}
301
                      'name': 'image-1',
302
                      'status': 'available',
303
                      'created_at': '2012-11-26 11:52:54',
304
                      'updated_at': '2012-12-26 11:52:54',
305
                      'deleted_at': '',
306
                      'properties': {'foo': 'bar', 'foo2': 'bar2'}}
296 307
        self.result_image = \
297
                  {'id': 42,
298
                   'name': 'image-1',
299
                   'status': 'ACTIVE',
300
                   'progress': 100,
301
                   'created': '2012-11-26T11:52:54+00:00',
302
                   'updated': '2012-12-26T11:52:54+00:00',
303
                   'metadata': {'foo': 'bar'}}
308
            {'id': 42,
309
             'name': 'image-1',
310
             'status': 'ACTIVE',
311
             'progress': 100,
312
             'created': '2012-11-26T11:52:54+00:00',
313
             'updated': '2012-12-26T11:52:54+00:00',
314
             'metadata': {'foo': 'bar'}}
304 315
        super(ImageMetadataAPITest, self).setUp()
305 316

  
306 317
    @assert_backend_closed
......
329 340
        backend.return_value.get_image.return_value = self.image
330 341
        response = self.mydelete('images/42/metadata/foo', 'user')
331 342
        self.assertEqual(response.status_code, 204)
332
        backend.return_value.update_metadata.assert_called_once_with('42', {'properties': {'foo2':
333
                                                    'bar2'}})
343
        backend.return_value.update_metadata\
344
               .assert_called_once_with('42', {'properties': {'foo2': 'bar2'}})
334 345

  
335 346
    @assert_backend_closed
336 347
    def test_create_metadata_item(self, backend):
......
364 375
        backend.return_value.get_image.return_value = self.image
365 376
        request = {'met': {'foo3': 'bar3', 'foo4': 'bar4'}}
366 377
        response = self.myput('images/42/metadata/foo3', 'user',
367
                                json.dumps(request), 'json')
378
                              json.dumps(request), 'json')
368 379
        self.assertBadRequest(response)
369 380

  
370 381
    @assert_backend_closed

Also available in: Unified diff