Documentation ¶
Index ¶
- Constants
- Variables
- func ConfigureDefaultHandlers(ctx context.Context, rootRouter chi.Router, rootScopePath string, ...) error
- func CreateHandler(ctx context.Context, resourceType string, operationMethod v1.OperationMethod, ...) (http.HandlerFunc, error)
- func HandleError(ctx context.Context, w http.ResponseWriter, req *http.Request, err error)
- func HandlerForController(controller ctrl.Controller, operationType v1.OperationType) http.HandlerFunc
- func New(ctx context.Context, options Options) (*http.Server, error)
- func NewSubrouter(parent chi.Router, path string, middlewares ...func(http.Handler) http.Handler) chi.Router
- func RegisterHandler(ctx context.Context, opts HandlerOptions, ctrlOpts ctrl.Options) error
- type ControllerFactoryFunc
- type HandlerOptions
- type Options
- type Service
Constants ¶
const ( // APIVersion is a query string for the API version of Radius resource provider. APIVersionParam = "api-version" // CatchAllPath is the path for the catch-all route. CatchAllPath = "/*" )
Variables ¶
var (
ErrInvalidOperationTypeOption = errors.New("the resource type and method must be specified if the operation type is not specified")
)
Functions ¶
func ConfigureDefaultHandlers ¶
func ConfigureDefaultHandlers( ctx context.Context, rootRouter chi.Router, rootScopePath string, isAzureProvider bool, providerNamespace string, operationCtrlFactory ControllerFactoryFunc, ctrlOpts ctrl.Options) error
ConfigureDefaultHandlers registers handlers for the default operations such as getting operationStatuses and operationResults, and updating a subscription lifecycle. It returns an error if any of the handler registrations fail.
func CreateHandler ¶ added in v0.39.0
func CreateHandler(ctx context.Context, resourceType string, operationMethod v1.OperationMethod, opts ctrl.Options, factory ControllerFactoryFunc) (http.HandlerFunc, error)
CreateHandler creates an http.Handler for the given resource type and operation method.
func HandleError ¶
HandleError handles unhandled errors from frontend controller and creates internal server error response based on the error type.
func HandlerForController ¶
func HandlerForController(controller ctrl.Controller, operationType v1.OperationType) http.HandlerFunc
HandlerForController creates a http.HandlerFunc function that runs resource provider frontend controller, renders a http response from the returned rest.Response, and handles the error as a default internal error if this controller returns error.
func New ¶
New creates a frontend server that can listen on the provided address and serve requests - it creates an HTTP server with a router, configures the router with the given options, adds the default middlewares for logging, authentication, and service context, and then returns the server.
func NewSubrouter ¶
func NewSubrouter(parent chi.Router, path string, middlewares ...func(http.Handler) http.Handler) chi.Router
NewSubrouter creates a new subrouter and mounts it on the parent router with the given middlewares.
func RegisterHandler ¶
RegisterHandler registers a handler for the given resource type and method. This function should only be used for controllers that process a single resource type.
Types ¶
type ControllerFactoryFunc ¶
type ControllerFactoryFunc func(ctrl.Options) (ctrl.Controller, error)
type HandlerOptions ¶
type HandlerOptions struct { // ParentRouter is the router to register the handler with. ParentRouter chi.Router // Path is the matched pattern for ParentRouter handler. This is optional and the default value is "/". Path string // ResourceType is the resource type of the operation. May be blank if Operation is specified. // // If specified the ResourceType will be used to filter the StorageClient. ResourceType string // Method is the method of the operation. May be blank if Operation is specified. // // If the specified the Method will be used to filter by HTTP method. Method v1.OperationMethod // OperationType designates the operation and should be unique per handler. May be blank if ResourceType and Method are specified. // // The OperationType is used in logs and other mechanisms to identify the kind of operation being performed. // If the OperationType is not specified, it will be inferred from that ResourceType and Method. OperationType *v1.OperationType // ControllerFactory is a function invoked to create the controller. Will be invoked once during server startup. ControllerFactory ControllerFactoryFunc // Middlewares are the middlewares to apply to the handler. Middlewares []func(http.Handler) http.Handler }
HandlerOptions represents a controller to be registered with the server.
Each HandlerOptions should represent either a resource-type-scoped operation (e.g. GET on an `Applications.Core/controllers` resource) or a more general operation that works with multiple types of resources (e.g. PUT on any type of AWS resource): - Set ResourceType for operations that are scoped to a resource type. - Set OperationType for general operations.
In the controller options passed to the controller factory:
- When ResourceType is set, the StorageClient will be configured to use the resource type. - When OperationType is set, the StorageClient will be generic and not filtered to a specific resource type.
type Options ¶
type Options struct { ServiceName string Location string Address string PathBase string EnableArmAuth bool Configure func(chi.Router) error ArmCertMgr *authentication.ArmCertManager }
type Service ¶
type Service struct { // ProviderName is the name of provider namespace. ProviderName string // Options is the server hosting options. Options hostoptions.HostOptions // StorageProvider is the provider of storage client. StorageProvider dataprovider.DataStorageProvider // OperationStatusManager is the manager of the operation status. OperationStatusManager manager.StatusManager // ARMCertManager is the certificate manager of client cert authentication. ARMCertManager *authentication.ArmCertManager // KubeClient is the Kubernetes controller runtime client. KubeClient controller_runtime.Client }
Service is the base worker service implementation to initialize and start web service.