agones.dev/agones@v1.54.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 }