Revision bc855ce7 api/servers.py

b/api/servers.py
151 151
    try:
152 152
        server = req['server']
153 153
        name = server['name']
154
        metadata = server.get('metadata', {})
155
        assert isinstance(metadata, dict)
154 156
        sourceimage = Image.objects.get(id=server['imageRef'])
155 157
        flavor = Flavor.objects.get(id=server['flavorRef'])
156
    except KeyError:
158
    except (KeyError, AssertionError):
157 159
        raise BadRequest('Malformed request.')
158 160
    except Image.DoesNotExist:
159 161
        raise ItemNotFound
160 162
    except Flavor.DoesNotExist:
161 163
        raise ItemNotFound
162 164
    
163
    vm = VirtualMachine.objects.create(
165
    vm = VirtualMachine(
164 166
        name=name,
165 167
        owner=get_user(),
166 168
        sourceimage=sourceimage,
......
189 191
        beparams=dict(auto_balance=True, vcpus=flavor.cpu, memory=flavor.ram))
190 192
    
191 193
    vm.save()
192
        
194
    
195
    for key, val in metadata.items():
196
        VirtualMachineMetadata.objects.create(meta_key=key, meta_value=val, vm=vm)
197
    
193 198
    logging.info('created vm with %s cpus, %s ram and %s storage' % (flavor.cpu, flavor.ram, flavor.disk))
194 199
    
195 200
    server = vm_to_dict(vm, detail=True)

Also available in: Unified diff