WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH] CA-35467: Periodically probe license server after gett

To: xen-api <xen-api@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-API] [PATCH] CA-35467: Periodically probe license server after getting grace license
From: Rob Hoes <rob.hoes@xxxxxxxxxx>
Date: Tue, 8 Dec 2009 14:24:45 +0000
Delivery-date: Tue, 08 Dec 2009 06:25:07 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
CA-35467: Periodically probe license server after getting grace license

After obtaining a grace license, call Host.apply_edition every hour until a 
real license comes out.

Signed-off-by: Rob Hoes <rob.hoes@xxxxxxxxxx>

diff -r 73eaa67bfd3c ocaml/license/grace_retry.ml
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/ocaml/license/grace_retry.ml      Tue Dec 08 12:29:04 2009 +0000
@@ -0,0 +1,32 @@
+(*
+ * Copyright (C) 2006-2009 Citrix Systems Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; version 2.1 only. with the special
+ * exception on linking described in file LICENSE.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *)
+(** Helper to keep trying to get a "real" license after a "grace" license was 
checked out.
+ *  @group Licensing *)
+
+(** Schedule a timer to call [Host.apply_edition] again after an hour. Call 
this
+ *  after getting a "grace" license in order to check whether the license 
server
+ *  happened to come back. If so, a "real" license will be checked out.
+ *  Note: the LPE already does a similar thing, but does not notify the 
product (xapi)
+ *  if it succeeds to check out a "real" license! *)
+let retry_periodically host edition =
+       let period = 3600. in
+       let schedule = Xapi_periodic_scheduler.OneShot in
+       let retry_fn () = Server_helpers.exec_with_new_task "grace_retry"
+               (fun __context ->
+                       Helpers.call_api_functions ~__context
+                       (fun rpc session_id -> Client.Client.Host.apply_edition 
rpc session_id host edition)
+               )
+       in
+       Xapi_periodic_scheduler.add_to_queue "retry after obtaining grace 
license" schedule period retry_fn
+       
diff -r 73eaa67bfd3c ocaml/license/license.ml
--- a/ocaml/license/license.ml  Tue Dec 08 12:14:15 2009 +0000
+++ b/ocaml/license/license.ml  Tue Dec 08 12:29:04 2009 +0000
@@ -311,7 +311,7 @@
                let grace_expiry_str = Unixext.read_whole_file_to_string 
Xapi_globs.upgrade_grace_file in
                float_of_string grace_expiry_str
        with _ -> 0.
-
+       
 (* xapi calls this function upon startup *)
 let initialise ~__context ~host =
        let existing_license_params = Db.Host.get_license_params ~__context 
~self:host in
@@ -357,9 +357,10 @@
                                info "Successfully checked out %s license." 
existing_edition;
                                (* delete upgrade-grace file, if it exists *)
                                Unixext.unlink_safe 
Xapi_globs.upgrade_grace_file;
-                               if !V6client.grace then
+                               if !V6client.grace then begin
+                                       Grace_retry.retry_periodically host 
existing_edition;
                                        {existing_license with grace = "regular 
grace"; expiry = !V6client.expires}
-                               else
+                               end else
                                        {existing_license with grace = "no"; 
expiry = !V6client.expires}
                        end
                | "" -> 
diff -r 73eaa67bfd3c ocaml/xapi/OMakefile
--- a/ocaml/xapi/OMakefile      Tue Dec 08 12:14:15 2009 +0000
+++ b/ocaml/xapi/OMakefile      Tue Dec 08 12:29:04 2009 +0000
@@ -229,7 +229,8 @@
        certificates \
        ../license/v6client \
        bios_strings \
-       xapi_config
+       xapi_config \
+       ../license/grace_retry
 
 OCamlProgram(xapi, $(XAPI_MODULES))
 OCamlDocProgram(xapi, $(XAPI_MODULES))
diff -r 73eaa67bfd3c ocaml/xapi/xapi_host.ml
--- a/ocaml/xapi/xapi_host.ml   Tue Dec 08 12:14:15 2009 +0000
+++ b/ocaml/xapi/xapi_host.ml   Tue Dec 08 12:29:04 2009 +0000
@@ -1241,9 +1241,10 @@
                        let sku, name = License.sku_and_name_of_edition edition 
in
                        let basic = {default with License.sku = sku; 
License.sku_marketing_name = name;
                                License.expiry = !V6client.expires} in
-                       if !V6client.grace then
+                       if !V6client.grace then begin
+                               Grace_retry.retry_periodically host edition;
                                {basic with License.grace = "regular grace"}
-                       else
+                       end else
                                basic
                end
        | _ ->

Attachment: v6-retry-after-grace
Description: Text document

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-API] [PATCH] CA-35467: Periodically probe license server after getting grace license, Rob Hoes <=