Skip to content

Commit

Permalink
fix GAE region detection (#409)
Browse files Browse the repository at this point in the history
  • Loading branch information
dashpole committed Jun 6, 2022
1 parent 16663a2 commit e818bf8
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 10 deletions.
18 changes: 17 additions & 1 deletion detectors/gcp/app_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,22 @@ func (d *Detector) AppEngineServiceInstance() (string, error) {
}

// AppEngineAvailabilityZoneAndRegion returns the zone and region in which this program is running
// Deprecated: Use AppEngineAvailabilityZone and AppEngineCloudRegion instead.
func (d *Detector) AppEngineAvailabilityZoneAndRegion() (string, string, error) {
return d.GCEAvailabilityZoneAndRegion()
zone, err := d.AppEngineAvailabilityZone()
if err != nil {
return "", "", err
}
region, err := d.AppEngineCloudRegion()
return zone, region, err
}

// AppEngineCloudRegion returns the zone the app engine service is running in.
func (d *Detector) AppEngineAvailabilityZone() (string, error) {
return d.metadata.Zone()
}

// AppEngineCloudRegion returns the region the app engine service is running in.
func (d *Detector) AppEngineCloudRegion() (string, error) {
return d.FaaSCloudRegion()
}
37 changes: 37 additions & 0 deletions detectors/gcp/app_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package gcp

import (
"fmt"
"testing"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -79,3 +80,39 @@ func TestAppEngineServiceInstanceErr(t *testing.T) {
assert.Error(t, err)
assert.Equal(t, instance, "")
}

func TestAppEngineAvailabilityZone(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{
FakeZone: "us16",
}, &FakeOSProvider{})
zone, err := d.AppEngineAvailabilityZone()
assert.NoError(t, err)
assert.Equal(t, zone, "us16")
}

func TestAppEngineAvailabilityZoneErr(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{
Err: fmt.Errorf("fake error"),
}, &FakeOSProvider{})
zone, err := d.AppEngineAvailabilityZone()
assert.Error(t, err)
assert.Equal(t, zone, "")
}

func TestAppEngineCloudRegion(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{
Attributes: map[string]string{regionMetadataAttr: "/projects/123/regions/us-central1"},
}, &FakeOSProvider{})
instance, err := d.AppEngineCloudRegion()
assert.NoError(t, err)
assert.Equal(t, instance, "us-central1")
}

func TestAppEngineCloudRegionErr(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{
Err: fmt.Errorf("fake error"),
}, &FakeOSProvider{})
instance, err := d.AppEngineCloudRegion()
assert.Error(t, err)
assert.Equal(t, instance, "")
}
14 changes: 5 additions & 9 deletions e2e-test-server/endtoendserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,16 +201,12 @@ func (d *testDetector) Detect(ctx context.Context) (*resource.Resource, error) {
})
case gcp.AppEngine:
attributes = append(attributes, semconv.CloudPlatformGCPAppEngine)
zone, region, err := detector.AppEngineAvailabilityZoneAndRegion()
if err != nil {
return nil, err
}
attributes = append(attributes, semconv.CloudAvailabilityZoneKey.String(zone))
attributes = append(attributes, semconv.CloudRegionKey.String(region))
return detectWithFuncs(attributes, map[attribute.Key]detectionFunc{
semconv.FaaSNameKey: detector.AppEngineServiceName,
semconv.FaaSVersionKey: detector.AppEngineServiceVersion,
semconv.FaaSIDKey: detector.AppEngineServiceInstance,
semconv.FaaSNameKey: detector.AppEngineServiceName,
semconv.FaaSVersionKey: detector.AppEngineServiceVersion,
semconv.FaaSIDKey: detector.AppEngineServiceInstance,
semconv.CloudRegionKey: detector.AppEngineCloudRegion,
semconv.CloudAvailabilityZoneKey: detector.AppEngineAvailabilityZone,
})
case gcp.GCE:
attributes = append(attributes, semconv.CloudPlatformGCPComputeEngine)
Expand Down

0 comments on commit e818bf8

Please sign in to comment.