Files
opentf/vendor/github.com/lrsmith/go-icinga2-api/iapi/structs.go
Len Smith 015e96d0dd Initial check in for Icinga2 Provider/Resource (#8306)
* Initial checkin for PR request

* Added an argument to provider to allow control over whether or not TLS Certs will skip verification. Controllable via provider or env variable being set

* Initial check-in to use refactored module

* Checkin of very MVP for creating/deleting host test which works and validates basic host creation and deletion

* Check in with support for creating hosts with variables working

* Checking in work to date

* Remove code that causes travis CI to fail while I debug

* Adjust create to accept multivale

* Back on track. Working basic tests. go-icinga2-api needs more test too

* Squashing

* Back on track. Working basic tests. go-icinga2-api needs more test too

* Check in refactored hostgroup support

* Check in refactored check_command, hosts, and hsotgroup with a few test

* Checking in service code

* Add in dependency for icinga2 provider

* Add documentation. Refactor, fix and extend based on feedback from Hashicorp

* Added checking and validation around invalid URL and unavailable server
2016-12-12 15:28:26 +00:00

128 lines
5.0 KiB
Go

package iapi
/*
Currently to get something working and that can be refactored there is a lot of duplicate and overlapping decleration. In
part this is because when a variable is defined it is set to a default value. This has been problematic with having an attrs
struct that has all the variables. That struct then cannot be used to create the JSON for the create, without modification,
because it would try and set values that are not configurable via the API. i.e. for hosts "LastCheck" So to keep things moving
duplicate or near duplicate defintions of structs are being defined but can be revisted and refactored later and test will
be in place to ensure everything still works.
*/
//ServiceStruct stores service results
type ServiceStruct struct {
Attrs ServiceAttrs `json:"attrs"`
Joins struct{} `json:"joins"`
// Meta struct{} `json:"meta"`
Name string `json:"name"`
Type string `json:"type"`
}
type ServiceAttrs struct {
CheckCommand string `json:"check_command"`
// CheckInterval float64 `json:"check_interval"`
// DisplayName string `json:"display_name"`
// Groups []interface{} `json:"groups"`
//Name string `json:"name"`
// Templates []string `json:"templates"`
// Type string `json:"type"`
// Vars interface{} `json:"vars"`
}
// CheckcommandStruct is a struct used to store results from an Icinga2 Checkcommand API call.
type CheckcommandStruct struct {
Name string `json:"name"`
Type string `json:"type"`
Attrs CheckcommandAttrs `json:"attrs"`
Joins struct{} `json:"joins"`
Meta struct{} `json:"meta"`
}
type CheckcommandAttrs struct {
Arguments interface{} `json:"arguments"`
Command []string `json:"command"`
Templates []string `json:"templates"`
// Env interface{} `json:"env"` // Available to be set but not supported yet
// Package string `json:"package"` // Available to be set but not supported yet
// Timeout float64 `json:"timeout"` // Available to be set but not supported yet
// Vars interface{} `json:"vars"` // Available to be set but not supported yet
// Zone string `json:"zone"` // Available to be set but not supported yet
}
// HostgroupStruct is a struct used to store results from an Icinga2 HostGroup API Call. The content are also used to generate the JSON for the CreateHost call
type HostgroupStruct struct {
Name string `json:"name"`
Type string `json:"type"`
Attrs HostgroupAttrs `json:"attrs"`
Meta struct{} `json:"meta"`
Joins struct{} `json:"stuct"`
}
// HostgroupAttrs ...
type HostgroupAttrs struct {
ActionURL string `json:"action_url"`
DisplayName string `json:"display_name"`
Groups []string `json:"groups"`
Notes string `json:"notes"`
NotesURL string `json:"notes_url"`
Templates []string `json:"templates"`
}
// HostStruct is a struct used to store results from an Icinga2 Host API Call. The content are also used to generate the JSON for the CreateHost call
type HostStruct struct {
Name string `json:"name"`
Type string `json:"type"`
Attrs HostAttrs `json:"attrs"`
Meta struct{} `json:"meta"`
Joins struct{} `json:"stuct"`
}
// HostAttrs This is struct lists the attributes that can be set during a CreateHost call. The contents of the struct is converted into JSON
type HostAttrs struct {
ActionURL string `json:"action_url"`
Address string `json:"address"`
Address6 string `json:"address6"`
CheckCommand string `json:"check_command"`
DisplayName string `json:"display_name"`
Groups []string `json:"groups"`
Notes string `json:"notes"`
NotesURL string `json:"notes_url"`
Templates []string `json:"templates"`
Vars interface{} `json:"vars"`
}
// APIResult Stores the results from NewApiRequest
type APIResult struct {
Error float64 `json:"error"`
ErrorString string
Status string `json:"Status"`
Code int `json:"Code"`
Results interface{} `json:"results"`
}
// APIStatus stores the results of an Icinga2 API Status Call
type APIStatus struct {
Results []struct {
Name string `json:"name"`
Perfdata []string `json:"perfdata"`
Status struct {
API struct {
ConnEndpoints []interface{} `json:"conn_endpoints"`
Identity string `json:"identity"`
NotConnEndpoints []interface{} `json:"not_conn_endpoints"`
NumConnEndpoints int `json:"num_conn_endpoints"`
NumEndpoints int `json:"num_endpoints"`
NumNotConnEndpoints int `json:"num_not_conn_endpoints"`
Zones struct {
Master struct {
ClientLogLag int `json:"client_log_lag"`
Connected bool `json:"connected"`
Endpoints []string `json:"endpoints"`
ParentZone string `json:"parent_zone"`
} `json:"master"`
} `json:"zones"`
} `json:"api"`
} `json:"status"`
} `json:"results"`
}