in fast-build-update-tool/internal/gamelift/get_fleet.go [25:61]
func (g *GameLiftClient) GetFleet(ctx context.Context, fleetId string) (*Fleet, error) {
fleetAttributesOutput, err := g.gamelift.DescribeFleetAttributes(ctx, &gamelift.DescribeFleetAttributesInput{
FleetIds: []string{fleetId},
})
if err != nil {
return nil, fmt.Errorf("error looking up fleet attributes %w", err)
}
if len(fleetAttributesOutput.FleetAttributes) == 0 {
return nil, fmt.Errorf("fleet not found: %s", fleetId)
}
os, err := operatingSystemLookup(fleetAttributesOutput.FleetAttributes[0].OperatingSystem)
if err != nil {
return nil, err
}
runtimeConfigurationOutput, err := g.gamelift.DescribeRuntimeConfiguration(ctx, &gamelift.DescribeRuntimeConfigurationInput{
FleetId: aws.String(fleetId),
})
if err != nil {
return nil, fmt.Errorf("error getting fleet runtime configuration %w", err)
}
executablePaths := make([]string, 0, len(runtimeConfigurationOutput.RuntimeConfiguration.ServerProcesses))
for _, proc := range runtimeConfigurationOutput.RuntimeConfiguration.ServerProcesses {
if !contains(executablePaths, *proc.LaunchPath) {
executablePaths = append(executablePaths, *proc.LaunchPath)
}
}
return &Fleet{
Id: fleetId,
OperatingSystem: os,
ExecutablePaths: executablePaths,
}, nil
}