mirror of
https://github.com/lxc/incus.git
synced 2026-02-05 18:45:46 +01:00
78 lines
2.5 KiB
Go
78 lines
2.5 KiB
Go
package network
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/lxc/incus/v6/internal/iprange"
|
|
"github.com/lxc/incus/v6/internal/server/cluster"
|
|
"github.com/lxc/incus/v6/internal/server/cluster/request"
|
|
"github.com/lxc/incus/v6/internal/server/db"
|
|
"github.com/lxc/incus/v6/internal/server/state"
|
|
"github.com/lxc/incus/v6/shared/api"
|
|
)
|
|
|
|
// Type represents a network driver type.
|
|
type Type interface {
|
|
FillConfig(config map[string]string) error
|
|
Info() Info
|
|
ValidateName(name string) error
|
|
Type() string
|
|
DBType() db.NetworkType
|
|
}
|
|
|
|
// Network represents an instantiated network.
|
|
type Network interface {
|
|
Type
|
|
|
|
// Load.
|
|
init(s *state.State, id int64, projectName string, netInfo *api.Network, netNodes map[int64]db.NetworkNode) error
|
|
|
|
// Config.
|
|
Validate(config map[string]string, clientType request.ClientType) error
|
|
ID() int64
|
|
Name() string
|
|
Project() string
|
|
Description() string
|
|
Status() string
|
|
LocalStatus() string
|
|
Config() map[string]string
|
|
Locations() []string
|
|
IsUsed(instanceOnly bool) (bool, error)
|
|
IsManaged() bool
|
|
DHCPv4Subnet() *net.IPNet
|
|
DHCPv6Subnet() *net.IPNet
|
|
DHCPv4Ranges() []iprange.Range
|
|
DHCPv6Ranges() []iprange.Range
|
|
|
|
// Actions.
|
|
Create(clientType request.ClientType) error
|
|
Start() error
|
|
Stop() error
|
|
Rename(name string) error
|
|
Update(newNetwork api.NetworkPut, targetNode string, clientType request.ClientType) error
|
|
HandleHeartbeat(heartbeatData *cluster.APIHeartbeat) error
|
|
Delete(clientType request.ClientType) error
|
|
handleDependencyChange(netName string, netConfig map[string]string, changedKeys []string) error
|
|
|
|
// Status.
|
|
State() (*api.NetworkState, error)
|
|
Leases(projectName string, clientType request.ClientType) ([]api.NetworkLease, error)
|
|
|
|
// Address Forwards.
|
|
ForwardCreate(forward api.NetworkForwardsPost, clientType request.ClientType) error
|
|
ForwardUpdate(listenAddress string, newForward api.NetworkForwardPut, clientType request.ClientType) error
|
|
ForwardDelete(listenAddress string, clientType request.ClientType) error
|
|
|
|
// Load Balancers.
|
|
LoadBalancerCreate(loadBalancer api.NetworkLoadBalancersPost, clientType request.ClientType) error
|
|
LoadBalancerUpdate(listenAddress string, newLoadBalancer api.NetworkLoadBalancerPut, clientType request.ClientType) error
|
|
LoadBalancerState(loadbalancer api.NetworkLoadBalancer) (*api.NetworkLoadBalancerState, error)
|
|
LoadBalancerDelete(listenAddress string, clientType request.ClientType) error
|
|
|
|
// Peerings.
|
|
PeerCreate(forward api.NetworkPeersPost) error
|
|
PeerUpdate(peerName string, newPeer api.NetworkPeerPut) error
|
|
PeerDelete(peerName string) error
|
|
PeerUsedBy(peerName string) ([]string, error)
|
|
}
|