Documentation
¶
Index ¶
Constants ¶
const ( // ContainerName name of the service container ContainerName = "oscar-container" // VolumeName name of the volume for mounting the OSCAR PVC VolumeName = "oscar-volume" // VolumePath path to mount the OSCAR PVC VolumePath = "/oscar/bin" // ConfigVolumeName name of the volume for mounting the service configMap ConfigVolumeName = "oscar-config" // ConfigPath path to mount the service configMap ConfigPath = "/oscar/config" // FDLFileName name of the FDL file to be stored in the service's configMap FDLFileName = "function_config.yaml" // ScriptFileName name of the user script file to be stored in the service's configMap ScriptFileName = "script.sh" // PVCName name of the OSCAR PVC PVCName = "oscar-pvc" // WatchdogName name of the OpenFaaS watchdog binary WatchdogName = "fwatchdog" // WatchdogProcess name of the environment variable used by the watchdog to handle requests WatchdogProcess = "fprocess" // SupervisorName name of the FaaS Supervisor binary SupervisorName = "supervisor" // ServiceLabel label for deploying services in all backs ServiceLabel = "oscar_service" // EventVariable name used by the environment variable where events are stored EventVariable = "EVENT" // OpenfaasZeroScalingLabel label to enable zero scaling in OpenFaaS functions OpenfaasZeroScalingLabel = "com.openfaas.scale.zero" )
const ( // DefaultProvider string identifier for the default StorageProvider DefaultProvider = "default" // MinIOName string representing the MinIO provider name MinIOName = "minio" // S3Name string representing the S3 provider name S3Name = "s3" // OnedataName string representing the Onedata provider name OnedataName = "onedata" // ProviderSeparator separator character used to split provider's name and identifier ProviderSeparator = "." )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// MinIOProvider access info
MinIOProvider *MinIOProvider `json:"minio_provider"`
// Basic auth username
Username string `json:"-"`
// Basic auth password
Password string `json:"-"`
// Kubernetes name for the deployment and service (default: oscar)
Name string `json:"name"`
// Kubernetes namespace for the deployment and service (default: oscar)
Namespace string `json:"namespace"`
// Kubernetes namespace for services and jobs (default: oscar-svc)
ServicesNamespace string `json:"services_namespace"`
// Port used for the ClusterIP k8s service (default: 8080)
ServicePort int `json:"-"`
// Serverless framework used to deploy services (Openfaas | Knative)
// If not defined only async invokations allowed (Using KubeBackend)
ServerlessBackend string `json:"serverless_backend,omitempty"`
// OpenfaasNamespace namespace where the OpenFaaS gateway is deployed
OpenfaasNamespace string `json:"-"`
// OpenfaasPort service port where the OpenFaaS gateway is exposed
OpenfaasPort int `json:"-"`
// HTTP timeout for reading the payload (default: 300)
ReadTimeout time.Duration `json:"-"`
// HTTP timeout for writing the response (default: 300)
WriteTimeout time.Duration `json:"-"`
}
Config stores the configuration for the OSCAR server
func ReadConfig ¶
ReadConfig reads environment variables to create the OSCAR server configuration
type Info ¶
type Info struct {
Version string `json:"version"`
GitCommit string `json:"git_commit"`
Architecture string `json:"architecture"`
KubeVersion string `json:"kubernetes_version"`
ServerlessBackendInfo *ServerlessBackendInfo `json:"serverless_backend,omitempty"`
}
Info represents the system information to be exposed
type JobInfo ¶
type JobInfo struct {
Status string `json:"status"`
CreationTime *metav1.Time `json:"creation_time,omitempty"`
StartTime *metav1.Time `json:"start_time,omitempty"`
FinishTime *metav1.Time `json:"finish_time,omitempty"`
}
JobInfo details the current status of a service's job
type MinIOProvider ¶
type MinIOProvider struct {
Endpoint string `json:"endpoint"`
Verify bool `json:"verify"`
AccessKey string `json:"access_key"`
SecretKey string `json:"secret_key"`
Region string `json:"region"`
}
MinIOProvider stores the credentials of the MinIO storage provider
func (MinIOProvider) GetS3Client ¶
func (minIOProvider MinIOProvider) GetS3Client() *s3.S3
GetS3Client creates a new S3 Client from a MinIOProvider
type OnedataProvider ¶
type OnedataProvider struct {
OneproviderHost string `json:"oneprovider_host"`
Token string `json:"token"`
Space string `json:"space"`
}
OnedataProvider stores the credentials of the Onedata storage provider
func (OnedataProvider) GetCDMIClient ¶
func (onedataProvider OnedataProvider) GetCDMIClient() *cdmi.Client
GetCDMIClient creates a new CDMI Client from a OnedataProvider
type S3Provider ¶
type S3Provider struct {
AccessKey string `json:"access_key"`
SecretKey string `json:"secret_key"`
Region string `json:"region"`
}
S3Provider stores the credentials of the AWS S3 storage provider
func (S3Provider) GetS3Client ¶
func (s3Provider S3Provider) GetS3Client() *s3.S3
GetS3Client creates a new S3 Client from a S3Provider
type ServerlessBackend ¶
type ServerlessBackend interface {
GetInfo() *ServerlessBackendInfo
ListServices() ([]*Service, error)
CreateService(service Service) error
ReadService(name string) (*Service, error)
UpdateService(service Service) error
DeleteService(name string) error
}
ServerlessBackend define an interface for OSCAR's backends
type ServerlessBackendInfo ¶
ServerlessBackendInfo shows the name and version of the underlying serverless backend
type Service ¶
type Service struct {
// The name of the service
Name string `json:"name" binding:"required,max=39,min=1"`
// Memory limit for the service following the kubernetes format
// https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
// Optional. (default: 256Mi)
Memory string `json:"memory"`
// CPU limit for the service following the kubernetes format
// https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
// Optional. (default: 0.2)
CPU string `json:"cpu"`
// Log level for the FaaS Supervisor
// Optional. (default: INFO)
LogLevel string `json:"log_level"`
// Docker image for the service
Image string `json:"image" binding:"required"`
// StorageIOConfig slices with the input and ouput service configuration
// Optional
Input []StorageIOConfig `json:"input"`
Output []StorageIOConfig `json:"output"`
// The user script to execute when the service is invoked
Script string `json:"script,omitempty" binding:"required"`
// The user-defined environment variables assigned to the service
// Optional
Environment struct {
Vars map[string]string `json:"Variables"`
} `json:"environment"`
// Configuration for the storage providers used by the service
// Optional. (default: MinIOProvider["default"] with the server's config credentials)
StorageProviders *StorageProviders `json:"storage_providers,omitempty"`
}
Service represents an OSCAR service following the SCAR Function Definition Language
func (*Service) GetMinIOWebhookARN ¶
GetMinIOWebhookARN returns the MinIO's notify_webhook ARN for the specified function
type StorageIOConfig ¶
type StorageIOConfig struct {
// Provider reference to the provider's name and identifier specified in StorageProviders
// The provider's name is separated from the ID by a point (e.g. "minio.myidentifier")
Provider string `json:"storage_provider"`
Path string `json:"path"`
Suffix []string `json:"suffix,omitempty"`
Prefix []string `json:"prefix,omitempty"`
}
StorageIOConfig provides the storage input/output configuration for services
type StorageProviders ¶
type StorageProviders struct {
S3 map[string]*S3Provider `json:"s3,omitempty"`
MinIO map[string]*MinIOProvider `json:"minio,omitempty"`
Onedata map[string]*OnedataProvider `json:"onedata,omitempty"`
}
StorageProviders stores the credentials of all supported storage providers
type SyncBackend ¶
type SyncBackend interface {
ServerlessBackend
GetProxyDirector(serviceName string) func(req *http.Request)
}
SyncBackend define an interface for serverless backends that allow sync invocations