Revision 8c3c855f
b/snf-cyclades-app/synnefo/db/models.py | ||
---|---|---|
408 | 408 |
|
409 | 409 |
|
410 | 410 |
class VirtualMachineMetadata(models.Model): |
411 |
meta_key = models.CharField(max_length=50) |
|
412 |
meta_value = models.CharField(max_length=500) |
|
411 |
KEY_LENGTH = 50 |
|
412 |
VALUE_LENGTH = 500 |
|
413 |
meta_key = models.CharField(max_length=KEY_LENGTH) |
|
414 |
meta_value = models.CharField(max_length=VALUE_LENGTH) |
|
413 | 415 |
vm = models.ForeignKey(VirtualMachine, related_name='metadata', |
414 | 416 |
on_delete=models.CASCADE) |
415 | 417 |
|
... | ... | |
1003 | 1005 |
" volume") |
1004 | 1006 |
) |
1005 | 1007 |
|
1008 |
NAME_LENGTH = 255 |
|
1009 |
DESCRIPTION_LENGTH = 255 |
|
1006 | 1010 |
SOURCE_IMAGE_PREFIX = "image:" |
1007 | 1011 |
SOURCE_SNAPSHOT_PREFIX = "snapshot:" |
1008 | 1012 |
SOURCE_VOLUME_PREFIX = "volume:" |
1009 | 1013 |
|
1010 |
name = models.CharField("Name", max_length=255, null=True) |
|
1011 |
description = models.CharField("Description", max_length=256, null=True) |
|
1014 |
name = models.CharField("Name", max_length=NAME_LENGTH, null=True) |
|
1015 |
description = models.CharField("Description", |
|
1016 |
max_length=DESCRIPTION_LENGTH, null=True) |
|
1012 | 1017 |
userid = models.CharField("Owner's UUID", max_length=100, null=False, |
1013 | 1018 |
db_index=True) |
1014 | 1019 |
size = models.IntegerField("Volume size in GB", null=False) |
... | ... | |
1098 | 1103 |
|
1099 | 1104 |
|
1100 | 1105 |
class Metadata(models.Model): |
1101 |
key = models.CharField("Metadata Key", max_length=64) |
|
1102 |
value = models.CharField("Metadata Value", max_length=255) |
|
1106 |
KEY_LENGTH = 64 |
|
1107 |
VALUE_LENGTH = 255 |
|
1108 |
key = models.CharField("Metadata Key", max_length=KEY_LENGTH) |
|
1109 |
value = models.CharField("Metadata Value", max_length=VALUE_LENGTH) |
|
1103 | 1110 |
|
1104 | 1111 |
class Meta: |
1105 | 1112 |
abstract = True |
b/snf-cyclades-app/synnefo/logic/servers.py | ||
---|---|---|
125 | 125 |
server_volumes.append(v) |
126 | 126 |
|
127 | 127 |
for key, val in metadata.items(): |
128 |
utils.check_name_length(key, VirtualMachineMetadata.KEY_LENGTH, |
|
129 |
"Metadata key is too long") |
|
130 |
utils.check_name_length(val, VirtualMachineMetadata.VALUE_LENGTH, |
|
131 |
"Metadata value is too long") |
|
128 | 132 |
VirtualMachineMetadata.objects.create( |
129 | 133 |
meta_key=key, |
130 | 134 |
meta_value=val, |
b/snf-cyclades-app/synnefo/volume/volumes.py | ||
---|---|---|
3 | 3 |
from django.db import transaction |
4 | 4 |
from django.conf import settings |
5 | 5 |
from snf_django.lib.api import faults |
6 |
from synnefo.db.models import Volume |
|
6 |
from synnefo.db.models import Volume, VolumeMetadata
|
|
7 | 7 |
from synnefo.volume import util |
8 |
from synnefo.logic import server_attachments |
|
8 |
from synnefo.logic import server_attachments, utils
|
|
9 | 9 |
|
10 | 10 |
log = logging.getLogger(__name__) |
11 | 11 |
|
... | ... | |
45 | 45 |
|
46 | 46 |
if metadata is not None: |
47 | 47 |
for meta_key, meta_val in metadata.items(): |
48 |
utils.check_name_length(meta_key, VolumeMetadata.KEY_LENGTH, |
|
49 |
"Metadata key is too long") |
|
50 |
utils.check_name_length(meta_val, VolumeMetadata.VALUE_LENGTH, |
|
51 |
"Metadata key is too long") |
|
48 | 52 |
volume.metadata.create(key=meta_key, value=meta_val) |
49 | 53 |
|
50 | 54 |
server_attachments.attach_volume(server, volume) |
... | ... | |
56 | 60 |
name=None, description=None, index=None, |
57 | 61 |
delete_on_termination=True): |
58 | 62 |
|
63 |
utils.check_name_length(name, Volume.NAME_LENGTH, |
|
64 |
"Volume name is too long") |
|
65 |
utils.check_name_length(description, Volume.DESCRIPTION_LENGTH, |
|
66 |
"Volume name is too long") |
|
59 | 67 |
# Only ext_ disk template supports cloning from another source. Otherwise |
60 | 68 |
# is must be the root volume so that 'snf-image' fill the volume |
61 | 69 |
disk_template = server.flavor.disk_template |
Also available in: Unified diff