github.com/vmware/govmomi@v0.51.0/cli/host/date/change.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package date 6 7 import ( 8 "context" 9 "flag" 10 "strings" 11 "time" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 "github.com/vmware/govmomi/vim25/types" 16 ) 17 18 type change struct { 19 *flags.HostSystemFlag 20 21 types.HostNtpConfig 22 types.HostDateTimeConfig 23 date string 24 } 25 26 func init() { 27 cli.Register("host.date.change", &change{}) 28 } 29 30 type serverConfig types.HostNtpConfig 31 32 func (s *serverConfig) String() string { 33 return strings.Join(s.Server, ",") 34 } 35 36 func (s *serverConfig) Set(v string) error { 37 s.Server = append(s.Server, v) 38 return nil 39 } 40 41 func (cmd *change) Register(ctx context.Context, f *flag.FlagSet) { 42 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 43 cmd.HostSystemFlag.Register(ctx, f) 44 45 f.Var((*serverConfig)(&cmd.HostNtpConfig), "server", "IP or FQDN for NTP server(s)") 46 f.StringVar(&cmd.TimeZone, "tz", "", "Change timezone of the host") 47 f.StringVar(&cmd.date, "date", "", "Update the date/time on the host") 48 } 49 50 func (cmd *change) Description() string { 51 return `Change date and time for HOST. 52 53 Examples: 54 govc host.date.change -date "$(date -u)" 55 govc host.date.change -server time.vmware.com 56 govc host.service enable ntpd 57 govc host.service start ntpd` 58 } 59 60 func (cmd *change) Process(ctx context.Context) error { 61 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 62 return err 63 } 64 return nil 65 } 66 67 func (cmd *change) Run(ctx context.Context, f *flag.FlagSet) error { 68 host, err := cmd.HostSystem() 69 if err != nil { 70 return err 71 } 72 73 s, err := host.ConfigManager().DateTimeSystem(ctx) 74 if err != nil { 75 return err 76 } 77 78 if cmd.date != "" { 79 d, err := time.Parse(time.UnixDate, cmd.date) 80 if err != nil { 81 return err 82 } 83 return s.Update(ctx, d) 84 } 85 86 if len(cmd.HostNtpConfig.Server) > 0 { 87 cmd.NtpConfig = &cmd.HostNtpConfig 88 } 89 90 return s.UpdateConfig(ctx, cmd.HostDateTimeConfig) 91 }