(** An example implementation of a licensing service which always returns "real"
licenses that never expire. *)
-(** Obtain a license *)
+(** Attempt to switch to a given edition. Returns a list of enabled features. *)
val apply_edition : string -> (string * string) list ->
string * Features.feature list * (string * string) list
-(** Release the license *)
+(** Obtain a list of available editions *)
val get_editions : unit -> (string * string * string * int) list
+(** Version of the daemon *)
val get_version : unit -> string
(** Close and re-open the log file *)
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*)
-(** Client module to handle v6 licenses with the v6 licensing daemon.
- * V6 licenses enable the features of Citrix Essentials for XenServer.
+(**
+ * Client module to interact with the licensing daemon [v6d].
+ * [v6d] controls which features are enabled for a given "edition".
* @group Licensing
*)
+(** Call the [apply_edition] function on the v6d *)
val apply_edition : __context:Context.t -> string -> (string * string) list ->
string * Features.feature list * (string * string) list
+
+(** Call the [get_editions] function on the v6d *)
val get_editions : unit -> (string * string * string * int) list
+
+(** Call the [get_version] function on the v6d *)
val get_version : unit -> string
* GNU Lesser General Public License for more details.
*)
-(** XML/RPC handler for the licensing daemon *)
+(** RPC definition of the licensing daemon *)
-(** The XML/RPC interface of the licensing daemon *)
+(** The RPC interface of the licensing daemon *)
module type V6api =
sig
(* edition -> additional_params -> enabled_features, additional_params *)
(* () -> version *)
val reopen_logs : unit -> bool
end
-(** XML/RPC handler *)
+(** RPC handler module *)
module V6process : functor (V : V6api) ->
sig
- (** Process an XML/RPC call *)
+ (** Process an RPC call *)
val process : Rpc.call -> Rpc.response
end
(** {2 Marshaling functions} *)
+(** Definition of [apply_edition] RPC *)
type apply_edition_in = {
- edition_in: string;
- additional_in: (string * string) list;
+ edition_in: string; (** The requested edition *)
+ additional_in: (string * string) list; (** Additional parameters *)
}
+(** Convert RPC into {!apply_edition_in} structure *)
val apply_edition_in_of_rpc : Rpc.t -> apply_edition_in
+
+(** Convert {!apply_edition_in} structure into RPC *)
val rpc_of_apply_edition_in : apply_edition_in -> Rpc.t
+(** Return type of the [apply_edition] RPC *)
type apply_edition_out = {
- edition_out: string;
- features_out: Features.feature list;
- additional_out: (string * string) list;
+ edition_out: string; (** The edition that was applied *)
+ features_out: Features.feature list; (** The features that are now enabled *)
+ additional_out: (string * string) list; (** Additional parameters *)
}
+(** Convert RPC into {!apply_edition_out} structure *)
val apply_edition_out_of_rpc : Rpc.t -> apply_edition_out
+
+(** Convert {!apply_edition_out} structure into RPC *)
val rpc_of_apply_edition_out : apply_edition_out -> Rpc.t
+(** Format of the editions list returns by the [get_editions] RPC:
+ - Name of the edition;
+ - Long name of the edition;
+ - Abbreviation of the edition name;
+ - Edition order number.
+ *)
type names = string * string * string * int
+
+(** Return type of the [get_editions] RPC *)
type get_editions_out = {
- editions: names list;
+ editions: names list; (** List of all available editions *)
}
+(** Convert RPC into {!get_editions_out} structure *)
val get_editions_out_of_rpc : Rpc.t -> get_editions_out
+
+(** Convert {!get_editions_out} structure into RPC *)
val rpc_of_get_editions_out : get_editions_out -> Rpc.t
| HA (** Enable High Availability (HA) *)
| Marathon (** Currently not used *)
| Email (** Enable email alerting *)
- | Performance (** Currently not used? *)
+ | Performance (** Used by XenCenter to restrict the performance graphs *)
| WLB (** Enable Workload Balancing (WLB) *)
| RBAC (** Enable Role-Based Access Control (RBAC) *)
| DMC (** Enable Dynamic Memory Control (DMC) *)
| No_nag_dialog (** Used by XenCenter *)
| VMPR (** Enable use of VM Protection and Recovery *)
+(** Convert RPC into {!feature}s *)
val feature_of_rpc : Rpc.t -> feature
+
+(** Convert {!feature}s into RPC *)
val rpc_of_feature : feature -> Rpc.t
(** The list of all known features. *)