2819 lines
148 KiB
Go
2819 lines
148 KiB
Go
package cluster
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"github.com/example/remote-access-platform/backend/internal/platform/clusterauth"
|
|
)
|
|
|
|
const (
|
|
PlatformRoleAdmin = "platform_admin"
|
|
PlatformRoleRecoveryAdmin = "platform_recovery_admin"
|
|
|
|
ClusterStatusActive = "active"
|
|
ClusterStatusDisabled = "disabled"
|
|
|
|
JoinRequestStatusPending = "pending"
|
|
JoinRequestStatusApproved = "approved"
|
|
JoinRequestStatusRejected = "rejected"
|
|
|
|
NodeRegistrationPending = "pending"
|
|
NodeRegistrationActive = "active"
|
|
|
|
DefaultClusterSlug = "default"
|
|
|
|
VPNConnectionModeSingleActive = "single_active"
|
|
|
|
VPNConnectionDesiredEnabled = "enabled"
|
|
VPNConnectionDesiredDisabled = "disabled"
|
|
|
|
VPNConnectionStatusDisabled = "disabled"
|
|
VPNConnectionStatusEnabled = "enabled"
|
|
VPNConnectionStatusConnecting = "connecting"
|
|
VPNConnectionStatusActive = "active"
|
|
VPNConnectionStatusDegraded = "degraded"
|
|
VPNConnectionStatusFailed = "failed"
|
|
|
|
VPNLeaseStatusActive = "active"
|
|
VPNLeaseStatusReleased = "released"
|
|
VPNLeaseStatusExpired = "expired"
|
|
VPNLeaseStatusFenced = "fenced"
|
|
|
|
VPNAssignmentStatusNotStarted = "not_started"
|
|
VPNAssignmentStatusAssigned = "assigned"
|
|
VPNAssignmentStatusLeaseRequired = "lease_required"
|
|
VPNAssignmentStatusBlocked = "blocked"
|
|
VPNAssignmentStatusUnknown = "unknown"
|
|
|
|
FabricServiceChannelStatusReady = "ready"
|
|
FabricServiceChannelStatusDegradedFallback = "degraded_fallback"
|
|
|
|
FabricServiceClassVPNPackets = "vpn_packets"
|
|
FabricServiceClassRemoteWorkspace = "remote_workspace"
|
|
FabricServiceClassFileTransfer = "file_transfer"
|
|
FabricServiceClassVideo = "video"
|
|
FabricServiceClassAdminIngress = "admin-ingress"
|
|
FabricServiceClassPublicIngress = "public-ingress"
|
|
|
|
FabricChannelControl = "control"
|
|
FabricChannelInteractive = "interactive"
|
|
FabricChannelReliable = "reliable"
|
|
FabricChannelBulk = "bulk"
|
|
FabricChannelDroppable = "droppable"
|
|
)
|
|
|
|
var allowedNodeRoles = map[string]struct{}{
|
|
"public-ingress": {},
|
|
"admin-ingress": {},
|
|
"entry-node": {},
|
|
"relay-node": {},
|
|
"core-mesh": {},
|
|
"rdp-worker": {},
|
|
"vnc-worker": {},
|
|
"vpn-exit": {},
|
|
"vpn-connector": {},
|
|
"vpn-client": {},
|
|
"ipv4-ingress": {},
|
|
"ipv4-egress": {},
|
|
"file-storage-cache": {},
|
|
"update-cache": {},
|
|
"video-relay": {},
|
|
}
|
|
|
|
type Cluster struct {
|
|
ID string `json:"id"`
|
|
Slug string `json:"slug"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
Region *string `json:"region,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ClusterNode struct {
|
|
ID string `json:"id"`
|
|
OwnerOrganizationID *string `json:"owner_organization_id,omitempty"`
|
|
NodeKey string `json:"node_key"`
|
|
Name string `json:"name"`
|
|
OwnershipType string `json:"ownership_type"`
|
|
RegistrationStatus string `json:"registration_status"`
|
|
HealthStatus string `json:"health_status"`
|
|
VersionState string `json:"version_state"`
|
|
PartitionState string `json:"partition_state"`
|
|
ReportedVersion *string `json:"reported_version,omitempty"`
|
|
LastSeenAt *time.Time `json:"last_seen_at,omitempty"`
|
|
MembershipStatus string `json:"membership_status"`
|
|
MembershipMetadata json.RawMessage `json:"membership_metadata"`
|
|
NodeGroupID *string `json:"node_group_id,omitempty"`
|
|
NodeGroupName *string `json:"node_group_name,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ClusterNodeGroup struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ParentGroupID *string `json:"parent_group_id,omitempty"`
|
|
Name string `json:"name"`
|
|
Description *string `json:"description,omitempty"`
|
|
SortOrder int `json:"sort_order"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type NodeJoinToken struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Scope json.RawMessage `json:"scope"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
MaxUses int `json:"max_uses"`
|
|
UsedCount int `json:"used_count"`
|
|
Status string `json:"status"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
RevokedAt *time.Time `json:"revoked_at,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
}
|
|
|
|
type CreatedJoinToken struct {
|
|
NodeJoinToken
|
|
Token string `json:"token"`
|
|
}
|
|
|
|
type DockerInstallProfileRequest struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
InstallToken string `json:"install_token"`
|
|
NodeName string `json:"node_name,omitempty"`
|
|
HostFacts json.RawMessage `json:"host_facts,omitempty"`
|
|
}
|
|
|
|
type DockerInstallProfile struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ClusterAuthorityPublicKey string `json:"cluster_authority_public_key,omitempty"`
|
|
ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"`
|
|
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,omitempty"`
|
|
DockerImageArtifact *DockerArtifact `json:"docker_image_artifact,omitempty"`
|
|
JoinToken string `json:"join_token"`
|
|
NodeName string `json:"node_name"`
|
|
Image string `json:"image"`
|
|
ContainerName string `json:"container_name"`
|
|
StateDir string `json:"state_dir"`
|
|
Network string `json:"network"`
|
|
RestartPolicy string `json:"restart_policy"`
|
|
PullImage bool `json:"pull_image"`
|
|
Replace bool `json:"replace"`
|
|
DockerVPNGatewayEnabled bool `json:"docker_vpn_gateway_enabled"`
|
|
WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"`
|
|
FabricRuntimeEnabled bool `json:"fabric_runtime_enabled"`
|
|
MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"`
|
|
FabricListenAddr string `json:"fabric_listen_addr,omitempty"`
|
|
FabricListenPortMode string `json:"fabric_listen_port_mode,omitempty"`
|
|
FabricListenAutoPortStart int `json:"fabric_listen_auto_port_start,omitempty"`
|
|
FabricListenAutoPortEnd int `json:"fabric_listen_auto_port_end,omitempty"`
|
|
MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"`
|
|
MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"`
|
|
MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"`
|
|
MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"`
|
|
MeshNATType string `json:"mesh_nat_type,omitempty"`
|
|
MeshRegion string `json:"mesh_region,omitempty"`
|
|
HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"`
|
|
EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"`
|
|
EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"`
|
|
ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"`
|
|
Roles []string `json:"roles,omitempty"`
|
|
}
|
|
|
|
type WindowsInstallProfile struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ClusterAuthorityPublicKey string `json:"cluster_authority_public_key,omitempty"`
|
|
ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"`
|
|
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,omitempty"`
|
|
NodeAgentArtifact *DockerArtifact `json:"node_agent_artifact,omitempty"`
|
|
JoinToken string `json:"join_token"`
|
|
NodeName string `json:"node_name"`
|
|
StateDir string `json:"state_dir"`
|
|
InstallDir string `json:"install_dir"`
|
|
StartupMode string `json:"startup_mode"`
|
|
WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"`
|
|
FabricRuntimeEnabled bool `json:"fabric_runtime_enabled"`
|
|
MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"`
|
|
FabricListenAddr string `json:"fabric_listen_addr,omitempty"`
|
|
FabricListenPortMode string `json:"fabric_listen_port_mode,omitempty"`
|
|
FabricListenAutoPortStart int `json:"fabric_listen_auto_port_start,omitempty"`
|
|
FabricListenAutoPortEnd int `json:"fabric_listen_auto_port_end,omitempty"`
|
|
MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"`
|
|
MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"`
|
|
MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"`
|
|
MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"`
|
|
MeshNATType string `json:"mesh_nat_type,omitempty"`
|
|
MeshRegion string `json:"mesh_region,omitempty"`
|
|
HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"`
|
|
EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"`
|
|
EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"`
|
|
ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"`
|
|
Roles []string `json:"roles,omitempty"`
|
|
}
|
|
|
|
type LinuxInstallProfile struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ClusterAuthorityPublicKey string `json:"cluster_authority_public_key,omitempty"`
|
|
ArtifactEndpoints []string `json:"artifact_endpoints,omitempty"`
|
|
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,omitempty"`
|
|
NodeAgentArtifact *DockerArtifact `json:"node_agent_artifact,omitempty"`
|
|
JoinToken string `json:"join_token"`
|
|
NodeName string `json:"node_name"`
|
|
StateDir string `json:"state_dir"`
|
|
InstallDir string `json:"install_dir"`
|
|
StartupMode string `json:"startup_mode"`
|
|
WorkloadSupervisionEnabled bool `json:"workload_supervision_enabled"`
|
|
FabricRuntimeEnabled bool `json:"fabric_runtime_enabled"`
|
|
MeshProductionForwardingEnabled bool `json:"mesh_production_forwarding_enabled"`
|
|
FabricListenAddr string `json:"fabric_listen_addr,omitempty"`
|
|
FabricListenPortMode string `json:"fabric_listen_port_mode,omitempty"`
|
|
FabricListenAutoPortStart int `json:"fabric_listen_auto_port_start,omitempty"`
|
|
FabricListenAutoPortEnd int `json:"fabric_listen_auto_port_end,omitempty"`
|
|
MeshAdvertiseEndpoint string `json:"mesh_advertise_endpoint,omitempty"`
|
|
MeshAdvertiseEndpointsJSON json.RawMessage `json:"mesh_advertise_endpoints_json,omitempty"`
|
|
MeshAdvertiseTransport string `json:"mesh_advertise_transport,omitempty"`
|
|
MeshConnectivityMode string `json:"mesh_connectivity_mode,omitempty"`
|
|
MeshNATType string `json:"mesh_nat_type,omitempty"`
|
|
MeshRegion string `json:"mesh_region,omitempty"`
|
|
HeartbeatIntervalSeconds int `json:"heartbeat_interval_seconds"`
|
|
EnrollmentPollIntervalSeconds int `json:"enrollment_poll_interval_seconds"`
|
|
EnrollmentPollTimeoutSeconds int `json:"enrollment_poll_timeout_seconds"`
|
|
ProductionObservationSinkCapacity int `json:"production_observation_sink_capacity,omitempty"`
|
|
Roles []string `json:"roles,omitempty"`
|
|
}
|
|
|
|
type InstallJoinBundle struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
BundleKind string `json:"bundle_kind"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ClusterAuthority *ClusterAuthorityDescriptor `json:"cluster_authority,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
DockerInstallProfile *DockerInstallProfile `json:"docker_install_profile,omitempty"`
|
|
WindowsInstallProfile *WindowsInstallProfile `json:"windows_install_profile,omitempty"`
|
|
LinuxInstallProfile *LinuxInstallProfile `json:"linux_install_profile,omitempty"`
|
|
}
|
|
|
|
type DockerArtifact struct {
|
|
Kind string `json:"kind"`
|
|
Image string `json:"image,omitempty"`
|
|
MediaType string `json:"media_type,omitempty"`
|
|
FileName string `json:"file_name,omitempty"`
|
|
URLs []string `json:"urls,omitempty"`
|
|
SHA256 string `json:"sha256,omitempty"`
|
|
SizeBytes int64 `json:"size_bytes,omitempty"`
|
|
}
|
|
|
|
type ReleaseVersion struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Product string `json:"product"`
|
|
Version string `json:"version"`
|
|
Channel string `json:"channel"`
|
|
Status string `json:"status"`
|
|
Compatibility json.RawMessage `json:"compatibility"`
|
|
Changelog *string `json:"changelog,omitempty"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
Artifacts []ReleaseArtifact `json:"artifacts,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
}
|
|
|
|
type ReleaseArtifact struct {
|
|
ID string `json:"id"`
|
|
ReleaseID string `json:"release_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Product string `json:"product"`
|
|
Version string `json:"version"`
|
|
OS string `json:"os"`
|
|
Arch string `json:"arch"`
|
|
InstallType string `json:"install_type"`
|
|
Kind string `json:"kind"`
|
|
URL string `json:"url"`
|
|
URLs []string `json:"urls,omitempty"`
|
|
SHA256 string `json:"sha256"`
|
|
SizeBytes int64 `json:"size_bytes"`
|
|
Signature *string `json:"signature,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type NodeUpdatePolicy struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Product string `json:"product"`
|
|
Channel string `json:"channel"`
|
|
TargetVersion *string `json:"target_version,omitempty"`
|
|
Strategy string `json:"strategy"`
|
|
Enabled bool `json:"enabled"`
|
|
RollbackAllowed bool `json:"rollback_allowed"`
|
|
HealthWindowSec int `json:"health_window_seconds"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type NodeUpdateHint struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Generation string `json:"generation,omitempty"`
|
|
CheckNow bool `json:"check_now"`
|
|
Products []string `json:"products,omitempty"`
|
|
TargetVersions map[string]string `json:"target_versions,omitempty"`
|
|
Reason string `json:"reason,omitempty"`
|
|
DeliveryMode string `json:"delivery_mode,omitempty"`
|
|
SubscriptionStatus string `json:"subscription_status,omitempty"`
|
|
UpdateService *NodeUpdateServiceAssignment `json:"update_service,omitempty"`
|
|
UpdateServiceCandidates []NodeUpdateServiceAssignment `json:"update_service_candidates,omitempty"`
|
|
RescuePollSeconds int `json:"rescue_poll_seconds,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
}
|
|
|
|
type NodeUpdateServiceAssignment struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
NodeID string `json:"node_id,omitempty"`
|
|
NodeName string `json:"node_name,omitempty"`
|
|
Endpoint string `json:"endpoint,omitempty"`
|
|
Region string `json:"region,omitempty"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason,omitempty"`
|
|
AssignedAt time.Time `json:"assigned_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type NodeUpdateServiceCandidate struct {
|
|
NodeID string
|
|
NodeName string
|
|
Endpoint string
|
|
Region string
|
|
LastSeenAt *time.Time
|
|
}
|
|
|
|
type NodeUpdatePlan struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Product string `json:"product"`
|
|
CurrentVersion string `json:"current_version,omitempty"`
|
|
Action string `json:"action"`
|
|
Reason string `json:"reason"`
|
|
TargetVersion string `json:"target_version,omitempty"`
|
|
Channel string `json:"channel,omitempty"`
|
|
Strategy string `json:"strategy,omitempty"`
|
|
RollbackAllowed bool `json:"rollback_allowed"`
|
|
HealthWindowSec int `json:"health_window_seconds,omitempty"`
|
|
FabricRegistryRecords json.RawMessage `json:"fabric_registry_records,omitempty"`
|
|
UpdateIntent *NodeUpdateIntent `json:"update_intent,omitempty"`
|
|
RolloutLease *NodeUpdateLease `json:"rollout_lease,omitempty"`
|
|
Artifact *ReleaseArtifact `json:"artifact,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
AuthorityQuorum *QuorumEnvelope `json:"authority_quorum,omitempty"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type NodeUpdateArtifactContent struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ArtifactID string `json:"artifact_id"`
|
|
Product string `json:"product"`
|
|
Version string `json:"version"`
|
|
DataBase64 string `json:"data_base64"`
|
|
SHA256 string `json:"sha256,omitempty"`
|
|
ChunkSHA256 string `json:"chunk_sha256,omitempty"`
|
|
SizeBytes int64 `json:"size_bytes,omitempty"`
|
|
Offset int64 `json:"offset,omitempty"`
|
|
ChunkSize int64 `json:"chunk_size,omitempty"`
|
|
Complete bool `json:"complete,omitempty"`
|
|
DistributorID string `json:"distributor_id,omitempty"`
|
|
}
|
|
|
|
type NodeUpdateIntent struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
IntentID string `json:"intent_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id,omitempty"`
|
|
Product string `json:"product"`
|
|
TargetVersion string `json:"target_version"`
|
|
Strategy string `json:"strategy"`
|
|
Generation string `json:"generation"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
RollbackAllowed bool `json:"rollback_allowed"`
|
|
HealthWindowSec int `json:"health_window_seconds,omitempty"`
|
|
RequiredLease bool `json:"required_lease"`
|
|
AllowedMirrors []string `json:"allowed_mirrors,omitempty"`
|
|
}
|
|
|
|
type NodeUpdateLease struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
LeaseID string `json:"lease_id"`
|
|
IntentID string `json:"intent_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Product string `json:"product"`
|
|
TargetVersion string `json:"target_version"`
|
|
Strategy string `json:"strategy"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason,omitempty"`
|
|
MaxParallel int `json:"max_parallel"`
|
|
ActiveUpdateCnt int `json:"active_update_count"`
|
|
AcquiredAt time.Time `json:"acquired_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type NodeBridgeReplayProductPlan struct {
|
|
Product string `json:"product"`
|
|
RecoveryBridgeMode string `json:"recovery_bridge_mode,omitempty"`
|
|
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
|
|
LastStatusReason string `json:"last_status_reason,omitempty"`
|
|
UpdatePlan NodeUpdatePlan `json:"update_plan"`
|
|
}
|
|
|
|
type NodeBridgeReplayPlan struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
NodeName string `json:"node_name,omitempty"`
|
|
HealthStatus string `json:"health_status,omitempty"`
|
|
HeartbeatStale bool `json:"heartbeat_stale"`
|
|
BridgeHoldRequired bool `json:"bridge_hold_required"`
|
|
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
|
|
BridgeHoldReasons []string `json:"bridge_hold_reasons,omitempty"`
|
|
BridgeActions []string `json:"bridge_actions,omitempty"`
|
|
Products []NodeBridgeReplayProductPlan `json:"products,omitempty"`
|
|
}
|
|
|
|
type NodeUpdateStatus struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Product string `json:"product"`
|
|
CurrentVersion string `json:"current_version,omitempty"`
|
|
TargetVersion string `json:"target_version,omitempty"`
|
|
Phase string `json:"phase"`
|
|
Status string `json:"status"`
|
|
AttemptID string `json:"attempt_id,omitempty"`
|
|
ErrorMessage *string `json:"error_message,omitempty"`
|
|
RollbackVersion *string `json:"rollback_version,omitempty"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type StaleNodeRiskReport struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
GeneratedAt time.Time `json:"generated_at"`
|
|
HeartbeatStaleAfterSeconds int `json:"heartbeat_stale_after_seconds"`
|
|
FabricStandardCleanupAllowed bool `json:"fabric_standard_cleanup_allowed"`
|
|
BridgeHoldRequired bool `json:"bridge_hold_required"`
|
|
BridgeHoldNodeIDs []string `json:"bridge_hold_node_ids,omitempty"`
|
|
BridgeHoldReasons []string `json:"bridge_hold_reasons,omitempty"`
|
|
BlockedOperations []string `json:"blocked_operations,omitempty"`
|
|
Nodes []StaleNodeRiskNode `json:"nodes"`
|
|
Summary StaleNodeRiskSummary `json:"summary"`
|
|
}
|
|
|
|
type StaleNodeRiskSummary struct {
|
|
TotalNodes int `json:"total_nodes"`
|
|
StaleNodes int `json:"stale_nodes"`
|
|
BlockedNodes int `json:"blocked_nodes"`
|
|
DirectPeerAlertNodes int `json:"direct_peer_alert_nodes"`
|
|
AreaDiversityAlertNodes int `json:"area_diversity_alert_nodes"`
|
|
IndependentIngressAlertNodes int `json:"independent_ingress_alert_nodes"`
|
|
DirectoryDisseminationAlertNodes int `json:"directory_dissemination_alert_nodes"`
|
|
UpdaterSubscriptionAlertNodes int `json:"updater_subscription_alert_nodes"`
|
|
UpdaterWakeUnsupportedNodes int `json:"updater_wake_unsupported_nodes"`
|
|
UpdaterRuntimeMissingNodes int `json:"updater_runtime_missing_nodes"`
|
|
StandardUpdaterLineNodes int `json:"standard_updater_line_nodes"`
|
|
StagedSelfUpdatePendingNodes int `json:"staged_self_update_pending_nodes"`
|
|
PostUpdateHeartbeatGapNodes int `json:"post_update_heartbeat_gap_nodes"`
|
|
ArtifactGapNodes int `json:"artifact_gap_nodes"`
|
|
StandardControlDependencyNodes int `json:"standard_control_dependency_nodes"`
|
|
RegistryCandidateOnlyNodes int `json:"registry_candidate_only_nodes"`
|
|
RegistryJoinContractMissingNodes int `json:"registry_join_missing_nodes"`
|
|
UnknownProfileNodes int `json:"unknown_profile_nodes"`
|
|
WaitingUpdateStatusNodes int `json:"waiting_update_status_nodes"`
|
|
UnknownVersionNodes int `json:"unknown_version_nodes"`
|
|
StandardRecoveryContractNodes int `json:"standard_recovery_contract_nodes"`
|
|
RecoveryBridgeRequiredNodes int `json:"recovery_bridge_required_nodes"`
|
|
RecoveryBridgeReplayReadyNodes int `json:"recovery_bridge_replay_ready_nodes"`
|
|
WaitingRecoveryHeartbeatNodes int `json:"waiting_recovery_heartbeat_nodes"`
|
|
}
|
|
|
|
type StaleNodeRiskNode struct {
|
|
NodeID string `json:"node_id"`
|
|
Name string `json:"name"`
|
|
Area string `json:"area,omitempty"`
|
|
RegistrationStatus string `json:"registration_status"`
|
|
HealthStatus string `json:"health_status"`
|
|
ReportedVersion *string `json:"reported_version,omitempty"`
|
|
LastSeenAt *time.Time `json:"last_seen_at,omitempty"`
|
|
HeartbeatStale bool `json:"heartbeat_stale"`
|
|
Blocked bool `json:"blocked"`
|
|
DirectPeerAlert bool `json:"direct_peer_alert"`
|
|
DirectPeerReadyCount int `json:"direct_peer_ready_count,omitempty"`
|
|
DirectPeerTargetCount int `json:"direct_peer_target_count,omitempty"`
|
|
DirectPeerDeficit int `json:"direct_peer_deficit,omitempty"`
|
|
DirectReadyAreas []string `json:"direct_ready_areas,omitempty"`
|
|
ExternalAreaReadyCount int `json:"external_area_ready_count,omitempty"`
|
|
RequiredExternalAreaCount int `json:"required_external_area_count,omitempty"`
|
|
AreaDiversityAlert bool `json:"area_diversity_alert"`
|
|
RequiredIndependentIngressCount int `json:"required_independent_ingress_count,omitempty"`
|
|
IndependentIngressAlert bool `json:"independent_ingress_alert"`
|
|
FullDirectoryExpected bool `json:"full_directory_expected"`
|
|
KnownPeerDirectoryCount int `json:"known_peer_directory_count,omitempty"`
|
|
ExpectedDirectoryCount int `json:"expected_directory_count,omitempty"`
|
|
DirectoryDisseminationAlert bool `json:"directory_dissemination_alert"`
|
|
UpdaterSubscriptionAlert bool `json:"updater_subscription_alert"`
|
|
UpdaterWakeUnsupported bool `json:"updater_wake_unsupported"`
|
|
UpdaterRuntimeMissing bool `json:"updater_runtime_missing"`
|
|
StandardUpdaterLine bool `json:"standard_updater_line"`
|
|
StagedSelfUpdatePending bool `json:"staged_self_update_pending"`
|
|
PostUpdateHeartbeatGap bool `json:"post_update_heartbeat_gap"`
|
|
StandardControlDependency bool `json:"standard_control_dependency"`
|
|
StandardControlURL string `json:"standard_control_url,omitempty"`
|
|
RegistryRuntimeStatus string `json:"registry_runtime_status,omitempty"`
|
|
RegistryJoinContractMissing bool `json:"registry_join_missing"`
|
|
ResolvedServiceCount int `json:"resolved_service_count,omitempty"`
|
|
IndependentIngressCount int `json:"independent_ingress_count,omitempty"`
|
|
Alerts []string `json:"alerts,omitempty"`
|
|
RecoveryBridgeRequired bool `json:"recovery_bridge_required"`
|
|
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
|
|
RecoveryBridgeActions []string `json:"recovery_bridge_actions,omitempty"`
|
|
Risks []string `json:"risks,omitempty"`
|
|
Products []StaleNodeRiskProduct `json:"products,omitempty"`
|
|
}
|
|
|
|
type StaleNodeRiskProduct struct {
|
|
Product string `json:"product"`
|
|
CurrentVersion string `json:"current_version,omitempty"`
|
|
TargetVersion *string `json:"target_version,omitempty"`
|
|
Channel string `json:"channel,omitempty"`
|
|
Strategy string `json:"strategy,omitempty"`
|
|
Enabled bool `json:"enabled"`
|
|
DetectedOS string `json:"detected_os,omitempty"`
|
|
DetectedArch string `json:"detected_arch,omitempty"`
|
|
DetectedInstallType string `json:"detected_install_type,omitempty"`
|
|
CompatibleArtifactFound bool `json:"compatible_artifact_found"`
|
|
MatchingReleaseVersion string `json:"matching_release_version,omitempty"`
|
|
LastStatusObservedAt *time.Time `json:"last_status_observed_at,omitempty"`
|
|
LastStatusPhase string `json:"last_status_phase,omitempty"`
|
|
LastStatusValue string `json:"last_status_value,omitempty"`
|
|
LastStatusReason string `json:"last_status_reason,omitempty"`
|
|
StagedSelfUpdatePending bool `json:"staged_self_update_pending"`
|
|
PostUpdateHeartbeatGap bool `json:"post_update_heartbeat_gap"`
|
|
RecoveryBridgeRequired bool `json:"recovery_bridge_required"`
|
|
RecoveryBridgeReplayReady bool `json:"recovery_bridge_replay_ready"`
|
|
RecoveryBridgeMode string `json:"recovery_bridge_mode,omitempty"`
|
|
Risks []string `json:"risks,omitempty"`
|
|
}
|
|
|
|
type NodeJoinContract struct {
|
|
NodeID string `json:"node_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
IdentityStatus string `json:"identity_status"`
|
|
Certificate map[string]any `json:"certificate"`
|
|
HeartbeatEndpoint string `json:"heartbeat_endpoint"`
|
|
ClusterAuthority *ClusterAuthorityDescriptor `json:"cluster_authority,omitempty"`
|
|
ClusterAuthorityQuorum *QuorumDescriptor `json:"cluster_authority_quorum,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
}
|
|
|
|
type NodeJoinRequest struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
JoinTokenID *string `json:"join_token_id,omitempty"`
|
|
NodeName string `json:"node_name"`
|
|
NodeFingerprint string `json:"node_fingerprint"`
|
|
PublicKey string `json:"public_key"`
|
|
ReportedCapabilities json.RawMessage `json:"reported_capabilities"`
|
|
ReportedFacts json.RawMessage `json:"reported_facts"`
|
|
RequestedRoles json.RawMessage `json:"requested_roles"`
|
|
Status string `json:"status"`
|
|
ReviewedByUserID *string `json:"reviewed_by_user_id,omitempty"`
|
|
ReviewedAt *time.Time `json:"reviewed_at,omitempty"`
|
|
ApprovedNodeID *string `json:"approved_node_id,omitempty"`
|
|
RejectionReason *string `json:"rejection_reason,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
ApprovalPayload json.RawMessage `json:"approval_payload,omitempty"`
|
|
ApprovalSignature json.RawMessage `json:"approval_signature,omitempty"`
|
|
}
|
|
|
|
type NodeRoleAssignment struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
OrganizationID *string `json:"organization_id,omitempty"`
|
|
Role string `json:"role"`
|
|
Status string `json:"status"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
AssignedByUserID *string `json:"assigned_by_user_id,omitempty"`
|
|
AssignedAt time.Time `json:"assigned_at"`
|
|
RevokedAt *time.Time `json:"revoked_at,omitempty"`
|
|
}
|
|
|
|
type NodeHeartbeat struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
HealthStatus string `json:"health_status"`
|
|
ReportedVersion *string `json:"reported_version,omitempty"`
|
|
Capabilities json.RawMessage `json:"capabilities"`
|
|
ServiceStates json.RawMessage `json:"service_states"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type NodeWorkloadDesiredState struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
ServiceType string `json:"service_type"`
|
|
DesiredState string `json:"desired_state"`
|
|
Version *string `json:"version,omitempty"`
|
|
RuntimeMode string `json:"runtime_mode"`
|
|
ArtifactRef *string `json:"artifact_ref,omitempty"`
|
|
Config json.RawMessage `json:"config"`
|
|
Environment json.RawMessage `json:"environment"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type NodeWorkloadStatus struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
ServiceType string `json:"service_type"`
|
|
ReportedState string `json:"reported_state"`
|
|
RuntimeMode string `json:"runtime_mode"`
|
|
Version *string `json:"version,omitempty"`
|
|
StatusPayload json.RawMessage `json:"status_payload"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type MeshLinkObservation struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
SourceNodeID string `json:"source_node_id"`
|
|
TargetNodeID string `json:"target_node_id"`
|
|
LinkStatus string `json:"link_status"`
|
|
LatencyMs *int `json:"latency_ms,omitempty"`
|
|
QualityScore *int `json:"quality_score,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type MeshRouteIntent struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
SourceSelector json.RawMessage `json:"source_selector"`
|
|
DestinationSelector json.RawMessage `json:"destination_selector"`
|
|
ServiceClass string `json:"service_class"`
|
|
Priority int `json:"priority"`
|
|
Status string `json:"status"`
|
|
LifecycleStatus string `json:"lifecycle_status,omitempty"`
|
|
IsExpired bool `json:"is_expired"`
|
|
PolicyExpiresAt *time.Time `json:"policy_expires_at,omitempty"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type SyntheticMeshRouteConfig struct {
|
|
RouteID string `json:"route_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
SourceNodeID string `json:"source_node_id"`
|
|
DestinationNodeID string `json:"destination_node_id"`
|
|
Hops []string `json:"hops"`
|
|
AllowedChannels []string `json:"allowed_channels"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
MaxTTL int `json:"max_ttl"`
|
|
MaxHops int `json:"max_hops"`
|
|
RouteVersion string `json:"route_version,omitempty"`
|
|
PolicyVersion string `json:"policy_version,omitempty"`
|
|
PeerDirectoryVersion string `json:"peer_directory_version,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteFeedbackReport struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
GeneratedAt time.Time `json:"generated_at"`
|
|
FeedbackMaxAgeSeconds int `json:"feedback_max_age_seconds"`
|
|
RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"`
|
|
MissingProvenanceCount int `json:"missing_provenance_count,omitempty"`
|
|
StalePolicyCount int `json:"stale_policy_count,omitempty"`
|
|
StaleGenerationCount int `json:"stale_generation_count,omitempty"`
|
|
ObservationCount int `json:"observation_count"`
|
|
FencedRouteCount int `json:"fenced_route_count"`
|
|
DegradedRouteCount int `json:"degraded_route_count"`
|
|
HealthyRouteCount int `json:"healthy_route_count"`
|
|
RecoveredRouteCount int `json:"recovered_route_count,omitempty"`
|
|
RecoveryHysteresisCount int `json:"recovery_hysteresis_count,omitempty"`
|
|
RecoveryPromotedCount int `json:"recovery_promoted_count,omitempty"`
|
|
RecoveryDemotedCount int `json:"recovery_demoted_count,omitempty"`
|
|
Observations []FabricServiceChannelRouteFeedbackObservation `json:"observations,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRecoveryPolicy struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
HysteresisPenalty int `json:"hysteresis_penalty"`
|
|
PromotionMinSamples int `json:"promotion_min_samples"`
|
|
DemotionFailureThreshold int `json:"demotion_failure_threshold"`
|
|
DemotionDropThreshold int `json:"demotion_drop_threshold"`
|
|
DemotionSlowThreshold int `json:"demotion_slow_threshold"`
|
|
DemotionRebuildEnabled bool `json:"demotion_rebuild_enabled"`
|
|
DemotionFencedEnabled bool `json:"demotion_fenced_enabled"`
|
|
Source string `json:"source"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type FabricServiceChannelAdaptivePolicy struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
MaxParallelWindow int `json:"max_parallel_window"`
|
|
BulkPressureChannelThreshold int `json:"bulk_pressure_channel_threshold"`
|
|
QueuePressureHighWatermark int `json:"queue_pressure_high_watermark"`
|
|
QueuePressureMaxInFlight int `json:"queue_pressure_max_in_flight"`
|
|
ClassWindows map[string]int `json:"class_windows"`
|
|
Source string `json:"source"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type FabricServiceChannelPoolPolicy struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
EntryPoolNodeIDs []string `json:"entry_pool_node_ids,omitempty"`
|
|
ExitPoolNodeIDs []string `json:"exit_pool_node_ids,omitempty"`
|
|
PreferredEntryNodeID string `json:"preferred_entry_node_id,omitempty"`
|
|
PreferredExitNodeID string `json:"preferred_exit_node_id,omitempty"`
|
|
SelectionStrategy string `json:"selection_strategy"`
|
|
RouteRebuild string `json:"route_rebuild"`
|
|
EntryFailover string `json:"entry_failover"`
|
|
ExitFailover string `json:"exit_failover"`
|
|
CompatFallbackAllowed bool `json:"degraded_route_allowed"`
|
|
StickySession bool `json:"sticky_session"`
|
|
Source string `json:"source"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type FabricServiceChannelBreadcrumbWindowPolicy struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Fingerprint string `json:"fingerprint,omitempty"`
|
|
CurrentWindowSeconds int64 `json:"current_window_seconds"`
|
|
HistoryWindowSeconds int64 `json:"history_window_seconds"`
|
|
Source string `json:"source"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type PeerEndpointCandidate struct {
|
|
EndpointID string `json:"endpoint_id"`
|
|
NodeID string `json:"node_id"`
|
|
Transport string `json:"transport"`
|
|
Address string `json:"address"`
|
|
AddressFamily string `json:"address_family,omitempty"`
|
|
Reachability string `json:"reachability"`
|
|
NATType string `json:"nat_type,omitempty"`
|
|
ConnectivityMode string `json:"connectivity_mode"`
|
|
Region string `json:"region,omitempty"`
|
|
Priority int `json:"priority"`
|
|
PolicyTags []string `json:"policy_tags,omitempty"`
|
|
LastVerifiedAt *time.Time `json:"last_verified_at,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type PeerDirectoryEntry struct {
|
|
NodeID string `json:"node_id"`
|
|
RouteIDs []string `json:"route_ids,omitempty"`
|
|
EndpointCount int `json:"endpoint_count"`
|
|
CandidateCount int `json:"candidate_count"`
|
|
ConnectivityModes []string `json:"connectivity_modes,omitempty"`
|
|
RecoverySeed bool `json:"recovery_seed"`
|
|
}
|
|
|
|
type PeerRecoverySeed struct {
|
|
NodeID string `json:"node_id"`
|
|
Endpoint string `json:"endpoint"`
|
|
Transport string `json:"transport"`
|
|
ConnectivityMode string `json:"connectivity_mode,omitempty"`
|
|
Region string `json:"region,omitempty"`
|
|
Priority int `json:"priority"`
|
|
LastVerifiedAt *time.Time `json:"last_verified_at,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type PeerRendezvousLease struct {
|
|
LeaseID string `json:"lease_id"`
|
|
PeerNodeID string `json:"peer_node_id"`
|
|
RelayNodeID string `json:"relay_node_id"`
|
|
RelayEndpoint string `json:"relay_endpoint"`
|
|
Transport string `json:"transport"`
|
|
ConnectivityMode string `json:"connectivity_mode,omitempty"`
|
|
RouteIDs []string `json:"route_ids,omitempty"`
|
|
AllowedChannels []string `json:"allowed_channels,omitempty"`
|
|
Priority int `json:"priority"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
Reason string `json:"reason,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type RendezvousRelayPolicyDecision struct {
|
|
RouteID string `json:"route_id,omitempty"`
|
|
PeerNodeID string `json:"peer_node_id"`
|
|
WithdrawnLeaseID string `json:"withdrawn_lease_id,omitempty"`
|
|
StaleRelayNodeID string `json:"stale_relay_node_id,omitempty"`
|
|
SelectedRelayID string `json:"selected_relay_id,omitempty"`
|
|
SelectedEndpoint string `json:"selected_endpoint,omitempty"`
|
|
Score int `json:"score,omitempty"`
|
|
Reason string `json:"reason"`
|
|
ScoreReasons []string `json:"score_reasons,omitempty"`
|
|
ReporterNodeID string `json:"reporter_node_id,omitempty"`
|
|
}
|
|
|
|
type RendezvousRelayPolicyReport struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ScoringMode string `json:"scoring_mode"`
|
|
FeedbackMaxAgeSeconds int `json:"feedback_max_age_seconds"`
|
|
StaleRelayCount int `json:"stale_relay_count"`
|
|
WithdrawnLeaseCount int `json:"withdrawn_lease_count"`
|
|
ReplacementLeaseCount int `json:"replacement_lease_count"`
|
|
Decisions []RendezvousRelayPolicyDecision `json:"decisions,omitempty"`
|
|
}
|
|
|
|
type RoutePathDecision struct {
|
|
DecisionID string `json:"decision_id"`
|
|
RouteID string `json:"route_id"`
|
|
ReplacementRouteID string `json:"replacement_route_id,omitempty"`
|
|
RebuildRequestID string `json:"rebuild_request_id,omitempty"`
|
|
RebuildStatus string `json:"rebuild_status,omitempty"`
|
|
RebuildReason string `json:"rebuild_reason,omitempty"`
|
|
RebuildAttempt int `json:"rebuild_attempt,omitempty"`
|
|
FeedbackObservationID string `json:"feedback_observation_id,omitempty"`
|
|
FeedbackSource string `json:"feedback_source,omitempty"`
|
|
FeedbackObservedAt *time.Time `json:"feedback_observed_at,omitempty"`
|
|
FeedbackExpiresAt *time.Time `json:"feedback_expires_at,omitempty"`
|
|
FeedbackChannelID string `json:"feedback_channel_id,omitempty"`
|
|
FeedbackResourceID string `json:"feedback_resource_id,omitempty"`
|
|
FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"`
|
|
FeedbackViolationReason string `json:"feedback_violation_reason,omitempty"`
|
|
ClusterID string `json:"cluster_id"`
|
|
LocalNodeID string `json:"local_node_id"`
|
|
SourceNodeID string `json:"source_node_id"`
|
|
DestinationNodeID string `json:"destination_node_id"`
|
|
OriginalHops []string `json:"original_hops"`
|
|
EffectiveHops []string `json:"effective_hops"`
|
|
PreviousHopID string `json:"previous_hop_id,omitempty"`
|
|
NextHopID string `json:"next_hop_id,omitempty"`
|
|
LocalRole string `json:"local_role"`
|
|
SelectedRelayID string `json:"selected_relay_id,omitempty"`
|
|
SelectedRelayEndpoint string `json:"selected_relay_endpoint,omitempty"`
|
|
StaleRelayNodeID string `json:"stale_relay_node_id,omitempty"`
|
|
RendezvousPeerNodeID string `json:"rendezvous_peer_node_id,omitempty"`
|
|
RendezvousLeaseID string `json:"rendezvous_lease_id,omitempty"`
|
|
RendezvousLeaseReason string `json:"rendezvous_lease_reason,omitempty"`
|
|
DecisionSource string `json:"decision_source"`
|
|
Generation string `json:"generation"`
|
|
PathScore int `json:"path_score,omitempty"`
|
|
ScoreReasons []string `json:"score_reasons,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type RoutePathDecisionReport struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
DecisionMode string `json:"decision_mode"`
|
|
Generation string `json:"generation"`
|
|
RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"`
|
|
DecisionCount int `json:"decision_count"`
|
|
ReplacementDecisionCount int `json:"replacement_decision_count"`
|
|
DegradedDecisionCount int `json:"degraded_decision_count"`
|
|
RebuildRequestCount int `json:"rebuild_request_count,omitempty"`
|
|
RebuildAppliedCount int `json:"rebuild_applied_count,omitempty"`
|
|
RecoveryHysteresisCount int `json:"recovery_hysteresis_count,omitempty"`
|
|
RecoveryPromotedCount int `json:"recovery_promoted_count,omitempty"`
|
|
RecoveryDemotedCount int `json:"recovery_demoted_count,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
Decisions []RoutePathDecision `json:"decisions,omitempty"`
|
|
}
|
|
|
|
type NodeSyntheticMeshConfig struct {
|
|
Enabled bool `json:"enabled"`
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
LocalNodeID string `json:"local_node_id"`
|
|
AuthorityRequired bool `json:"authority_required"`
|
|
ClusterAuthority *ClusterAuthorityDescriptor `json:"cluster_authority,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
ConfigVersion string `json:"config_version,omitempty"`
|
|
PeerDirectoryVersion string `json:"peer_directory_version,omitempty"`
|
|
PolicyVersion string `json:"policy_version,omitempty"`
|
|
PeerEndpoints map[string]string `json:"peer_endpoints"`
|
|
PeerEndpointCandidates map[string][]PeerEndpointCandidate `json:"peer_endpoint_candidates,omitempty"`
|
|
PeerDirectory []PeerDirectoryEntry `json:"peer_directory,omitempty"`
|
|
RecoverySeeds []PeerRecoverySeed `json:"recovery_seeds,omitempty"`
|
|
RendezvousLeases []PeerRendezvousLease `json:"rendezvous_leases,omitempty"`
|
|
RendezvousRelayPolicy *RendezvousRelayPolicyReport `json:"rendezvous_relay_policy,omitempty"`
|
|
RoutePathDecisions *RoutePathDecisionReport `json:"route_path_decisions,omitempty"`
|
|
ServiceChannelFeedback *FabricServiceChannelRouteFeedbackReport `json:"service_channel_route_feedback,omitempty"`
|
|
ServiceChannelAdaptivePolicy *FabricServiceChannelAdaptivePolicy `json:"service_channel_adaptive_policy,omitempty"`
|
|
ServiceChannelRemediationCommands []FabricServiceChannelAccessRemediationCommand `json:"service_channel_remediation_commands,omitempty"`
|
|
FabricListener *NodeFabricListenerConfig `json:"fabric_listener,omitempty"`
|
|
Routes []SyntheticMeshRouteConfig `json:"routes"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type NodeFabricListenerConfig struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Source string `json:"source"`
|
|
DesiredState string `json:"desired_state"`
|
|
ListenAddr string `json:"listen_addr"`
|
|
ListenPortMode string `json:"listen_port_mode"`
|
|
AutoPortStart int `json:"auto_port_start,omitempty"`
|
|
AutoPortEnd int `json:"auto_port_end,omitempty"`
|
|
AdvertiseEndpoint string `json:"advertise_endpoint,omitempty"`
|
|
AdvertiseEndpoints []string `json:"advertise_endpoints,omitempty"`
|
|
EndpointCandidates []PeerEndpointCandidate `json:"endpoint_candidates,omitempty"`
|
|
AdvertiseTransport string `json:"advertise_transport,omitempty"`
|
|
ConnectivityMode string `json:"connectivity_mode,omitempty"`
|
|
NATType string `json:"nat_type,omitempty"`
|
|
Region string `json:"region,omitempty"`
|
|
ConfigVersion string `json:"config_version,omitempty"`
|
|
UpdatedByUserID string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt string `json:"updated_at,omitempty"`
|
|
ControlPlaneOnly bool `json:"control_plane_only"`
|
|
ProductionForwarding bool `json:"production_forwarding"`
|
|
}
|
|
|
|
type MeshQoSPolicy struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ServiceClass string `json:"service_class"`
|
|
Priority int `json:"priority"`
|
|
ReliabilityMode string `json:"reliability_mode"`
|
|
DropPolicy string `json:"drop_policy"`
|
|
BandwidthPolicy json.RawMessage `json:"bandwidth_policy"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricEntryPoint struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
EndpointType string `json:"endpoint_type"`
|
|
PublicEndpoint *string `json:"public_endpoint,omitempty"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricEntryPointNode struct {
|
|
EntryPointID string `json:"entry_point_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Status string `json:"status"`
|
|
Priority int `json:"priority"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
AddedByUserID *string `json:"added_by_user_id,omitempty"`
|
|
AddedAt time.Time `json:"added_at"`
|
|
}
|
|
|
|
type FabricEgressPool struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
Description *string `json:"description,omitempty"`
|
|
RouteScope json.RawMessage `json:"route_scope"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricEgressPoolNode struct {
|
|
EgressPoolID string `json:"egress_pool_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
Status string `json:"status"`
|
|
Priority int `json:"priority"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
AddedByUserID *string `json:"added_by_user_id,omitempty"`
|
|
AddedAt time.Time `json:"added_at"`
|
|
}
|
|
|
|
type FabricServiceChannelNodeCandidate struct {
|
|
NodeID string `json:"node_id"`
|
|
Role string `json:"role,omitempty"`
|
|
Priority int `json:"priority,omitempty"`
|
|
Status string `json:"status"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRoute struct {
|
|
RouteID string `json:"route_id,omitempty"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ServiceClass string `json:"service_class"`
|
|
SourceNodeID string `json:"source_node_id"`
|
|
DestinationNodeID string `json:"destination_node_id"`
|
|
Hops []string `json:"hops"`
|
|
AllowedChannels []string `json:"allowed_channels"`
|
|
RouteVersion string `json:"route_version,omitempty"`
|
|
PolicyVersion string `json:"policy_version,omitempty"`
|
|
Generation string `json:"generation"`
|
|
Status string `json:"status"`
|
|
RecoveryState string `json:"recovery_state,omitempty"`
|
|
RecoveryPenalty int `json:"recovery_penalty,omitempty"`
|
|
RecoveryPromoted bool `json:"recovery_promoted,omitempty"`
|
|
RecoveryDemoted bool `json:"recovery_demoted,omitempty"`
|
|
RecoveryReason string `json:"recovery_reason,omitempty"`
|
|
RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"`
|
|
PathScore int `json:"path_score,omitempty"`
|
|
ScoreReasons []string `json:"score_reasons,omitempty"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type FabricServiceChannelFallback struct {
|
|
Allowed bool `json:"allowed"`
|
|
Active bool `json:"active"`
|
|
Transport string `json:"transport,omitempty"`
|
|
Reason string `json:"reason,omitempty"`
|
|
Degraded bool `json:"degraded"`
|
|
BackendRelay bool `json:"backend_relay"`
|
|
Compatibility bool `json:"compatibility"`
|
|
}
|
|
|
|
type FabricServiceChannelToken struct {
|
|
Type string `json:"type"`
|
|
Token string `json:"token"`
|
|
TTLSeconds int `json:"ttl_seconds"`
|
|
IntrospectionPath string `json:"introspection_path,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelHTTPIngress struct {
|
|
Type string `json:"type"`
|
|
PathTemplate string `json:"path_template"`
|
|
WebSocketPathTemplate string `json:"websocket_path_template,omitempty"`
|
|
TokenHeader string `json:"token_header"`
|
|
ServiceClassHeader string `json:"service_class_header,omitempty"`
|
|
ChannelClassHeader string `json:"channel_class_header,omitempty"`
|
|
PacketBatchFormat string `json:"packet_batch_format"`
|
|
SupportedMethods []string `json:"supported_methods"`
|
|
}
|
|
|
|
type FabricServiceChannelDataPlaneContract struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
Mode string `json:"mode"`
|
|
ControlPlaneTransport string `json:"control_plane_transport"`
|
|
WorkingDataTransport string `json:"working_data_transport"`
|
|
SteadyStateTransport string `json:"steady_state_transport"`
|
|
BackendRelayPolicy string `json:"backend_relay_policy"`
|
|
ProductionForwardingRequired bool `json:"production_forwarding_required"`
|
|
ServiceNeutral bool `json:"service_neutral"`
|
|
ProtocolAgnostic bool `json:"protocol_agnostic"`
|
|
LogicalFlowMode string `json:"logical_flow_mode"`
|
|
RequiredFlowIsolationClasses []string `json:"required_flow_isolation_classes,omitempty"`
|
|
RouteSelectionStrategy string `json:"route_selection_strategy"`
|
|
EntryFailoverMode string `json:"entry_failover_mode"`
|
|
ExitFailoverMode string `json:"exit_failover_mode"`
|
|
RouteRebuildMode string `json:"route_rebuild_mode"`
|
|
FailureDetectionSource string `json:"failure_detection_source"`
|
|
DegradedFallbackVisibility string `json:"degraded_fallback_visibility"`
|
|
StableContractForServiceClass string `json:"stable_contract_for_service_class,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelLeaseAuthorityPayload struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ChannelID string `json:"channel_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
UserID string `json:"user_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
Status string `json:"status"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id"`
|
|
SelectedExitNodeID string `json:"selected_exit_node_id"`
|
|
EntryPool []FabricServiceChannelNodeCandidate `json:"entry_pool,omitempty"`
|
|
ExitPool []FabricServiceChannelNodeCandidate `json:"exit_pool,omitempty"`
|
|
AllowedChannels []string `json:"allowed_channels"`
|
|
PrimaryRoute FabricServiceChannelRoute `json:"primary_route"`
|
|
RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"`
|
|
PoolPolicy *FabricServiceChannelPoolPolicy `json:"pool_policy,omitempty"`
|
|
DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane"`
|
|
RouteGeneration string `json:"route_generation"`
|
|
FencingEpoch int64 `json:"fencing_epoch"`
|
|
TokenHash string `json:"token_hash"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type FabricServiceChannelLease struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ChannelID string `json:"channel_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
UserID string `json:"user_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
Status string `json:"status"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id"`
|
|
SelectedExitNodeID string `json:"selected_exit_node_id"`
|
|
EntryPool []FabricServiceChannelNodeCandidate `json:"entry_pool"`
|
|
ExitPool []FabricServiceChannelNodeCandidate `json:"exit_pool"`
|
|
RequiredRoles []string `json:"required_roles"`
|
|
AllowedChannels []string `json:"allowed_channels"`
|
|
PrimaryRoute FabricServiceChannelRoute `json:"primary_route"`
|
|
AlternateRoutes []FabricServiceChannelRoute `json:"alternate_routes,omitempty"`
|
|
RecoveryPolicy *FabricServiceChannelRecoveryPolicy `json:"recovery_policy,omitempty"`
|
|
PoolPolicy *FabricServiceChannelPoolPolicy `json:"pool_policy,omitempty"`
|
|
DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane"`
|
|
QoS json.RawMessage `json:"qos"`
|
|
Failover json.RawMessage `json:"failover"`
|
|
Fallback FabricServiceChannelFallback `json:"fallback"`
|
|
Token FabricServiceChannelToken `json:"token"`
|
|
EntryHTTP FabricServiceChannelHTTPIngress `json:"entry_http"`
|
|
RouteGeneration string `json:"route_generation"`
|
|
FencingEpoch int64 `json:"fencing_epoch"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
AuthorityPayload json.RawMessage `json:"authority_payload,omitempty"`
|
|
AuthoritySignature *ClusterSignature `json:"authority_signature,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelLeaseRecord struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ChannelID string `json:"channel_id"`
|
|
TokenHash string `json:"token_hash"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
Lease FabricServiceChannelLease `json:"lease"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricServiceChannelLeaseSummary struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ChannelID string `json:"channel_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
Status string `json:"status"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"`
|
|
SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"`
|
|
AllowedChannels []string `json:"allowed_channels,omitempty"`
|
|
PrimaryRouteID string `json:"primary_route_id,omitempty"`
|
|
PrimaryRouteStatus string `json:"primary_route_status,omitempty"`
|
|
DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"`
|
|
ForceCompatFallback bool `json:"force_degraded_route"`
|
|
Expired bool `json:"expired"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricServiceChannelLeaseMaintenance struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
ActiveCount int `json:"active_count"`
|
|
ExpiredCount int `json:"expired_count"`
|
|
ScannedCount int `json:"scanned_count"`
|
|
DeletedExpiredCount int `json:"deleted_expired_count,omitempty"`
|
|
WindowLimit int `json:"window_limit"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
Leases []FabricServiceChannelLeaseSummary `json:"leases,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelAccessTelemetry struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
NodeCount int `json:"node_count"`
|
|
ReportingNodeCount int `json:"reporting_node_count"`
|
|
TotalAccepted int `json:"total_accepted"`
|
|
SignedAccepted int `json:"signed_accepted"`
|
|
IntrospectionAccepted int `json:"introspection_accepted"`
|
|
CompatUnsignedAccepted int `json:"unsigned_accepted"`
|
|
CompatFallbackCount int `json:"degraded_route_use_count"`
|
|
CompatFallbackBlockedCount int `json:"degraded_route_blocked_count,omitempty"`
|
|
FabricRouteSendFailureCount int `json:"fabric_route_send_failure_count,omitempty"`
|
|
DataPlaneContractCount int `json:"data_plane_contract_count,omitempty"`
|
|
LastDataPlaneMode string `json:"last_data_plane_mode,omitempty"`
|
|
LastWorkingDataTransport string `json:"last_working_data_transport,omitempty"`
|
|
LastSteadyStateTransport string `json:"last_steady_state_transport,omitempty"`
|
|
LastCompatRelayPolicy string `json:"last_degraded_route_policy,omitempty"`
|
|
LastLogicalFlowMode string `json:"last_logical_flow_mode,omitempty"`
|
|
LastDataPlaneViolationStatus string `json:"last_data_plane_violation_status,omitempty"`
|
|
LastDataPlaneViolationReason string `json:"last_data_plane_violation_reason,omitempty"`
|
|
ActiveChannelCount int `json:"active_channel_count"`
|
|
DegradedFallbackChannelCount int `json:"degraded_fallback_channel_count"`
|
|
CorrelatedRouteCount int `json:"correlated_route_count"`
|
|
DegradedRouteCount int `json:"degraded_route_count"`
|
|
RouteDecisionChannelCount int `json:"route_decision_channel_count,omitempty"`
|
|
ReplacementDecisionCount int `json:"replacement_decision_count,omitempty"`
|
|
AppliedRebuildDecisionCount int `json:"applied_rebuild_decision_count,omitempty"`
|
|
RecoveryDecisionCount int `json:"recovery_decision_count,omitempty"`
|
|
NoSafeRecoveryDecisionCount int `json:"no_safe_recovery_decision_count,omitempty"`
|
|
TrafficClassCounts map[string]int `json:"traffic_class_counts,omitempty"`
|
|
FlowChannelCount int `json:"flow_channel_count,omitempty"`
|
|
FlowDropped int `json:"flow_dropped,omitempty"`
|
|
FlowHighWatermark int `json:"flow_high_watermark,omitempty"`
|
|
FlowMaxInFlight int `json:"flow_max_in_flight,omitempty"`
|
|
FlowHealthStatus string `json:"flow_health_status,omitempty"`
|
|
FlowHealthReason string `json:"flow_health_reason,omitempty"`
|
|
RecommendedParallelWindows map[string]int `json:"recommended_parallel_windows,omitempty"`
|
|
AdaptiveBackpressureActive bool `json:"adaptive_backpressure_active,omitempty"`
|
|
AdaptiveBackpressureReason string `json:"adaptive_backpressure_reason,omitempty"`
|
|
AdaptivePolicyFingerprint string `json:"adaptive_policy_fingerprint,omitempty"`
|
|
LatestAcceptedAt *time.Time `json:"latest_accepted_at,omitempty"`
|
|
Nodes []FabricServiceChannelAccessTelemetryNode `json:"nodes,omitempty"`
|
|
ActiveChannels []FabricServiceChannelAccessTelemetryChannel `json:"active_channels,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelAccessTelemetryNode struct {
|
|
NodeID string `json:"node_id"`
|
|
NodeName string `json:"node_name,omitempty"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
TotalAccepted int `json:"total_accepted"`
|
|
SignedAccepted int `json:"signed_accepted"`
|
|
IntrospectionAccepted int `json:"introspection_accepted"`
|
|
CompatUnsignedAccepted int `json:"unsigned_accepted"`
|
|
CompatFallbackCount int `json:"degraded_route_use_count"`
|
|
CompatFallbackBlockedCount int `json:"degraded_route_blocked_count,omitempty"`
|
|
FabricRouteSendFailureCount int `json:"fabric_route_send_failure_count,omitempty"`
|
|
DataPlaneContractCount int `json:"data_plane_contract_count,omitempty"`
|
|
LastDataPlaneMode string `json:"last_data_plane_mode,omitempty"`
|
|
LastWorkingDataTransport string `json:"last_working_data_transport,omitempty"`
|
|
LastSteadyStateTransport string `json:"last_steady_state_transport,omitempty"`
|
|
LastCompatRelayPolicy string `json:"last_degraded_route_policy,omitempty"`
|
|
LastLogicalFlowMode string `json:"last_logical_flow_mode,omitempty"`
|
|
LastDataPlaneViolationStatus string `json:"last_data_plane_violation_status,omitempty"`
|
|
LastDataPlaneViolationReason string `json:"last_data_plane_violation_reason,omitempty"`
|
|
TrafficClassCounts map[string]int `json:"traffic_class_counts,omitempty"`
|
|
FlowChannelCount int `json:"flow_channel_count,omitempty"`
|
|
FlowDropped int `json:"flow_dropped,omitempty"`
|
|
FlowHighWatermark int `json:"flow_high_watermark,omitempty"`
|
|
FlowMaxInFlight int `json:"flow_max_in_flight,omitempty"`
|
|
FlowHealthStatus string `json:"flow_health_status,omitempty"`
|
|
FlowHealthReason string `json:"flow_health_reason,omitempty"`
|
|
RecommendedParallelWindows map[string]int `json:"recommended_parallel_windows,omitempty"`
|
|
AdaptiveBackpressureActive bool `json:"adaptive_backpressure_active,omitempty"`
|
|
AdaptiveBackpressureReason string `json:"adaptive_backpressure_reason,omitempty"`
|
|
AdaptivePolicyFingerprint string `json:"adaptive_policy_fingerprint,omitempty"`
|
|
LastAcceptedAt *time.Time `json:"last_accepted_at,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelAccessTelemetryChannel struct {
|
|
ChannelID string `json:"channel_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
Status string `json:"status"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"`
|
|
SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"`
|
|
PrimaryRouteID string `json:"primary_route_id,omitempty"`
|
|
PrimaryRouteStatus string `json:"primary_route_status,omitempty"`
|
|
ForceCompatFallback bool `json:"force_degraded_route"`
|
|
EntryNodeTotalAccepted int `json:"entry_node_total_accepted"`
|
|
EntryNodeIntrospectionAccepted int `json:"entry_node_introspection_accepted"`
|
|
EntryNodeCompatFallbackCount int `json:"entry_node_degraded_route_count"`
|
|
EntryNodeCompatFallbackBlockedCount int `json:"entry_node_degraded_route_blocked_count,omitempty"`
|
|
EntryNodeFabricRouteSendFailureCount int `json:"entry_node_fabric_route_send_failure_count,omitempty"`
|
|
EntryNodeDataPlaneContractCount int `json:"entry_node_data_plane_contract_count,omitempty"`
|
|
EntryNodeLastDataPlaneMode string `json:"entry_node_last_data_plane_mode,omitempty"`
|
|
EntryNodeLastWorkingDataTransport string `json:"entry_node_last_working_data_transport,omitempty"`
|
|
EntryNodeLastSteadyStateTransport string `json:"entry_node_last_steady_state_transport,omitempty"`
|
|
EntryNodeLastCompatRelayPolicy string `json:"entry_node_last_degraded_route_policy,omitempty"`
|
|
EntryNodeLastLogicalFlowMode string `json:"entry_node_last_logical_flow_mode,omitempty"`
|
|
EntryNodeLastDataPlaneViolationStatus string `json:"entry_node_last_data_plane_violation_status,omitempty"`
|
|
EntryNodeLastDataPlaneViolationReason string `json:"entry_node_last_data_plane_violation_reason,omitempty"`
|
|
EntryNodeTrafficClassCounts map[string]int `json:"entry_node_traffic_class_counts,omitempty"`
|
|
EntryNodeFlowChannelCount int `json:"entry_node_flow_channel_count,omitempty"`
|
|
EntryNodeFlowDropped int `json:"entry_node_flow_dropped,omitempty"`
|
|
EntryNodeFlowHighWatermark int `json:"entry_node_flow_high_watermark,omitempty"`
|
|
EntryNodeFlowMaxInFlight int `json:"entry_node_flow_max_in_flight,omitempty"`
|
|
EntryNodeFlowHealthStatus string `json:"entry_node_flow_health_status,omitempty"`
|
|
EntryNodeFlowHealthReason string `json:"entry_node_flow_health_reason,omitempty"`
|
|
EntryNodeRecommendedParallelWindows map[string]int `json:"entry_node_recommended_parallel_windows,omitempty"`
|
|
EntryNodeAdaptiveBackpressureActive bool `json:"entry_node_adaptive_backpressure_active,omitempty"`
|
|
EntryNodeAdaptiveBackpressureReason string `json:"entry_node_adaptive_backpressure_reason,omitempty"`
|
|
EntryNodeAdaptivePolicyFingerprint string `json:"entry_node_adaptive_policy_fingerprint,omitempty"`
|
|
RouteFeedbackStatus string `json:"route_feedback_status,omitempty"`
|
|
RouteFeedbackObservedAt *time.Time `json:"route_feedback_observed_at,omitempty"`
|
|
RouteFeedbackScoreAdjustment int `json:"route_feedback_score_adjustment,omitempty"`
|
|
RouteFeedbackEffectiveScoreAdjustment int `json:"route_feedback_effective_score_adjustment,omitempty"`
|
|
RouteFeedbackReasons []string `json:"route_feedback_reasons,omitempty"`
|
|
RouteQualityWindowSampleCount int `json:"route_quality_window_sample_count,omitempty"`
|
|
RouteQualityWindowFailureCount int `json:"route_quality_window_failure_count,omitempty"`
|
|
RouteQualityWindowDropCount int `json:"route_quality_window_drop_count,omitempty"`
|
|
RouteQualityWindowSlowCount int `json:"route_quality_window_slow_count,omitempty"`
|
|
LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"`
|
|
RemediationAction string `json:"remediation_action,omitempty"`
|
|
RemediationReason string `json:"remediation_reason,omitempty"`
|
|
RemediationRouteID string `json:"remediation_route_id,omitempty"`
|
|
RemediationRouteStatus string `json:"remediation_route_status,omitempty"`
|
|
RemediationGuardStatus string `json:"remediation_guard_status,omitempty"`
|
|
RemediationGuardReason string `json:"remediation_guard_reason,omitempty"`
|
|
RemediationExecutionStatus string `json:"remediation_execution_status,omitempty"`
|
|
RemediationExecutionReason string `json:"remediation_execution_reason,omitempty"`
|
|
RemediationExecutionGeneration string `json:"remediation_execution_generation,omitempty"`
|
|
RemediationExecutionObservedAt string `json:"remediation_execution_observed_at,omitempty"`
|
|
RouteDecisionSource string `json:"route_decision_source,omitempty"`
|
|
RouteDecisionRouteID string `json:"route_decision_route_id,omitempty"`
|
|
RouteDecisionReplacementRouteID string `json:"route_decision_replacement_route_id,omitempty"`
|
|
RouteDecisionRebuildStatus string `json:"route_decision_rebuild_status,omitempty"`
|
|
RouteDecisionRebuildReason string `json:"route_decision_rebuild_reason,omitempty"`
|
|
RouteDecisionGeneration string `json:"route_decision_generation,omitempty"`
|
|
RouteDecisionScoreReasons []string `json:"route_decision_score_reasons,omitempty"`
|
|
PoolPolicyFingerprint string `json:"pool_policy_fingerprint,omitempty"`
|
|
DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"`
|
|
RemediationCommand *FabricServiceChannelAccessRemediationCommand `json:"remediation_command,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type FabricServiceChannelAccessRemediationCommand struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
CommandID string `json:"command_id"`
|
|
Action string `json:"action"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ChannelID string `json:"channel_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
EntryNodeID string `json:"entry_node_id,omitempty"`
|
|
ExitNodeID string `json:"exit_node_id,omitempty"`
|
|
PrimaryRouteID string `json:"primary_route_id,omitempty"`
|
|
ReplacementRouteID string `json:"replacement_route_id,omitempty"`
|
|
ReplacementRouteStatus string `json:"replacement_route_status,omitempty"`
|
|
PoolPolicyFingerprint string `json:"pool_policy_fingerprint,omitempty"`
|
|
GuardStatus string `json:"guard_status,omitempty"`
|
|
GuardReason string `json:"guard_reason,omitempty"`
|
|
ExecutionStatus string `json:"execution_status,omitempty"`
|
|
ExecutionReason string `json:"execution_reason,omitempty"`
|
|
ExecutionGeneration string `json:"execution_generation,omitempty"`
|
|
ExecutionObservedAt string `json:"execution_observed_at,omitempty"`
|
|
Reason string `json:"reason,omitempty"`
|
|
OperatorAction string `json:"operator_action,omitempty"`
|
|
IssuedAt time.Time `json:"issued_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type FabricServiceChannelLeaseIntrospection struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ChannelID string `json:"channel_id"`
|
|
ResourceID string `json:"resource_id,omitempty"`
|
|
ServiceClass string `json:"service_class"`
|
|
Allowed bool `json:"allowed"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason,omitempty"`
|
|
AcceptedBy string `json:"accepted_by"`
|
|
SelectedEntryNodeID string `json:"selected_entry_node_id,omitempty"`
|
|
SelectedExitNodeID string `json:"selected_exit_node_id,omitempty"`
|
|
AllowedChannels []string `json:"allowed_channels,omitempty"`
|
|
PreferredRouteID string `json:"preferred_route_id,omitempty"`
|
|
ForceCompatFallback bool `json:"force_degraded_route"`
|
|
LeaseStatus string `json:"lease_status,omitempty"`
|
|
PrimaryRoute FabricServiceChannelRoute `json:"primary_route,omitempty"`
|
|
DataPlane FabricServiceChannelDataPlaneContract `json:"data_plane,omitempty"`
|
|
RouteGeneration string `json:"route_generation,omitempty"`
|
|
FencingEpoch int64 `json:"fencing_epoch,omitempty"`
|
|
ExpiresAt time.Time `json:"expires_at,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteFeedbackObservation struct {
|
|
ID string `json:"id,omitempty"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ReporterNodeID string `json:"reporter_node_id"`
|
|
RouteID string `json:"route_id"`
|
|
ServiceClass string `json:"service_class"`
|
|
FeedbackStatus string `json:"feedback_status"`
|
|
ScoreAdjustment int `json:"score_adjustment"`
|
|
EffectiveScoreAdjustment int `json:"effective_score_adjustment,omitempty"`
|
|
Reasons []string `json:"reasons,omitempty"`
|
|
LastError string `json:"last_error,omitempty"`
|
|
ConsecutiveFailures int `json:"consecutive_failures,omitempty"`
|
|
StallCount int `json:"stall_count,omitempty"`
|
|
LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"`
|
|
RecoveryState string `json:"recovery_state,omitempty"`
|
|
RecoveryHysteresisActive bool `json:"recovery_hysteresis_active,omitempty"`
|
|
RecoveryHysteresisPenalty int `json:"recovery_hysteresis_penalty,omitempty"`
|
|
RecoveryPromoted bool `json:"recovery_promoted,omitempty"`
|
|
RecoveryDemoted bool `json:"recovery_demoted,omitempty"`
|
|
RecoveryReason string `json:"recovery_reason,omitempty"`
|
|
ObservedPolicyFingerprint string `json:"observed_policy_fingerprint,omitempty"`
|
|
EffectivePolicyFingerprint string `json:"effective_policy_fingerprint,omitempty"`
|
|
ObservedRouteGeneration string `json:"observed_route_generation,omitempty"`
|
|
EffectiveRouteGeneration string `json:"effective_route_generation,omitempty"`
|
|
ProvenanceMissing bool `json:"provenance_missing,omitempty"`
|
|
StalePolicy bool `json:"stale_policy,omitempty"`
|
|
StaleGeneration bool `json:"stale_generation,omitempty"`
|
|
StaleReason string `json:"stale_reason,omitempty"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
RetryCooldownUntil *time.Time `json:"retry_cooldown_until,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildAttempt struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ReporterNodeID string `json:"reporter_node_id"`
|
|
ServiceClass string `json:"service_class"`
|
|
RouteID string `json:"route_id"`
|
|
ReplacementRouteID string `json:"replacement_route_id,omitempty"`
|
|
RebuildRequestID string `json:"rebuild_request_id"`
|
|
RebuildStatus string `json:"rebuild_status"`
|
|
RebuildReason string `json:"rebuild_reason,omitempty"`
|
|
RebuildAttempt int `json:"rebuild_attempt,omitempty"`
|
|
DecisionSource string `json:"decision_source"`
|
|
Outcome string `json:"outcome"`
|
|
Generation string `json:"generation,omitempty"`
|
|
PolicyFingerprint string `json:"policy_fingerprint,omitempty"`
|
|
ObservedPolicyFingerprint string `json:"observed_policy_fingerprint,omitempty"`
|
|
ObservedRouteGeneration string `json:"observed_route_generation,omitempty"`
|
|
EffectiveRouteGeneration string `json:"effective_route_generation,omitempty"`
|
|
FeedbackStatus string `json:"feedback_status,omitempty"`
|
|
FeedbackObservationID string `json:"feedback_observation_id,omitempty"`
|
|
FeedbackSource string `json:"feedback_source,omitempty"`
|
|
FeedbackObservedAt *time.Time `json:"feedback_observed_at,omitempty"`
|
|
FeedbackExpiresAt *time.Time `json:"feedback_expires_at,omitempty"`
|
|
FeedbackChannelID string `json:"feedback_channel_id,omitempty"`
|
|
FeedbackResourceID string `json:"feedback_resource_id,omitempty"`
|
|
FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"`
|
|
FeedbackViolationReason string `json:"feedback_violation_reason,omitempty"`
|
|
FeedbackScoreAdjustment int `json:"feedback_score_adjustment,omitempty"`
|
|
FeedbackEffectiveScoreAdjustment int `json:"feedback_effective_score_adjustment,omitempty"`
|
|
FeedbackReasons []string `json:"feedback_reasons,omitempty"`
|
|
LastError string `json:"last_error,omitempty"`
|
|
ConsecutiveFailures int `json:"consecutive_failures,omitempty"`
|
|
StallCount int `json:"stall_count,omitempty"`
|
|
LastSendDurationMs int64 `json:"last_send_duration_ms,omitempty"`
|
|
QualityWindowSampleCount int `json:"quality_window_sample_count,omitempty"`
|
|
QualityWindowFailureCount int `json:"quality_window_failure_count,omitempty"`
|
|
QualityWindowDropCount int `json:"quality_window_drop_count,omitempty"`
|
|
QualityWindowSlowCount int `json:"quality_window_slow_count,omitempty"`
|
|
OldHops []string `json:"old_hops,omitempty"`
|
|
ReplacementHops []string `json:"replacement_hops,omitempty"`
|
|
NodeTransitionStatus string `json:"node_transition_status,omitempty"`
|
|
NodeTransitionGeneration string `json:"node_transition_generation,omitempty"`
|
|
NodeTransitionObservedAt string `json:"node_transition_observed_at,omitempty"`
|
|
NodeTransitionMatched bool `json:"node_transition_matched,omitempty"`
|
|
NodeRouteGenerationStatus string `json:"node_route_generation_status,omitempty"`
|
|
NodeRouteGenerationAppliedAt string `json:"node_route_generation_applied_at,omitempty"`
|
|
NodeRouteGenerationWithdrawnAt string `json:"node_route_generation_withdrawn_at,omitempty"`
|
|
NodeRouteGenerationMatched bool `json:"node_route_generation_matched,omitempty"`
|
|
PostRebuildSelectedRouteID string `json:"post_rebuild_selected_route_id,omitempty"`
|
|
PostRebuildSendPackets uint64 `json:"post_rebuild_send_packets,omitempty"`
|
|
PostRebuildSendFailures uint64 `json:"post_rebuild_send_failures,omitempty"`
|
|
PostRebuildSendFlowPackets uint64 `json:"post_rebuild_send_flow_packets,omitempty"`
|
|
PostRebuildSendFlowDropped uint64 `json:"post_rebuild_send_flow_dropped,omitempty"`
|
|
GuardStatus string `json:"guard_status,omitempty"`
|
|
GuardSeverity string `json:"guard_severity,omitempty"`
|
|
GuardReason string `json:"guard_reason,omitempty"`
|
|
GuardAgeSeconds int64 `json:"guard_age_seconds,omitempty"`
|
|
GuardTransitionDeadlineSeconds int64 `json:"guard_transition_deadline_seconds,omitempty"`
|
|
GuardTrafficDeadlineSeconds int64 `json:"guard_traffic_deadline_seconds,omitempty"`
|
|
AlertSilenced bool `json:"alert_silenced,omitempty"`
|
|
AlertSilenceID string `json:"alert_silence_id,omitempty"`
|
|
AlertSilenceReason string `json:"alert_silence_reason,omitempty"`
|
|
AlertSilencedUntil *time.Time `json:"alert_silenced_until,omitempty"`
|
|
AlertResurfaced bool `json:"alert_resurfaced,omitempty"`
|
|
AlertResurfacedFromSilenceID string `json:"alert_resurfaced_from_silence_id,omitempty"`
|
|
AlertResurfacedCause string `json:"alert_resurfaced_cause,omitempty"`
|
|
AlertResurfacedPreviousRouteID string `json:"alert_resurfaced_previous_route_id,omitempty"`
|
|
AlertResurfacedPreviousChannelID string `json:"alert_resurfaced_previous_channel_id,omitempty"`
|
|
AlertResurfacedPreviousGeneration string `json:"alert_resurfaced_previous_generation,omitempty"`
|
|
AlertResurfacedPreviousUntil *time.Time `json:"alert_resurfaced_previous_until,omitempty"`
|
|
Timeline []FabricServiceChannelRouteRebuildTimelineEvent `json:"timeline,omitempty"`
|
|
CorrelationSnapshotAt *time.Time `json:"correlation_snapshot_at,omitempty"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildHealthSummary struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
WindowLimit int `json:"window_limit"`
|
|
TotalAttempts int `json:"total_attempts"`
|
|
GoodCount int `json:"good_count"`
|
|
WarnCount int `json:"warn_count"`
|
|
BadCount int `json:"bad_count"`
|
|
UnknownCount int `json:"unknown_count"`
|
|
ActiveBadCount int `json:"active_bad_count"`
|
|
ActiveWarnCount int `json:"active_warn_count"`
|
|
SilencedCount int `json:"silenced_count"`
|
|
ResurfacedCount int `json:"resurfaced_count"`
|
|
AppliedCount int `json:"applied_count"`
|
|
PendingCount int `json:"pending_count"`
|
|
AccessRouteDecisionCount int `json:"access_route_decision_count,omitempty"`
|
|
AccessReplacementCount int `json:"access_replacement_count,omitempty"`
|
|
AccessAppliedCount int `json:"access_applied_count,omitempty"`
|
|
AccessRecoveryCount int `json:"access_recovery_count,omitempty"`
|
|
AccessNoSafeCount int `json:"access_no_safe_count,omitempty"`
|
|
CountsByGuardStatus map[string]int `json:"counts_by_guard_status,omitempty"`
|
|
CountsByGuardSeverity map[string]int `json:"counts_by_guard_severity,omitempty"`
|
|
FeedbackBreakdowns []FabricServiceChannelRouteRebuildFeedbackHealthBreakdown `json:"feedback_breakdowns,omitempty"`
|
|
AffectedReporterNodeIDs []string `json:"affected_reporter_node_ids,omitempty"`
|
|
AffectedRouteIDs []string `json:"affected_route_ids,omitempty"`
|
|
MostRecentBadAttempts []FabricServiceChannelRouteRebuildAttempt `json:"most_recent_bad_attempts,omitempty"`
|
|
ResurfacedAttempts []FabricServiceChannelRouteRebuildAttempt `json:"resurfaced_attempts,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildFeedbackHealthBreakdown struct {
|
|
FeedbackSource string `json:"feedback_source,omitempty"`
|
|
FeedbackChannelID string `json:"feedback_channel_id,omitempty"`
|
|
FeedbackViolationStatus string `json:"feedback_violation_status,omitempty"`
|
|
TotalCount int `json:"total_count"`
|
|
GoodCount int `json:"good_count,omitempty"`
|
|
WarnCount int `json:"warn_count,omitempty"`
|
|
BadCount int `json:"bad_count,omitempty"`
|
|
UnknownCount int `json:"unknown_count,omitempty"`
|
|
ActiveWarnCount int `json:"active_warn_count,omitempty"`
|
|
ActiveBadCount int `json:"active_bad_count,omitempty"`
|
|
SilencedCount int `json:"silenced_count,omitempty"`
|
|
LatestObservedAt time.Time `json:"latest_observed_at,omitempty"`
|
|
AffectedReporterNodeIDs []string `json:"affected_reporter_node_ids,omitempty"`
|
|
AffectedRouteIDs []string `json:"affected_route_ids,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelReadiness struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
ActiveAlertCount int `json:"active_alert_count"`
|
|
ActiveBadCount int `json:"active_bad_count"`
|
|
ActiveWarnCount int `json:"active_warn_count"`
|
|
ResurfacedCount int `json:"resurfaced_count"`
|
|
SilencedCount int `json:"silenced_count"`
|
|
MissingTransitionCount int `json:"missing_transition_count"`
|
|
MissingRouteGenerationCount int `json:"missing_route_generation_count"`
|
|
MissingPostTrafficCount int `json:"missing_post_rebuild_traffic_count"`
|
|
UnexpectedRouteCount int `json:"unexpected_route_count"`
|
|
PostRebuildDegradedCount int `json:"post_rebuild_degraded_count"`
|
|
BlockingReasons []string `json:"blocking_reasons,omitempty"`
|
|
DegradedReasons []string `json:"degraded_reasons,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelSchemaStatus struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
RequiredMigration string `json:"required_migration"`
|
|
RequiredCheckCount int `json:"required_check_count"`
|
|
PassedCheckCount int `json:"passed_check_count"`
|
|
MissingCheckCount int `json:"missing_check_count"`
|
|
RequiredChecks []FabricServiceChannelSchemaCheck `json:"required_checks"`
|
|
MissingChecks []FabricServiceChannelSchemaCheck `json:"missing_checks,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelSchemaCheck struct {
|
|
CheckID string `json:"check_id"`
|
|
RelationName string `json:"relation_name"`
|
|
ColumnName string `json:"column_name,omitempty"`
|
|
Status string `json:"status"`
|
|
RequiredBy string `json:"required_by"`
|
|
}
|
|
|
|
type FabricServiceChannelRebuildSnapshotWarmup struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
WindowLimit int `json:"window_limit"`
|
|
StaleAfterSeconds int64 `json:"stale_after_seconds"`
|
|
ScannedCount int `json:"scanned_count"`
|
|
WarmedCount int `json:"warmed_count"`
|
|
AlreadyFreshCount int `json:"already_fresh_count"`
|
|
MissingSnapshotCount int `json:"missing_snapshot_count"`
|
|
StaleSnapshotCount int `json:"stale_snapshot_count"`
|
|
DeferredStaleCount int `json:"deferred_stale_count"`
|
|
ErrorCount int `json:"error_count"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRebuildSnapshotMaintenanceHealth struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
Status string `json:"status"`
|
|
Reason string `json:"reason"`
|
|
WindowLimit int `json:"window_limit"`
|
|
MinAgeSeconds int64 `json:"min_age_seconds"`
|
|
HeartbeatThreshold int `json:"heartbeat_threshold"`
|
|
RecentAttemptCount int `json:"recent_attempt_count"`
|
|
ValidSnapshotCount int `json:"valid_snapshot_count"`
|
|
MissingSnapshotCount int `json:"missing_snapshot_count"`
|
|
OverdueMissingSnapshotCount int `json:"overdue_missing_snapshot_count"`
|
|
AutoWarmupEventCount int `json:"auto_warmup_event_count"`
|
|
AutoWarmupWarmedCount int `json:"auto_warmup_warmed_count"`
|
|
AutoWarmupAlreadyFreshCount int `json:"auto_warmup_already_fresh_count"`
|
|
AutoWarmupErrorCount int `json:"auto_warmup_error_count"`
|
|
LatestAutoWarmupAt *time.Time `json:"latest_auto_warmup_at,omitempty"`
|
|
Nodes []FabricServiceChannelRebuildSnapshotNodeHealth `json:"nodes,omitempty"`
|
|
OverdueMissingSnapshotAttempts []FabricServiceChannelRouteRebuildAttempt `json:"overdue_missing_snapshot_attempts,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRebuildSnapshotNodeHealth struct {
|
|
NodeID string `json:"node_id"`
|
|
RecentAttemptCount int `json:"recent_attempt_count"`
|
|
ValidSnapshotCount int `json:"valid_snapshot_count"`
|
|
MissingSnapshotCount int `json:"missing_snapshot_count"`
|
|
OverdueMissingSnapshotCount int `json:"overdue_missing_snapshot_count"`
|
|
HeartbeatAfterAttemptCount int `json:"heartbeat_after_attempt_count"`
|
|
LastHeartbeatAt *time.Time `json:"last_heartbeat_at,omitempty"`
|
|
AutoWarmupEventCount int `json:"auto_warmup_event_count"`
|
|
AutoWarmupWarmedCount int `json:"auto_warmup_warmed_count"`
|
|
AutoWarmupErrorCount int `json:"auto_warmup_error_count"`
|
|
LatestAutoWarmupAt *time.Time `json:"latest_auto_warmup_at,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildIncident struct {
|
|
Fingerprint string `json:"fingerprint"`
|
|
ClusterID string `json:"cluster_id"`
|
|
ReporterNodeID string `json:"reporter_node_id"`
|
|
RouteID string `json:"route_id"`
|
|
ServiceClass string `json:"service_class"`
|
|
Generation string `json:"generation,omitempty"`
|
|
IncidentSource string `json:"incident_source,omitempty"`
|
|
ChannelID string `json:"channel_id,omitempty"`
|
|
GuardStatus string `json:"guard_status"`
|
|
GuardSeverity string `json:"guard_severity"`
|
|
GuardReason string `json:"guard_reason,omitempty"`
|
|
AttemptCount int `json:"attempt_count"`
|
|
FirstSeenAt time.Time `json:"first_seen_at"`
|
|
LastSeenAt time.Time `json:"last_seen_at"`
|
|
LatestReplacementRouteID string `json:"latest_replacement_route_id,omitempty"`
|
|
LatestRebuildStatus string `json:"latest_rebuild_status,omitempty"`
|
|
LatestOutcome string `json:"latest_outcome,omitempty"`
|
|
AlertSilenced bool `json:"alert_silenced,omitempty"`
|
|
AlertResurfaced bool `json:"alert_resurfaced,omitempty"`
|
|
AlertResurfacedFromSilenceID string `json:"alert_resurfaced_from_silence_id,omitempty"`
|
|
AlertResurfacedCause string `json:"alert_resurfaced_cause,omitempty"`
|
|
AlertResurfacedPreviousRouteID string `json:"alert_resurfaced_previous_route_id,omitempty"`
|
|
AlertResurfacedPreviousChannelID string `json:"alert_resurfaced_previous_channel_id,omitempty"`
|
|
AlertResurfacedPreviousGeneration string `json:"alert_resurfaced_previous_generation,omitempty"`
|
|
AlertResurfacedPreviousUntil *time.Time `json:"alert_resurfaced_previous_until,omitempty"`
|
|
RecommendedOperatorAction string `json:"recommended_operator_action,omitempty"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildAlertSilence struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
IncidentSource string `json:"incident_source,omitempty"`
|
|
ChannelID string `json:"channel_id,omitempty"`
|
|
ReporterNodeID string `json:"reporter_node_id"`
|
|
RouteID string `json:"route_id"`
|
|
DisplayRouteID string `json:"display_route_id,omitempty"`
|
|
GuardStatus string `json:"guard_status"`
|
|
Generation string `json:"generation,omitempty"`
|
|
Reason string `json:"reason,omitempty"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
}
|
|
|
|
type FabricServiceChannelRouteRebuildTimelineEvent struct {
|
|
Stage string `json:"stage"`
|
|
Status string `json:"status"`
|
|
At string `json:"at,omitempty"`
|
|
RouteID string `json:"route_id,omitempty"`
|
|
Generation string `json:"generation,omitempty"`
|
|
Payload json.RawMessage `json:"payload,omitempty"`
|
|
}
|
|
|
|
type ClusterAuthorityState struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
AuthorityState string `json:"authority_state"`
|
|
MutationMode string `json:"mutation_mode"`
|
|
Term int64 `json:"term"`
|
|
Notes *string `json:"notes,omitempty"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ClusterSignature = clusterauth.Signature
|
|
type QuorumEnvelope = clusterauth.QuorumEnvelope
|
|
type QuorumDescriptor = clusterauth.QuorumDescriptor
|
|
|
|
type ClusterAuthorityDescriptor struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
AuthorityState string `json:"authority_state"`
|
|
KeyAlgorithm string `json:"key_algorithm"`
|
|
PublicKey string `json:"public_key"`
|
|
PublicKeyFingerprint string `json:"public_key_fingerprint"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ClusterAuthorityKey struct {
|
|
ClusterAuthorityDescriptor
|
|
PrivateKey string `json:"-"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
QuorumDescriptor *QuorumDescriptor `json:"quorum_descriptor,omitempty"`
|
|
}
|
|
|
|
type ClusterAdminSummary struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
Slug string `json:"slug"`
|
|
Name string `json:"name"`
|
|
Status string `json:"status"`
|
|
Region *string `json:"region,omitempty"`
|
|
AuthorityState string `json:"authority_state"`
|
|
MutationMode string `json:"mutation_mode"`
|
|
ClusterKeyAlgorithm *string `json:"cluster_key_algorithm,omitempty"`
|
|
ClusterKeyFingerprint *string `json:"cluster_key_fingerprint,omitempty"`
|
|
NodeCount int64 `json:"node_count"`
|
|
HealthyNodeCount int64 `json:"healthy_node_count"`
|
|
PendingJoinCount int64 `json:"pending_join_count"`
|
|
ActiveRoleAssignmentCount int64 `json:"active_role_assignment_count"`
|
|
LastNodeSeenAt *time.Time `json:"last_node_seen_at,omitempty"`
|
|
}
|
|
|
|
type ClusterAuditEvent struct {
|
|
ID string `json:"id"`
|
|
ClusterID *string `json:"cluster_id,omitempty"`
|
|
ActorUserID *string `json:"actor_user_id,omitempty"`
|
|
EventType string `json:"event_type"`
|
|
TargetType string `json:"target_type"`
|
|
TargetID *string `json:"target_id,omitempty"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
CorrelationHints *ClusterAuditCorrelationHints `json:"correlation_hints,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type ClusterAuditCorrelationHints struct {
|
|
Scope string `json:"scope,omitempty"`
|
|
CurrentDiagnosticStatus string `json:"current_diagnostic_status,omitempty"`
|
|
BreadcrumbStatus string `json:"breadcrumb_status,omitempty"`
|
|
BreadcrumbAgeSeconds int64 `json:"breadcrumb_age_seconds,omitempty"`
|
|
BreadcrumbCurrentWindow int64 `json:"breadcrumb_current_window_seconds,omitempty"`
|
|
BreadcrumbHistoryWindow int64 `json:"breadcrumb_history_window_seconds,omitempty"`
|
|
FeedbackBreakdown *FabricServiceChannelRouteRebuildFeedbackHealthBreakdown `json:"feedback_breakdown,omitempty"`
|
|
RebuildIncident *FabricServiceChannelRouteRebuildIncident `json:"rebuild_incident,omitempty"`
|
|
RecommendedAction string `json:"recommended_action,omitempty"`
|
|
}
|
|
|
|
type ClusterAuditSummary struct {
|
|
TotalCount int `json:"total_count"`
|
|
CountsByEventType map[string]int `json:"counts_by_event_type,omitempty"`
|
|
CountsByTargetType map[string]int `json:"counts_by_target_type,omitempty"`
|
|
CountsByCurrentDiagnosticStatus map[string]int `json:"counts_by_current_diagnostic_status,omitempty"`
|
|
CountsByFeedbackSource map[string]int `json:"counts_by_feedback_source,omitempty"`
|
|
CountsByFeedbackViolationStatus map[string]int `json:"counts_by_feedback_violation_status,omitempty"`
|
|
CountsByBreadcrumbStatus map[string]int `json:"counts_by_breadcrumb_status,omitempty"`
|
|
CorrelatedCount int `json:"correlated_count,omitempty"`
|
|
NotVisibleCount int `json:"not_visible_count,omitempty"`
|
|
LatestAt time.Time `json:"latest_at,omitempty"`
|
|
}
|
|
|
|
type ListAuditEventsInput struct {
|
|
ClusterID string
|
|
EventTypes []string
|
|
TargetTypes []string
|
|
Correlation string
|
|
Limit int
|
|
}
|
|
|
|
type FabricServiceChannelRebuildInvestigationBreadcrumbs struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
Events []ClusterAuditEvent `json:"events"`
|
|
Summary ClusterAuditSummary `json:"summary"`
|
|
CurrentWindowSeconds int64 `json:"current_window_seconds"`
|
|
HistoryWindowSeconds int64 `json:"history_window_seconds"`
|
|
CurrentCount int `json:"current_count"`
|
|
StaleCount int `json:"stale_count"`
|
|
ExpiredCount int `json:"expired_count"`
|
|
}
|
|
|
|
type ListFabricServiceChannelRebuildInvestigationBreadcrumbsInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
CurrentWindowSeconds int64
|
|
HistoryWindowSeconds int64
|
|
}
|
|
|
|
type FabricTestingFlag struct {
|
|
ID string `json:"id"`
|
|
ScopeType string `json:"scope_type"`
|
|
ScopeID *string `json:"scope_id,omitempty"`
|
|
ClusterID *string `json:"cluster_id,omitempty"`
|
|
Enabled bool `json:"enabled"`
|
|
TelemetryEnabled bool `json:"telemetry_enabled"`
|
|
SyntheticLinksEnabled bool `json:"synthetic_links_enabled"`
|
|
HistoryRetentionHours int `json:"history_retention_hours"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type EffectiveNodeTestingFlags struct {
|
|
Enabled bool `json:"enabled"`
|
|
TelemetryEnabled bool `json:"telemetry_enabled"`
|
|
SyntheticLinksEnabled bool `json:"synthetic_links_enabled"`
|
|
HistoryRetentionHours int `json:"history_retention_hours"`
|
|
AppliedScopes []string `json:"applied_scopes"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
}
|
|
|
|
type NodeTelemetryObservation struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
CPUPercent *float64 `json:"cpu_percent,omitempty"`
|
|
MemoryUsedBytes *int64 `json:"memory_used_bytes,omitempty"`
|
|
MemoryTotalBytes *int64 `json:"memory_total_bytes,omitempty"`
|
|
DiskUsedBytes *int64 `json:"disk_used_bytes,omitempty"`
|
|
DiskTotalBytes *int64 `json:"disk_total_bytes,omitempty"`
|
|
NetworkRxBytes *int64 `json:"network_rx_bytes,omitempty"`
|
|
NetworkTxBytes *int64 `json:"network_tx_bytes,omitempty"`
|
|
ProcessCount *int `json:"process_count,omitempty"`
|
|
Payload json.RawMessage `json:"payload"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type VPNConnection struct {
|
|
ID string `json:"id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
Name string `json:"name"`
|
|
TargetEndpoint json.RawMessage `json:"target_endpoint"`
|
|
ProtocolFamily string `json:"protocol_family"`
|
|
CredentialRef *string `json:"credential_ref,omitempty"`
|
|
Mode string `json:"mode"`
|
|
DesiredState string `json:"desired_state"`
|
|
AllowedNodePolicy json.RawMessage `json:"allowed_node_policy"`
|
|
RoutingUsage json.RawMessage `json:"routing_usage"`
|
|
RoutePolicy json.RawMessage `json:"route_policy"`
|
|
QoSPolicy json.RawMessage `json:"qos_policy"`
|
|
PlacementPolicy json.RawMessage `json:"placement_policy"`
|
|
Status string `json:"status"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
UpdatedByUserID *string `json:"updated_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type VPNConnectionAllowedNode struct {
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
RolePreference string `json:"role_preference"`
|
|
Status string `json:"status"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type VPNConnectionRoutePolicy struct {
|
|
ID string `json:"id"`
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
RouteType string `json:"route_type"`
|
|
Destination string `json:"destination"`
|
|
Action string `json:"action"`
|
|
ServiceType *string `json:"service_type,omitempty"`
|
|
Priority int `json:"priority"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
Status string `json:"status"`
|
|
CreatedByUserID *string `json:"created_by_user_id,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type VPNConnectionLease struct {
|
|
ID string `json:"id"`
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OwnerNodeID string `json:"owner_node_id"`
|
|
LeaseGeneration int64 `json:"lease_generation"`
|
|
FencingToken string `json:"fencing_token"`
|
|
Status string `json:"status"`
|
|
AcquiredAt time.Time `json:"acquired_at"`
|
|
RenewedAt time.Time `json:"renewed_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
ReleasedAt *time.Time `json:"released_at,omitempty"`
|
|
FencedAt *time.Time `json:"fenced_at,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
}
|
|
|
|
type VPNLeaseOwnerEligibility struct {
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
OwnerNodeID string `json:"owner_node_id"`
|
|
MembershipStatus string `json:"membership_status"`
|
|
NodeRegistrationStatus string `json:"node_registration_status"`
|
|
AllowedByPolicy bool `json:"allowed_by_policy"`
|
|
HasAuthorizedRole bool `json:"has_authorized_role"`
|
|
}
|
|
|
|
type NodeVPNAssignmentLease struct {
|
|
LeaseID string `json:"lease_id"`
|
|
OwnerNodeID string `json:"owner_node_id"`
|
|
LeaseGeneration int64 `json:"lease_generation"`
|
|
Status string `json:"status"`
|
|
RenewedAt time.Time `json:"renewed_at"`
|
|
ExpiresAt time.Time `json:"expires_at"`
|
|
}
|
|
|
|
type NodeVPNAssignment struct {
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
Name string `json:"name"`
|
|
TargetEndpoint json.RawMessage `json:"target_endpoint"`
|
|
ProtocolFamily string `json:"protocol_family"`
|
|
Mode string `json:"mode"`
|
|
DesiredState string `json:"desired_state"`
|
|
RoutingUsage json.RawMessage `json:"routing_usage"`
|
|
RoutePolicy json.RawMessage `json:"route_policy"`
|
|
QoSPolicy json.RawMessage `json:"qos_policy"`
|
|
PlacementPolicy json.RawMessage `json:"placement_policy"`
|
|
Status string `json:"status"`
|
|
HasCredentialRef bool `json:"has_credential_ref"`
|
|
AssignmentReason string `json:"assignment_reason"`
|
|
ActiveLease *NodeVPNAssignmentLease `json:"active_lease,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type NodeVPNAssignmentStatus struct {
|
|
ID string `json:"id"`
|
|
VPNConnectionID string `json:"vpn_connection_id"`
|
|
ClusterID string `json:"cluster_id"`
|
|
NodeID string `json:"node_id"`
|
|
ObservedStatus string `json:"observed_status"`
|
|
StatusPayload json.RawMessage `json:"status_payload"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type VPNClientProfile struct {
|
|
SchemaVersion string `json:"schema_version"`
|
|
ClusterID string `json:"cluster_id"`
|
|
OrganizationID string `json:"organization_id"`
|
|
UserID string `json:"user_id"`
|
|
Connections []VPNClientConnection `json:"connections"`
|
|
GeneratedAt time.Time `json:"generated_at"`
|
|
}
|
|
|
|
type VPNClientConnection struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
ProtocolFamily string `json:"protocol_family"`
|
|
Mode string `json:"mode"`
|
|
DesiredState string `json:"desired_state"`
|
|
Status string `json:"status"`
|
|
TargetEndpoint json.RawMessage `json:"target_endpoint"`
|
|
RoutingUsage json.RawMessage `json:"routing_usage"`
|
|
RoutePolicy json.RawMessage `json:"route_policy"`
|
|
QoSPolicy json.RawMessage `json:"qos_policy"`
|
|
PlacementPolicy json.RawMessage `json:"placement_policy"`
|
|
AllowedNodeIDs []string `json:"allowed_node_ids"`
|
|
EntryNodeIDs []string `json:"entry_node_ids"`
|
|
ExitNodeID string `json:"exit_node_id,omitempty"`
|
|
ExitPoolID string `json:"exit_pool_id,omitempty"`
|
|
ExitPoolName string `json:"exit_pool_name,omitempty"`
|
|
ActiveLease *NodeVPNAssignmentLease `json:"active_lease,omitempty"`
|
|
RoutePolicies json.RawMessage `json:"route_policies"`
|
|
ClientConfig json.RawMessage `json:"client_config"`
|
|
}
|
|
|
|
type CreateClusterInput struct {
|
|
ActorUserID string
|
|
Slug string
|
|
Name string
|
|
Region *string
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type UpdateClusterInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Name string
|
|
Status string
|
|
Region *string
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type CreateJoinTokenInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Scope json.RawMessage
|
|
ExpiresAt time.Time
|
|
MaxUses int
|
|
}
|
|
|
|
type CreateJoinRequestInput struct {
|
|
ClusterID string
|
|
JoinToken string
|
|
NodeName string
|
|
NodeFingerprint string
|
|
PublicKey string
|
|
ReportedCapabilities json.RawMessage
|
|
ReportedFacts json.RawMessage
|
|
RequestedRoles json.RawMessage
|
|
}
|
|
|
|
type RegisterFabricNodeInput struct {
|
|
ClusterID string
|
|
NodeKey string
|
|
Name string
|
|
OwnershipType string
|
|
OwnerOrganizationID *string
|
|
ReportedVersion *string
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type GetJoinRequestJoinInput struct {
|
|
ClusterID string
|
|
JoinRequestID string
|
|
NodeFingerprint string
|
|
PublicKey string
|
|
}
|
|
|
|
type ApproveJoinRequestInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
JoinRequestID string
|
|
NodeKey string
|
|
OwnershipType string
|
|
OwnerOrganizationID *string
|
|
NodeGroupID *string
|
|
}
|
|
|
|
type ApprovedJoinRequest struct {
|
|
JoinRequest NodeJoinRequest `json:"join_request"`
|
|
JoinContract NodeJoinContract `json:"node_join"`
|
|
}
|
|
|
|
type JoinRequestJoinResult struct {
|
|
Status string `json:"status"`
|
|
JoinRequest NodeJoinRequest `json:"join_request"`
|
|
JoinContract *NodeJoinContract `json:"node_join,omitempty"`
|
|
}
|
|
|
|
type RejectJoinRequestInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
JoinRequestID string
|
|
Reason string
|
|
}
|
|
|
|
type AssignNodeRoleInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
OrganizationID *string
|
|
Role string
|
|
Status string
|
|
Policy json.RawMessage
|
|
}
|
|
|
|
type AttachExistingNodeInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
Roles []string
|
|
}
|
|
|
|
type CreateNodeGroupInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
ParentGroupID *string
|
|
Name string
|
|
Description *string
|
|
SortOrder int
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type AssignNodeGroupInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
GroupID *string
|
|
}
|
|
|
|
type RevokeJoinTokenInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
TokenID string
|
|
}
|
|
|
|
type RevokeNodeIdentityInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
Reason string
|
|
}
|
|
|
|
type DisableMembershipInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
Reason string
|
|
}
|
|
|
|
type DeleteClusterNodeInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
Reason string
|
|
}
|
|
|
|
type RecordHeartbeatInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
HealthStatus string
|
|
ReportedVersion *string
|
|
Capabilities json.RawMessage
|
|
ServiceStates json.RawMessage
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type CreateReleaseVersionInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Product string
|
|
Version string
|
|
Channel string
|
|
Status string
|
|
Compatibility json.RawMessage
|
|
Changelog *string
|
|
Artifacts []ReleaseArtifactInput
|
|
}
|
|
|
|
type ReleaseArtifactInput struct {
|
|
OS string `json:"os"`
|
|
Arch string `json:"arch"`
|
|
InstallType string `json:"install_type"`
|
|
Kind string `json:"kind"`
|
|
URL string `json:"url"`
|
|
SHA256 string `json:"sha256"`
|
|
SizeBytes int64 `json:"size_bytes"`
|
|
Signature *string `json:"signature"`
|
|
Metadata json.RawMessage `json:"metadata"`
|
|
}
|
|
|
|
type UpsertNodeUpdatePolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
Product string
|
|
Channel string
|
|
TargetVersion *string
|
|
Strategy string
|
|
Enabled bool
|
|
RollbackAllowed bool
|
|
HealthWindowSec int
|
|
}
|
|
|
|
type GetNodeUpdatePlanInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
Product string
|
|
CurrentVersion string
|
|
OS string
|
|
Arch string
|
|
InstallType string
|
|
Channel string
|
|
ArtifactOrigin string
|
|
ExecutorCapabilities []string
|
|
}
|
|
|
|
type GetNodeUpdateArtifactContentInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
ArtifactID string
|
|
Offset int64
|
|
Length int64
|
|
}
|
|
|
|
type GetStaleNodeRiskReportInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
}
|
|
|
|
type GetNodeBridgeReplayPlanInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
}
|
|
|
|
type ReportNodeUpdateStatusInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
Product string
|
|
CurrentVersion string
|
|
TargetVersion string
|
|
Phase string
|
|
Status string
|
|
AttemptID string
|
|
ErrorMessage *string
|
|
RollbackVersion *string
|
|
Payload json.RawMessage
|
|
ObservedAt time.Time
|
|
}
|
|
|
|
type UpsertFabricTestingFlagInput struct {
|
|
ActorUserID string
|
|
ScopeType string
|
|
ScopeID *string
|
|
ClusterID *string
|
|
Enabled bool
|
|
TelemetryEnabled bool
|
|
SyntheticLinksEnabled bool
|
|
HistoryRetentionHours int
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type RecordNodeTelemetryInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
CPUPercent *float64
|
|
MemoryUsedBytes *int64
|
|
MemoryTotalBytes *int64
|
|
DiskUsedBytes *int64
|
|
DiskTotalBytes *int64
|
|
NetworkRxBytes *int64
|
|
NetworkTxBytes *int64
|
|
ProcessCount *int
|
|
Payload json.RawMessage
|
|
ObservedAt time.Time
|
|
}
|
|
|
|
type SetDesiredWorkloadInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
NodeID string
|
|
ServiceType string
|
|
DesiredState string
|
|
Version *string
|
|
RuntimeMode string
|
|
ArtifactRef *string
|
|
Config json.RawMessage
|
|
Environment json.RawMessage
|
|
}
|
|
|
|
type ReportWorkloadStatusInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
ServiceType string
|
|
ReportedState string
|
|
RuntimeMode string
|
|
Version *string
|
|
StatusPayload json.RawMessage
|
|
}
|
|
|
|
type ReportMeshLinkInput struct {
|
|
ClusterID string
|
|
SourceNodeID string
|
|
TargetNodeID string
|
|
LinkStatus string
|
|
LatencyMs *int
|
|
QualityScore *int
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type GetNodeSyntheticMeshConfigInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
}
|
|
|
|
type CreateRouteIntentInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
SourceSelector json.RawMessage
|
|
DestinationSelector json.RawMessage
|
|
ServiceClass string
|
|
Priority int
|
|
Policy json.RawMessage
|
|
}
|
|
|
|
type RouteIntentLifecycleInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
RouteIntentID string
|
|
Reason string
|
|
}
|
|
|
|
type CreateFabricEntryPointInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Name string
|
|
Status string
|
|
EndpointType string
|
|
PublicEndpoint *string
|
|
Policy json.RawMessage
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type SetFabricEntryPointNodeInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
EntryPointID string
|
|
NodeID string
|
|
Status string
|
|
Priority int
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type CreateFabricEgressPoolInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Name string
|
|
Status string
|
|
Description *string
|
|
RouteScope json.RawMessage
|
|
Policy json.RawMessage
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type SetFabricEgressPoolNodeInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
EgressPoolID string
|
|
NodeID string
|
|
Status string
|
|
Priority int
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type IssueFabricServiceChannelLeaseInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
OrganizationID string
|
|
UserID string
|
|
ResourceID string
|
|
ServiceClass string
|
|
EntryNodeIDs []string
|
|
ExitNodeIDs []string
|
|
PreferredEntryNodeID string
|
|
PreferredExitNodeID string
|
|
RequiredRoles []string
|
|
AllowedChannels []string
|
|
QoS json.RawMessage
|
|
Failover json.RawMessage
|
|
Metadata json.RawMessage
|
|
TTL time.Duration
|
|
CompatFallbackAllowed *bool
|
|
}
|
|
|
|
type UpdateFabricServiceChannelPoolPolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
EntryPoolNodeIDs []string
|
|
ExitPoolNodeIDs []string
|
|
PreferredEntryNodeID string
|
|
PreferredExitNodeID string
|
|
SelectionStrategy string
|
|
RouteRebuild string
|
|
EntryFailover string
|
|
ExitFailover string
|
|
CompatFallbackAllowed *bool
|
|
StickySession *bool
|
|
}
|
|
|
|
type UpdateFabricServiceChannelBreadcrumbWindowPolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
CurrentWindowSeconds int64
|
|
HistoryWindowSeconds int64
|
|
}
|
|
|
|
type IntrospectFabricServiceChannelLeaseInput struct {
|
|
ClusterID string
|
|
ChannelID string
|
|
ResourceID string
|
|
ServiceClass string
|
|
ChannelClass string
|
|
Token string
|
|
EntryNodeID string
|
|
RequestSourceIP string
|
|
}
|
|
|
|
type StoreFabricServiceChannelLeaseInput struct {
|
|
Lease FabricServiceChannelLease
|
|
TokenHash string
|
|
}
|
|
|
|
type ListFabricServiceChannelLeasesInput struct {
|
|
ClusterID string
|
|
ServiceClass string
|
|
EntryNodeID string
|
|
ResourceID string
|
|
IncludeExpired bool
|
|
Limit int
|
|
Now time.Time
|
|
}
|
|
|
|
type CleanupFabricServiceChannelLeasesInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Limit int
|
|
Now time.Time
|
|
}
|
|
|
|
type GetFabricServiceChannelAccessTelemetryInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
Now time.Time
|
|
}
|
|
|
|
type RecordFabricServiceChannelRouteFeedbackInput struct {
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
ServiceClass string
|
|
FeedbackStatus string
|
|
ScoreAdjustment int
|
|
Reasons []string
|
|
LastError string
|
|
ConsecutiveFailures int
|
|
StallCount int
|
|
LastSendDurationMs int64
|
|
Payload json.RawMessage
|
|
ObservedAt time.Time
|
|
ExpiresAt time.Time
|
|
}
|
|
|
|
type ListFabricServiceChannelRouteFeedbackInput struct {
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
ServiceClass string
|
|
FeedbackStatus string
|
|
Now time.Time
|
|
IncludeExpired bool
|
|
}
|
|
|
|
type RecordFabricServiceChannelRouteRebuildAttemptInput struct {
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
ServiceClass string
|
|
RouteID string
|
|
ReplacementRouteID string
|
|
RebuildRequestID string
|
|
RebuildStatus string
|
|
RebuildReason string
|
|
RebuildAttempt int
|
|
DecisionSource string
|
|
Outcome string
|
|
Generation string
|
|
PolicyFingerprint string
|
|
ObservedPolicyFingerprint string
|
|
ObservedRouteGeneration string
|
|
EffectiveRouteGeneration string
|
|
FeedbackStatus string
|
|
FeedbackObservationID string
|
|
FeedbackSource string
|
|
FeedbackObservedAt *time.Time
|
|
FeedbackExpiresAt *time.Time
|
|
FeedbackChannelID string
|
|
FeedbackResourceID string
|
|
FeedbackViolationStatus string
|
|
FeedbackViolationReason string
|
|
FeedbackScoreAdjustment int
|
|
FeedbackEffectiveScoreAdjustment int
|
|
FeedbackReasons []string
|
|
LastError string
|
|
ConsecutiveFailures int
|
|
StallCount int
|
|
LastSendDurationMs int64
|
|
QualityWindowSampleCount int
|
|
QualityWindowFailureCount int
|
|
QualityWindowDropCount int
|
|
QualityWindowSlowCount int
|
|
OldHops []string
|
|
ReplacementHops []string
|
|
Payload json.RawMessage
|
|
}
|
|
|
|
type ListFabricServiceChannelRouteRebuildAttemptsInput struct {
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
ReplacementRouteID string
|
|
ServiceClass string
|
|
RebuildStatus string
|
|
RebuildRequestID string
|
|
Generation string
|
|
FeedbackSource string
|
|
FeedbackChannelID string
|
|
FeedbackViolationStatus string
|
|
EnrichmentMode string
|
|
UseCachedSnapshot bool
|
|
Limit int
|
|
Offset int
|
|
}
|
|
|
|
type UpdateFabricServiceChannelRouteRebuildCorrelationSnapshotInput struct {
|
|
ID string
|
|
NodeTransitionStatus string
|
|
NodeTransitionGeneration string
|
|
NodeTransitionObservedAt string
|
|
NodeTransitionMatched bool
|
|
NodeRouteGenerationStatus string
|
|
NodeRouteGenerationAppliedAt string
|
|
NodeRouteGenerationWithdrawnAt string
|
|
NodeRouteGenerationMatched bool
|
|
PostRebuildSelectedRouteID string
|
|
PostRebuildSendPackets uint64
|
|
PostRebuildSendFailures uint64
|
|
PostRebuildSendFlowPackets uint64
|
|
PostRebuildSendFlowDropped uint64
|
|
GuardStatus string
|
|
GuardSeverity string
|
|
GuardReason string
|
|
GuardTransitionDeadlineSeconds int64
|
|
GuardTrafficDeadlineSeconds int64
|
|
Timeline []FabricServiceChannelRouteRebuildTimelineEvent
|
|
CorrelationSnapshotAt time.Time
|
|
}
|
|
|
|
type GetFabricServiceChannelRouteRebuildHealthSummaryInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
}
|
|
|
|
type GetFabricServiceChannelReadinessInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
}
|
|
|
|
type GetFabricServiceChannelSchemaStatusInput struct {
|
|
ClusterID string
|
|
}
|
|
|
|
type GetFabricServiceChannelRebuildSnapshotMaintenanceHealthInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
MinAgeSeconds int64
|
|
HeartbeatThreshold int
|
|
}
|
|
|
|
type WarmupFabricServiceChannelRebuildSnapshotsInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
Limit int
|
|
StaleAfterSeconds int64
|
|
Now time.Time
|
|
}
|
|
|
|
type ListFabricServiceChannelRouteRebuildIncidentsInput struct {
|
|
ClusterID string
|
|
Limit int
|
|
}
|
|
|
|
type RecordFabricServiceChannelRouteRebuildInvestigationInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
ServiceClass string
|
|
Generation string
|
|
GuardStatus string
|
|
IncidentID string
|
|
FeedbackSource string
|
|
FeedbackChannelID string
|
|
FeedbackViolationStatus string
|
|
DrilldownSource string
|
|
Reason string
|
|
Now time.Time
|
|
}
|
|
|
|
type SilenceFabricServiceChannelRouteRebuildAlertInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
IncidentSource string
|
|
ChannelID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
GuardStatus string
|
|
Generation string
|
|
Reason string
|
|
TTL time.Duration
|
|
Now time.Time
|
|
}
|
|
|
|
type UnsilenceFabricServiceChannelRouteRebuildAlertInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
SilenceID string
|
|
Reason string
|
|
Now time.Time
|
|
}
|
|
|
|
type ExpireFabricServiceChannelRouteFeedbackInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
ReporterNodeID string
|
|
RouteID string
|
|
ServiceClass string
|
|
Reason string
|
|
Now time.Time
|
|
}
|
|
|
|
type UpdateFabricServiceChannelRecoveryPolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
HysteresisPenalty int
|
|
PromotionMinSamples int
|
|
DemotionFailureThreshold int
|
|
DemotionDropThreshold int
|
|
DemotionSlowThreshold int
|
|
DemotionRebuildEnabled *bool
|
|
DemotionFencedEnabled *bool
|
|
}
|
|
|
|
type UpdateFabricServiceChannelAdaptivePolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
MaxParallelWindow int
|
|
BulkPressureChannelThreshold int
|
|
QueuePressureHighWatermark int
|
|
QueuePressureMaxInFlight int
|
|
ClassWindows map[string]int
|
|
}
|
|
|
|
type ExpireFabricServiceChannelRouteFeedbackResult struct {
|
|
ClusterID string `json:"cluster_id"`
|
|
ReporterNodeID string `json:"reporter_node_id,omitempty"`
|
|
RouteID string `json:"route_id"`
|
|
ServiceClass string `json:"service_class,omitempty"`
|
|
ExpiredCount int `json:"expired_count"`
|
|
ExpiredAt time.Time `json:"expired_at"`
|
|
CooldownUntil time.Time `json:"cooldown_until"`
|
|
}
|
|
|
|
type UpdateClusterAuthorityInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
AuthorityState string
|
|
MutationMode string
|
|
Notes *string
|
|
}
|
|
|
|
type CreateVPNConnectionInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
OrganizationID string
|
|
Name string
|
|
TargetEndpoint json.RawMessage
|
|
ProtocolFamily string
|
|
CredentialRef *string
|
|
Mode string
|
|
DesiredState string
|
|
AllowedNodePolicy json.RawMessage
|
|
RoutingUsage json.RawMessage
|
|
RoutePolicy json.RawMessage
|
|
QoSPolicy json.RawMessage
|
|
PlacementPolicy json.RawMessage
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type UpdateVPNConnectionDesiredStateInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
DesiredState string
|
|
}
|
|
|
|
type UpsertVPNConnectionRoutePolicyInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
RouteType string
|
|
Destination string
|
|
Action string
|
|
ServiceType *string
|
|
Priority int
|
|
Policy json.RawMessage
|
|
Status string
|
|
}
|
|
|
|
type SetVPNConnectionAllowedNodesInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
NodeIDs []string
|
|
RolePreference string
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type AcquireVPNConnectionLeaseInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
OwnerNodeID string
|
|
TTL time.Duration
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type RenewVPNConnectionLeaseInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
LeaseID string
|
|
OwnerNodeID string
|
|
FencingToken string
|
|
TTL time.Duration
|
|
}
|
|
|
|
type RenewNodeVPNAssignmentLeaseInput struct {
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
LeaseID string
|
|
OwnerNodeID string
|
|
TTL time.Duration
|
|
}
|
|
|
|
type AcquireNodeVPNAssignmentLeaseInput struct {
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
OwnerNodeID string
|
|
TTL time.Duration
|
|
Metadata json.RawMessage
|
|
}
|
|
|
|
type ReleaseVPNConnectionLeaseInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
LeaseID string
|
|
OwnerNodeID string
|
|
FencingToken string
|
|
}
|
|
|
|
type FenceVPNConnectionLeaseInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
VPNConnectionID string
|
|
LeaseID string
|
|
Reason string
|
|
}
|
|
|
|
type ExpireStaleVPNConnectionLeasesInput struct {
|
|
ActorUserID string
|
|
ClusterID string
|
|
}
|
|
|
|
type ReportNodeVPNAssignmentStatusInput struct {
|
|
ClusterID string
|
|
NodeID string
|
|
VPNConnectionID string
|
|
ObservedStatus string
|
|
StatusPayload json.RawMessage
|
|
ObservedAt time.Time
|
|
}
|