Skip to content

Commit

Permalink
Expand BMS abbreviation to Bare Metal Solution
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-basinov committed Apr 24, 2024
1 parent c1108e5 commit f33e99e
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 25 deletions.
18 changes: 10 additions & 8 deletions detectors/gcp/bms.go
Expand Up @@ -20,32 +20,34 @@ const (
bmsInstanceIDEnv = "BMS_INSTANCE_ID"
)

// Use BMS_PROJECT_ID, BMS_REGION and BMS_INSTANCE_ID env vars as an indication that we are running on BMS.
func (d *Detector) onBMS() bool {
// onBareMetalSolution checks if the code is running on a Google Cloud Bare Metal Solution (BMS) by verifying
// the presence and non-empty values of BMS_PROJECT_ID, BMS_REGION, and BMS_INSTANCE_ID environment variables.
// For more information on Google Cloud Bare Metal Solution, see: https://cloud.google.com/bare-metal/docs
func (d *Detector) onBareMetalSolution() bool {
projectID, projectIDExists := d.os.LookupEnv(bmsProjectIDEnv)
region, regionExists := d.os.LookupEnv(bmsRegionEnv)
instanceID, instanceIDExists := d.os.LookupEnv(bmsInstanceIDEnv)
return projectIDExists && regionExists && instanceIDExists && projectID != "" && region != "" && instanceID != ""
}

// BMSInstanceID returns the instance ID from the BMS_INSTANCE_ID environment variable.
func (d *Detector) BMSInstanceID() (string, error) {
// BareMetalSolutionInstanceID returns the instance ID from the BMS_INSTANCE_ID environment variable.
func (d *Detector) BareMetalSolutionInstanceID() (string, error) {
if instanceID, found := d.os.LookupEnv(bmsInstanceIDEnv); found {
return instanceID, nil
}
return "", errEnvVarNotFound
}

// BMSCloudRegion returns the region from the BMS_REGION environment variable.
func (d *Detector) BMSCloudRegion() (string, error) {
// BareMetalSolutionCloudRegion returns the region from the BMS_REGION environment variable.
func (d *Detector) BareMetalSolutionCloudRegion() (string, error) {
if region, found := d.os.LookupEnv(bmsRegionEnv); found {
return region, nil
}
return "", errEnvVarNotFound
}

// BMSProjectID returns the project ID from the BMS_PROJECT_ID environment variable.
func (d *Detector) BMSProjectID() (string, error) {
// BareMetalSolutionProjectID returns the project ID from the BMS_PROJECT_ID environment variable.
func (d *Detector) BareMetalSolutionProjectID() (string, error) {
if project, found := d.os.LookupEnv(bmsProjectIDEnv); found {
return project, nil
}
Expand Down
24 changes: 12 additions & 12 deletions detectors/gcp/bms_test.go
Expand Up @@ -20,62 +20,62 @@ import (
"github.com/stretchr/testify/assert"
)

func TestBMSInstanceID(t *testing.T) {
func TestBareMetalSolutionInstanceID(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{
bmsInstanceIDEnv: "my-host-123",
},
})
instanceID, err := d.BMSInstanceID()
instanceID, err := d.BareMetalSolutionInstanceID()
assert.NoError(t, err)
assert.Equal(t, instanceID, "my-host-123")
}

func TestBMSInstanceIDErr(t *testing.T) {
func TestBareMetalSolutionInstanceIDErr(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{},
})
instanceID, err := d.BMSInstanceID()
instanceID, err := d.BareMetalSolutionInstanceID()
assert.Error(t, err)
assert.Equal(t, instanceID, "")
}

func TestBMSBMSCloudRegion(t *testing.T) {
func TestBareMetalSolutionCloudRegion(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{
bmsRegionEnv: "us-central1",
},
})
region, err := d.BMSCloudRegion()
region, err := d.BareMetalSolutionCloudRegion()
assert.NoError(t, err)
assert.Equal(t, region, "us-central1")
}

func TestBMSCloudRegionErr(t *testing.T) {
func TestBareMetalSolutionCloudRegionErr(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{},
})
region, err := d.BMSCloudRegion()
region, err := d.BareMetalSolutionCloudRegion()
assert.Error(t, err)
assert.Equal(t, region, "")
}

func TestBMSBMSProjectID(t *testing.T) {
func TestBareMetalSolutionProjectID(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{
bmsProjectIDEnv: "my-test-project",
},
})
projectID, err := d.BMSProjectID()
projectID, err := d.BareMetalSolutionProjectID()
assert.NoError(t, err)
assert.Equal(t, projectID, "my-test-project")
}

func TestBMSProjectIDErr(t *testing.T) {
func TestBareMetalSolutionProjectIDErr(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{},
})
projectID, err := d.BMSProjectID()
projectID, err := d.BareMetalSolutionProjectID()
assert.Error(t, err)
assert.Equal(t, projectID, "")
}
6 changes: 3 additions & 3 deletions detectors/gcp/detector.go
Expand Up @@ -40,14 +40,14 @@ const (
CloudFunctions
AppEngineStandard
AppEngineFlex
BMS
BareMetalSolution
)

// CloudPlatform returns the platform on which this program is running.
func (d *Detector) CloudPlatform() Platform {
switch {
case d.onBMS():
return BMS
case d.onBareMetalSolution():
return BareMetalSolution
case d.onGKE():
return GKE
case d.onCloudFunctions():
Expand Down
4 changes: 2 additions & 2 deletions detectors/gcp/detector_test.go
Expand Up @@ -90,7 +90,7 @@ func TestCloudPlatformCloudFunctions(t *testing.T) {
assert.Equal(t, platform, CloudFunctions)
}

func TestCloudPlatformBMS(t *testing.T) {
func TestCloudPlatformBareMetalSolution(t *testing.T) {
d := NewTestDetector(&FakeMetadataProvider{}, &FakeOSProvider{
Vars: map[string]string{
bmsInstanceIDEnv: "foo",
Expand All @@ -99,7 +99,7 @@ func TestCloudPlatformBMS(t *testing.T) {
},
})
platform := d.CloudPlatform()
assert.Equal(t, platform, BMS)
assert.Equal(t, platform, BareMetalSolution)
}

func TestProjectID(t *testing.T) {
Expand Down

0 comments on commit f33e99e

Please sign in to comment.