Skip to content

Commit

Permalink
Update fleet Status based on GS lister (not GSS)
Browse files Browse the repository at this point in the history
Use Gameserver Lister to retrieve status faster, not based on
Gameserverset Status, which is updated later than Gameservers.
  • Loading branch information
aLekSer committed Feb 22, 2019
1 parent 97f1935 commit 1c3f992
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
24 changes: 16 additions & 8 deletions pkg/fleets/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ type Controller struct {
crdGetter v1beta1.CustomResourceDefinitionInterface
gameServerSetGetter getterv1alpha1.GameServerSetsGetter
gameServerSetLister listerv1alpha1.GameServerSetLister
gameServerLister listerv1alpha1.GameServerLister
gameServerSetSynced cache.InformerSynced
fleetGetter getterv1alpha1.FleetsGetter
fleetLister listerv1alpha1.FleetLister
Expand All @@ -72,6 +73,7 @@ func NewController(
agonesInformerFactory externalversions.SharedInformerFactory) *Controller {

gameServerSets := agonesInformerFactory.Stable().V1alpha1().GameServerSets()
gameServers := agonesInformerFactory.Stable().V1alpha1().GameServers()
gsSetInformer := gameServerSets.Informer()

fleets := agonesInformerFactory.Stable().V1alpha1().Fleets()
Expand All @@ -82,6 +84,7 @@ func NewController(
gameServerSetGetter: agonesClient.StableV1alpha1(),
gameServerSetLister: gameServerSets.Lister(),
gameServerSetSynced: gsSetInformer.HasSynced,
gameServerLister: gameServers.Lister(),
fleetGetter: agonesClient.StableV1alpha1(),
fleetLister: fleets.Lister(),
fleetSynced: fInformer.HasSynced,
Expand Down Expand Up @@ -476,21 +479,26 @@ func (c *Controller) updateFleetStatus(fleet *stablev1alpha1.Fleet) error {

c.logger.WithField("key", fleet.Name).Info("Update Fleet Status")

list, err := ListGameServerSetsByFleetOwner(c.gameServerSetLister, fleet)
list, err := ListGameServersByFleetOwner(c.gameServerLister, fleet)
if err != nil {
return err
}

fCopy := fleet.DeepCopy()
fCopy.Status.Replicas = 0
fCopy.Status.ReadyReplicas = 0
fCopy.Status.AllocatedReplicas = 0

for _, gsSet := range list {
fCopy.Status.Replicas += gsSet.Status.Replicas
fCopy.Status.ReadyReplicas += gsSet.Status.ReadyReplicas
fCopy.Status.AllocatedReplicas += gsSet.Status.AllocatedReplicas
fCopy.Status.Replicas = int32(len(list))
ready := int32(0)
allocated := int32(0)
for _, gs := range list {
switch gs.Status.State {
case v1alpha1.GameServerStateAllocated:
allocated++
case v1alpha1.GameServerStateReady:
ready++
}
}
fCopy.Status.ReadyReplicas = ready
fCopy.Status.AllocatedReplicas = allocated

_, err = c.fleetGetter.Fleets(fCopy.Namespace).Update(fCopy)
return errors.Wrapf(err, "error updating status of fleet %s", fCopy.ObjectMeta.Name)
Expand Down
5 changes: 1 addition & 4 deletions pkg/fleets/fleets.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,5 @@ func ListGameServersByFleetOwner(gameServerLister listerv1alpha1.GameServerListe
fleet *stablev1alpha1.Fleet) ([]*stablev1alpha1.GameServer, error) {

list, err := gameServerLister.List(labels.SelectorFromSet(labels.Set{stablev1alpha1.FleetNameLabel: fleet.ObjectMeta.Name}))
if err != nil {
return list, errors.Wrapf(err, "error listing gameservers for fleets %s", fleet.ObjectMeta.Name)
}
return list, nil
return list, errors.Wrapf(err, "error listing gameservers for fleets %s", fleet.ObjectMeta.Name)
}

0 comments on commit 1c3f992

Please sign in to comment.