[WIP] more kubernetes impl
This commit is contained in:
@@ -57,6 +57,7 @@ require (
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/api v0.32.3 // indirect
|
||||
k8s.io/apimachinery v0.32.3 // indirect
|
||||
k8s.io/apiserver v0.32.3
|
||||
k8s.io/klog/v2 v2.130.1 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
|
||||
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
|
||||
|
@@ -155,6 +155,8 @@ k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+
|
||||
k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto=
|
||||
k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U=
|
||||
k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
|
||||
k8s.io/apiserver v0.32.3 h1:kOw2KBuHOA+wetX1MkmrxgBr648ksz653j26ESuWNY8=
|
||||
k8s.io/apiserver v0.32.3/go.mod h1:q1x9B8E/WzShF49wh3ADOh6muSfpmFL0I2t+TG0Zdgc=
|
||||
k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU=
|
||||
k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY=
|
||||
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user