github.com/vmware/govmomi@v0.51.0/cli/session/logout.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 session
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  
    11  	"github.com/vmware/govmomi/cli"
    12  	"github.com/vmware/govmomi/cli/flags"
    13  	"github.com/vmware/govmomi/session"
    14  )
    15  
    16  type logout struct {
    17  	*flags.ClientFlag
    18  
    19  	vapi bool
    20  }
    21  
    22  func init() {
    23  	cli.Register("session.logout", &logout{})
    24  }
    25  
    26  func (cmd *logout) Register(ctx context.Context, f *flag.FlagSet) {
    27  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    28  	cmd.ClientFlag.Register(ctx, f)
    29  
    30  	f.BoolVar(&cmd.vapi, "r", false, "REST logout")
    31  }
    32  
    33  func (cmd *logout) Process(ctx context.Context) error {
    34  	return cmd.ClientFlag.Process(ctx)
    35  }
    36  
    37  func (cmd *logout) Description() string {
    38  	return `Logout the current session.
    39  
    40  By default, govc commands persist sessions and do not logout unless '-persist-session=false' is set.
    41  The session.logout command can be used to end the current persisted session.
    42  The session.rm command can be used to remove sessions other than the current session.
    43  
    44  Examples:
    45    govc session.logout`
    46  }
    47  
    48  func (cmd *logout) Run(ctx context.Context, f *flag.FlagSet) error {
    49  	c, err := cmd.Client()
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	err = session.NewManager(c).Logout(ctx)
    55  
    56  	if cmd.vapi {
    57  		rc, err := cmd.RestClient()
    58  		if err != nil {
    59  			return err
    60  		}
    61  		return rc.Logout(ctx)
    62  	}
    63  
    64  	return err
    65  }