func()

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
}