Skip to content

Commit

Permalink
fix: clientset scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
hulucc committed Jun 16, 2021
1 parent 2d4c187 commit b4a4f28
Show file tree
Hide file tree
Showing 12 changed files with 93 additions and 30 deletions.
7 changes: 3 additions & 4 deletions api/v1/roomingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,9 @@ type RoomIngressPlayerStatus struct {
//+kubebuilder:validation:Minimum=0
//+kubebuilder:validation:Maximum=4294967295
Token int64 `json:"token"`
//+kubebuilder:validation:MinItems=1
Externals []string `json:"externals"`
Timestamp metav1.Time `json:"timestamp"`
Expire metav1.Time `json:"expire"`
Externals []string `json:"externals,omitempty"`
Timestamp *metav1.Time `json:"timestamp,omitempty"`
Expire *metav1.Time `json:"expire,omitempty"`
Status PlayerStatus `json:"status"`
Detail string `json:"detail"`
}
Expand Down
8 changes: 4 additions & 4 deletions api/v1/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import (
)

var (
GroupVersion = schema.GroupVersion{Group: "projectdavinci.com", Version: "v1"}
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
AddToScheme = SchemeBuilder.AddToScheme
GroupVersion = schema.GroupVersion{Group: "projectdavinci.com", Version: "v1"}
GroupVersionKind = schema.GroupVersionKind{Group: "projectdavinci.com", Version: "v1", Kind: "RoomIngress"}
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
AddToScheme = SchemeBuilder.AddToScheme
)

10 changes: 8 additions & 2 deletions api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 7 additions & 5 deletions client/v1/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import (
"time"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/serializer"
types "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
v1 "github.com/LilithGames/spiracle/api/v1"

"github.com/LilithGames/spiracle/client/v1/scheme"
)

type SpiracleV1Interface interface {
Expand All @@ -24,10 +24,12 @@ type SpiracleV1Client struct {

func NewForConfig(c *rest.Config) (*SpiracleV1Client, error) {
config := *c
config.ContentConfig.GroupVersion = &v1.GroupVersion
config.GroupVersion = &v1.GroupVersion
config.APIPath = "/apis"
config.NegotiatedSerializer = serializer.NewCodecFactory(scheme.Scheme)
config.UserAgent = rest.DefaultKubernetesUserAgent()
config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
if config.UserAgent == "" {
config.UserAgent = rest.DefaultKubernetesUserAgent()
}

client, err := rest.RESTClientFor(&config)
if err != nil {
Expand Down
33 changes: 32 additions & 1 deletion client/v1/fake_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,44 @@ import (
watch "k8s.io/apimachinery/pkg/watch"
types "k8s.io/apimachinery/pkg/types"
v1 "github.com/LilithGames/spiracle/api/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
)

var ringsResource = schema.GroupVersionResource{Group: "projectdavinci.com", Version: "v1", Resource: "roomingresses"}
var ringsKind = schema.GroupVersionKind{Group: "projectdavinci.com", Version: "v1", Kind: "RoomIngress"}
var fakescheme = runtime.NewScheme()
var codecs = serializer.NewCodecFactory(fakescheme)

func init() {
utilruntime.Must(v1.AddToScheme(fakescheme))
}

type FakeSpiracleV1 struct {
*testing.Fake
tracker testing.ObjectTracker
testing.Fake
}

func NewNewSimpleClientset(objects ...runtime.Object) *FakeSpiracleV1 {
o := testing.NewObjectTracker(fakescheme, codecs.UniversalDecoder())
for _, obj := range objects {
if err := o.Add(obj); err != nil {
panic(err)
}
}
cs := &FakeSpiracleV1{tracker: o}
cs.AddReactor("*", "*", testing.ObjectReaction(o))
cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) {
gvr := action.GetResource()
ns := action.GetNamespace()
watch, err := o.Watch(gvr, ns)
if err != nil {
return false, nil, err
}
return true, watch, nil
})
return cs
}

func (it *FakeSpiracleV1) RESTClient() rest.Interface {
Expand Down
17 changes: 17 additions & 0 deletions client/v1/scheme/register.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package scheme

import (
runtime "k8s.io/apimachinery/pkg/runtime"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"

v1 "github.com/LilithGames/spiracle/api/v1"
)

var Scheme = runtime.NewScheme()
var Codecs = serializer.NewCodecFactory(Scheme)
var ParameterCodec = runtime.NewParameterCodec(Scheme)

func init() {
utilruntime.Must(v1.AddToScheme(Scheme))
}
14 changes: 10 additions & 4 deletions controllers/roomingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,25 +86,30 @@ func (it *RoomIngressReconciler) syncTokens(ring *v1.RoomIngress) (int, *time.Du
if !ok {
c.Player.Status = v1.PlayerStatusFailure
c.Player.Detail = "unknown room.server"
n++
continue
}
external, err := it.ExternalRepos.Get(c.Room.Server)
if err != nil {
c.Player.Status = v1.PlayerStatusFailure
c.Player.Detail = "get server external err: " + err.Error()
n++
continue
}
token, err := repo.Create(context.TODO(), repos.TokenCreationToken(uint32(c.Player.Token)))
if err != nil {
c.Player.Status = v1.PlayerStatusFailure
c.Player.Detail = err.Error()
n++
continue
// requeue = append(requeue, time.Minute)
}
c.Player.Status = v1.PlayerStatusSuccess
c.Player.Token = int64(token.TToken)
c.Player.Externals = external.HostPorts()
c.Player.Timestamp = metav1.NewTime(token.Timestamp)
c.Player.Expire = metav1.NewTime(token.Expire)
c.Player.Timestamp = ptr(metav1.NewTime(token.Timestamp))
c.Player.Expire = ptr(metav1.NewTime(token.Expire))
n++
requeue = append(requeue, token.Duration())
}
if diff.Type == DiffDeleted || diff.Type == DiffUpdated {
Expand All @@ -114,6 +119,9 @@ func (it *RoomIngressReconciler) syncTokens(ring *v1.RoomIngress) (int, *time.Du
repo.Delete(context.TODO(), uint32(p.Player.Token))
}
}
if diff.Type == DiffDeleted {
n++
}
}
if diff.Type == DiffUnchanged {
c := GetPlayerStatusByPos(curr, diff.Current)
Expand All @@ -131,8 +139,6 @@ func (it *RoomIngressReconciler) syncTokens(ring *v1.RoomIngress) (int, *time.Du
requeue = append(requeue, expire.Sub(now))
}
}
} else {
n++
}
}
ring.Status = *curr
Expand Down
6 changes: 6 additions & 0 deletions controllers/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package controllers
import (
"reflect"
"time"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func contains(items []string, x string) bool {
Expand Down Expand Up @@ -46,3 +48,7 @@ func min(a []time.Duration) *time.Duration {
}
return &m
}

func ptr(t metav1.Time) *metav1.Time {
return &t
}
8 changes: 4 additions & 4 deletions deploy/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@ roomproxy:
debug: false
workers: 2
servers:
- name: dev
- name: local
host: 0.0.0.0
port: 4000
externals: ["47.103.191.190:15000"]
- name: alpha
- name: dev
host: 0.0.0.0
port: 5000
externals: ["47.103.191.190:15001"]
controller:
reconciler:
enable: false
enable: true
leaderelection:
enable: false
enable: true
id: eed665e4.projectdavinci.com

4 changes: 0 additions & 4 deletions deploy/crd/projectdavinci.com_roomingresses.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ spec:
externals:
items:
type: string
minItems: 1
type: array
id:
type: string
Expand All @@ -113,11 +112,8 @@ spec:
type: integer
required:
- detail
- expire
- externals
- id
- status
- timestamp
- token
type: object
type: array
Expand Down
2 changes: 1 addition & 1 deletion deploy/samples/roomingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
spec:
rooms:
- id: room1
server: local
server: local1
upstream: 127.0.0.1:9200
players:
- id: player1
Expand Down
2 changes: 1 addition & 1 deletion deploy/spiracle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
matchLabels:
app: spiracle
serviceName: spiracle
replicas: &replicas 3
replicas: 3
revisionHistoryLimit: 0
template:
metadata:
Expand Down

0 comments on commit b4a4f28

Please sign in to comment.