github.com/vmware/govmomi@v0.51.0/cli/namespace/service/version/create.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 version 6 7 import ( 8 "context" 9 "encoding/base64" 10 "flag" 11 "fmt" 12 "os" 13 14 "github.com/vmware/govmomi/cli" 15 "github.com/vmware/govmomi/cli/flags" 16 "github.com/vmware/govmomi/cli/namespace/service" 17 "github.com/vmware/govmomi/vapi/namespace" 18 ) 19 20 type create struct { 21 *flags.ClientFlag 22 *service.ServiceVersionFlag 23 } 24 25 func init() { 26 cli.Register("namespace.service.version.create", &create{}) 27 } 28 29 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 30 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 31 cmd.ClientFlag.Register(ctx, f) 32 33 cmd.ServiceVersionFlag = &service.ServiceVersionFlag{} 34 cmd.ServiceVersionFlag.Register(ctx, f) 35 } 36 37 func (cmd *create) Process(ctx context.Context) error { 38 if err := cmd.ServiceVersionFlag.Process(ctx); err != nil { 39 return err 40 } 41 return cmd.ClientFlag.Process(ctx) 42 } 43 44 func (cmd *create) Description() string { 45 return `Registers a new version for a registered vSphere Supervisor Service. 46 47 Examples: 48 govc namespace.service.create my-service manifest-2.0.0.yaml` 49 } 50 51 func (cmd *create) Usage() string { 52 return "SERVICE MANIFEST" 53 } 54 55 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 56 if f.NArg() != 2 { 57 return flag.ErrHelp 58 } 59 60 id := f.Arg(0) 61 manifestFile := f.Arg(1) 62 manifest, err := os.ReadFile(manifestFile) 63 if err != nil { 64 return fmt.Errorf("failed to read manifest file: %s", err) 65 } 66 67 content := base64.StdEncoding.EncodeToString(manifest) 68 serviceVersion := namespace.SupervisorServiceVersion{} 69 if cmd.ServiceVersionFlag.SpecType == "carvel" { 70 serviceVersion.CarvelService = &namespace.CarvelVersionCreateSpec{ 71 Content: content, 72 } 73 } else { 74 serviceVersion.VsphereService = &namespace.SupervisorServicesVSphereVersionCreateSpec{ 75 Content: content, 76 AcceptEula: cmd.ServiceVersionFlag.AcceptEULA, 77 TrustedProvider: cmd.ServiceVersionFlag.TrustedProvider, 78 } 79 } 80 c, err := cmd.RestClient() 81 if err != nil { 82 return err 83 } 84 85 m := namespace.NewManager(c) 86 return m.CreateSupervisorServiceVersion(ctx, id, &serviceVersion) 87 }