[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-API] [PATCH] dont advertise cancel from revert-from-snapshot since no good will come of it



# HG changeset patch
# User David Scott <dave.scott@xxxxxxxxxxxxx>
# Date 1268741876 0
# Node ID 282bc9b84d78a67aea171d234873be6c63ddc307
# Parent  fa283bc2a49fdf01dfd699ba8db4f12d65c979bc
CA-36448: don't advertise the ability to cancel revert-from-snapshot because 
there's nothing to revert too: the old disks need to be destroyed early to make 
enough space for the revert.

Signed-off-by: David Scott <dave.scott@xxxxxxxxxxxxx>

diff -r fa283bc2a49f -r 282bc9b84d78 ocaml/idl/ocaml_backend/taskHelper.ml
--- a/ocaml/idl/ocaml_backend/taskHelper.ml     Tue Mar 16 11:34:08 2010 +0000
+++ b/ocaml/idl/ocaml_backend/taskHelper.ml     Tue Mar 16 12:17:56 2010 +0000
@@ -175,6 +175,10 @@
   operate_on_db_task ~__context
     (fun self -> Db_actions.DB_Action.Task.set_allowed_operations ~__context 
~self ~value:[`cancel])
 
+let set_not_cancellable ~__context = 
+  operate_on_db_task ~__context
+    (fun self -> Db_actions.DB_Action.Task.set_allowed_operations ~__context 
~self ~value:[])
+
 let is_cancelling ~__context =
   Context.task_in_database __context && 
   let l = Db_actions.DB_Action.Task.get_current_operations ~__context 
~self:(Context.get_task_id __context) in
diff -r fa283bc2a49f -r 282bc9b84d78 ocaml/idl/ocaml_backend/taskHelper.mli
--- a/ocaml/idl/ocaml_backend/taskHelper.mli    Tue Mar 16 11:34:08 2010 +0000
+++ b/ocaml/idl/ocaml_backend/taskHelper.mli    Tue Mar 16 12:17:56 2010 +0000
@@ -26,10 +26,11 @@
 val set_result : __context:Context.t -> Xml.xml list -> unit
 val complete : __context:Context.t -> Xml.xml list -> unit
 val set_cancellable : __context:Context.t -> unit
+val set_not_cancellable : __context:Context.t -> unit
 val is_cancelling : __context:Context.t -> bool
 val exn_if_cancelling : __context:Context.t -> unit
 val cancel : __context:Context.t -> unit
 val failed : __context:Context.t -> string * string list -> unit
 val init : unit -> unit
 val rbac_assert_permission_fn : (__context:Context.t -> 
permission:Db_actions.role_t -> unit) option ref
-val assert_can_destroy :  ?ok_if_no_session_in_context:bool -> 
__context:Context.t ->  [ `task ] Ref.t -> unit
\ No newline at end of file
+val assert_can_destroy :  ?ok_if_no_session_in_context:bool -> 
__context:Context.t ->  [ `task ] Ref.t -> unit
diff -r fa283bc2a49f -r 282bc9b84d78 ocaml/xapi/xapi_vm_clone.ml
--- a/ocaml/xapi/xapi_vm_clone.ml       Tue Mar 16 11:34:08 2010 +0000
+++ b/ocaml/xapi/xapi_vm_clone.ml       Tue Mar 16 12:17:56 2010 +0000
@@ -126,6 +126,8 @@
                (fun vbd -> try (vbd,Db.VDI.get_virtual_size ~__context 
                        ~self:(Db.VBD.get_VDI ~__context ~self:vbd)) with _ -> 
(vbd,0L)) vbds in
        let total = Int64.to_float (List.fold_left (fun tot (_,size) -> 
Int64.add tot size) 0L sizes) in
+
+       Thread.delay 30.;
 
        let fold_function (acc,done_so_far) (vbd,size) =
                try
diff -r fa283bc2a49f -r 282bc9b84d78 ocaml/xapi/xapi_vm_snapshot.ml
--- a/ocaml/xapi/xapi_vm_snapshot.ml    Tue Mar 16 11:34:08 2010 +0000
+++ b/ocaml/xapi/xapi_vm_snapshot.ml    Tue Mar 16 12:17:56 2010 +0000
@@ -382,6 +382,9 @@
 let revert ~__context ~snapshot ~vm =
        debug "Reverting %s to %s" (Ref.string_of vm) (Ref.string_of snapshot);
 
+    (* This is destructive and relatively fast. There's no point advertising 
cancel since it
+          will result in a broken VM. *)
+       TaskHelper.set_not_cancellable ~__context;
        try
                let power_state = Db.VM.get_power_state ~__context 
~self:snapshot in
 
4 files changed, 10 insertions(+), 1 deletion(-)
ocaml/idl/ocaml_backend/taskHelper.ml  |    4 ++++
ocaml/idl/ocaml_backend/taskHelper.mli |    2 +-
ocaml/xapi/xapi_vm_clone.ml            |    2 ++
ocaml/xapi/xapi_vm_snapshot.ml         |    3 +++


Attachment: xen-api.hg.patch
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.