~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
394 lines · 8.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 NodeClaim struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   NodeClaimSpec   `json:"spec,omitempty"`
	Status NodeClaimStatus `json:"status,omitempty"`
}

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

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

type NodeClaimSpec struct {
	ClusterRef commonv1.LocalObjectRef `json:"clusterRef"`

	NodeName string `json:"nodeName"`

	OwnerDid string `json:"ownerDid"`

	ApiserverPort int `json:"apiserverPort"`

	AdvertiseAddress string `json:"advertiseAddress"`

	TokenFile string `json:"tokenFile" apigen:"userEndpoint"`

	NodePasswordFile string `json:"nodePasswordFile" apigen:"userEndpoint"`

	ServerCAFile string `json:"serverCAFile" apigen:"userEndpoint"`

	DenyBidderDids []string `json:"denyBidderDids,omitempty"`

	AdoptJoinedNode bool `json:"adoptJoinedNode,omitempty"`
}

type NodeClaimPhase string

const (
	NodeClaimPending NodeClaimPhase = "Pending"

	NodeClaimBidding NodeClaimPhase = "Bidding"

	NodeClaimProvisioning NodeClaimPhase = "Provisioning"

	NodeClaimJoining NodeClaimPhase = "Joining"

	NodeClaimRunning NodeClaimPhase = "Running"

	NodeClaimFailed NodeClaimPhase = "Failed"

	NodeClaimReleased NodeClaimPhase = "Released"

	NodeClaimLost NodeClaimPhase = "Lost"

	NodeClaimAdopting NodeClaimPhase = "Adopting"
)

type ContractSandbox struct {
	ExitCode int `json:"exitCode"`

	TimedOut bool `json:"timedOut,omitempty"`

	Stdout string `json:"stdout,omitempty"`

	Stderr string `json:"stderr,omitempty"`

	ObservedAt string `json:"observedAt,omitempty"`
}

type NodeClaimContract struct {
	VMURI string `json:"vmUri,omitempty"`

	RFPURI string `json:"rfpUri,omitempty"`

	AcceptURI string `json:"acceptUri,omitempty"`

	ReceiptURI string `json:"receiptUri,omitempty"`

	ReceiptCid string `json:"receiptCid,omitempty"`

	SubmitEventRef string `json:"submitEventRef,omitempty"`

	Version *int `json:"version,omitempty"`

	Phase ContractPhase `json:"phase,omitempty"`

	VMName string `json:"vmName,omitempty"`

	RequesterDid string `json:"requesterDid,omitempty"`

	MarketDid string `json:"marketDid,omitempty"`

	Payload *commonv1.StrongRef `json:"payload,omitempty"`

	RFP *commonv1.StrongRef `json:"rfp,omitempty"`

	Policy *commonv1.StrongRef `json:"policy,omitempty"`

	Bid *commonv1.StrongRef `json:"bid,omitempty"`

	Winner *ContractWinner `json:"winner,omitempty"`

	AcceptPending *ContractAcceptPending `json:"acceptPending,omitempty"`

	Accept *commonv1.StrongRef `json:"accept,omitempty"`

	Receipt *commonv1.StrongRef `json:"receipt,omitempty"`

	ReceiptOk *bool `json:"receiptOk,omitempty"`

	VMAddress string `json:"vmAddress,omitempty"`

	Networks []ContractNetworkAddress `json:"networks,omitempty"`

	Bids *int `json:"bids,omitempty"`

	Release *ContractRelease `json:"release,omitempty"`

	Termination *ContractTermination `json:"termination,omitempty"`

	HostKeys *ContractHostKeys `json:"hostKeys,omitempty"`

	Sandbox *ContractSandbox `json:"sandbox,omitempty"`

	SecretsRequested *ContractSecretsRequested `json:"secretsRequested,omitempty"`

	SecretsApplied *ContractSecretsApplied `json:"secretsApplied,omitempty"`

	GuestRequester *ContractGuestRequester `json:"guestRequester,omitempty"`

	R2Release *ContractR2Release `json:"r2Release,omitempty"`

	Outcome ContractOutcome `json:"outcome,omitempty"`

	Error string `json:"error,omitempty"`

	Timestamps *ContractTimestamps `json:"timestamps,omitempty"`
}

type NetworkKind string

const (
	NetworkKindIroh NetworkKind = "iroh"

	NetworkKindHTTPS NetworkKind = "https"

	NetworkKindWebRTC NetworkKind = "webrtc"
)

type ContractNetworkAddress struct {
	Tag string `json:"tag"`

	Kind NetworkKind `json:"kind,omitempty" apigen:"enum=iroh|https|webrtc"`

	Address string `json:"address"`

	At string `json:"at,omitempty"`

	Event commonv1.StrongRef `json:"event"`
}

type ContractPhase string

const (
	ContractRequested ContractPhase = "requested"

	ContractRFPSubmitted ContractPhase = "rfp_submitted"

	ContractWinnerSelected ContractPhase = "winner_selected"

	ContractAccepted ContractPhase = "accepted"

	ContractReceipt ContractPhase = "receipt"

	ContractNetwork ContractPhase = "network"

	ContractReleased ContractPhase = "released"
)

type ContractOutcome string

const (
	ContractOutcomeNoBids ContractOutcome = "no_bids"

	ContractOutcomeBidsDenied ContractOutcome = "bids_denied"

	ContractOutcomePolicyRejected ContractOutcome = "policy_rejected"

	ContractOutcomeReturned ContractOutcome = "returned"

	ContractOutcomeReceiptInvalid ContractOutcome = "receipt_invalid"

	ContractOutcomeNetworkTimeout ContractOutcome = "network_timeout"

	ContractOutcomeComplete ContractOutcome = "complete"
)

type ContractWinner struct {
	DID string `json:"did"`

	SubmitAccept string `json:"submitAccept,omitempty"`
}

type ContractAcceptPending struct {
	BidURI string `json:"bidUri"`
}

type ContractTermination struct {
	Reason string `json:"reason"`

	ExitCode *int `json:"exitCode,omitempty"`

	ObservedAt string `json:"observedAt"`

	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`

	Request *commonv1.StrongRef `json:"request,omitempty"`
}

type ContractHostKey struct {
	Type string `json:"type"`

	PublicKey string `json:"publicKey"`

	Fingerprint string `json:"fingerprint"`
}

type ContractHostKeys struct {
	Keys []ContractHostKey `json:"keys"`

	ObservedAt string `json:"observedAt"`

	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`
}

type ContractSecretsRequested struct {
	RequestedAt string `json:"requestedAt"`

	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`
}

type ContractR2ReleasePhase string

const (
	ContractR2ReleaseRequested ContractR2ReleasePhase = "Requested"

	ContractR2ReleaseReleased ContractR2ReleasePhase = "Released"

	ContractR2ReleaseFailed ContractR2ReleasePhase = "Failed"

	ContractR2ReleaseTimedOut ContractR2ReleasePhase = "TimedOut"
)

type ContractR2Release struct {
	Phase ContractR2ReleasePhase `json:"phase" apigen:"enum=Requested|Released|Failed|TimedOut"`

	Ok bool `json:"ok,omitempty"`

	Message string `json:"message,omitempty"`

	RequestedAt string `json:"requestedAt,omitempty"`

	AnsweredAt string `json:"answeredAt,omitempty"`
}

type ContractGuestRequesterState string

const (
	ContractGuestRequesterPending ContractGuestRequesterState = "Pending"

	ContractGuestRequesterVerified ContractGuestRequesterState = "Verified"

	ContractGuestRequesterRefused ContractGuestRequesterState = "Refused"
)

type ContractGuestRequester struct {
	Did string `json:"did"`

	State ContractGuestRequesterState `json:"state" apigen:"enum=Pending|Verified|Refused"`

	Message string `json:"message,omitempty"`

	ReportedAt string `json:"reportedAt"`

	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`
}

type ContractSecretsApplied struct {
	AppliedAt string `json:"appliedAt"`

	Via string `json:"via,omitempty"`

	Count *int64 `json:"count,omitempty"`

	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`
}

type ContractRelease struct {
	Event commonv1.StrongRef `json:"event"`

	Payload commonv1.StrongRef `json:"payload"`

	OK bool `json:"ok"`

	Status *int `json:"status,omitempty"`
}

type ContractTimestamps struct {
	Requested string `json:"requested,omitempty"`

	RFPSubmitted string `json:"rfp_submitted,omitempty"`

	WinnerSelected string `json:"winner_selected,omitempty"`

	Accepted string `json:"accepted,omitempty"`

	Receipt string `json:"receipt,omitempty"`

	Network string `json:"network,omitempty"`

	Released string `json:"released,omitempty"`
}

type NodeClaimStatus struct {
	Phase NodeClaimPhase `json:"phase,omitempty"`

	Contract NodeClaimContract `json:"contract,omitempty"`

	Fqdn string `json:"fqdn,omitempty"`

	Message string `json:"message,omitempty"`

	Grant *NodeClaimGrant `json:"grant,omitempty"`

	Secrets *NodeClaimSecrets `json:"secrets,omitempty"`

	JoinedAt string `json:"joinedAt,omitempty"`

	Infra *NodeClaimInfra `json:"infra,omitempty"`
}

type NodeClaimInfra struct {
	Workspace string `json:"workspace"`

	Name string `json:"name"`

	Contract string `json:"contract"`

	ComputeContract string `json:"computeContract"`
}

type NodeClaimSecrets struct {
	IngressDid string `json:"ingressDid"`

	KeyRef string `json:"keyRef"`

	URL string `json:"url"`

	ServedAt string `json:"servedAt,omitempty"`
}

type NodeClaimGrant struct {
	Issuer string `json:"issuer"`

	Subject string `json:"subject"`

	Audience string `json:"audience"`

	Role string `json:"role,omitempty"`
}

const FinalizerNodeClaim = "nodeclaim.socialweb.computer/release"

const FieldManagerNodeMarket = "socialweb.computer/nodemarket"