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 2 of 4] Make License_check independent of License modul

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 2 of 4] Make License_check independent of License module
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
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1279117099@xxxxxxxxxxxxxxxxxxxxx>
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>
References: <patchbomb.1279117099@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
# 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