File tree Expand file tree Collapse file tree 8 files changed +36
-5
lines changed Expand file tree Collapse file tree 8 files changed +36
-5
lines changed Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ open Datamodel_roles
10
10
to leave a gap for potential hotfixes needing to increment the schema version.*)
11
11
let schema_major_vsn = 5
12
12
13
- let schema_minor_vsn = 785
13
+ let schema_minor_vsn = 786
14
14
15
15
(* Historical schema versions just in case this is useful later *)
16
16
let rio_schema_major_vsn = 5
Original file line number Diff line number Diff line change @@ -119,6 +119,8 @@ let prototyped_of_field = function
119
119
Some " 23.18.0"
120
120
| "VM" , "actions__after_softreboot" ->
121
121
Some " 23.1.0"
122
+ | "pool" , "license_server" ->
123
+ Some " 25.5.0-next"
122
124
| "pool" , "recommendations" ->
123
125
Some " 24.19.1"
124
126
| "pool" , "update_sync_enabled" ->
Original file line number Diff line number Diff line change @@ -2153,6 +2153,10 @@ let t =
2153
2153
~default_value: (Some (VMap [] )) " recommendations"
2154
2154
" The recommended pool properties for clients to respect for \
2155
2155
optimal performance. e.g. max-vm-group=5"
2156
+ ; field ~writer_roles: _R_POOL_OP ~qualifier: RW ~lifecycle: []
2157
+ ~ty: (Map (String , String ))
2158
+ ~default_value: (Some (VMap [] )) " license_server"
2159
+ " Licensing data shared within the whole pool"
2156
2160
]
2157
2161
)
2158
2162
()
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ let hash x = Digest.string x |> Digest.to_hex
3
3
(* BEWARE: if this changes, check that schema has been bumped accordingly in
4
4
ocaml/idl/datamodel_common.ml, usually schema_minor_vsn *)
5
5
6
- let last_known_schema_hash = " 458f20f5270a5615c7ee92be8a383172 "
6
+ let last_known_schema_hash = " 6f6230f87a92572b68ebd742196ffd0e "
7
7
8
8
let current_schema_hash : string =
9
9
let open Datamodel_types in
Original file line number Diff line number Diff line change @@ -300,7 +300,7 @@ let make_pool ~__context ~master ?(name_label = "") ?(name_description = "")
300
300
?(telemetry_next_collection = API.Date. epoch)
301
301
?(last_update_sync = API.Date. epoch) ?(update_sync_frequency = `daily )
302
302
?(update_sync_day = 0L ) ?(update_sync_enabled = false )
303
- ?(recommendations = [] ) () =
303
+ ?(recommendations = [] ) ?( license_server = [] ) () =
304
304
let pool_ref = Ref. make () in
305
305
Db.Pool. create ~__context ~ref: pool_ref ~uuid: (make_uuid () ) ~name_label
306
306
~name_description ~master ~default_ SR ~suspend_image_ SR ~crash_dump_ SR
@@ -320,7 +320,7 @@ let make_pool ~__context ~master ?(name_label = "") ?(name_description = "")
320
320
~local_auth_max_threads: 8L ~ext_auth_max_threads: 8L
321
321
~ext_auth_cache_enabled: false ~ext_auth_cache_size: 50L
322
322
~ext_auth_cache_expiry: 300L ~update_sync_frequency ~update_sync_day
323
- ~update_sync_enabled ~recommendations ;
323
+ ~update_sync_enabled ~recommendations ~license_server ;
324
324
pool_ref
325
325
326
326
let default_sm_features =
Original file line number Diff line number Diff line change @@ -1494,6 +1494,18 @@ let pool_record rpc session_id pool =
1494
1494
~value: (Int64. of_string v)
1495
1495
)
1496
1496
()
1497
+ ; make_field ~name: " license-server"
1498
+ ~get: (fun () -> get_from_map (x () ).API. pool_license_server)
1499
+ ~add_to_map: (fun key value ->
1500
+ Client.Pool. add_to_license_server ~rpc ~session_id ~self: pool ~key
1501
+ ~value
1502
+ )
1503
+ ~remove_from_map: (fun key ->
1504
+ Client.Pool. remove_from_license_server ~rpc ~session_id ~self: pool
1505
+ ~key
1506
+ )
1507
+ ~get_map: (fun () -> (x () ).API. pool_license_server)
1508
+ ()
1497
1509
]
1498
1510
}
1499
1511
Original file line number Diff line number Diff line change @@ -56,6 +56,7 @@ let create_pool_record ~__context =
56
56
~update_sync_enabled: false ~local_auth_max_threads: 8L
57
57
~ext_auth_max_threads: 1L ~ext_auth_cache_enabled: false
58
58
~ext_auth_cache_size: 50L ~ext_auth_cache_expiry: 300L ~recommendations: []
59
+ ~license_server: []
59
60
60
61
let set_master_ip ~__context =
61
62
let ip =
Original file line number Diff line number Diff line change @@ -2022,9 +2022,21 @@ let set_license_params ~__context ~self ~value =
2022
2022
Db.Host. set_license_params ~__context ~self ~value ;
2023
2023
Pool_features_helpers. update_pool_features ~__context
2024
2024
2025
+ let collect_license_server_data ~__context ~host =
2026
+ let pool = Helpers. get_pool ~__context in
2027
+ let host_license_server = Db.Host. get_license_server ~__context ~self: host in
2028
+ let pool_license_server = Db.Pool. get_license_server ~__context ~self: pool in
2029
+ (* If there are same keys both in host and pool, use host level data. *)
2030
+ let list_assoc_union l1 l2 =
2031
+ List. fold_left
2032
+ (fun acc (k , v ) -> if List. mem_assoc k l1 then acc else (k, v) :: acc)
2033
+ l1 l2
2034
+ in
2035
+ list_assoc_union host_license_server pool_license_server
2036
+
2025
2037
let apply_edition_internal ~__context ~host ~edition ~additional =
2026
2038
(* Get localhost's current license state. *)
2027
- let license_server = Db.Host. get_license_server ~__context ~self: host in
2039
+ let license_server = collect_license_server_data ~__context ~host in
2028
2040
let current_edition = Db.Host. get_edition ~__context ~self: host in
2029
2041
let current_license_params =
2030
2042
Db.Host. get_license_params ~__context ~self: host
You can’t perform that action at this time.
0 commit comments