~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
126 lines · 3.8 KB Raw History
package v1alpha1

import (
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

	commonv1 "github.com/johnandersen777/socialweb-computer-kcp/api/common/v1alpha1"
)

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

	Spec   ContractEventSpec   `json:"spec,omitempty"`
	Status ContractEventStatus `json:"status,omitempty"`
}

type ContractEventList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`

	Items []ContractEvent `json:"items"`
}

type ContractEventDirection string

const (
	ContractEventOutbound ContractEventDirection = "outbound"

	ContractEventInbound ContractEventDirection = "inbound"
)

const (
	ContractEventNSIDGuestPublicKey = "com.publicdomainrelay.temp.compute.events.guest.publicKey"

	ContractEventNSIDGuestSignalWebRTC = "com.publicdomainrelay.temp.compute.events.guest.signalWebRTC"

	ContractEventNSIDGuestSecrets = "com.publicdomainrelay.temp.compute.events.guest.secrets"

	ContractEventNSIDGuestAgentStart = "com.publicdomainrelay.temp.compute.events.guest.agentStart"

	ContractEventNSIDGuestSecretsUpdated = "com.publicdomainrelay.temp.compute.events.guest.secretsUpdated"

	ContractEventNSIDGuestR2Start = "com.publicdomainrelay.temp.compute.events.guest.r2Start"

	ContractEventNSIDGuestR2Release = "com.publicdomainrelay.temp.compute.events.guest.r2Release"
)

type ContractEventSpec struct {
	ContractRef commonv1.LocalObjectRef `json:"contractRef"`

	Direction ContractEventDirection `json:"direction,omitempty" apigen:"default=outbound,enum=outbound|inbound"`

	NSID string `json:"nsid" apigen:"enum=com.publicdomainrelay.temp.compute.events.guest.publicKey|com.publicdomainrelay.temp.compute.events.guest.signalWebRTC|com.publicdomainrelay.temp.compute.events.guest.secrets|com.publicdomainrelay.temp.compute.events.guest.agentStart|com.publicdomainrelay.temp.compute.events.guest.secretsUpdated|com.publicdomainrelay.temp.compute.events.guest.r2Start|com.publicdomainrelay.temp.compute.events.guest.r2Release"`

	Kind string `json:"kind,omitempty" apigen:"maxLength=32"`

	Tag string `json:"tag,omitempty" apigen:"pattern=^[a-z0-9]([a-z0-9-]{0,30}[a-z0-9])?$"`

	Key string `json:"key,omitempty" apigen:"maxLength=256"`

	Ciphertext string `json:"ciphertext,omitempty" apigen:"maxLength=65536"`

	RecipientRef *commonv1.LocalObjectRef `json:"recipientRef,omitempty"`

	InReplyTo *commonv1.StrongRef `json:"inReplyTo,omitempty"`

	R2Start *ContractEventR2Start `json:"r2Start,omitempty"`
}

type ContractEventR2Start struct {
	Name string `json:"name" apigen:"pattern=^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$"`

	Agent bool `json:"agent,omitempty"`

	Hold bool `json:"hold,omitempty"`
}

type ContractEventPhase string

const (
	ContractEventPending ContractEventPhase = "Pending"

	ContractEventPublished ContractEventPhase = "Published"

	ContractEventSubmitted ContractEventPhase = "Submitted"

	ContractEventReceived ContractEventPhase = "Received"

	ContractEventFailed ContractEventPhase = "Failed"
)

type ContractEventSubmit struct {
	Endpoint string `json:"endpoint,omitempty"`

	Attempts int32 `json:"attempts,omitempty"`

	LastAttemptAt string `json:"lastAttemptAt,omitempty"`

	SubmittedAt string `json:"submittedAt,omitempty"`

	LastError string `json:"lastError,omitempty"`
}

type ContractEventStatus struct {
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	Phase ContractEventPhase `json:"phase,omitempty"`

	Message string `json:"message,omitempty"`

	Record *commonv1.StrongRef `json:"record,omitempty"`

	Event *commonv1.StrongRef `json:"event,omitempty"`

	Submit *ContractEventSubmit `json:"submit,omitempty"`

	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

const (
	ContractEventConditionPublished = "Published"

	ContractEventConditionSubmitted = "Submitted"
)

const ComputeContractConditionSecretsApplied = "SecretsApplied"