workloads

package
v0.15.1 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: Apache-2.0 Imports: 21 Imported by: 6

Documentation

Overview

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads is the terraform provider

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Package workloads includes workloads types (vm, zdb, QSFS, public IP, gateway name, gateway fqdn, disk)

Index

Constants

View Source
const Version = 3

Variables

View Source
var (
	// VMType for deployment date of vms
	VMType = "vm"
	// GatewayNameType for deployment date of name gateway
	GatewayNameType = "Gateway Name"
	// GatewayFQDNType for deployment date of fqdn gateway
	GatewayFQDNType = "Gateway Fqdn"
	// K8sType for deployment date of k8s
	K8sType = "kubernetes"
	// NetworkType for deployment date of network
	NetworkType = "network"
)
View Source
var ErrInvalidInput = errors.New("invalid input")

ErrInvalidInput for invalid inputs

View Source
var ExternalSKZeroValue = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="

ExternalSKZeroValue as its not empty when it is zero

Functions

func ConstructPublicIPWorkload

func ConstructPublicIPWorkload(workloadName string, ipv4 bool, ipv6 bool) gridtypes.Workload

ConstructPublicIPWorkload constructs a public IP workload

func Contains

func Contains[T comparable](elements []T, element T) bool

Contains check if a slice contains an element

func Delete

func Delete[T comparable](elements []T, element T) []T

Delete removes an element from a slice

func FlistChecksumURL

func FlistChecksumURL(url string) string

FlistChecksumURL returns flist check sum url format

func GenerateWGConfig

func GenerateWGConfig(Address string, AccessPrivatekey string, NodePublicKey string, NodeEndpoint string, NetworkIPRange string) string

GenerateWGConfig generates wireguard configs

func GetFlistChecksum

func GetFlistChecksum(url string) (string, error)

GetFlistChecksum gets flist check sum url

func GetUsedIPs

func GetUsedIPs(dl gridtypes.Deployment) ([]byte, error)

GetUsedIPs returns used IPs for a deployment

func IPNet

func IPNet(a, b, c, d, msk byte) gridtypes.IPNet

IPNet returns an IP net type

func NewGridDeployment

func NewGridDeployment(twin uint32, workloads []gridtypes.Workload) gridtypes.Deployment

NewGridDeployment generates a new grid deployment

func NewIPRange

func NewIPRange(n net.IPNet) gridtypes.IPNet

NewIPRange generates a new IPRange from the given network IP

func NewWorkloadFromMap

func NewWorkloadFromMap(wlMap map[string]interface{}, result interface{}) (interface{}, error)

NewWorkloadFromMap converts a map (dict) to a workload

func NewZosBackends

func NewZosBackends(bks []string) (backends []zos.Backend)

NewZosBackends generates new zos backends for the given string backends

func RandomMyceliumIPSeed added in v0.13.22

func RandomMyceliumIPSeed() ([]byte, error)

func RandomMyceliumKey added in v0.13.22

func RandomMyceliumKey() ([]byte, error)

func ToMap

func ToMap(workload interface{}) (map[string]interface{}, error)

ToMap converts workload data to a map (dict)

func WgIP

func WgIP(ip gridtypes.IPNet) gridtypes.IPNet

WgIP return wireguard IP network

Types

type Backend

type Backend zos.ZdbBackend

Backend is a zos backend

type Backends

type Backends []Backend

Backends is a list of backends

func BackendsFromZos

func BackendsFromZos(bs []zos.ZdbBackend) (backends Backends)

BackendsFromZos gets backends from zos

type Deployment

type Deployment struct {
	Name             string
	NodeID           uint32
	SolutionType     string
	SolutionProvider *uint64
	NetworkName      string
	Disks            []Disk
	Zdbs             []ZDB
	Vms              []VM
	QSFS             []QSFS

	// computed
	NodeDeploymentID map[uint32]uint64
	ContractID       uint64
	IPrange          string
}

Deployment struct

func NewDeployment

func NewDeployment(name string, nodeID uint32,
	solutionType string, solutionProvider *uint64,
	NetworkName string,
	disks []Disk,
	zdbs []ZDB,
	vms []VM,
	QSFS []QSFS,
) Deployment

NewDeployment generates a new deployment

func NewDeploymentFromZosDeployment

func NewDeploymentFromZosDeployment(d gridtypes.Deployment, nodeID uint32) (Deployment, error)

NewDeploymentFromZosDeployment generates deployment from zos deployment

func (*Deployment) GenerateMetadata

func (d *Deployment) GenerateMetadata() (string, error)

GenerateMetadata generates deployment metadata

func (*Deployment) Match

func (d *Deployment) Match(disks []Disk, QSFS []QSFS, zdbs []ZDB, vms []VM)

Match objects to match the input

func (*Deployment) Nullify

func (d *Deployment) Nullify()

Nullify resets deployment

func (*Deployment) Validate

func (d *Deployment) Validate() error

Validate validates a deployment

func (*Deployment) ZosDeployment

func (d *Deployment) ZosDeployment(twin uint32) (gridtypes.Deployment, error)

ZosDeployment generates a new zos deployment from a deployment

type DeploymentData

type DeploymentData struct {
	Version     int    `json:"version"`
	Type        string `json:"type"`
	Name        string `json:"name"`
	ProjectName string `json:"projectName"`
}

DeploymentData for deployments meta data

func ParseDeploymentData

func ParseDeploymentData(deploymentMetaData string) (DeploymentData, error)

ParseDeploymentData parses the deployment metadata

type Disk

type Disk struct {
	Name        string `json:"name"`
	SizeGB      int    `json:"size"`
	Description string `json:"description"`
}

Disk struct

func NewDiskFromWorkload

func NewDiskFromWorkload(wl *gridtypes.Workload) (Disk, error)

NewDiskFromWorkload generates a new disk from a workload

func (*Disk) ZosWorkload

func (d *Disk) ZosWorkload() gridtypes.Workload

ZosWorkload generates a workload from a disk

type GatewayFQDNProxy

type GatewayFQDNProxy struct {
	// required
	NodeID uint32
	// Backends are list of backend ips
	Backends []zos.Backend
	// FQDN deployed on the node
	FQDN string
	// Name is the workload name
	Name string

	// optional
	// Passthrough whether to pass tls traffic or not
	TLSPassthrough bool
	// Network name to join
	Network      string
	Description  string
	SolutionType string

	// computed
	ContractID       uint64
	NodeDeploymentID map[uint32]uint64
}

GatewayFQDNProxy for gateway FQDN proxy

func NewGatewayFQDNProxyFromZosWorkload

func NewGatewayFQDNProxyFromZosWorkload(wl gridtypes.Workload) (GatewayFQDNProxy, error)

NewGatewayFQDNProxyFromZosWorkload generates a gateway FQDN proxy from a zos workload

func (*GatewayFQDNProxy) GenerateMetadata

func (g *GatewayFQDNProxy) GenerateMetadata() (string, error)

GenerateMetadata generates gateway deployment metadata

func (*GatewayFQDNProxy) ZosWorkload

func (g *GatewayFQDNProxy) ZosWorkload() gridtypes.Workload

ZosWorkload generates a zos workload from GatewayFQDNProxy

type GatewayNameProxy

type GatewayNameProxy struct {
	// Required
	NodeID uint32
	// Name the fully qualified domain name to use (cannot be present with Name)
	Name string
	// Backends are list of backend ips
	Backends []zos.Backend

	// Optional
	// Passthrough whether to pass tls traffic or not
	TLSPassthrough bool
	// Network name to join
	Network      string
	Description  string
	SolutionType string

	// computed
	// FQDN deployed on the node
	NodeDeploymentID map[uint32]uint64
	FQDN             string
	NameContractID   uint64
	ContractID       uint64
}

GatewayNameProxy struct for gateway name proxy

func NewGatewayNameProxyFromZosWorkload

func NewGatewayNameProxyFromZosWorkload(wl gridtypes.Workload) (GatewayNameProxy, error)

NewGatewayNameProxyFromZosWorkload generates a gateway name proxy from a zos workload

func (*GatewayNameProxy) GenerateMetadata

func (g *GatewayNameProxy) GenerateMetadata() (string, error)

GenerateMetadata generates gateway deployment metadata

func (*GatewayNameProxy) ZosWorkload

func (g *GatewayNameProxy) ZosWorkload() gridtypes.Workload

ZosWorkload generates a zos workload from GatewayNameProxy

type Group

type Group struct {
	Backends Backends `json:"backends"`
}

Group is a zos group

type Groups

type Groups []Group

Groups is a list of groups

func GroupsFromZos

func GroupsFromZos(gs []zos.ZdbGroup) (groups Groups)

GroupsFromZos gets groups from zos

type K8sCluster

type K8sCluster struct {
	Master      *K8sNode
	Workers     []K8sNode
	Token       string
	NetworkName string

	// optional
	SolutionType string
	SSHKey       string

	// computed
	NodesIPRange     map[uint32]gridtypes.IPNet
	NodeDeploymentID map[uint32]uint64
}

K8sCluster struct for k8s cluster

func (*K8sCluster) GenerateMetadata

func (k *K8sCluster) GenerateMetadata() (string, error)

GenerateMetadata generates deployment metadata

func (*K8sCluster) InvalidateBrokenAttributes

func (k *K8sCluster) InvalidateBrokenAttributes(sub subi.SubstrateExt) error

InvalidateBrokenAttributes removes outdated attrs and deleted contracts

func (*K8sCluster) ValidateChecksums

func (k *K8sCluster) ValidateChecksums() error

ValidateChecksums validate check sums for k8s flist

func (*K8sCluster) ValidateIPranges

func (k *K8sCluster) ValidateIPranges() error

ValidateIPranges validates NodesIPRange of master && workers of k8s cluster

func (*K8sCluster) ValidateMyceliumSeed added in v0.14.10

func (k *K8sCluster) ValidateMyceliumSeed() error

func (*K8sCluster) ValidateNames

func (k *K8sCluster) ValidateNames() error

ValidateNames validate names for master and workers

func (*K8sCluster) ValidateToken

func (k *K8sCluster) ValidateToken() error

ValidateToken validate cluster token

func (*K8sCluster) ZosWorkloads

func (k *K8sCluster) ZosWorkloads() ([]gridtypes.Workload, error)

ZosWorkloads generates k8s workloads from a k8s cluster

type K8sNode

type K8sNode struct {
	Name           string `json:"name"`
	Node           uint32 `json:"node"`
	DiskSize       int    `json:"disk_size"`
	PublicIP       bool   `json:"publicip"`
	PublicIP6      bool   `json:"publicip6"`
	Planetary      bool   `json:"planetary"`
	Flist          string `json:"flist"`
	FlistChecksum  string `json:"flist_checksum"`
	ComputedIP     string `json:"computedip"`
	ComputedIP6    string `json:"computedip6"`
	PlanetaryIP    string `json:"planetary_ip"`
	MyceliumIP     string `json:"mycelium_ip"`
	MyceliumIPSeed []byte `json:"mycelium_ip_seed"`
	IP             string `json:"ip"`
	CPU            int    `json:"cpu"`
	Memory         int    `json:"memory"`
	NetworkName    string `json:"network_name"`
	Token          string `json:"token"`
	SSHKey         string `json:"ssh_key"`
	ConsoleURL     string `json:"console_url"`
}

K8sNode kubernetes data

func NewK8sNodeFromWorkload

func NewK8sNodeFromWorkload(wl gridtypes.Workload, nodeID uint32, diskSize int, computedIP string, computedIP6 string) (K8sNode, error)

NewK8sNodeFromWorkload generates a new k8s from a workload

func (*K8sNode) MasterZosWorkload

func (k *K8sNode) MasterZosWorkload(cluster *K8sCluster) (K8sWorkloads []gridtypes.Workload)

MasterZosWorkload generates a k8s master workload from a k8s node

func (*K8sNode) WorkerZosWorkload

func (k *K8sNode) WorkerZosWorkload(cluster *K8sCluster) (K8sWorkloads []gridtypes.Workload)

WorkerZosWorkload generates a k8s worker workload from a k8s node

type Metadata

type Metadata struct {
	Type                string   `json:"type"`
	Prefix              string   `json:"prefix"`
	EncryptionAlgorithm string   `json:"encryption_algorithm"`
	EncryptionKey       string   `json:"encryption_key"`
	Backends            Backends `json:"backends"`
}

Metadata for QSFS

type Mount

type Mount struct {
	DiskName   string `json:"disk_name"`
	MountPoint string `json:"mount_point"`
}

Mount disks struct

type NetworkMetaData

type NetworkMetaData struct {
	Version      int          `json:"version"`
	UserAccesses []UserAccess `json:"user_accesses"`
}

NetworkMetaData is added to network workloads to help rebuilding networks when retrieved from the grid

func (*NetworkMetaData) UnmarshalJSON added in v0.14.7

func (m *NetworkMetaData) UnmarshalJSON(data []byte) error

type QSFS

type QSFS struct {
	Name                 string   `json:"name"`
	Description          string   `json:"description"`
	Cache                int      `json:"cache"`
	MinimalShards        uint32   `json:"minimal_shards"`
	ExpectedShards       uint32   `json:"expected_shards"`
	RedundantGroups      uint32   `json:"redundant_groups"`
	RedundantNodes       uint32   `json:"redundant_nodes"`
	MaxZDBDataDirSize    uint32   `json:"max_zdb_data_dir_size"`
	EncryptionAlgorithm  string   `json:"encryption_algorithm"`
	EncryptionKey        string   `json:"encryption_key"`
	CompressionAlgorithm string   `json:"compression_algorithm"`
	Metadata             Metadata `json:"metadata"`
	Groups               Groups   `json:"groups"`
	MetricsEndpoint      string   `json:"metrics_endpoint"`
}

QSFS struct

func NewQSFSFromWorkload

func NewQSFSFromWorkload(wl *gridtypes.Workload) (QSFS, error)

NewQSFSFromWorkload generates a new QSFS from a workload

func (*QSFS) UpdateFromWorkload

func (q *QSFS) UpdateFromWorkload(wl *gridtypes.Workload) error

UpdateFromWorkload updates a QSFS from a workload TODO: no updates, should construct itself from the workload

func (*QSFS) ZosWorkload

func (q *QSFS) ZosWorkload() (gridtypes.Workload, error)

ZosWorkload generates a zos workload

type UserAccess

type UserAccess struct {
	Subnet     string `json:"subnet"`
	PrivateKey string `json:"private_key"`
	NodeID     uint32 `json:"node_id"`
}

UserAccess struct

type VM

type VM struct {
	Name          string `json:"name"`
	Flist         string `json:"flist"`
	FlistChecksum string `json:"flist_checksum"`
	PublicIP      bool   `json:"publicip"`
	PublicIP6     bool   `json:"publicip6"`
	Planetary     bool   `json:"planetary"`
	Corex         bool   `json:"corex"` //TODO: Is it works ??
	ComputedIP    string `json:"computedip"`
	ComputedIP6   string `json:"computedip6"`
	PlanetaryIP   string `json:"planetary_ip"`
	MyceliumIP    string `json:"mycelium_ip"`
	IP            string `json:"ip"`
	// used to get the same mycelium ip for the vm.
	MyceliumIPSeed []byte            `json:"mycelium_ip_seed"`
	Description    string            `json:"description"`
	GPUs           []zos.GPU         `json:"gpus"`
	CPU            int               `json:"cpu"`
	Memory         int               `json:"memory"`
	RootfsSize     int               `json:"rootfs_size"`
	Entrypoint     string            `json:"entrypoint"`
	Mounts         []Mount           `json:"mounts"`
	Zlogs          []Zlog            `json:"zlogs"`
	EnvVars        map[string]string `json:"env_vars"`
	NetworkName    string            `json:"network_name"`
	ConsoleURL     string            `json:"console_url"`
}

VM is a virtual machine struct

func NewVMFromWorkload

func NewVMFromWorkload(wl *gridtypes.Workload, dl *gridtypes.Deployment) (VM, error)

NewVMFromWorkload generates a new vm from given workloads and deployment

func (*VM) LoadFromVM

func (vm *VM) LoadFromVM(vm2 *VM)

LoadFromVM compares the vm with another given vm

func (*VM) Validate

func (vm *VM) Validate() error

Validate validates a virtual machine data cpu: from 1:32 checks if the given flistChecksum equals the checksum of the given flist

func (*VM) ZosWorkload

func (vm *VM) ZosWorkload() []gridtypes.Workload

ZosWorkload generates zos vm workloads

type ZDB

type ZDB struct {
	Name        string   `json:"name"`
	Password    string   `json:"password"`
	Public      bool     `json:"public"`
	Size        int      `json:"size"`
	Description string   `json:"description"`
	Mode        string   `json:"mode"`
	IPs         []string `json:"ips"`
	Port        uint32   `json:"port"`
	Namespace   string   `json:"namespace"`
}

ZDB workload struct

func NewZDBFromWorkload

func NewZDBFromWorkload(wl *gridtypes.Workload) (ZDB, error)

NewZDBFromWorkload generates a new zdb from a workload

func (*ZDB) ZosWorkload

func (z *ZDB) ZosWorkload() gridtypes.Workload

ZosWorkload generates a workload from a zdb

type ZNet

type ZNet struct {
	Name         string
	Description  string
	Nodes        []uint32
	IPRange      gridtypes.IPNet
	AddWGAccess  bool
	MyceliumKeys map[uint32][]byte

	// computed
	SolutionType     string
	AccessWGConfig   string
	ExternalIP       *gridtypes.IPNet
	ExternalSK       wgtypes.Key
	PublicNodeID     uint32
	NodesIPRange     map[uint32]gridtypes.IPNet
	NodeDeploymentID map[uint32]uint64

	WGPort map[uint32]int
	Keys   map[uint32]wgtypes.Key
}

ZNet is zos network workload

func NewNetworkFromWorkload

func NewNetworkFromWorkload(wl gridtypes.Workload, nodeID uint32) (ZNet, error)

NewNetworkFromWorkload generates a new znet from a workload

func (*ZNet) AssignNodesIPs

func (znet *ZNet) AssignNodesIPs(nodes []uint32) error

AssignNodesIPs assign network nodes ips

func (*ZNet) AssignNodesWGKey

func (znet *ZNet) AssignNodesWGKey(nodes []uint32) error

AssignNodesWGKey assign network nodes wireguard key

func (*ZNet) AssignNodesWGPort

func (znet *ZNet) AssignNodesWGPort(ctx context.Context, sub subi.SubstrateExt, ncPool client.NodeClientGetter, nodes []uint32, usedPorts map[uint32][]uint16) error

AssignNodesWGPort assign network nodes wireguard port

func (*ZNet) GenerateMetadata

func (znet *ZNet) GenerateMetadata() (string, error)

GenerateMetadata generates deployment metadata

func (*ZNet) Validate

func (znet *ZNet) Validate() error

Validate validates a network mask to be 16

func (*ZNet) ZosWorkload

func (znet *ZNet) ZosWorkload(subnet gridtypes.IPNet, wgPrivateKey string, wgListenPort uint16, peers []zos.Peer, metadata string, myceliumKey []byte) gridtypes.Workload

ZosWorkload generates a zos workload from a network

type Zlog

type Zlog struct {
	Zmachine string `json:"zmachine"`
	Output   string `json:"output"`
}

Zlog logger struct

func (*Zlog) ZosWorkload

func (zlog *Zlog) ZosWorkload() gridtypes.Workload

ZosWorkload generates a zlog workload

Jump to

Keyboard shortcuts

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