@@ -1094,8 +1094,8 @@ let create ~__context ~uuid ~name_label ~name_description:_ ~hostname ~address
10941094 ~recommended_guidances: [] ~latest_synced_updates_applied: `unknown
10951095 ~pending_guidances_recommended: [] ~pending_guidances_full: [] ~ssh_enabled
10961096 ~ssh_enabled_timeout ~ssh_expiry ~console_idle_timeout ~ssh_auto_mode
1097- ~max_cstate: " " ~secure_boot ~ntp_mode: `ntp_mode_dhcp ~ntp_custom_servers: []
1098- ~ntp_enabled: false ~ timezone:" UTC" ;
1097+ ~max_cstate: " " ~secure_boot ~ntp_mode: `DHCP ~ntp_custom_servers: []
1098+ ~timezone: " UTC" ;
10991099 (* If the host we're creating is us, make sure its set to live *)
11001100 Db.Host_metrics. set_last_updated ~__context ~self: metrics ~value: (Date. now () ) ;
11011101 Db.Host_metrics. set_live ~__context ~self: metrics ~value: host_is_us ;
@@ -3471,90 +3471,90 @@ let sync_max_cstate ~__context ~host =
34713471
34723472let set_ntp_mode ~__context ~self ~value =
34733473 let current_mode = Db.Host. get_ntp_mode ~__context ~self in
3474- let ntp_enabled = Db.Host. get_ntp_enabled ~__context ~self in
34753474 if current_mode <> value then (
34763475 let open Xapi_host_ntp in
3477- let ensure_custom_servers_exist servers =
3476+ let ensure_servers_exist servers msg =
34783477 if servers = [] then
3479- raise
3480- Api_errors. (
3481- Server_error
3482- ( invalid_ntp_config
3483- , [" Can't set ntp_mode_custom when ntp_custom_servers is empty" ]
3484- )
3485- )
3478+ raise Api_errors. (Server_error (invalid_ntp_config, [msg]))
3479+ in
3480+ let enter_mode = function
3481+ | `DHCP ->
3482+ add_dhcp_ntp_servers ()
3483+ | `Custom ->
3484+ let custom_servers =
3485+ Db.Host. get_ntp_custom_servers ~__context ~self
3486+ in
3487+ ensure_servers_exist custom_servers
3488+ " Can't set ntp_mode to Custom when ntp_custom_servers is empty" ;
3489+ set_servers_in_conf custom_servers
3490+ | `Factory ->
3491+ let factory_servers = ! Xapi_globs. factory_ntp_servers in
3492+ ensure_servers_exist factory_servers
3493+ " Can't set ntp_mode to Factory when factory ntp servers is empty" ;
3494+ set_servers_in_conf factory_servers
3495+ | `Disabled ->
3496+ ()
3497+ in
3498+ let exit_mode = function
3499+ | `DHCP ->
3500+ remove_dhcp_ntp_servers ()
3501+ | `Custom | `Factory ->
3502+ clear_servers_in_conf ()
3503+ | `Disabled ->
3504+ ()
34863505 in
3487- let default_servers = ! Xapi_globs. default_ntp_servers in
34883506 ( match (current_mode, value) with
3489- | `ntp_mode_dhcp , `ntp_mode_custom ->
3490- let custom_servers = Db.Host. get_ntp_custom_servers ~__context ~self in
3491- ensure_custom_servers_exist custom_servers ;
3492- remove_dhcp_ntp_servers () ;
3493- set_servers_in_conf custom_servers
3494- | `ntp_mode_default , `ntp_mode_custom ->
3495- let custom_servers = Db.Host. get_ntp_custom_servers ~__context ~self in
3496- ensure_custom_servers_exist custom_servers ;
3497- set_servers_in_conf custom_servers
3498- | _ , `ntp_mode_dhcp ->
3499- clear_servers_in_conf () ; add_dhcp_ntp_servers ()
3500- | `ntp_mode_dhcp , `ntp_mode_default ->
3501- remove_dhcp_ntp_servers () ;
3502- set_servers_in_conf default_servers
3503- | `ntp_mode_custom , `ntp_mode_default ->
3504- set_servers_in_conf default_servers
3505- | _ , _ ->
3506- ()
3507+ | `Disabled , next ->
3508+ enter_mode next ; enable_ntp_service ()
3509+ | _ , `Disabled ->
3510+ exit_mode current_mode ; disable_ntp_service ()
3511+ | current , next ->
3512+ exit_mode current ;
3513+ enter_mode next ;
3514+ Xapi_host_ntp. restart_ntp_service ()
35073515 ) ;
3508- if ntp_enabled then Xapi_host_ntp. restart_ntp_service () ;
35093516 Db.Host. set_ntp_mode ~__context ~self ~value
35103517 )
35113518
35123519let set_ntp_custom_servers ~__context ~self ~value =
35133520 let current_mode = Db.Host. get_ntp_mode ~__context ~self in
35143521 match (current_mode, value) with
3515- | `ntp_mode_custom , [] ->
3522+ | `Custom , [] ->
35163523 raise
35173524 Api_errors. (
35183525 Server_error
35193526 ( invalid_ntp_config
3520- , [" Can't set ntp_custom_servers empty when ntp_mode is custom " ]
3527+ , [" Can't set ntp_custom_servers empty when ntp_mode is Custom " ]
35213528 )
35223529 )
3523- | `ntp_mode_custom , servers ->
3530+ | `Custom , servers ->
35243531 Xapi_host_ntp. set_servers_in_conf servers ;
35253532 Xapi_host_ntp. restart_ntp_service () ;
35263533 Db.Host. set_ntp_custom_servers ~__context ~self ~value
35273534 | _ ->
35283535 Db.Host. set_ntp_custom_servers ~__context ~self ~value
35293536
3530- let enable_ntp ~__context ~self =
3531- Xapi_host_ntp. enable_ntp_service () ;
3532- Db.Host. set_ntp_enabled ~__context ~self ~value: true
3533-
3534- let disable_ntp ~__context ~self =
3535- Xapi_host_ntp. disable_ntp_service () ;
3536- Db.Host. set_ntp_enabled ~__context ~self ~value: false
3537-
35383537let sync_ntp_config ~__context ~host =
35393538 Xapi_host_ntp. promote_legacy_default_servers () ;
35403539 let servers = Xapi_host_ntp. get_servers_from_conf () in
35413540 let is_ntp_dhcp_enabled = Xapi_host_ntp. is_ntp_dhcp_enabled () in
3541+ let ntp_enabled = Xapi_host_ntp. is_ntp_service_active () in
35423542 let ntp_mode =
3543- match (is_ntp_dhcp_enabled, servers) with
3544- | true , _ ->
3545- `ntp_mode_dhcp
3546- | false , s
3543+ match (ntp_enabled, is_ntp_dhcp_enabled, servers) with
3544+ | false , _ , _ ->
3545+ `Disabled
3546+ | _ , true , _ ->
3547+ `DHCP
3548+ | _, false , s
35473549 when Xapi_stdext_std.Listext.List. set_equiv s
3548- ! Xapi_globs. default_ntp_servers ->
3549- `ntp_mode_default
3550- | false , _ ->
3551- `ntp_mode_custom
3550+ ! Xapi_globs. factory_ntp_servers ->
3551+ `Factory
3552+ | _ , false , _ ->
3553+ `Custom
35523554 in
35533555 Db.Host. set_ntp_mode ~__context ~self: host ~value: ntp_mode ;
3554- if ntp_mode = `ntp_mode_custom then
3555- Db.Host. set_ntp_custom_servers ~__context ~self: host ~value: servers ;
3556- let ntp_enabled = Xapi_host_ntp. is_ntp_service_active () in
3557- Db.Host. set_ntp_enabled ~__context ~self: host ~value: ntp_enabled
3556+ if ntp_mode = `Custom then
3557+ Db.Host. set_ntp_custom_servers ~__context ~self: host ~value: servers
35583558
35593559let get_ntp_servers_status ~__context ~self :_ =
35603560 if Xapi_host_ntp. is_ntp_service_active () then
0 commit comments