Skip to content

Commit 7873d6d

Browse files
committed
Merge pull request #209 from johnelse/cp-13861
CP-13861: Write licensing information to xenstore
2 parents fac80ed + 6f9a7fa commit 7873d6d

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

lib/xenops_server.ml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1786,6 +1786,16 @@ module HOST = struct
17861786
let module B = (val get_backend () : S) in
17871787
B.HOST.mask_features features mask
17881788
) ()
1789+
1790+
let update_guest_agent_features _ dbg features =
1791+
Debug.with_thread_associated dbg
1792+
(fun () ->
1793+
debug "HOST.update_guest_agent_features %s"
1794+
(Rpc.Enum (List.map Host.rpc_of_guest_agent_feature features)
1795+
|> Jsonrpc.to_string);
1796+
let module B = (val get_backend () : S) in
1797+
B.HOST.update_guest_agent_features features
1798+
) ()
17891799
end
17901800

17911801
module VM = struct

lib/xenops_server_plugin.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ module type S = sig
6262
val get_total_memory_mib: unit -> int64
6363
val send_debug_keys: string -> unit
6464
val mask_features: string -> string -> string
65+
val update_guest_agent_features : Host.guest_agent_feature list -> unit
6566
end
6667
module VM : sig
6768
val add: Vm.t -> unit

lib/xenops_server_skeleton.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ module HOST = struct
4747
let get_total_memory_mib () = 0L
4848
let send_debug_keys _ = ()
4949
let mask_features features mask = features
50+
let update_guest_agent_features _ = ()
5051
end
5152
module VM = struct
5253
let add _ = ()

xc/xenops_server_xen.ml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,39 @@ module HOST = struct
507507
(fun xc xs ->
508508
Xenctrl.send_debug_keys xc keys
509509
)
510+
511+
let update_guest_agent_features features =
512+
let root = "/guest_agent_features" in
513+
let perms =
514+
Xs_protocol.ACL.({
515+
owner = 0;
516+
other = READ;
517+
acl = [];
518+
}) in
519+
with_xs
520+
(fun xs ->
521+
Xs.transaction xs (fun t ->
522+
t.Xst.rm root;
523+
let write_with_perms key value =
524+
t.Xst.write key value;
525+
t.Xst.setperms key perms
526+
in
527+
write_with_perms root "";
528+
List.iter (fun feature ->
529+
let feature_root = Filename.concat root feature.Host.name in
530+
let parameters_root = Filename.concat feature_root "parameters" in
531+
write_with_perms feature_root "";
532+
write_with_perms parameters_root "";
533+
write_with_perms
534+
(Filename.concat feature_root "licensed")
535+
(if feature.Host.licensed then "1" else "0");
536+
List.iter
537+
(fun (key, value) ->
538+
write_with_perms
539+
(Filename.concat parameters_root key)
540+
value)
541+
feature.Host.parameters)
542+
features))
510543
end
511544

512545
module VM = struct

0 commit comments

Comments
 (0)