Add function to detect whether Packer is running on Azure
This commit is contained in:
parent
f106adbd12
commit
113dc12346
|
@ -0,0 +1,8 @@
|
|||
// +build !linux
|
||||
|
||||
package common
|
||||
|
||||
// IsAzure returns true if Packer is running on Azure (currently only works on Linux)
|
||||
func IsAzure() bool {
|
||||
return false
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
var (
|
||||
smbiosAssetTagFile = "/sys/class/dmi/id/chassis_asset_tag"
|
||||
azureAssetTag = []byte("7783-7084-3265-9085-8269-3286-77\n")
|
||||
)
|
||||
|
||||
// IsAzure returns true if Packer is running on Azure
|
||||
func IsAzure() bool {
|
||||
return isAzureAssetTag(smbiosAssetTagFile)
|
||||
}
|
||||
|
||||
func isAzureAssetTag(filename string) bool {
|
||||
if d, err := ioutil.ReadFile(filename); err == nil {
|
||||
return bytes.Compare(d, azureAssetTag) == 0
|
||||
}
|
||||
return false
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package common
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestIsAzure(t *testing.T) {
|
||||
f, err := ioutil.TempFile("", "TestIsAzure*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.Remove(f.Name())
|
||||
|
||||
f.Seek(0, 0)
|
||||
f.Truncate(0)
|
||||
f.Write([]byte("not the azure assettag"))
|
||||
|
||||
assert.False(t, isAzureAssetTag(f.Name()), "asset tag is not Azure's")
|
||||
|
||||
f.Seek(0, 0)
|
||||
f.Truncate(0)
|
||||
f.Write(azureAssetTag)
|
||||
|
||||
assert.True(t, isAzureAssetTag(f.Name()), "asset tag is Azure's")
|
||||
}
|
Loading…
Reference in New Issue