func (d *Dispatcher) RegisterExtension(conf *config.VirtualContainerHostConfigSpec, extension types.Extension) error { defer trace.End(trace.Begin(conf.ExtensionName)) log.Infoln("Registering VCH as a vSphere extension") // vSphere confusingly calls the 'name' of the extension a 'key' // This variable is named IdKey as to not confuse it with its private key if conf.ExtensionCert == "" { return errors.Errorf("Extension certificate does not exist") } extensionManager := object.NewExtensionManager(d.session.Vim25()) extension.LastHeartbeatTime = time.Now().UTC() if err := extensionManager.Register(d.ctx, extension); err != nil { log.Errorf("Could not register the vSphere extension due to err: %s", err) return err } if err := extensionManager.SetCertificate(d.ctx, conf.ExtensionName, conf.ExtensionCert); err != nil { log.Errorf("Could not set the certificate on the vSphere extension due to error: %s", err) return err } return nil }
func (d *Dispatcher) UnregisterExtension(name string) error { defer trace.End(trace.Begin(name)) extensionManager := object.NewExtensionManager(d.session.Vim25()) if err := extensionManager.Unregister(d.ctx, name); err != nil { return errors.Errorf("Failed to remove extension w/ name %q due to error: %s", name, err) } return nil }