mirror of
https://github.com/portainer/portainer.git
synced 2025-08-05 22:05:23 +02:00
refactor(storidge): remove Storidge support from backend [EE-2450] (#6511)
* refactor(storidge): remove Storidge support from backend * refactor(storidge): remove Storidge support from backend * refactor(storidge): remove Storidge support from frontend
This commit is contained in:
parent
e96f63023e
commit
318844226c
87 changed files with 121 additions and 4959 deletions
|
@ -398,7 +398,6 @@ func createTLSSecuredEndpoint(flags *portainer.CLIFlags, dataStore dataservices.
|
|||
TLSConfig: tlsConfiguration,
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: []portainer.TagID{},
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
@ -460,7 +459,6 @@ func createUnsecuredEndpoint(endpointURL string, dataStore dataservices.DataStor
|
|||
TLSConfig: portainer.TLSConfiguration{},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: []portainer.TagID{},
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
|
|
@ -96,7 +96,6 @@ func newEndpoint(endpointType portainer.EndpointType, id portainer.EndpointID, n
|
|||
},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: []portainer.TagID{},
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
|
|
@ -34,7 +34,5 @@ func NewHandler(bouncer *security.RequestBouncer) *Handler {
|
|||
bouncer.AuthenticatedAccess(httperror.LoggerHandler(h.proxyRequestsToDockerAPI)))
|
||||
h.PathPrefix("/{id}/agent/kubernetes").Handler(
|
||||
bouncer.AuthenticatedAccess(httperror.LoggerHandler(h.proxyRequestsToKubernetesAPI)))
|
||||
h.PathPrefix("/{id}/storidge").Handler(
|
||||
bouncer.AuthenticatedAccess(httperror.LoggerHandler(h.proxyRequestsToStoridgeAPI)))
|
||||
return h
|
||||
}
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
package endpointproxy
|
||||
|
||||
// TODO: legacy extension management
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
|
||||
httperror "github.com/portainer/libhttp/error"
|
||||
"github.com/portainer/libhttp/request"
|
||||
portainer "github.com/portainer/portainer/api"
|
||||
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (handler *Handler) proxyRequestsToStoridgeAPI(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {
|
||||
endpointID, err := request.RetrieveNumericRouteVariableValue(r, "id")
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusBadRequest, "Invalid environment identifier route variable", err}
|
||||
}
|
||||
|
||||
endpoint, err := handler.DataStore.Endpoint().Endpoint(portainer.EndpointID(endpointID))
|
||||
if handler.DataStore.IsErrObjectNotFound(err) {
|
||||
return &httperror.HandlerError{http.StatusNotFound, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
} else if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
}
|
||||
|
||||
err = handler.requestBouncer.AuthorizedEndpointOperation(r, endpoint)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusForbidden, "Permission denied to access environment", err}
|
||||
}
|
||||
|
||||
var storidgeExtension *portainer.EndpointExtension
|
||||
for _, extension := range endpoint.Extensions {
|
||||
if extension.Type == portainer.StoridgeEndpointExtension {
|
||||
storidgeExtension = &extension
|
||||
}
|
||||
}
|
||||
|
||||
if storidgeExtension == nil {
|
||||
return &httperror.HandlerError{http.StatusServiceUnavailable, "Storidge extension not supported on this environment", errors.New("This extension is not supported")}
|
||||
}
|
||||
|
||||
proxyExtensionKey := strconv.Itoa(endpointID) + "_" + strconv.Itoa(int(portainer.StoridgeEndpointExtension)) + "_" + storidgeExtension.URL
|
||||
|
||||
var proxy http.Handler
|
||||
proxy = handler.ProxyManager.GetLegacyExtensionProxy(proxyExtensionKey)
|
||||
if proxy == nil {
|
||||
proxy, err = handler.ProxyManager.CreateLegacyExtensionProxy(proxyExtensionKey, storidgeExtension.URL)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to create extension proxy", err}
|
||||
}
|
||||
}
|
||||
|
||||
id := strconv.Itoa(endpointID)
|
||||
http.StripPrefix("/"+id+"/storidge", proxy).ServeHTTP(w, r)
|
||||
return nil
|
||||
}
|
|
@ -284,7 +284,6 @@ func (handler *Handler) createAzureEndpoint(payload *endpointCreatePayload) (*po
|
|||
PublicURL: payload.PublicURL,
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
AzureCredentials: credentials,
|
||||
TagIDs: payload.TagIDs,
|
||||
Status: portainer.EndpointStatusUp,
|
||||
|
@ -330,7 +329,6 @@ func (handler *Handler) createEdgeAgentEndpoint(payload *endpointCreatePayload)
|
|||
},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: payload.TagIDs,
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
@ -385,7 +383,6 @@ func (handler *Handler) createUnsecuredEndpoint(payload *endpointCreatePayload)
|
|||
},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: payload.TagIDs,
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
@ -421,7 +418,6 @@ func (handler *Handler) createKubernetesEndpoint(payload *endpointCreatePayload)
|
|||
},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: payload.TagIDs,
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
@ -451,7 +447,6 @@ func (handler *Handler) createTLSSecuredEndpoint(payload *endpointCreatePayload,
|
|||
},
|
||||
UserAccessPolicies: portainer.UserAccessPolicies{},
|
||||
TeamAccessPolicies: portainer.TeamAccessPolicies{},
|
||||
Extensions: []portainer.EndpointExtension{},
|
||||
TagIDs: payload.TagIDs,
|
||||
Status: portainer.EndpointStatusUp,
|
||||
Snapshots: []portainer.DockerSnapshot{},
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
package endpoints
|
||||
|
||||
// TODO: legacy extension management
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/asaskevich/govalidator"
|
||||
httperror "github.com/portainer/libhttp/error"
|
||||
"github.com/portainer/libhttp/request"
|
||||
"github.com/portainer/libhttp/response"
|
||||
portainer "github.com/portainer/portainer/api"
|
||||
)
|
||||
|
||||
type endpointExtensionAddPayload struct {
|
||||
Type int
|
||||
URL string
|
||||
}
|
||||
|
||||
func (payload *endpointExtensionAddPayload) Validate(r *http.Request) error {
|
||||
if payload.Type != 1 {
|
||||
return errors.New("Invalid type value. Value must be one of: 1 (Storidge)")
|
||||
}
|
||||
if payload.Type == 1 && govalidator.IsNull(payload.URL) {
|
||||
return errors.New("Invalid extension URL")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// @id endpointExtensionAdd
|
||||
// @tags endpoints
|
||||
// @deprecated
|
||||
// @param id path int true "Environment(Endpoint) identifier"
|
||||
// @success 204 "Success"
|
||||
// @router /endpoints/{id}/extensions [post]
|
||||
func (handler *Handler) endpointExtensionAdd(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {
|
||||
endpointID, err := request.RetrieveNumericRouteVariableValue(r, "id")
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusBadRequest, "Invalid environment identifier route variable", err}
|
||||
}
|
||||
|
||||
endpoint, err := handler.DataStore.Endpoint().Endpoint(portainer.EndpointID(endpointID))
|
||||
if handler.DataStore.IsErrObjectNotFound(err) {
|
||||
return &httperror.HandlerError{http.StatusNotFound, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
} else if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
}
|
||||
|
||||
var payload endpointExtensionAddPayload
|
||||
err = request.DecodeAndValidateJSONPayload(r, &payload)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusBadRequest, "Invalid request payload", err}
|
||||
}
|
||||
|
||||
extensionType := portainer.EndpointExtensionType(payload.Type)
|
||||
|
||||
var extension *portainer.EndpointExtension
|
||||
for idx := range endpoint.Extensions {
|
||||
if endpoint.Extensions[idx].Type == extensionType {
|
||||
extension = &endpoint.Extensions[idx]
|
||||
}
|
||||
}
|
||||
|
||||
if extension != nil {
|
||||
extension.URL = payload.URL
|
||||
} else {
|
||||
extension = &portainer.EndpointExtension{
|
||||
Type: extensionType,
|
||||
URL: payload.URL,
|
||||
}
|
||||
endpoint.Extensions = append(endpoint.Extensions, *extension)
|
||||
}
|
||||
|
||||
err = handler.DataStore.Endpoint().UpdateEndpoint(endpoint.ID, endpoint)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to persist environment changes inside the database", err}
|
||||
}
|
||||
|
||||
return response.JSON(w, extension)
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
package endpoints
|
||||
|
||||
// TODO: legacy extension management
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
httperror "github.com/portainer/libhttp/error"
|
||||
"github.com/portainer/libhttp/request"
|
||||
"github.com/portainer/libhttp/response"
|
||||
portainer "github.com/portainer/portainer/api"
|
||||
)
|
||||
|
||||
// @id endpointExtensionRemove
|
||||
// @tags endpoints
|
||||
// @deprecated
|
||||
// @param id path int true "Environment(Endpoint) identifier"
|
||||
// @param extensionType path string true "Extension Type"
|
||||
// @success 204 "Success"
|
||||
// @router /endpoints/{id}/extensions/{extensionType} [delete]
|
||||
func (handler *Handler) endpointExtensionRemove(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {
|
||||
endpointID, err := request.RetrieveNumericRouteVariableValue(r, "id")
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusBadRequest, "Invalid environment identifier route variable", err}
|
||||
}
|
||||
|
||||
endpoint, err := handler.DataStore.Endpoint().Endpoint(portainer.EndpointID(endpointID))
|
||||
if handler.DataStore.IsErrObjectNotFound(err) {
|
||||
return &httperror.HandlerError{http.StatusNotFound, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
} else if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find an environment with the specified identifier inside the database", err}
|
||||
}
|
||||
|
||||
extensionType, err := request.RetrieveNumericRouteVariableValue(r, "extensionType")
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusBadRequest, "Invalid extension type route variable", err}
|
||||
}
|
||||
|
||||
for idx, ext := range endpoint.Extensions {
|
||||
if ext.Type == portainer.EndpointExtensionType(extensionType) {
|
||||
endpoint.Extensions = append(endpoint.Extensions[:idx], endpoint.Extensions[idx+1:]...)
|
||||
}
|
||||
}
|
||||
|
||||
err = handler.DataStore.Endpoint().UpdateEndpoint(endpoint.ID, endpoint)
|
||||
if err != nil {
|
||||
return &httperror.HandlerError{http.StatusInternalServerError, "Unable to persist environment changes inside the database", err}
|
||||
}
|
||||
|
||||
return response.Empty(w)
|
||||
}
|
|
@ -62,10 +62,6 @@ func NewHandler(bouncer *security.RequestBouncer) *Handler {
|
|||
bouncer.AdminAccess(httperror.LoggerHandler(h.endpointDelete))).Methods(http.MethodDelete)
|
||||
h.Handle("/endpoints/{id}/dockerhub/{registryId}",
|
||||
bouncer.AuthenticatedAccess(httperror.LoggerHandler(h.endpointDockerhubStatus))).Methods(http.MethodGet)
|
||||
h.Handle("/endpoints/{id}/extensions",
|
||||
bouncer.RestrictedAccess(httperror.LoggerHandler(h.endpointExtensionAdd))).Methods(http.MethodPost)
|
||||
h.Handle("/endpoints/{id}/extensions/{extensionType}",
|
||||
bouncer.RestrictedAccess(httperror.LoggerHandler(h.endpointExtensionRemove))).Methods(http.MethodDelete)
|
||||
h.Handle("/endpoints/{id}/snapshot",
|
||||
bouncer.AdminAccess(httperror.LoggerHandler(h.endpointSnapshot))).Methods(http.MethodPost)
|
||||
h.Handle("/endpoints/{id}/status",
|
||||
|
|
|
@ -190,8 +190,6 @@ func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
http.StripPrefix("/api/endpoints", h.EndpointProxyHandler).ServeHTTP(w, r)
|
||||
case strings.Contains(r.URL.Path, "/kubernetes/"):
|
||||
http.StripPrefix("/api/endpoints", h.EndpointProxyHandler).ServeHTTP(w, r)
|
||||
case strings.Contains(r.URL.Path, "/storidge/"):
|
||||
http.StripPrefix("/api/endpoints", h.EndpointProxyHandler).ServeHTTP(w, r)
|
||||
case strings.Contains(r.URL.Path, "/azure/"):
|
||||
http.StripPrefix("/api/endpoints", h.EndpointProxyHandler).ServeHTTP(w, r)
|
||||
case strings.Contains(r.URL.Path, "/agent/"):
|
||||
|
|
|
@ -2,8 +2,6 @@ package factory
|
|||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httputil"
|
||||
"net/url"
|
||||
|
||||
portainer "github.com/portainer/portainer/api"
|
||||
"github.com/portainer/portainer/api/dataservices"
|
||||
|
@ -40,18 +38,6 @@ func NewProxyFactory(dataStore dataservices.DataStore, signatureService portaine
|
|||
}
|
||||
}
|
||||
|
||||
// NewLegacyExtensionProxy returns a new HTTP proxy to a legacy extension server (Storidge)
|
||||
func (factory *ProxyFactory) NewLegacyExtensionProxy(extensionAPIURL string) (http.Handler, error) {
|
||||
extensionURL, err := url.Parse(extensionAPIURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
extensionURL.Scheme = "http"
|
||||
proxy := httputil.NewSingleHostReverseProxy(extensionURL)
|
||||
return proxy, nil
|
||||
}
|
||||
|
||||
// NewEndpointProxy returns a new reverse proxy (filesystem based or HTTP) to an environment(endpoint) API server
|
||||
func (factory *ProxyFactory) NewEndpointProxy(endpoint *portainer.Endpoint) (http.Handler, error) {
|
||||
switch endpoint.Type {
|
||||
|
|
|
@ -15,25 +15,21 @@ import (
|
|||
"github.com/portainer/portainer/api/http/proxy/factory"
|
||||
)
|
||||
|
||||
// TODO: contain code related to legacy extension management
|
||||
|
||||
type (
|
||||
// Manager represents a service used to manage proxies to environments(endpoints) and extensions.
|
||||
// Manager represents a service used to manage proxies to environments (endpoints).
|
||||
Manager struct {
|
||||
proxyFactory *factory.ProxyFactory
|
||||
endpointProxies cmap.ConcurrentMap
|
||||
legacyExtensionProxies cmap.ConcurrentMap
|
||||
k8sClientFactory *cli.ClientFactory
|
||||
proxyFactory *factory.ProxyFactory
|
||||
endpointProxies cmap.ConcurrentMap
|
||||
k8sClientFactory *cli.ClientFactory
|
||||
}
|
||||
)
|
||||
|
||||
// NewManager initializes a new proxy Service
|
||||
func NewManager(dataStore dataservices.DataStore, signatureService portainer.DigitalSignatureService, tunnelService portainer.ReverseTunnelService, clientFactory *docker.ClientFactory, kubernetesClientFactory *cli.ClientFactory, kubernetesTokenCacheManager *kubernetes.TokenCacheManager) *Manager {
|
||||
return &Manager{
|
||||
endpointProxies: cmap.New(),
|
||||
legacyExtensionProxies: cmap.New(),
|
||||
k8sClientFactory: kubernetesClientFactory,
|
||||
proxyFactory: factory.NewProxyFactory(dataStore, signatureService, tunnelService, clientFactory, kubernetesClientFactory, kubernetesTokenCacheManager),
|
||||
endpointProxies: cmap.New(),
|
||||
k8sClientFactory: kubernetesClientFactory,
|
||||
proxyFactory: factory.NewProxyFactory(dataStore, signatureService, tunnelService, clientFactory, kubernetesClientFactory, kubernetesTokenCacheManager),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,26 +69,6 @@ func (manager *Manager) DeleteEndpointProxy(endpointID portainer.EndpointID) {
|
|||
manager.k8sClientFactory.RemoveKubeClient(endpointID)
|
||||
}
|
||||
|
||||
// CreateLegacyExtensionProxy creates a new HTTP reverse proxy for a legacy extension and adds it to the registered proxies
|
||||
func (manager *Manager) CreateLegacyExtensionProxy(key, extensionAPIURL string) (http.Handler, error) {
|
||||
proxy, err := manager.proxyFactory.NewLegacyExtensionProxy(extensionAPIURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
manager.legacyExtensionProxies.Set(key, proxy)
|
||||
return proxy, nil
|
||||
}
|
||||
|
||||
// GetLegacyExtensionProxy returns a legacy extension proxy associated to a key
|
||||
func (manager *Manager) GetLegacyExtensionProxy(key string) http.Handler {
|
||||
proxy, ok := manager.legacyExtensionProxies.Get(key)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
return proxy.(http.Handler)
|
||||
}
|
||||
|
||||
// CreateGitlabProxy creates a new HTTP reverse proxy that can be used to send requests to the Gitlab API
|
||||
func (manager *Manager) CreateGitlabProxy(url string) (http.Handler, error) {
|
||||
return manager.proxyFactory.NewGitlabProxy(url)
|
||||
|
|
|
@ -153,7 +153,6 @@ func DefaultEndpointAuthorizationsForEndpointAdministratorRole() portainer.Autho
|
|||
portainer.OperationPortainerWebhookList: true,
|
||||
portainer.OperationPortainerWebhookCreate: true,
|
||||
portainer.OperationPortainerWebhookDelete: true,
|
||||
portainer.OperationIntegrationStoridgeAdmin: true,
|
||||
portainer.EndpointResourcesAccess: true,
|
||||
}
|
||||
}
|
||||
|
@ -412,21 +411,19 @@ func DefaultEndpointAuthorizationsForReadOnlyUserRole(volumeBrowsingAuthorizatio
|
|||
// DefaultPortainerAuthorizations returns the default Portainer authorizations used by non-admin users.
|
||||
func DefaultPortainerAuthorizations() portainer.Authorizations {
|
||||
return map[portainer.Authorization]bool{
|
||||
portainer.OperationPortainerDockerHubInspect: true,
|
||||
portainer.OperationPortainerEndpointGroupList: true,
|
||||
portainer.OperationPortainerEndpointList: true,
|
||||
portainer.OperationPortainerEndpointInspect: true,
|
||||
portainer.OperationPortainerEndpointExtensionAdd: true,
|
||||
portainer.OperationPortainerEndpointExtensionRemove: true,
|
||||
portainer.OperationPortainerMOTD: true,
|
||||
portainer.OperationPortainerRegistryList: true,
|
||||
portainer.OperationPortainerRegistryInspect: true,
|
||||
portainer.OperationPortainerTeamList: true,
|
||||
portainer.OperationPortainerTemplateList: true,
|
||||
portainer.OperationPortainerTemplateInspect: true,
|
||||
portainer.OperationPortainerUserList: true,
|
||||
portainer.OperationPortainerUserInspect: true,
|
||||
portainer.OperationPortainerUserMemberships: true,
|
||||
portainer.OperationPortainerDockerHubInspect: true,
|
||||
portainer.OperationPortainerEndpointGroupList: true,
|
||||
portainer.OperationPortainerEndpointList: true,
|
||||
portainer.OperationPortainerEndpointInspect: true,
|
||||
portainer.OperationPortainerMOTD: true,
|
||||
portainer.OperationPortainerRegistryList: true,
|
||||
portainer.OperationPortainerRegistryInspect: true,
|
||||
portainer.OperationPortainerTeamList: true,
|
||||
portainer.OperationPortainerTemplateList: true,
|
||||
portainer.OperationPortainerTemplateInspect: true,
|
||||
portainer.OperationPortainerUserList: true,
|
||||
portainer.OperationPortainerUserInspect: true,
|
||||
portainer.OperationPortainerUserMemberships: true,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
203
api/portainer.go
203
api/portainer.go
|
@ -296,10 +296,9 @@ type (
|
|||
// Environment(Endpoint) group identifier
|
||||
GroupID EndpointGroupID `json:"GroupId" example:"1"`
|
||||
// URL or IP address where exposed containers will be reachable
|
||||
PublicURL string `json:"PublicURL" example:"docker.mydomain.tld:2375"`
|
||||
TLSConfig TLSConfiguration `json:"TLSConfig"`
|
||||
Extensions []EndpointExtension `json:"Extensions" example:""`
|
||||
AzureCredentials AzureCredentials `json:"AzureCredentials,omitempty" example:""`
|
||||
PublicURL string `json:"PublicURL" example:"docker.mydomain.tld:2375"`
|
||||
TLSConfig TLSConfiguration `json:"TLSConfig"`
|
||||
AzureCredentials AzureCredentials `json:"AzureCredentials,omitempty" example:""`
|
||||
// List of tag identifiers to which this environment(endpoint) is associated
|
||||
TagIDs []TagID `json:"TagIds"`
|
||||
// The status of the environment(endpoint) (1 - up, 2 - down)
|
||||
|
@ -349,17 +348,6 @@ type (
|
|||
// EndpointAuthorizations represents the authorizations associated to a set of environments(endpoints)
|
||||
EndpointAuthorizations map[EndpointID]Authorizations
|
||||
|
||||
// EndpointExtension represents a deprecated form of Portainer extension
|
||||
// TODO: legacy extension management
|
||||
EndpointExtension struct {
|
||||
Type EndpointExtensionType `json:"Type"`
|
||||
URL string `json:"URL"`
|
||||
}
|
||||
|
||||
// EndpointExtensionType represents the type of an environment(endpoint) extension. Only
|
||||
// one extension of each type can be associated to an environment(endpoint)
|
||||
EndpointExtensionType int
|
||||
|
||||
// EndpointGroup represents a group of environments(endpoints)
|
||||
EndpointGroup struct {
|
||||
// Environment(Endpoint) group Identifier
|
||||
|
@ -1450,12 +1438,6 @@ const (
|
|||
StatusAcknowledged
|
||||
)
|
||||
|
||||
const (
|
||||
_ EndpointExtensionType = iota
|
||||
// StoridgeEndpointExtension represents the Storidge extension
|
||||
StoridgeEndpointExtension
|
||||
)
|
||||
|
||||
const (
|
||||
_ EndpointStatus = iota
|
||||
// EndpointStatusUp is used to represent an available environment(endpoint)
|
||||
|
@ -1730,101 +1712,102 @@ const (
|
|||
OperationDockerAgentBrowsePut Authorization = "DockerAgentBrowsePut"
|
||||
OperationDockerAgentBrowseRename Authorization = "DockerAgentBrowseRename"
|
||||
|
||||
OperationPortainerDockerHubInspect Authorization = "PortainerDockerHubInspect"
|
||||
OperationPortainerDockerHubUpdate Authorization = "PortainerDockerHubUpdate"
|
||||
OperationPortainerEndpointGroupCreate Authorization = "PortainerEndpointGroupCreate"
|
||||
OperationPortainerEndpointGroupList Authorization = "PortainerEndpointGroupList"
|
||||
OperationPortainerEndpointGroupDelete Authorization = "PortainerEndpointGroupDelete"
|
||||
OperationPortainerEndpointGroupInspect Authorization = "PortainerEndpointGroupInspect"
|
||||
OperationPortainerEndpointGroupUpdate Authorization = "PortainerEndpointGroupEdit"
|
||||
OperationPortainerEndpointGroupAccess Authorization = "PortainerEndpointGroupAccess "
|
||||
OperationPortainerEndpointList Authorization = "PortainerEndpointList"
|
||||
OperationPortainerEndpointInspect Authorization = "PortainerEndpointInspect"
|
||||
OperationPortainerEndpointCreate Authorization = "PortainerEndpointCreate"
|
||||
OperationPortainerEndpointExtensionAdd Authorization = "PortainerEndpointExtensionAdd"
|
||||
OperationPortainerEndpointJob Authorization = "PortainerEndpointJob"
|
||||
OperationPortainerEndpointSnapshots Authorization = "PortainerEndpointSnapshots"
|
||||
OperationPortainerEndpointSnapshot Authorization = "PortainerEndpointSnapshot"
|
||||
OperationPortainerEndpointUpdate Authorization = "PortainerEndpointUpdate"
|
||||
OperationPortainerEndpointUpdateAccess Authorization = "PortainerEndpointUpdateAccess"
|
||||
OperationPortainerEndpointDelete Authorization = "PortainerEndpointDelete"
|
||||
OperationPortainerEndpointExtensionRemove Authorization = "PortainerEndpointExtensionRemove"
|
||||
OperationPortainerExtensionList Authorization = "PortainerExtensionList"
|
||||
OperationPortainerExtensionInspect Authorization = "PortainerExtensionInspect"
|
||||
OperationPortainerExtensionCreate Authorization = "PortainerExtensionCreate"
|
||||
OperationPortainerExtensionUpdate Authorization = "PortainerExtensionUpdate"
|
||||
OperationPortainerExtensionDelete Authorization = "PortainerExtensionDelete"
|
||||
OperationPortainerMOTD Authorization = "PortainerMOTD"
|
||||
OperationPortainerRegistryList Authorization = "PortainerRegistryList"
|
||||
OperationPortainerRegistryInspect Authorization = "PortainerRegistryInspect"
|
||||
OperationPortainerRegistryCreate Authorization = "PortainerRegistryCreate"
|
||||
OperationPortainerRegistryConfigure Authorization = "PortainerRegistryConfigure"
|
||||
OperationPortainerRegistryUpdate Authorization = "PortainerRegistryUpdate"
|
||||
OperationPortainerRegistryUpdateAccess Authorization = "PortainerRegistryUpdateAccess"
|
||||
OperationPortainerRegistryDelete Authorization = "PortainerRegistryDelete"
|
||||
OperationPortainerResourceControlCreate Authorization = "PortainerResourceControlCreate"
|
||||
OperationPortainerResourceControlUpdate Authorization = "PortainerResourceControlUpdate"
|
||||
OperationPortainerResourceControlDelete Authorization = "PortainerResourceControlDelete"
|
||||
OperationPortainerRoleList Authorization = "PortainerRoleList"
|
||||
OperationPortainerRoleInspect Authorization = "PortainerRoleInspect"
|
||||
OperationPortainerRoleCreate Authorization = "PortainerRoleCreate"
|
||||
OperationPortainerRoleUpdate Authorization = "PortainerRoleUpdate"
|
||||
OperationPortainerRoleDelete Authorization = "PortainerRoleDelete"
|
||||
OperationPortainerScheduleList Authorization = "PortainerScheduleList"
|
||||
OperationPortainerScheduleInspect Authorization = "PortainerScheduleInspect"
|
||||
OperationPortainerScheduleFile Authorization = "PortainerScheduleFile"
|
||||
OperationPortainerScheduleTasks Authorization = "PortainerScheduleTasks"
|
||||
OperationPortainerScheduleCreate Authorization = "PortainerScheduleCreate"
|
||||
OperationPortainerScheduleUpdate Authorization = "PortainerScheduleUpdate"
|
||||
OperationPortainerScheduleDelete Authorization = "PortainerScheduleDelete"
|
||||
OperationPortainerSettingsInspect Authorization = "PortainerSettingsInspect"
|
||||
OperationPortainerSettingsUpdate Authorization = "PortainerSettingsUpdate"
|
||||
OperationPortainerSettingsLDAPCheck Authorization = "PortainerSettingsLDAPCheck"
|
||||
OperationPortainerStackList Authorization = "PortainerStackList"
|
||||
OperationPortainerStackInspect Authorization = "PortainerStackInspect"
|
||||
OperationPortainerStackFile Authorization = "PortainerStackFile"
|
||||
OperationPortainerStackCreate Authorization = "PortainerStackCreate"
|
||||
OperationPortainerStackMigrate Authorization = "PortainerStackMigrate"
|
||||
OperationPortainerStackUpdate Authorization = "PortainerStackUpdate"
|
||||
OperationPortainerStackDelete Authorization = "PortainerStackDelete"
|
||||
OperationPortainerTagList Authorization = "PortainerTagList"
|
||||
OperationPortainerTagCreate Authorization = "PortainerTagCreate"
|
||||
OperationPortainerTagDelete Authorization = "PortainerTagDelete"
|
||||
OperationPortainerTeamMembershipList Authorization = "PortainerTeamMembershipList"
|
||||
OperationPortainerTeamMembershipCreate Authorization = "PortainerTeamMembershipCreate"
|
||||
OperationPortainerTeamMembershipUpdate Authorization = "PortainerTeamMembershipUpdate"
|
||||
OperationPortainerTeamMembershipDelete Authorization = "PortainerTeamMembershipDelete"
|
||||
OperationPortainerTeamList Authorization = "PortainerTeamList"
|
||||
OperationPortainerTeamInspect Authorization = "PortainerTeamInspect"
|
||||
OperationPortainerTeamMemberships Authorization = "PortainerTeamMemberships"
|
||||
OperationPortainerTeamCreate Authorization = "PortainerTeamCreate"
|
||||
OperationPortainerTeamUpdate Authorization = "PortainerTeamUpdate"
|
||||
OperationPortainerTeamDelete Authorization = "PortainerTeamDelete"
|
||||
OperationPortainerTemplateList Authorization = "PortainerTemplateList"
|
||||
OperationPortainerTemplateInspect Authorization = "PortainerTemplateInspect"
|
||||
OperationPortainerTemplateCreate Authorization = "PortainerTemplateCreate"
|
||||
OperationPortainerTemplateUpdate Authorization = "PortainerTemplateUpdate"
|
||||
OperationPortainerTemplateDelete Authorization = "PortainerTemplateDelete"
|
||||
OperationPortainerUploadTLS Authorization = "PortainerUploadTLS"
|
||||
OperationPortainerUserList Authorization = "PortainerUserList"
|
||||
OperationPortainerUserInspect Authorization = "PortainerUserInspect"
|
||||
OperationPortainerUserMemberships Authorization = "PortainerUserMemberships"
|
||||
OperationPortainerUserCreate Authorization = "PortainerUserCreate"
|
||||
OperationPortainerUserUpdate Authorization = "PortainerUserUpdate"
|
||||
OperationPortainerUserUpdatePassword Authorization = "PortainerUserUpdatePassword"
|
||||
OperationPortainerUserDelete Authorization = "PortainerUserDelete"
|
||||
OperationPortainerWebsocketExec Authorization = "PortainerWebsocketExec"
|
||||
OperationPortainerWebhookList Authorization = "PortainerWebhookList"
|
||||
OperationPortainerWebhookCreate Authorization = "PortainerWebhookCreate"
|
||||
OperationPortainerWebhookDelete Authorization = "PortainerWebhookDelete"
|
||||
|
||||
OperationIntegrationStoridgeAdmin Authorization = "IntegrationStoridgeAdmin"
|
||||
OperationPortainerDockerHubInspect Authorization = "PortainerDockerHubInspect"
|
||||
OperationPortainerDockerHubUpdate Authorization = "PortainerDockerHubUpdate"
|
||||
OperationPortainerEndpointGroupCreate Authorization = "PortainerEndpointGroupCreate"
|
||||
OperationPortainerEndpointGroupList Authorization = "PortainerEndpointGroupList"
|
||||
OperationPortainerEndpointGroupDelete Authorization = "PortainerEndpointGroupDelete"
|
||||
OperationPortainerEndpointGroupInspect Authorization = "PortainerEndpointGroupInspect"
|
||||
OperationPortainerEndpointGroupUpdate Authorization = "PortainerEndpointGroupEdit"
|
||||
OperationPortainerEndpointGroupAccess Authorization = "PortainerEndpointGroupAccess "
|
||||
OperationPortainerEndpointList Authorization = "PortainerEndpointList"
|
||||
OperationPortainerEndpointInspect Authorization = "PortainerEndpointInspect"
|
||||
OperationPortainerEndpointCreate Authorization = "PortainerEndpointCreate"
|
||||
OperationPortainerEndpointJob Authorization = "PortainerEndpointJob"
|
||||
OperationPortainerEndpointSnapshots Authorization = "PortainerEndpointSnapshots"
|
||||
OperationPortainerEndpointSnapshot Authorization = "PortainerEndpointSnapshot"
|
||||
OperationPortainerEndpointUpdate Authorization = "PortainerEndpointUpdate"
|
||||
OperationPortainerEndpointUpdateAccess Authorization = "PortainerEndpointUpdateAccess"
|
||||
OperationPortainerEndpointDelete Authorization = "PortainerEndpointDelete"
|
||||
OperationPortainerExtensionList Authorization = "PortainerExtensionList"
|
||||
OperationPortainerExtensionInspect Authorization = "PortainerExtensionInspect"
|
||||
OperationPortainerExtensionCreate Authorization = "PortainerExtensionCreate"
|
||||
OperationPortainerExtensionUpdate Authorization = "PortainerExtensionUpdate"
|
||||
OperationPortainerExtensionDelete Authorization = "PortainerExtensionDelete"
|
||||
OperationPortainerMOTD Authorization = "PortainerMOTD"
|
||||
OperationPortainerRegistryList Authorization = "PortainerRegistryList"
|
||||
OperationPortainerRegistryInspect Authorization = "PortainerRegistryInspect"
|
||||
OperationPortainerRegistryCreate Authorization = "PortainerRegistryCreate"
|
||||
OperationPortainerRegistryConfigure Authorization = "PortainerRegistryConfigure"
|
||||
OperationPortainerRegistryUpdate Authorization = "PortainerRegistryUpdate"
|
||||
OperationPortainerRegistryUpdateAccess Authorization = "PortainerRegistryUpdateAccess"
|
||||
OperationPortainerRegistryDelete Authorization = "PortainerRegistryDelete"
|
||||
OperationPortainerResourceControlCreate Authorization = "PortainerResourceControlCreate"
|
||||
OperationPortainerResourceControlUpdate Authorization = "PortainerResourceControlUpdate"
|
||||
OperationPortainerResourceControlDelete Authorization = "PortainerResourceControlDelete"
|
||||
OperationPortainerRoleList Authorization = "PortainerRoleList"
|
||||
OperationPortainerRoleInspect Authorization = "PortainerRoleInspect"
|
||||
OperationPortainerRoleCreate Authorization = "PortainerRoleCreate"
|
||||
OperationPortainerRoleUpdate Authorization = "PortainerRoleUpdate"
|
||||
OperationPortainerRoleDelete Authorization = "PortainerRoleDelete"
|
||||
OperationPortainerScheduleList Authorization = "PortainerScheduleList"
|
||||
OperationPortainerScheduleInspect Authorization = "PortainerScheduleInspect"
|
||||
OperationPortainerScheduleFile Authorization = "PortainerScheduleFile"
|
||||
OperationPortainerScheduleTasks Authorization = "PortainerScheduleTasks"
|
||||
OperationPortainerScheduleCreate Authorization = "PortainerScheduleCreate"
|
||||
OperationPortainerScheduleUpdate Authorization = "PortainerScheduleUpdate"
|
||||
OperationPortainerScheduleDelete Authorization = "PortainerScheduleDelete"
|
||||
OperationPortainerSettingsInspect Authorization = "PortainerSettingsInspect"
|
||||
OperationPortainerSettingsUpdate Authorization = "PortainerSettingsUpdate"
|
||||
OperationPortainerSettingsLDAPCheck Authorization = "PortainerSettingsLDAPCheck"
|
||||
OperationPortainerStackList Authorization = "PortainerStackList"
|
||||
OperationPortainerStackInspect Authorization = "PortainerStackInspect"
|
||||
OperationPortainerStackFile Authorization = "PortainerStackFile"
|
||||
OperationPortainerStackCreate Authorization = "PortainerStackCreate"
|
||||
OperationPortainerStackMigrate Authorization = "PortainerStackMigrate"
|
||||
OperationPortainerStackUpdate Authorization = "PortainerStackUpdate"
|
||||
OperationPortainerStackDelete Authorization = "PortainerStackDelete"
|
||||
OperationPortainerTagList Authorization = "PortainerTagList"
|
||||
OperationPortainerTagCreate Authorization = "PortainerTagCreate"
|
||||
OperationPortainerTagDelete Authorization = "PortainerTagDelete"
|
||||
OperationPortainerTeamMembershipList Authorization = "PortainerTeamMembershipList"
|
||||
OperationPortainerTeamMembershipCreate Authorization = "PortainerTeamMembershipCreate"
|
||||
OperationPortainerTeamMembershipUpdate Authorization = "PortainerTeamMembershipUpdate"
|
||||
OperationPortainerTeamMembershipDelete Authorization = "PortainerTeamMembershipDelete"
|
||||
OperationPortainerTeamList Authorization = "PortainerTeamList"
|
||||
OperationPortainerTeamInspect Authorization = "PortainerTeamInspect"
|
||||
OperationPortainerTeamMemberships Authorization = "PortainerTeamMemberships"
|
||||
OperationPortainerTeamCreate Authorization = "PortainerTeamCreate"
|
||||
OperationPortainerTeamUpdate Authorization = "PortainerTeamUpdate"
|
||||
OperationPortainerTeamDelete Authorization = "PortainerTeamDelete"
|
||||
OperationPortainerTemplateList Authorization = "PortainerTemplateList"
|
||||
OperationPortainerTemplateInspect Authorization = "PortainerTemplateInspect"
|
||||
OperationPortainerTemplateCreate Authorization = "PortainerTemplateCreate"
|
||||
OperationPortainerTemplateUpdate Authorization = "PortainerTemplateUpdate"
|
||||
OperationPortainerTemplateDelete Authorization = "PortainerTemplateDelete"
|
||||
OperationPortainerUploadTLS Authorization = "PortainerUploadTLS"
|
||||
OperationPortainerUserList Authorization = "PortainerUserList"
|
||||
OperationPortainerUserInspect Authorization = "PortainerUserInspect"
|
||||
OperationPortainerUserMemberships Authorization = "PortainerUserMemberships"
|
||||
OperationPortainerUserCreate Authorization = "PortainerUserCreate"
|
||||
OperationPortainerUserUpdate Authorization = "PortainerUserUpdate"
|
||||
OperationPortainerUserUpdatePassword Authorization = "PortainerUserUpdatePassword"
|
||||
OperationPortainerUserDelete Authorization = "PortainerUserDelete"
|
||||
OperationPortainerWebsocketExec Authorization = "PortainerWebsocketExec"
|
||||
OperationPortainerWebhookList Authorization = "PortainerWebhookList"
|
||||
OperationPortainerWebhookCreate Authorization = "PortainerWebhookCreate"
|
||||
OperationPortainerWebhookDelete Authorization = "PortainerWebhookDelete"
|
||||
|
||||
OperationDockerUndefined Authorization = "DockerUndefined"
|
||||
OperationDockerAgentUndefined Authorization = "DockerAgentUndefined"
|
||||
OperationPortainerUndefined Authorization = "PortainerUndefined"
|
||||
|
||||
EndpointResourcesAccess Authorization = "EndpointResourcesAccess"
|
||||
|
||||
// Deprecated operations
|
||||
OperationPortainerEndpointExtensionAdd Authorization = "PortainerEndpointExtensionAdd"
|
||||
OperationPortainerEndpointExtensionRemove Authorization = "PortainerEndpointExtensionRemove"
|
||||
OperationIntegrationStoridgeAdmin Authorization = "IntegrationStoridgeAdmin"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -849,10 +849,6 @@ definitions:
|
|||
EdgeKey:
|
||||
description: The key which is used to map the agent to Portainer
|
||||
type: string
|
||||
Extensions:
|
||||
items:
|
||||
$ref: '#/definitions/portainer.EndpointExtension'
|
||||
type: array
|
||||
GroupId:
|
||||
description: Endpoint group identifier
|
||||
example: 1
|
||||
|
@ -926,13 +922,6 @@ definitions:
|
|||
additionalProperties:
|
||||
$ref: '#/definitions/portainer.Authorizations'
|
||||
type: object
|
||||
portainer.EndpointExtension:
|
||||
properties:
|
||||
Type:
|
||||
type: integer
|
||||
URL:
|
||||
type: string
|
||||
type: object
|
||||
portainer.EndpointGroup:
|
||||
properties:
|
||||
AuthorizedTeams:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue