mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
f06c7e99fe
This commit adds support for [PuppetDB](https://www.puppet.com/docs/puppetdb/8/overview.html) service discovery to the `vmagent` and `victoria-metrics-single` components. Related issue https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5744
119 lines
4 KiB
Go
119 lines
4 KiB
Go
package puppetdb
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils"
|
|
)
|
|
|
|
var jsonResponse = `[
|
|
{
|
|
"certname": "edinburgh.example.com",
|
|
"environment": "prod",
|
|
"exported": false,
|
|
"file": "/etc/puppetlabs/code/environments/prod/modules/upstream/apache/manifests/init.pp",
|
|
"line": 384,
|
|
"parameters": {
|
|
"access_log": true,
|
|
"access_log_file": "ssl_access_log",
|
|
"additional_includes": [ ],
|
|
"directoryindex": "",
|
|
"docroot": "/var/www/html",
|
|
"ensure": "absent",
|
|
"options": [
|
|
"Indexes",
|
|
"FollowSymLinks",
|
|
"MultiViews"
|
|
],
|
|
"php_flags": { },
|
|
"labels": {
|
|
"alias": "edinburgh"
|
|
},
|
|
"scriptaliases": [
|
|
{
|
|
"alias": "/cgi-bin",
|
|
"path": "/var/www/cgi-bin"
|
|
}
|
|
],
|
|
"port": 22,
|
|
"pi": 3.141592653589793,
|
|
"buckets": [
|
|
0,
|
|
2,
|
|
5
|
|
],
|
|
"coordinates": [
|
|
60.13464726551357,
|
|
-2.0513768021728893
|
|
]
|
|
},
|
|
"resource": "49af83866dc5a1518968b68e58a25319107afe11",
|
|
"tags": [
|
|
"roles::hypervisor",
|
|
"apache",
|
|
"apache::vhost",
|
|
"class",
|
|
"default-ssl",
|
|
"profile_hypervisor",
|
|
"vhost",
|
|
"profile_apache",
|
|
"hypervisor",
|
|
"__node_regexp__edinburgh",
|
|
"roles",
|
|
"node"
|
|
],
|
|
"title": "default-ssl",
|
|
"type": "Apache::Vhost"
|
|
}
|
|
]`
|
|
|
|
// TestSDConfig_GetLabels test example response and expect labels are from:
|
|
// https://github.com/prometheus/prometheus/blob/685493187ec5f5734777769f595cf8418d49900d/discovery/puppetdb/puppetdb_test.go#L110C6-L110C39
|
|
func TestSDConfig_GetLabels(t *testing.T) {
|
|
mockSvr := newMockPuppetDBServer(func(_ string) ([]byte, error) {
|
|
return []byte(jsonResponse), nil
|
|
})
|
|
|
|
sdConfig := &SDConfig{
|
|
URL: mockSvr.URL,
|
|
Query: "vhosts",
|
|
Port: 9100,
|
|
IncludeParameters: true,
|
|
}
|
|
|
|
expectLabels := &promutils.Labels{}
|
|
expectLabels.Add("__address__", "edinburgh.example.com:9100")
|
|
expectLabels.Add("__meta_puppetdb_query", "vhosts")
|
|
expectLabels.Add("__meta_puppetdb_certname", "edinburgh.example.com")
|
|
expectLabels.Add("__meta_puppetdb_environment", "prod")
|
|
expectLabels.Add("__meta_puppetdb_exported", "false")
|
|
expectLabels.Add("__meta_puppetdb_file", "/etc/puppetlabs/code/environments/prod/modules/upstream/apache/manifests/init.pp")
|
|
expectLabels.Add("__meta_puppetdb_parameter_access_log", "true")
|
|
expectLabels.Add("__meta_puppetdb_parameter_access_log_file", "ssl_access_log")
|
|
expectLabels.Add("__meta_puppetdb_parameter_buckets", "0,2,5")
|
|
expectLabels.Add("__meta_puppetdb_parameter_coordinates", "60.13464726551357,-2.0513768021728893")
|
|
expectLabels.Add("__meta_puppetdb_parameter_docroot", "/var/www/html")
|
|
expectLabels.Add("__meta_puppetdb_parameter_ensure", "absent")
|
|
expectLabels.Add("__meta_puppetdb_parameter_labels_alias", "edinburgh")
|
|
expectLabels.Add("__meta_puppetdb_parameter_options", "Indexes,FollowSymLinks,MultiViews")
|
|
expectLabels.Add("__meta_puppetdb_parameter_pi", "3.141592653589793")
|
|
expectLabels.Add("__meta_puppetdb_parameter_port", "22")
|
|
expectLabels.Add("__meta_puppetdb_resource", "49af83866dc5a1518968b68e58a25319107afe11")
|
|
expectLabels.Add("__meta_puppetdb_tags", ",roles::hypervisor,apache,apache::vhost,class,default-ssl,profile_hypervisor,vhost,profile_apache,hypervisor,__node_regexp__edinburgh,roles,node,")
|
|
expectLabels.Add("__meta_puppetdb_title", "default-ssl")
|
|
expectLabels.Add("__meta_puppetdb_type", "Apache::Vhost")
|
|
|
|
result, err := sdConfig.GetLabels("")
|
|
if err != nil {
|
|
t.Fatalf("GetLabels got err: %v", err)
|
|
}
|
|
|
|
if len(result) != 1 {
|
|
t.Fatalf("GetLabels get result len != 1")
|
|
}
|
|
|
|
if !reflect.DeepEqual(result[0].ToMap(), expectLabels.ToMap()) {
|
|
t.Fatalf("GetLabels incorrect, want: %v, got: %v", expectLabels.ToMap(), result[0].ToMap())
|
|
}
|
|
}
|