package instancemanager import ( "context" "net" "git.acooldomain.co/server-manager/backend-kubernetes-go/models" ) type Server struct { Id string Running bool RunningCommand string RunningImage *models.Image Ports []models.Port } type Port struct { Number uint16 Protocol models.PortProtocol } type Image struct { Registry string Tag string Command string Ports []Port } type InstanceManager interface { //General // Read Only ListImages(ctx context.Context) ([]Image, error) GetServer(ctx context.Context, serverId string) (*Server, error) ListServers(ctx context.Context) ([]Server, error) // State Changing StartServer(ctx context.Context, serverId string, command string, ports []models.Port) error StopServer(ctx context.Context, serverId string) error CreateServer(ctx context.Context, image models.Image) (*Server, error) DeleteServer(ctx context.Context, serverId string) error // Terminal // Read Only GetLogs(ctx context.Context, serverId string) (string, error) // Status Changing InteractiveTerminal(ctx context.Context, serverId string) (*net.Conn, error) RunCommand(ctx context.Context, serverId string, command string) (string, error) // File Browser // Read Only GetFileBrowser(ctx context.Context, serverId string) (*models.FileBrowser, error) ListFileBrowsers(ctx context.Context) ([]models.FileBrowser, error) // Status Changing StartFileBrowser(ctx context.Context, serverId string) (*models.FileBrowser, error) StopFileBrowser(ctx context.Context, serverId string) error }