func (i *InteractionHandlersImpl) Configure(api *operations.PortLayerAPI, _ *HandlerContext) { var err error api.InteractionContainerResizeHandler = interaction.ContainerResizeHandlerFunc(i.ContainerResizeHandler) api.InteractionContainerSetStdinHandler = interaction.ContainerSetStdinHandlerFunc(i.ContainerSetStdinHandler) api.InteractionContainerGetStdoutHandler = interaction.ContainerGetStdoutHandlerFunc(i.ContainerGetStdoutHandler) api.InteractionContainerGetStderrHandler = interaction.ContainerGetStderrHandlerFunc(i.ContainerGetStderrHandler) sessionconfig := &session.Config{ Service: options.PortLayerOptions.SDK, Insecure: options.PortLayerOptions.Insecure, Keepalive: options.PortLayerOptions.Keepalive, DatacenterPath: options.PortLayerOptions.DatacenterPath, ClusterPath: options.PortLayerOptions.ClusterPath, PoolPath: options.PortLayerOptions.PoolPath, DatastorePath: options.PortLayerOptions.DatastorePath, } ctx := context.Background() interactionSession, err = session.NewSession(sessionconfig).Create(ctx) if err != nil { log.Fatalf("InteractionHandler ERROR: %s", err) } i.attachServer = attach.NewAttachServer(exec.ManagementHostName, 0) if err := i.attachServer.Start(); err != nil { log.Fatalf("Attach server unable to start: %s", err) } }
func (handler *KvHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { api.KvGetValueHandler = kv.GetValueHandlerFunc(handler.GetValueHandler) api.KvPutValueHandler = kv.PutValueHandlerFunc(handler.PutValueHandler) api.KvDeleteValueHandler = kv.DeleteValueHandlerFunc(handler.DeleteValueHandler) // Get the APIKV store -- it should always be present since it's // initialized when the portlayer starts s, _ := store.Store(store.APIKV) handler.defaultStore = s }
func configureAPI(api *operations.PortLayerAPI) http.Handler { if options.PortLayerOptions.Debug { log.SetLevel(log.DebugLevel) } ctx := context.Background() sessionconfig := &session.Config{ Service: options.PortLayerOptions.SDK, Insecure: options.PortLayerOptions.Insecure, Keepalive: options.PortLayerOptions.Keepalive, DatacenterPath: options.PortLayerOptions.DatacenterPath, ClusterPath: options.PortLayerOptions.ClusterPath, PoolPath: options.PortLayerOptions.PoolPath, DatastorePath: options.PortLayerOptions.DatastorePath, } sess, err := session.NewSession(sessionconfig).Create(ctx) if err != nil { log.Fatalf("configure_port_layer ERROR: %s", err) } // Configure the func invoked if the PL panics or is restarted by vic-init api.ServerShutdown = func() { log.Infof("Shutting down port-layer-server") // Logout the session if err := sess.Logout(ctx); err != nil { log.Warnf("unable to log out of session: %s", err) } } // initialize the port layer if err = portlayer.Init(ctx, sess); err != nil { log.Fatalf("could not initialize port layer: %s", err) } // configure the api here api.ServeError = errors.ServeError api.BinConsumer = httpkit.ByteStreamConsumer() api.JSONConsumer = httpkit.JSONConsumer() api.JSONProducer = httpkit.JSONProducer() api.TxtProducer = httpkit.TextProducer() handlerCtx := &handlers.HandlerContext{ Session: sess, } for _, handler := range portlayerhandlers { handler.Configure(api, handlerCtx) } return setupGlobalMiddleware(api.Serve(setupMiddlewares)) }
// Configure assigns functions to all the scopes api handlers func (handler *ScopesHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { api.ScopesCreateScopeHandler = scopes.CreateScopeHandlerFunc(handler.ScopesCreate) api.ScopesDeleteScopeHandler = scopes.DeleteScopeHandlerFunc(handler.ScopesDelete) api.ScopesListAllHandler = scopes.ListAllHandlerFunc(handler.ScopesListAll) api.ScopesListHandler = scopes.ListHandlerFunc(handler.ScopesList) api.ScopesGetContainerEndpointsHandler = scopes.GetContainerEndpointsHandlerFunc(handler.ScopesGetContainerEndpoints) api.ScopesAddContainerHandler = scopes.AddContainerHandlerFunc(handler.ScopesAddContainer) api.ScopesRemoveContainerHandler = scopes.RemoveContainerHandlerFunc(handler.ScopesRemoveContainer) api.ScopesBindContainerHandler = scopes.BindContainerHandlerFunc(handler.ScopesBindContainer) api.ScopesUnbindContainerHandler = scopes.UnbindContainerHandlerFunc(handler.ScopesUnbindContainer) handler.netCtx = network.DefaultContext handler.handlerCtx = handlerCtx }
func configureFlags(api *operations.PortLayerAPI) { api.CommandLineOptionsGroups = []swag.CommandLineOptionsGroup{ { LongDescription: "Port Layer Options", Options: options.PortLayerOptions, ShortDescription: "Port Layer Options", }, } }
// Configure assigns functions to all the scopes api handlers func (handler *ScopesHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { api.ScopesCreateScopeHandler = scopes.CreateScopeHandlerFunc(handler.ScopesCreate) api.ScopesDeleteScopeHandler = scopes.DeleteScopeHandlerFunc(handler.ScopesDelete) api.ScopesListAllHandler = scopes.ListAllHandlerFunc(handler.ScopesListAll) api.ScopesListHandler = scopes.ListHandlerFunc(handler.ScopesList) api.ScopesGetContainerEndpointsHandler = scopes.GetContainerEndpointsHandlerFunc(handler.ScopesGetContainerEndpoints) api.ScopesAddContainerHandler = scopes.AddContainerHandlerFunc(handler.ScopesAddContainer) api.ScopesRemoveContainerHandler = scopes.RemoveContainerHandlerFunc(handler.ScopesRemoveContainer) api.ScopesBindContainerHandler = scopes.BindContainerHandlerFunc(handler.ScopesBindContainer) api.ScopesUnbindContainerHandler = scopes.UnbindContainerHandlerFunc(handler.ScopesUnbindContainer) err := network.Init() if err != nil { log.Fatalf("failed to create network context: %s", err) } handler.netCtx = network.DefaultContext handler.handlerCtx = handlerCtx }
func (i *InteractionHandlersImpl) Configure(api *operations.PortLayerAPI, _ *HandlerContext) { api.InteractionInteractionJoinHandler = interaction.InteractionJoinHandlerFunc(i.JoinHandler) api.InteractionInteractionBindHandler = interaction.InteractionBindHandlerFunc(i.BindHandler) api.InteractionInteractionUnbindHandler = interaction.InteractionUnbindHandlerFunc(i.UnbindHandler) api.InteractionContainerResizeHandler = interaction.ContainerResizeHandlerFunc(i.ContainerResizeHandler) api.InteractionContainerSetStdinHandler = interaction.ContainerSetStdinHandlerFunc(i.ContainerSetStdinHandler) api.InteractionContainerGetStdoutHandler = interaction.ContainerGetStdoutHandlerFunc(i.ContainerGetStdoutHandler) api.InteractionContainerGetStderrHandler = interaction.ContainerGetStderrHandlerFunc(i.ContainerGetStderrHandler) api.InteractionContainerCloseStdinHandler = interaction.ContainerCloseStdinHandlerFunc(i.ContainerCloseStdinHandler) i.attachServer = attach.NewAttachServer(constants.ManagementHostName, 0) if err := i.attachServer.Start(false); err != nil { log.Fatalf("Attach server unable to start: %s", err) } }
// Configure assigns functions to all the miscellaneous api handlers func (handler *MiscHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { api.MiscPingHandler = misc.PingHandlerFunc(handler.Ping) api.MiscGetVCHInfoHandler = misc.GetVCHInfoHandlerFunc(handler.GetVCHInfo) }
// Configure assigns functions to all the exec api handlers func (handler *ContainersHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { api.ContainersCreateHandler = containers.CreateHandlerFunc(handler.CreateHandler) api.ContainersStateChangeHandler = containers.StateChangeHandlerFunc(handler.StateChangeHandler) api.ContainersGetHandler = containers.GetHandlerFunc(handler.GetHandler) api.ContainersCommitHandler = containers.CommitHandlerFunc(handler.CommitHandler) api.ContainersGetStateHandler = containers.GetStateHandlerFunc(handler.GetStateHandler) api.ContainersContainerRemoveHandler = containers.ContainerRemoveHandlerFunc(handler.RemoveContainerHandler) api.ContainersGetContainerInfoHandler = containers.GetContainerInfoHandlerFunc(handler.GetContainerInfoHandler) api.ContainersGetContainerListHandler = containers.GetContainerListHandlerFunc(handler.GetContainerListHandler) api.ContainersContainerSignalHandler = containers.ContainerSignalHandlerFunc(handler.ContainerSignalHandler) api.ContainersGetContainerLogsHandler = containers.GetContainerLogsHandlerFunc(handler.GetContainerLogsHandler) api.ContainersContainerWaitHandler = containers.ContainerWaitHandlerFunc(handler.ContainerWaitHandler) handler.handlerCtx = handlerCtx }
// Configure assigns functions to all the storage api handlers func (handler *StorageHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { var err error ctx := context.Background() sessionconfig := &session.Config{ Service: options.PortLayerOptions.SDK, Insecure: options.PortLayerOptions.Insecure, Keepalive: options.PortLayerOptions.Keepalive, DatacenterPath: options.PortLayerOptions.DatacenterPath, ClusterPath: options.PortLayerOptions.ClusterPath, PoolPath: options.PortLayerOptions.PoolPath, DatastorePath: options.PortLayerOptions.DatastorePath, } storageSession, err := session.NewSession(sessionconfig).Create(ctx) if err != nil { log.Fatalf("StorageHandler ERROR: %s", err) } if len(spl.Config.ImageStores) == 0 { log.Panicf("No image stores provided; unable to instantiate storage layer") } imageStoreURL := spl.Config.ImageStores[0] // TODO: support multiple image stores. Right now we only support the first one if len(spl.Config.ImageStores) > 1 { log.Warningf("Multiple image stores found. Multiple image stores are not yet supported. Using [%s] %s", imageStoreURL.Host, imageStoreURL.Path) } ds, err := vsphereSpl.NewImageStore(ctx, storageSession, &imageStoreURL) if err != nil { log.Panicf("Cannot instantiate storage layer: %s", err) } // The imagestore is implemented via a cache which is backed via an // implementation that writes to disks. The cache is used to avoid // expensive metadata lookups. storageImageLayer = spl.NewLookupCache(ds) vsVolumeStore, err := vsphereSpl.NewVolumeStore(context.TODO(), storageSession) if err != nil { log.Panicf("Cannot instantiate the volume store: %s", err) } // Get the datastores for volumes. // Each volume store name maps to a datastore + path, which can be referred to by the name. dstores, err := datastore.GetDatastores(context.TODO(), storageSession, spl.Config.VolumeLocations) if err != nil { log.Panicf("Cannot find datastores: %s", err) } // Add datastores to the vsphere volume store impl for volStoreName, volDatastore := range dstores { log.Infof("Adding volume store %s (%s)", volStoreName, volDatastore.RootURL) _, err := vsVolumeStore.AddStore(context.TODO(), volDatastore, volStoreName) if err != nil { log.Errorf("volume addition error %s", err) } } storageVolumeLayer, err = spl.NewVolumeLookupCache(context.TODO(), vsVolumeStore) if err != nil { log.Panicf("Cannot instantiate the Volume Lookup cache: %s", err) } api.StorageCreateImageStoreHandler = storage.CreateImageStoreHandlerFunc(handler.CreateImageStore) api.StorageGetImageHandler = storage.GetImageHandlerFunc(handler.GetImage) api.StorageGetImageTarHandler = storage.GetImageTarHandlerFunc(handler.GetImageTar) api.StorageListImagesHandler = storage.ListImagesHandlerFunc(handler.ListImages) api.StorageWriteImageHandler = storage.WriteImageHandlerFunc(handler.WriteImage) api.StorageVolumeStoresListHandler = storage.VolumeStoresListHandlerFunc(handler.VolumeStoresList) api.StorageCreateVolumeHandler = storage.CreateVolumeHandlerFunc(handler.CreateVolume) api.StorageRemoveVolumeHandler = storage.RemoveVolumeHandlerFunc(handler.RemoveVolume) api.StorageVolumeJoinHandler = storage.VolumeJoinHandlerFunc(handler.VolumeJoin) api.StorageListVolumesHandler = storage.ListVolumesHandlerFunc(handler.VolumesList) }
// Configure initializes the handler func (i *LoggingHandlersImpl) Configure(api *operations.PortLayerAPI, _ *HandlerContext) { api.LoggingLoggingJoinHandler = logging.LoggingJoinHandlerFunc(i.JoinHandler) api.LoggingLoggingBindHandler = logging.LoggingBindHandlerFunc(i.BindHandler) api.LoggingLoggingUnbindHandler = logging.LoggingUnbindHandlerFunc(i.UnbindHandler) }
// Configure assigns functions to all the storage api handlers func (h *StorageHandlersImpl) Configure(api *operations.PortLayerAPI, handlerCtx *HandlerContext) { var err error ctx := context.Background() op := trace.NewOperation(ctx, "configure") if len(spl.Config.ImageStores) == 0 { log.Panicf("No image stores provided; unable to instantiate storage layer") } imageStoreURL := spl.Config.ImageStores[0] // TODO: support multiple image stores. Right now we only support the first one if len(spl.Config.ImageStores) > 1 { log.Warningf("Multiple image stores found. Multiple image stores are not yet supported. Using [%s] %s", imageStoreURL.Host, imageStoreURL.Path) } ds, err := vsphereSpl.NewImageStore(op, handlerCtx.Session, &imageStoreURL) if err != nil { log.Panicf("Cannot instantiate storage layer: %s", err) } // The imagestore is implemented via a cache which is backed via an // implementation that writes to disks. The cache is used to avoid // expensive metadata lookups. h.imageCache = spl.NewLookupCache(ds) // The same is done for volumes. It's implemented via a cache which writes // to an implementation that takes a datastore to write to. vsVolumeStore, err := vsphereSpl.NewVolumeStore(op, handlerCtx.Session) if err != nil { log.Panicf("Cannot instantiate the volume store: %s", err) } // Get the datastores for volumes. // Each volume store name maps to a datastore + path, which can be referred to by the name. dstores, err := datastore.GetDatastores(context.TODO(), handlerCtx.Session, spl.Config.VolumeLocations) if err != nil { log.Panicf("Cannot find datastores: %s", err) } // Add datastores to the vsphere volume store impl for volStoreName, volDatastore := range dstores { log.Infof("Adding volume store %s (%s)", volStoreName, volDatastore.RootURL) _, err := vsVolumeStore.AddStore(op, volDatastore, volStoreName) if err != nil { log.Errorf("volume addition error %s", err) } } h.volumeCache, err = spl.NewVolumeLookupCache(op, vsVolumeStore) if err != nil { log.Panicf("Cannot instantiate the Volume Lookup cache: %s", err) } api.StorageCreateImageStoreHandler = storage.CreateImageStoreHandlerFunc(h.CreateImageStore) api.StorageGetImageHandler = storage.GetImageHandlerFunc(h.GetImage) api.StorageGetImageTarHandler = storage.GetImageTarHandlerFunc(h.GetImageTar) api.StorageListImagesHandler = storage.ListImagesHandlerFunc(h.ListImages) api.StorageWriteImageHandler = storage.WriteImageHandlerFunc(h.WriteImage) api.StorageDeleteImageHandler = storage.DeleteImageHandlerFunc(h.DeleteImage) api.StorageVolumeStoresListHandler = storage.VolumeStoresListHandlerFunc(h.VolumeStoresList) api.StorageCreateVolumeHandler = storage.CreateVolumeHandlerFunc(h.CreateVolume) api.StorageRemoveVolumeHandler = storage.RemoveVolumeHandlerFunc(h.RemoveVolume) api.StorageVolumeJoinHandler = storage.VolumeJoinHandlerFunc(h.VolumeJoin) api.StorageListVolumesHandler = storage.ListVolumesHandlerFunc(h.VolumesList) api.StorageGetVolumeHandler = storage.GetVolumeHandlerFunc(h.GetVolume) }