wtfutil/wtf · error
failed to initialize Azure session: %w
Error message
failed to initialize Azure session: %w
What it means
The Azure Logs widget's fetchDataAsync initializes a session with Init(to.Ptr(widget.settings.Queryfile)) before querying. If Init fails (bad queryfile, missing Azure credentials/config) the failure is wrapped as 'failed to initialize Azure session' and surfaced in the widget via setError. It indicates the widget cannot even begin authenticating to Azure.
Source
Thrown at modules/azurelogs/widget.go:66
if widget.Disabled() {
return
}
// Reset state to allow fresh data fetch
widget.loading = false
widget.lastError = nil
widget.dataLoaded = false
widget.tableData = nil
widget.Redraw(widget.content)
}
/* -------------------- Helper Functions -------------------- */
func (widget *Widget) fetchDataAsync() {
sess, err := Init(to.Ptr(widget.settings.Queryfile))
if err != nil {
widget.setError(fmt.Errorf("failed to initialize Azure session: %w", err))
return
}
// Execute Azure query directly
tableResp, err := RunQuery(sess)
if err != nil {
widget.setError(fmt.Errorf("failed to execute Azure query: %w", err))
return
}
// Check if we have valid data structure
if tableResp == nil || len(tableResp.Header) == 0 {
widget.setError(fmt.Errorf("no table structure returned from query"))
return
}
// Store the data and mark as loaded
widget.tableData = tableRespView on GitHub (pinned to bb838c1ccb)
Solutions
- Set a valid Queryfile path in the widget settings and confirm the file exists and parses
- Run az login or export AZURE_* service-principal variables for the process running the widget
- Call Init() manually with the same queryfile to see the raw underlying error
Example fix
// before
settings.Queryfile = "" // unset in config
sess, err := Init(to.Ptr(widget.settings.Queryfile))
// after
// wtfutil config:
// queryfile: "~/.config/wtf/azure-query.yml"
sess, err := Init(to.Ptr(widget.settings.Queryfile))
if err != nil {
log.Fatalf("azure init: %v", err)
} Defensive patterns
Strategy: validation
Validate before calling
qf := widget.settings.Queryfile
if qf == "" {
return errors.New("azurelogs: queryfile not configured")
}
if _, err := os.Stat(qf); err != nil {
return fmt.Errorf("queryfile %q: %w", qf, err)
} Try / catch
sess, err := Init(to.Ptr(widget.settings.Queryfile))
if err != nil {
widget.setError(fmt.Errorf("failed to initialize Azure session: %w", err))
return
} Prevention
- Validate the queryfile path exists at config load time
- Run az login / provision AZURE_* env vars on hosts running the dashboard
- Log the underlying Init error, not just the widget-level message
When it happens
Trigger: Init(to.Ptr(widget.settings.Queryfile)) returns an error when the widget renders — e.g. the queryfile setting points to a nonexistent/invalid file, or Azure authentication setup inside Init fails (credentials not configured).
Common situations: Wtfutil config missing the azurelogs queryfile setting; invalid YAML/JSON query file; no az login or service-principal env vars in the environment where the dashboard runs.
Related errors
- azure workspace ID is required but not configured
- azure subscription ID is required but not configured
- azure credentials not initialized for subscription %s: pleas
- failed to create Azure Logs client for subscription %s: %w
- failed to execute Azure query: %w
AI-assisted analysis of wtfutil/wtf@bb838c1ccb (2026-09-03).
Data as JSON: /api/errors/0c6d0660a7127af1.
Report an issue: GitHub.