[WIP] more kubernetes impl

This commit is contained in:
2025-04-06 20:55:55 +03:00
parent fce36b701f
commit 658789cccb
5 changed files with 69 additions and 9 deletions

View File

@@ -9,7 +9,11 @@ import (
"git.acooldomain.co/server-manager/backend/models"
servermanagerv1 "git.acooldomain.co/server-manager/kubernetes-operator/api/v1alpha1"
"github.com/buildkite/shellwords"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/storage/names"
names "k8s.io/apiserver/pkg/storage/names"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -19,6 +23,8 @@ type InstanceManager struct {
instancemanager.InstanceManager
Config models.KubernetesInstanceManagerConfig
client client.Client
restCfg *rest.Config
coreV1Cli *kubernetes.Clientset
}
func convertServerManagerImage(image *servermanagerv1.Image) *instancemanager.Image {
@@ -167,17 +173,57 @@ func (i *InstanceManager) StopServer(ctx context.Context, serverId string) error
}
func (i *InstanceManager) CreateServer(ctx context.Context) (*instancemanager.Server, error) {
return nil, nil
name := names.SimpleNameGenerator.GenerateName("")
err := i.client.Create(ctx, &servermanagerv1.ServerManager{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: i.Config.Namespace,
},
Spec: servermanagerv1.ServerManagerSpec{
Storage: "10Gi",
Server: servermanagerv1.ServerSpec{
Image: "",
On: false,
},
},
})
if err != nil {
return nil, err
}
serverManager := &instancemanager.Server{
Id: name,
Running: false,
RunningImage: nil,
RunningCommand: "",
}
return serverManager, nil
}
func (i *InstanceManager) DeleteServer(ctx context.Context, serverId string) error {
serverManager := &servermanagerv1.ServerManager{}
err := i.client.Get(ctx, client.ObjectKey{Name: serverId, Namespace: i.Config.Namespace}, serverManager)
if err != nil {
if errors.IsNotFound(err) {
return nil
} else {
return err
}
}
err = i.client.Create(ctx, serverManager)
if err != nil {
return err
}
return nil
}
// Terminal
// Status Changing
func (i *InstanceManager) InteractiveTerminal(ctx context.Context, serverId string) (*net.Conn, error) {
i.client.RESTMapper()
return nil, nil
}