const (
// TypeUnknown means that odo cannot tell its state
TypeUnknown = "Unknown"
// TypeNone means that it has not been pushed to the cluster *at all* in either deploy or dev
TypeNone = "None"
)
type BindableService struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
Kind string `json:"kind,omitempty"`
APIVersion string `json:"apiVersion,omitempty"`
Service string `json:"service,omitempty"`
}
type ClusterClientInfo struct {
Version string `json:"version,omitempty"`
}
type ClusterInfo struct {
ServerURL string `json:"serverURL,omitempty"`
Kubernetes *ClusterClientInfo `json:"kubernetes,omitempty"`
OpenShift *ClusterClientInfo `json:"openshift,omitempty"`
}
Component describes the state of a devfile component
type Component struct {
DevfilePath string `json:"devfilePath,omitempty"`
DevfileData *DevfileData `json:"devfileData,omitempty"`
DevControlPlane []DevControlPlane `json:"devControlPlane,omitempty"`
DevForwardedPorts []ForwardedPort `json:"devForwardedPorts,omitempty"`
// RunningIn is the overall running mode map of the component;
// this is computing as a merge of RunningOn (all the different running modes
// for each platform the component is running on).
RunningIn RunningModes `json:"runningIn"`
// RunningOn represents the map of running modes for each platform the component is running on.
// The key is the platform, either cluster or podman.
RunningOn map[string]RunningModes `json:"runningOn,omitempty"`
Ingresses []ConnectionData `json:"ingresses,omitempty"`
Routes []ConnectionData `json:"routes,omitempty"`
ManagedBy string `json:"managedBy"`
}
ComponentAbstract represents a component as part of a list of components
type ComponentAbstract struct {
Name string `json:"name"`
ManagedBy string `json:"managedBy"`
ManagedByVersion string `json:"managedByVersion"`
// RunningIn are the modes the component is running in, among Dev and Deploy
RunningIn RunningModes `json:"runningIn"`
Type string `json:"projectType"`
// RunningOn is the platform the component is running on, either cluster or podman
//
// Deprecated: This field is deprecated and will be replaced by Platform
RunningOn string `json:"runningOn,omitempty"`
// Platform is the platform the component is running on, either cluster or podman
Platform string `json:"platform,omitempty"`
}
type ConnectionData struct {
Name string `json:"name"`
Rules []Rules `json:"rules,omitempty"`
}
DetectionResult indicates the result of an analysis against a given project. Analysis might be performed via the Alizer backend or non-interactively via the Flags backend. It contains detection analysis information such as the location of a devfile, either in a devfile registry or using a path or a URI or the application ports if any.
type DetectionResult struct {
// name of the Devfile in Devfile registry (required if DevfilePath is not defined)
Devfile string `json:"devfile,omitempty"`
// name of the devfile registry (as configured in odo registry). It can be used in combination with Devfile, but not with DevfilePath (optional)
DevfileRegistry string `json:"devfileRegistry,omitempty"`
// path to a devfile. This is alternative to using devfile from Devfile registry. It can be local filesystem path or http(s) URL (required if Devfile is not defined)
DevfilePath string `json:"devfilePath,omitempty"`
// ApplicationPorts represents the list of ports detected
ApplicationPorts []int `json:"ports,omitempty"`
DevfileVersion string `json:"devfileVersion,omitempty"`
// Name represents the project/application name as detected by alizer
Name string `json:"name,omitempty"`
// Architectures represent the architectures with which the Devfile must be compatible with.
Architectures []string `json:"architectures,omitempty"`
}
type DevControlPlane struct {
Platform string `json:"platform,omitempty"`
LocalPort int `json:"localPort"`
APIServerPath string `json:"apiServerPath"`
WebInterfacePath string `json:"webInterfacePath,omitempty"`
}
func (o DevControlPlane) GetPlatform() string
type DevfileCommand struct {
Name string `json:"name,omitempty"`
Type DevfileCommandType `json:"type,omitempty"`
Group DevfileCommandGroup `json:"group,omitempty"`
IsDefault *bool `json:"isDefault,omitempty"`
CommandLine string `json:"commandLine,omitempty"`
Component string `json:"component,omitempty"`
ComponentType DevfileComponentType `json:"componentType,omitempty"`
ImageName string `json:"imageName,omitempty"`
}
type DevfileCommandGroup string
const (
BuildCommandGroup DevfileCommandGroup = "build"
RunCommandGroup DevfileCommandGroup = "run"
TestCommandGroup DevfileCommandGroup = "test"
DebugCommandGroup DevfileCommandGroup = "debug"
DeployCommandGroup DevfileCommandGroup = "deploy"
)
type DevfileCommandType string
const (
ExecCommandType DevfileCommandType = "exec"
ApplyCommandType DevfileCommandType = "apply"
CompositeCommandType DevfileCommandType = "composite"
)
type DevfileComponentType string
const (
ImageComponentType DevfileComponentType = "image"
ContainerComponentType DevfileComponentType = "container"
KubernetesComponentType DevfileComponentType = "kubernetes"
OpenshiftComponentType DevfileComponentType = "openshift"
)
DevfileData describes a devfile content
type DevfileData struct {
Devfile data.DevfileData `json:"devfile"`
Commands []DevfileCommand `json:"commands,omitempty"`
SupportedOdoFeatures *SupportedOdoFeatures `json:"supportedOdoFeatures,omitempty"`
}
func GetDevfileData(devfileObj parser.DevfileObj) (*DevfileData, error)
DevfileStack is the main struct for devfile stack
type DevfileStack struct {
Name string `json:"name"`
DisplayName string `json:"displayName"`
Description string `json:"description"`
Registry Registry `json:"registry"`
Language string `json:"language"`
Tags []string `json:"tags"`
ProjectType string `json:"projectType"`
// DefaultVersion is the default version. Marshalled as "version" for backward compatibility.
// Deprecated. Use Versions instead.
DefaultVersion string `json:"version"`
Versions []DevfileStackVersion `json:"versions,omitempty"`
// DefaultStarterProjects is the list of starter projects for the default stack.
// Marshalled as "starterProjects" for backward compatibility.
// Deprecated. Use Versions.StarterProjects instead.
DefaultStarterProjects []string `json:"starterProjects"`
DevfileData *DevfileData `json:"devfileData,omitempty"`
Architectures []string `json:"architectures,omitempty"`
}
type DevfileStackVersion struct {
Version string `json:"version,omitempty"`
IsDefault bool `json:"isDefault"`
SchemaVersion string `json:"schemaVersion,omitempty"`
StarterProjects []string `json:"starterProjects"`
CommandGroups map[schema.CommandGroupKind]bool `json:"commandGroups"`
}
type ForwardedPort struct {
Platform string `json:"platform,omitempty"`
ContainerName string `json:"containerName"`
PortName string `json:"portName"`
IsDebug bool `json:"isDebug"`
LocalAddress string `json:"localAddress"`
LocalPort int `json:"localPort"`
ContainerPort int `json:"containerPort"`
Exposure string `json:"exposure,omitempty"`
Protocol string `json:"protocol,omitempty"`
}
func (o ForwardedPort) GetPlatform() string
GenericError for machine readable output error messages
type GenericError struct {
Message string `json:"message"`
}
type OdoVersion struct {
Version string `json:"version"`
GitCommit string `json:"gitCommit"`
Cluster *ClusterInfo `json:"cluster,omitempty"`
Podman *PodmanInfo `json:"podman,omitempty"`
}
type PodmanClientInfo struct {
Version string `json:"version,omitempty"`
}
type PodmanInfo struct {
Client *PodmanClientInfo `json:"client,omitempty"`
}
type PreferenceItem struct {
Name string `json:"name"`
Value interface{} `json:"value"` // The value set by the user, this will be nil if the user hasn't set it
Default interface{} `json:"default"` // default value of the preference if the user hasn't set the value
Type string `json:"type"` // the type of the preference, possible values int, string, bool
Description string `json:"description"` // The description of the preference
}
type PreferenceList struct {
Items []PreferenceItem `json:"items,omitempty"`
}
type PreferenceView struct {
Preferences []PreferenceItem `json:"preferences,omitempty"`
Registries []Registry `json:"registries,omitempty"`
}
type Project struct {
Name string `json:"name,omitempty"`
Active bool `json:"active"`
}
Registry is the main struct of devfile registry
type Registry struct {
Name string `json:"name"`
URL string `json:"url"`
Secure bool `json:"secure"`
// Priority of the registry for listing purposes. The higher the number, the higher the priority
Priority int `json:"-"`
}
ResourcesList is the result of the `odo list` command
type ResourcesList struct {
// ComponentInDevfile is the component name present in the local Devfile when `odo list` is executed, or empty
ComponentInDevfile string `json:"componentInDevfile,omitempty"`
// Components is a list of components deployed in the cluster or present in the local Devfile
Components []ComponentAbstract `json:"components,omitempty"`
// BindingsInDevfile is the list of binding names present in the local devfile
BindingsInDevfile []string `json:"bindingsInDevfile,omitempty"`
// Bindings is a list of bindings in the local devfile and/or cluster
Bindings []ServiceBinding `json:"bindings,omitempty"`
// BindableServices is the list of bindable services that could be bound to the component
BindableServices []BindableService `json:"bindableServices,omitempty"`
// Namespaces is the list of namespces available for the user on the cluster
Namespaces []Project `json:"namespaces,omitempty"`
}
type Rules struct {
Host string `json:"host"`
Paths []string `json:"paths"`
}
type RunningMode string
const (
RunningModeDev RunningMode = "dev"
RunningModeDeploy RunningMode = "deploy"
)
type RunningModes map[RunningMode]bool
func MergeRunningModes(m map[string]RunningModes) RunningModes
MergeRunningModes returns a new RunningModes map which is the result of merging all the running modes from each platform, from the map specified.
func NewRunningModes() RunningModes
func (o RunningModes) AddRunningMode(mode RunningMode)
AddRunningMode sets a running mode as true
func (o RunningModes) String() string
ServiceBinding describes a service binding, from group binding.operators.coreos.com/v1alpha1 or servicebinding.io/v1alpha3
type ServiceBinding struct {
Name string `json:"name"`
Spec ServiceBindingSpec `json:"spec"`
Status *ServiceBindingStatus `json:"status,omitempty"`
}
type ServiceBindingReference struct {
Kind string `json:"kind,omitempty"`
Resource string `json:"resource,omitempty"`
Namespace string `json:"namespace,omitempty"`
Name string `json:"name,omitempty"`
APIVersion string `json:"apiVersion,omitempty"`
}
type ServiceBindingSpec struct {
Application ServiceBindingReference `json:"application"`
Services []ServiceBindingReference `json:"services"`
DetectBindingResources bool `json:"detectBindingResources"`
BindAsFiles bool `json:"bindAsFiles"`
NamingStrategy string `json:"namingStrategy,omitempty"`
}
type ServiceBindingStatus struct {
BindingFiles []string `json:"bindingFiles,omitempty"`
BindingEnvVars []string `json:"bindingEnvVars,omitempty"`
RunningIn RunningModes `json:"runningIn,omitempty"`
}
SupportedOdoFeatures indicates the support of high-level (odo) features by a devfile component
type SupportedOdoFeatures struct {
Dev bool `json:"dev"`
Deploy bool `json:"deploy"`
Debug bool `json:"debug"`
}