v1alpha1

package
v0.2.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2022 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the mailhog v1alpha1 API group

+kubebuilder:object:generate=true +groupName=mailhog.operators.patrick.mx

Index

Constants

View Source
const (
	// MemoryStorage incoming mails will be stored in process memory
	MemoryStorage StorageSetting = "memory"

	// MaildirStorage incoming mails will be stored in a folder
	MaildirStorage StorageSetting = "maildir"

	// MongoDBStorage incoming mails will be stored in a mongodb database
	MongoDBStorage StorageSetting = "mongodb"

	// RouteTrafficInlet an openshift route will be created to allow gui/api access
	RouteTrafficInlet TrafficInletResource = "route"

	// NoTrafficInlet no external access to the gui/api will be provided
	NoTrafficInlet TrafficInletResource = "none"

	// IngressTrafficInlet a k8s ingress will be created for gui/api access
	IngressTrafficInlet TrafficInletResource = "ingress"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "mailhog.operators.patrick.mx", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type AffinitySpec added in v0.1.8

type AffinitySpec struct {
	// PodAffinity is used to get placed together with certain pods
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pod Affinity",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:podAffinity"}
	PodAffinity *corev1.PodAffinity `json:"podAffinity,omitempty"`

	// PodAffinity is used to get placed apart from certain pods
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Pod Anti Affinity",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:podAntiAffinity"}
	PodAntiAffinity *corev1.PodAntiAffinity `json:"podAntiAffinity,omitempty"`

	// NodeAffinity configures which nodes are preferred
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Node Affinity",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:nodeAffinity"}
	NodeAffinity *corev1.NodeAffinity `json:"nodeAffinity,omitempty"`
}

AffinitySpec offers pod placement configuration

func (*AffinitySpec) DeepCopy added in v0.1.8

func (in *AffinitySpec) DeepCopy() *AffinitySpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AffinitySpec.

func (*AffinitySpec) DeepCopyInto added in v0.1.8

func (in *AffinitySpec) DeepCopyInto(out *AffinitySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type IngressSpec added in v0.2.0

type IngressSpec struct {
	// Class will set the kubernetes.io/ingress.class of created k8s ingresses
	// leaving empty will use the default class
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Ingress Class",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:webTrafficInlet:ingress"}
	Class string `json:"class,omitempty"`

	// Host used for mailhog's ingress rule
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Hostname",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:webTrafficInlet:ingress"}
	Host string `json:"ingressClass,omitempty"`

	// TlsSecret which will be used for this ingress
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="TLS Secret",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:webTrafficInlet:ingress"}
	TlsSecret string `json:"tlsSecret,omitempty"`
}

IngressSpec allows for k8s ingress related configuration

func (*IngressSpec) DeepCopy added in v0.2.0

func (in *IngressSpec) DeepCopy() *IngressSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressSpec.

func (*IngressSpec) DeepCopyInto added in v0.2.0

func (in *IngressSpec) DeepCopyInto(out *IngressSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogFilesSpec added in v0.1.2

type MailhogFilesSpec struct {
	// SmtpUpstreams Intercepted emails can be forwarded to upstreams via the UI
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="SMTP Upstreams for release"
	SmtpUpstreams []MailhogUpstreamSpec `json:"smtpUpstreams,omitempty"`

	// WebUsers If WebUsers are defined, UI/API Access will be protected with basic auth
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="HTTP Basic auth user restrictions"
	WebUsers []MailhogWebUserSpec `json:"webUsers,omitempty"`
}

MailhogFilesSpec is used to define settings that need to be passed as file (in a configmap)

func (*MailhogFilesSpec) DeepCopy added in v0.1.2

func (in *MailhogFilesSpec) DeepCopy() *MailhogFilesSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogFilesSpec.

func (*MailhogFilesSpec) DeepCopyInto added in v0.1.2

func (in *MailhogFilesSpec) DeepCopyInto(out *MailhogFilesSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogInstance

type MailhogInstance struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec MailhogInstanceSpec `json:"spec,omitempty"`

	// Status last observed status
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Status MailhogInstanceStatus `json:"status,omitempty"`
}

MailhogInstance is the Schema for the mailhoginstances API

+kubebuilder:object:root=true +kubebuilder:printcolumn:name="Image",type=string,JSONPath=`.spec.image` +kubebuilder:printcolumn:name="Replicas",type=integer,JSONPath=`.spec.replicas` +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" +kubebuilder:subresource:status +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.podCount,selectorpath=.status.labelSelector +operator-sdk:csv:customresourcedefinitions:displayName="Mailhog Instance" +operator-sdk:csv:customresourcedefinitions:resources={{Service,v1},{Deployment,v1},{Route,v1},{ConfigMap,v1},{Ingress,v1}}

func (*MailhogInstance) DeepCopy

func (in *MailhogInstance) DeepCopy() *MailhogInstance

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogInstance.

func (*MailhogInstance) DeepCopyInto

func (in *MailhogInstance) DeepCopyInto(out *MailhogInstance)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MailhogInstance) DeepCopyObject

func (in *MailhogInstance) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MailhogInstanceList

type MailhogInstanceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MailhogInstance `json:"items"`
}

MailhogInstanceList contains a list of MailhogInstance

func (*MailhogInstanceList) DeepCopy

func (in *MailhogInstanceList) DeepCopy() *MailhogInstanceList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogInstanceList.

func (*MailhogInstanceList) DeepCopyInto

func (in *MailhogInstanceList) DeepCopyInto(out *MailhogInstanceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MailhogInstanceList) DeepCopyObject

func (in *MailhogInstanceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MailhogInstanceSettingsSpec

type MailhogInstanceSettingsSpec struct {
	// Hostname is the hostname for smtp ehlo/helo
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:Format=hostname
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="SMTP Hostname",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Hostname string `json:"hostname,omitempty"`

	// CorsOrigin if set, this value is added into the Access-Control-Allow-Origin header returned by the API
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Web CORS AllowOrigin",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	CorsOrigin string `json:"corsOrigin,omitempty"`

	// Storage which storage backend to use, eg memory
	//
	//+kubebuilder:validation:Enum=memory;maildir;mongodb
	//+kubebuilder:validation:Optional
	//+kubebuilder:default:="memory"
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Mail Storage Type",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:memory","urn:alm:descriptor:com.tectonic.ui:select:maildir","urn:alm:descriptor:com.tectonic.ui:select:mongodb"}
	Storage StorageSetting `json:"storage,omitempty"`

	// StorageMongoDb are only used when storage is set to mongodb
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="MongoDB Storage Settings",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.storage:mongodb"}
	StorageMongoDb MailhogStorageMongoDbSpec `json:"storageMongoDb,omitempty"`

	// StorageMaildir is only used when storage is set to maildir
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Maildir Storage Settings",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.storage:maildir"}
	StorageMaildir MailhogStorageMaildirSpec `json:"storageMaildir,omitempty"`

	// Files that configure more in-depth settings that require an additional configmap
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Mailhog Config Files"
	Files *MailhogFilesSpec `json:"files,omitempty"`

	// Resources allows to override the default resources of the created pods
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Resources reservations and limits",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:resourceRequirements"}
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`

	// Affinity allows to override the podtemplates affinity settings
	// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Affinity Settings"
	Affinity *AffinitySpec `json:"affinity,omitempty"`

	// Jim is the chaos monkey
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Jim / ChaosMonkey Config"
	Jim MailhogJimSpec `json:"jim,omitempty"`

	// WebPath context root under which web resources are served (without leading or trailing slashes), e.g. 'mailhog'
	// empty = no context root = serve all web resources under "/"
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Web ContextRoot",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	WebPath string `json:"webPath,omitempty"`

	// Ingress allows for k8s ingress related configuration
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Ingress Settings",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:fieldDependency:webTrafficInlet:ingress"}
	Ingress IngressSpec `json:"ingress,omitempty"`
}

MailhogInstanceSettingsSpec are settings related to the mailhog instance

func (*MailhogInstanceSettingsSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogInstanceSettingsSpec.

func (*MailhogInstanceSettingsSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogInstanceSpec

type MailhogInstanceSpec struct {
	// Image is the mailhog image to be used
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=4
	//+kubebuilder:default:="mailhog/mailhog:latest"
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Mailhog Image",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Image string `json:"image,omitempty"`

	// Replicas is the count of pods to create
	//
	//+kubebuilder:validation:Minimum=0
	//+kubebuilder:validation:Maximum=10
	//+kubebuilder:validation:Required
	//+kubebuilder:default:=1
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Number of pods",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:podCount"}
	Replicas int32 `json:"replicas,omitempty"`

	// Settings are mailhog configuration options, see https://github.com/mailhog/MailHog/blob/master/docs/CONFIG.md
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:default:={storage:"memory"}
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Advanced Settings"
	Settings MailhogInstanceSettingsSpec `json:"settings,omitempty"`

	// WebTrafficInlet defines how the webinterface is exposed
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:default:="none"
	//+kubebuilder:validation:Enum=none;route;ingress
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Expose Mailhog with",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:route","urn:alm:descriptor:com.tectonic.ui:select:none","urn:alm:descriptor:com.tectonic.ui:select:ingress"}
	WebTrafficInlet TrafficInletResource `json:"webTrafficInlet,omitempty"`
}

MailhogInstanceSpec defines the desired state of MailhogInstance

func (*MailhogInstanceSpec) DeepCopy

func (in *MailhogInstanceSpec) DeepCopy() *MailhogInstanceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogInstanceSpec.

func (*MailhogInstanceSpec) DeepCopyInto

func (in *MailhogInstanceSpec) DeepCopyInto(out *MailhogInstanceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogInstanceStatus

type MailhogInstanceStatus struct {
	// Pods all the podnames owned by the cr
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Pod Status",xDescriptors="urn:alm:descriptor:com.tectonic.ui:podStatuses"
	Pods PodStatus `json:"pods,omitempty"`

	// PodCount is the amount of last seen pods belonging to this cr
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Pod Count",xDescriptors="urn:alm:descriptor:com.tectonic.ui:podCount"
	PodCount int `json:"podCount,omitempty"`

	// ReadyPodCount is the amount of pods last seen ready
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Ready Pod Count"
	ReadyPodCount int `json:"readyPodCount,omitempty"`

	// LabelSelector is the labelselector which can be used by HPA
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Label Selector"
	LabelSelector string `json:"labelSelector,omitempty"`

	// Error is used to signal illegal CR specs
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Error Message"
	Error string `json:"error,omitempty"`

	// RouteURL will be set to the path under which mailhog is reachable if openshift Route is enabled
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="Mailhog Web UI",xDescriptors="urn:alm:descriptor:org.w3:link"
	RouteURL string `json:"routeUrl,omitempty"`
}

MailhogInstanceStatus defines the observed state of MailhogInstance

func (*MailhogInstanceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogInstanceStatus.

func (*MailhogInstanceStatus) DeepCopyInto

func (in *MailhogInstanceStatus) DeepCopyInto(out *MailhogInstanceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogJimSpec added in v0.1.2

type MailhogJimSpec struct {
	// Invite set to true activates jim using the default values (see mh doc)
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:default:=false
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Activate Chaosmonkey",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:booleanSwitch"}
	Invite bool `json:"invite,omitempty"`

	// Disconnect Chance of randomly disconnecting a session (float, eg "0.005")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Connection Disconnect Chance",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	Disconnect string `json:"disconnect,omitempty"`

	// Accept Chance of accepting an incoming connection (float, eg "0.99")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Connection Accept Chance",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	Accept string `json:"accept,omitempty"`

	// LinkspeedAffect Chance of applying a rate limit (float, eg "0.1")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Connection Slow LinkSpeed Chance",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	LinkspeedAffect string `json:"linkspeedAffect,omitempty"`

	// LinkspeedMin Minimum link speed (in bytes per second, eg "1024")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Connection Slow LinkSpeed Minimum bytes/sec",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	LinkspeedMin string `json:"linkspeedMin,omitempty"`

	// LinkspeedMax Maximum link speed (in bytes per second, eg "10240")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Connection Slow LinkSpeed Maximum bytes/sec",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	LinkspeedMax string `json:"linkspeedMax,omitempty"`

	// RejectSender Chance of rejecting a MAIL FROM command (float, eg "0.05")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Chance the sender is rejected",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	RejectSender string `json:"rejectSender,omitempty"`

	// RejectRecipient Chance of rejecting a RCPT TO command (float, eg "0.05")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Chance the recipient is rejected",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	RejectRecipient string `json:"rejectRecipient,omitempty"`

	// RejectAuth Chance of rejecting an AUTH command (float, eg "0.05")
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Chance the authentication is rejected",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text","urn:alm:descriptor:com.tectonic.ui:fieldDependency:settings.jim.invite:true"}
	RejectAuth string `json:"rejectAuth,omitempty"`
}

MailhogJimSpec invites jim into mailhog, the builtin chaos monkey they are added as args to the container's cmd see https://github.com/mailhog/MailHog/blob/master/docs/JIM.md

func (*MailhogJimSpec) DeepCopy added in v0.1.2

func (in *MailhogJimSpec) DeepCopy() *MailhogJimSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogJimSpec.

func (*MailhogJimSpec) DeepCopyInto added in v0.1.2

func (in *MailhogJimSpec) DeepCopyInto(out *MailhogJimSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogStorageMaildirSpec

type MailhogStorageMaildirSpec struct {
	// Path Maildir path (for maildir storage backend)
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength:=3
	//+kubebuilder:validation:Pattern:=`^(/)([\S]+(/)?)+$`
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Maildir path",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Path string `json:"path,omitempty"`

	// PvName if a PV name is given it will be used for maildir storage the pv needs to preexist, it will not be created
	// without a pv name an emptydir will be used which could lead to inconsistencies when multiple replicas are used
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength:=3
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="PV Name",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	PvName string `json:"pvName"`
}

MailhogStorageMaildirSpec are settings applicable if the storage backend is maildir see https://github.com/mailhog/storage/blob/master/maildir.go for the implementation

func (*MailhogStorageMaildirSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogStorageMaildirSpec.

func (*MailhogStorageMaildirSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogStorageMongoDbSpec

type MailhogStorageMongoDbSpec struct {
	// URI MongoDB host and port [mongodb://][user:pass@]host1[:port1][,host2[:port2],...][/database][?options]
	// for details about the URI format see https://pkg.go.dev/gopkg.in/mgo.v2#Dial
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength:=3
	//+kubebuilder:validation:Pattern:=`^(mongodb:(?:\/{2})?)((\w+?):(\w+?)@|:?@?)(\w+?):(\d+).*$`
	//+kubebuilder:validation:Format=uri
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="MongoDB URI",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	URI string `json:"uri,omitempty"`

	// Db MongoDB database name for message storage
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength:=2
	//+kubebuilder:validation:Pattern:=`^[\w-_]+$`
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="MongoDB DB",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Db string `json:"db,omitempty"`

	// Collection MongoDB collection name for message storage
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength:=2
	//+kubebuilder:validation:Pattern:=`^[\w-_]+$`
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="MongoDB Collection",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Collection string `json:"collection,omitempty"`
}

MailhogStorageMongoDbSpec are settings applicable if the storage backend is mongodb see https://github.com/mailhog/storage/blob/master/mongodb.go for the implementation

func (*MailhogStorageMongoDbSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogStorageMongoDbSpec.

func (*MailhogStorageMongoDbSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogUpstreamSpec added in v0.1.2

type MailhogUpstreamSpec struct {
	// Name the Name this server will be shown under in the UI
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=2
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Server Name / Label",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Name string `json:"name,omitempty"`

	// Save is an option provided for compat reasons with mailhogs struct, just set it to true
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:default:=true
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Server Name / Label",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:hidden"}
	Save bool `json:"save,omitempty"`

	// Email the target Email address where the mail will be resent to
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=4
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Destination Email on release",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Email string `json:"email,omitempty"`

	// Host SMTP target Host hostname
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=2
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Upstream SMTP server hostname",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Host string `json:"host,omitempty"`

	// Port SMTP target Port
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=2
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Upstream SMTP server port",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Port string `json:"port,omitempty"`

	// Username the Username used for SMTP authentication
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Upstream SMTP server username",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Username string `json:"username,omitempty"`

	// Password the Password used for SMTP authentication
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Upstream SMTP server password",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Password string `json:"password,omitempty"`

	// Mechanism the SMTP login Mechanism used. This is _required_ when providing upstream user / password credentials
	//
	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:MinLength=4
	//+kubebuilder:validation:Enum=PLAIN;CRAMMD5
	//+optional
	//+nullable
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Upstream SMTP server auth mechanism",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:select:PLAIN","urn:alm:descriptor:com.tectonic.ui:select:CRAMMD5"}
	Mechanism string `json:"mechanism,omitempty"`
}

MailhogUpstreamSpec are upstream smtp servers a message can be release to that mailhog has intercepted (via gui/api) https://github.com/mailhog/MailHog-Server/blob/50f74a1aa2991b96313144d1ac718ce4d6739dfd/config/config.go#L55

func (*MailhogUpstreamSpec) DeepCopy added in v0.1.2

func (in *MailhogUpstreamSpec) DeepCopy() *MailhogUpstreamSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogUpstreamSpec.

func (*MailhogUpstreamSpec) DeepCopyInto added in v0.1.2

func (in *MailhogUpstreamSpec) DeepCopyInto(out *MailhogUpstreamSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MailhogWebUserSpec added in v0.1.2

type MailhogWebUserSpec struct {
	// Name is the username
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=2
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="HTTP Basic Auth Username",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	Name string `json:"name,omitempty"`

	// PasswordHash is the bcrypt hash of the user's password
	//
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:MinLength=3
	//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Password bcrypt hash",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
	PasswordHash string `json:"passwordHash,omitempty"`
}

MailhogWebUserSpec configures UI and API HTTP basic auth. see https://github.com/mailhog/MailHog/blob/master/docs/Auth.md for more information

func (*MailhogWebUserSpec) DeepCopy added in v0.1.2

func (in *MailhogWebUserSpec) DeepCopy() *MailhogWebUserSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MailhogWebUserSpec.

func (*MailhogWebUserSpec) DeepCopyInto added in v0.1.2

func (in *MailhogWebUserSpec) DeepCopyInto(out *MailhogWebUserSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperatorConfig

type OperatorConfig struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// ControllerManagerConfigurationSpec returns the configurations for controllers
	cfg.ControllerManagerConfigurationSpec `json:",inline"`
}

OperatorConfig is the Schema for the projectconfigs API

func (*OperatorConfig) DeepCopy

func (in *OperatorConfig) DeepCopy() *OperatorConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorConfig.

func (*OperatorConfig) DeepCopyInto

func (in *OperatorConfig) DeepCopyInto(out *OperatorConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OperatorConfig) DeepCopyObject

func (in *OperatorConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PodStatus added in v0.1.8

type PodStatus struct {
	// Pending contains pod names where the podStatus is pending
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Pending []string `json:"pending,omitempty"`

	// Failed contains pod names where the podStatus is failed
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Failed []string `json:"failed,omitempty"`

	// Ready contains pod names where the mailhog container is in ready state
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Ready []string `json:"ready,omitempty"`

	// Restarting contains pod names where the mailhog container restarted more than 3 times
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Restarting []string `json:"restarting,omitempty"`

	// Other contains pod names where the condition is not caught by the other states (e.g. pod running bot container not ready)
	//
	//+kubebuilder:validation:Optional
	//+optional
	//+nullable
	Other []string `json:"other,omitempty"`
}

PodStatus will divide the child pods into a grouping

func (*PodStatus) DeepCopy added in v0.1.8

func (in *PodStatus) DeepCopy() *PodStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodStatus.

func (*PodStatus) DeepCopyInto added in v0.1.8

func (in *PodStatus) DeepCopyInto(out *PodStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type StorageSetting added in v0.1.1

type StorageSetting string

type TrafficInletResource added in v0.1.1

type TrafficInletResource string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL