From 8c20ce756ca073227ad94c629e143cc3d5ded0bb Mon Sep 17 00:00:00 2001
From: Őry Máté <ory.mate@cloud.bme.hu>
Date: Tue, 19 Aug 2014 12:08:21 +0200
Subject: [PATCH] vm: allow saving lease

fixes #252
---
 circle/dashboard/forms.py | 3 +++
 circle/vm/operations.py   | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/circle/dashboard/forms.py b/circle/dashboard/forms.py
index c9fcf44..7c5e093 100644
--- a/circle/dashboard/forms.py
+++ b/circle/dashboard/forms.py
@@ -703,6 +703,8 @@ class VmRenewForm(forms.Form):
     force = forms.BooleanField(required=False, label=_(
         "Set expiration times even if they are shorter than "
         "the current value."))
+    save = forms.BooleanField(required=False, label=_(
+        "Save selected lease."))
 
     def __init__(self, *args, **kwargs):
         choices = kwargs.pop('choices')
@@ -714,6 +716,7 @@ class VmRenewForm(forms.Form):
             empty_label=None, label=_('Length')))
         if len(choices) < 2:
             self.fields['lease'].widget = HiddenInput()
+            self.fields['save'].widget = HiddenInput()
 
     @property
     def helper(self):
diff --git a/circle/vm/operations.py b/circle/vm/operations.py
index 5f7322e..7a18def 100644
--- a/circle/vm/operations.py
+++ b/circle/vm/operations.py
@@ -754,7 +754,7 @@ class RenewOperation(InstanceOperation):
     required_perms = ()
     concurrency_check = False
 
-    def _operation(self, activity, lease=None, force=False):
+    def _operation(self, activity, lease=None, force=False, save=False):
         suspend, delete = self.instance.get_renew_times(lease)
         if (not force and suspend and self.instance.time_of_suspend and
                 suspend < self.instance.time_of_suspend):
@@ -768,6 +768,8 @@ class RenewOperation(InstanceOperation):
                 "in its delete time get earlier than before."))
         self.instance.time_of_suspend = suspend
         self.instance.time_of_delete = delete
+        if save:
+            self.instance.lease = lease
         self.instance.save()
         activity.result = create_readable(ugettext_noop(
             "Renewed to suspend at %(suspend)s and destroy at %(delete)s."),
--
libgit2 0.26.0