agones.dev/agones@v1.53.0/pkg/fleets/fleets.go (about)

     1  /*
     2   * Copyright 2018 Google LLC All Rights Reserved.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package fleets
    18  
    19  import (
    20  	agonesv1 "agones.dev/agones/pkg/apis/agones/v1"
    21  	listerv1 "agones.dev/agones/pkg/client/listers/agones/v1"
    22  	"github.com/pkg/errors"
    23  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    24  	"k8s.io/apimachinery/pkg/labels"
    25  )
    26  
    27  // ListGameServerSetsByFleetOwner lists all the GameServerSets for a given
    28  // Fleet
    29  func ListGameServerSetsByFleetOwner(gameServerSetNamespacedLister listerv1.GameServerSetNamespaceLister, f *agonesv1.Fleet) ([]*agonesv1.GameServerSet, error) {
    30  	list, err := gameServerSetNamespacedLister.List(labels.SelectorFromSet(labels.Set{agonesv1.FleetNameLabel: f.ObjectMeta.Name}))
    31  	if err != nil {
    32  		return list, errors.Wrapf(err, "error listing gameserversets for fleet %s", f.ObjectMeta.Name)
    33  	}
    34  
    35  	var result []*agonesv1.GameServerSet
    36  	for _, gsSet := range list {
    37  		if metav1.IsControlledBy(gsSet, f) {
    38  			result = append(result, gsSet)
    39  		}
    40  	}
    41  
    42  	return result, nil
    43  }
    44  
    45  // ListGameServersByFleetOwner lists all GameServers that belong to a fleet through the
    46  // GameServer -> GameServerSet -> Fleet owner chain
    47  func ListGameServersByFleetOwner(gameServerNamespacedLister listerv1.GameServerNamespaceLister,
    48  	fleet *agonesv1.Fleet) ([]*agonesv1.GameServer, error) {
    49  
    50  	list, err := gameServerNamespacedLister.List(labels.SelectorFromSet(labels.Set{agonesv1.FleetNameLabel: fleet.ObjectMeta.Name}))
    51  	if err != nil {
    52  		return list, errors.Wrapf(err, "error listing gameservers for fleets %s", fleet.ObjectMeta.Name)
    53  	}
    54  	return list, nil
    55  }