Plumb through log analytics values (#274)
* plumb through log analytics values * add option to specify a log analytics file as well * use secret for log analytics
This commit is contained in:
committed by
Robbie Zhang
parent
28daffa96f
commit
ef6ae9ecf4
39
providers/azure/client/aci/analytics.go
Normal file
39
providers/azure/client/aci/analytics.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package aci
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
func NewContainerGroupDiagnostics(logAnalyticsID, logAnalyticsKey string) (*ContainerGroupDiagnostics, error) {
|
||||
|
||||
if logAnalyticsID == "" || logAnalyticsKey == "" {
|
||||
return nil, errors.New("Log Analytics configuration requires both the workspace ID and Key")
|
||||
}
|
||||
|
||||
return &ContainerGroupDiagnostics{
|
||||
LogAnalytics: &LogAnalyticsWorkspace{
|
||||
WorkspaceID: logAnalyticsID,
|
||||
WorkspaceKey: logAnalyticsKey,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewContainerGroupDiagnosticsFromFile(filepath string) (*ContainerGroupDiagnostics, error) {
|
||||
|
||||
analyticsdata, err := ioutil.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Reading Log Analytics Auth file %q failed: %v", filepath, err)
|
||||
}
|
||||
// Unmarshal the log analytics file.
|
||||
var law LogAnalyticsWorkspace
|
||||
if err := json.Unmarshal(analyticsdata, &law); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &ContainerGroupDiagnostics{
|
||||
LogAnalytics: &law,
|
||||
}, nil
|
||||
}
|
||||
38
providers/azure/client/aci/analytics_test.go
Normal file
38
providers/azure/client/aci/analytics_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package aci
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLogAnalyticsFileParsingSuccess(t *testing.T) {
|
||||
diagnostics, err := NewContainerGroupDiagnosticsFromFile("../../../../loganalytics.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if diagnostics == nil || diagnostics.LogAnalytics == nil {
|
||||
t.Fatalf("Unexpected nil diagnostics. Log Analytics file not parsed correctly")
|
||||
}
|
||||
|
||||
if diagnostics.LogAnalytics.WorkspaceID == "" || diagnostics.LogAnalytics.WorkspaceKey == "" {
|
||||
t.Fatalf("Unexpected empty analytics authentication credentials. Log Analytics file not parsed correctly")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLogAnalyticsFileParsingFailure(t *testing.T) {
|
||||
tempFile, err := ioutil.TempFile("", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err = NewContainerGroupDiagnosticsFromFile(tempFile.Name())
|
||||
|
||||
// Cleaup
|
||||
tempFile.Close()
|
||||
os.Remove(tempFile.Name())
|
||||
|
||||
if err == nil {
|
||||
t.Fatalf("Expected parsing an empty Log Analytics auth file to fail, but there were no errors")
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
package aci
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
@@ -363,21 +360,8 @@ func TestCreateContainerGroupWithReadinessProbe(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func logAnalyticsWorkspaceFromFile(filepath string) (*LogAnalyticsWorkspace, error) {
|
||||
analyticsdata, err := ioutil.ReadFile(filepath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Reading LogAnalyticsWorkspace file %q failed: %v", filepath, err)
|
||||
}
|
||||
// Unmarshal the log analytics file.
|
||||
var law LogAnalyticsWorkspace
|
||||
if err := json.Unmarshal(analyticsdata, &law); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &law, nil
|
||||
}
|
||||
|
||||
func TestCreateContainerGroupWithLogAnalytics(t *testing.T) {
|
||||
law, err := logAnalyticsWorkspaceFromFile("../../../../loganalytics.json")
|
||||
diagnostics, err := NewContainerGroupDiagnosticsFromFile("../../../../loganalytics.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -411,9 +395,7 @@ func TestCreateContainerGroupWithLogAnalytics(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
Diagnostics: &ContainerGroupDiagnostics{
|
||||
LogAnalytics: law,
|
||||
},
|
||||
Diagnostics: diagnostics,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user