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

[Xen-API] [PATCH 2 of 4] Make License_check independent of License module


  • To: xen-api@xxxxxxxxxxxxxxxxxxx
  • From: Rob Hoes <rob.hoes@xxxxxxxxxx>
  • Date: Wed, 14 Jul 2010 15:18:21 +0100
  • Delivery-date: Wed, 14 Jul 2010 07:27:25 -0700
  • List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>

# HG changeset patch
# User Rob Hoes <rob.hoes@xxxxxxxxxx>
# Date 1279116492 -3600
# Node ID 6e38ba9d62d64a0067865d5fc754fff3f86e90fd
# Parent  657b16d89d927a395a77db15f7bfaeb6157e2436
Make License_check independent of License module

Rather, find the expiry date of a license in the host.license_params:expiry 
database field. If this key is absent, the license never expires.

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

diff -r 657b16d89d92 -r 6e38ba9d62d6 ocaml/license/license.ml
--- a/ocaml/license/license.ml
+++ b/ocaml/license/license.ml
@@ -155,7 +155,5 @@
 (* Calls to obtain info about license *)
 
 let check_expiry l =
-  Unix.time () < l.expiry
+       Unix.time () < l.expiry
 
-let license_valid () = check_expiry !license
-
diff -r 657b16d89d92 -r 6e38ba9d62d6 ocaml/license/license.mli
--- a/ocaml/license/license.mli
+++ b/ocaml/license/license.mli
@@ -54,10 +54,6 @@
 (** Check whether a given license is valid or expired. *)
 val check_expiry : license -> bool
 
-(** Check whether the current license is valid or expired.
- *  Called from xapi/license_check.ml. *)
-val license_valid : unit -> bool
-
 (** Thrown if we fail to find a license param. *)
 exception Missing_license_param of string
 
diff -r 657b16d89d92 -r 6e38ba9d62d6 ocaml/xapi/license_check.ml
--- a/ocaml/xapi/license_check.ml
+++ b/ocaml/xapi/license_check.ml
@@ -16,8 +16,19 @@
 open Stringext
 
 let vm ~__context vm =
-  (* Here we check that the license is still valid - this should be the only 
place where this happens *)
-  if not (License.license_valid ()) then raise (Api_errors.Server_error 
(Api_errors.license_expired, []))
+       (* Here we check that the license is still valid - this should be the 
only place where this happens *)
+       let host = Helpers.get_localhost ~__context in
+       let license = Db.Host.get_license_params ~__context ~self:host in
+       let expired =
+               if List.mem_assoc "expiry" license = false then
+                       (* No expiry date means no expiry :) *)
+                       false
+               else begin
+                       let expiry = (Date.to_float (Date.of_string (List.assoc 
"expiry" license))) in
+                       Unix.time () > expiry
+               end
+       in
+       if expired then raise (Api_errors.Server_error 
(Api_errors.license_expired, []))
 
 (* XXX: why use a "with_" style function here? *)
 let with_vm_license_check ~__context v f =
diff -r 657b16d89d92 -r 6e38ba9d62d6 ocaml/xapi/license_check.mli
--- a/ocaml/xapi/license_check.mli
+++ b/ocaml/xapi/license_check.mli
@@ -18,8 +18,8 @@
 
 (** Raises {!Api_errors.license_expired} if the current license has expired.
  *  The consequence would be that the VM is not allowed to start. *)
-val vm : __context:'a -> API.ref_VM -> unit
+val vm : __context:Context.t -> API.ref_VM -> unit
 
 (** Executes function [f] only if the current license has not yet expired.
  *  If it has expired, it raises {!Api_errors.license_expired}. *)
-val with_vm_license_check : __context:'a -> [`VM] Ref.t -> (unit -> 'b) -> 'b
+val with_vm_license_check : __context:Context.t -> [`VM] Ref.t -> (unit -> 'b) 
-> 'b
 ocaml/license/license.ml     |   4 +---
 ocaml/license/license.mli    |   4 ----
 ocaml/xapi/license_check.ml  |  15 +++++++++++++--
 ocaml/xapi/license_check.mli |   4 ++--
 4 files changed, 16 insertions(+), 11 deletions(-)


Attachment: xen-api.hg-2.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®.