forked from uncloud/uncloud
Relate VM to disks and snapshots
This commit is contained in:
parent
4b4cbbf009
commit
a32f7522b5
3 changed files with 30 additions and 16 deletions
|
@ -152,7 +152,9 @@ class VMDiskProduct(models.Model):
|
|||
on_delete=models.CASCADE,
|
||||
editable=False)
|
||||
|
||||
vm = models.ForeignKey(VMProduct, on_delete=models.CASCADE)
|
||||
vm = models.ForeignKey(VMProduct,
|
||||
related_name='disks',
|
||||
on_delete=models.CASCADE)
|
||||
image = models.ForeignKey(VMDiskImageProduct, on_delete=models.CASCADE)
|
||||
|
||||
size_in_gb = models.FloatField(blank=True)
|
||||
|
|
|
@ -31,20 +31,6 @@ class VMDiskImageProductSerializer(serializers.ModelSerializer):
|
|||
model = VMDiskImageProduct
|
||||
fields = '__all__'
|
||||
|
||||
class VMProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = VMProduct
|
||||
fields = ['uuid', 'order', 'owner', 'status', 'name',
|
||||
'cores', 'ram_in_gb', 'recurring_period',
|
||||
'snapshots' ]
|
||||
read_only_fields = ['uuid', 'order', 'owner', 'status']
|
||||
|
||||
# Custom field used at creation (= ordering) only.
|
||||
recurring_period = serializers.ChoiceField(
|
||||
choices=VMProduct.allowed_recurring_periods())
|
||||
|
||||
snapshots = serializers.PrimaryKeyRelatedField(many=True,
|
||||
read_only=True)
|
||||
|
||||
|
||||
class DCLVMProductSerializer(serializers.HyperlinkedModelSerializer):
|
||||
|
@ -92,3 +78,24 @@ class VMSnapshotProductSerializer(serializers.ModelSerializer):
|
|||
pricing['per_gb_ssd'] = 0.012
|
||||
pricing['per_gb_hdd'] = 0.0006
|
||||
pricing['recurring_period'] = 'per_day'
|
||||
|
||||
class VMProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = VMProduct
|
||||
fields = ['uuid', 'order', 'owner', 'status', 'name',
|
||||
'cores', 'ram_in_gb', 'recurring_period',
|
||||
'snapshots', 'disks' ]
|
||||
read_only_fields = ['uuid', 'order', 'owner', 'status']
|
||||
|
||||
# Custom field used at creation (= ordering) only.
|
||||
recurring_period = serializers.ChoiceField(
|
||||
choices=VMProduct.allowed_recurring_periods())
|
||||
|
||||
# snapshots = serializers.PrimaryKeyRelatedField(many=True,
|
||||
# read_only=True)
|
||||
|
||||
snapshots = VMSnapshotProductSerializer(many=True,
|
||||
read_only=True)
|
||||
|
||||
disks = VMDiskProductSerializer(many=True,
|
||||
read_only=True)
|
||||
|
|
|
@ -65,7 +65,12 @@ class VMDiskProductViewSet(viewsets.ModelViewSet):
|
|||
serializer_class = VMDiskProductSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return VMDiskProduct.objects.filter(owner=self.request.user)
|
||||
if self.request.user.is_superuser:
|
||||
obj = VMDiskProduct.objects.all()
|
||||
else:
|
||||
obj = VMDiskProduct.objects.filter(owner=self.request.user)
|
||||
|
||||
return obj
|
||||
|
||||
def create(self, request):
|
||||
serializer = VMDiskProductSerializer(data=request.data, context={'request': request})
|
||||
|
|
Loading…
Reference in a new issue