mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
Add builtin labels via migration (#728)
Changing from the existing method of adding built in labels at server startup. This new method should be friendlier to long term changes, and falls in line with the new pattern established for osquery options. Fixes #702
This commit is contained in:
parent
a9cfd5b641
commit
5371647d2c
8 changed files with 170 additions and 211 deletions
|
|
@ -7,8 +7,6 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/kolide/kolide-ose/server/datastore/inmem"
|
||||
"github.com/kolide/kolide-ose/server/datastore/mysql"
|
||||
"github.com/kolide/kolide-ose/server/kolide"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
@ -298,14 +296,7 @@ func testListHostsInLabel(t *testing.T, db kolide.Datastore) {
|
|||
}
|
||||
|
||||
func testBuiltInLabels(t *testing.T, db kolide.Datastore) {
|
||||
if i, ok := db.(*mysql.Datastore); ok {
|
||||
err := i.Initialize()
|
||||
require.Nil(t, err)
|
||||
}
|
||||
if i, ok := db.(*inmem.Datastore); ok {
|
||||
err := i.Initialize()
|
||||
require.Nil(t, err)
|
||||
}
|
||||
require.Nil(t, db.MigrateData())
|
||||
|
||||
hits, err := db.SearchLabels("Mac OS X")
|
||||
require.Nil(t, err)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ func testOptions(t *testing.T, ds kolide.Datastore) {
|
|||
// were options pre-loaded?
|
||||
opts, err := ds.ListOptions()
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, opts, len(appstate.Options))
|
||||
assert.Len(t, opts, len(appstate.Options()))
|
||||
|
||||
opt, err := ds.OptionByName("aws_access_key_id")
|
||||
require.Nil(t, err)
|
||||
|
|
|
|||
|
|
@ -95,9 +95,8 @@ func (d *Datastore) MigrateTables() error {
|
|||
|
||||
func (d *Datastore) MigrateData() error {
|
||||
d.mtx.Lock()
|
||||
defer d.mtx.Unlock()
|
||||
|
||||
for _, initData := range appstate.Options {
|
||||
for _, initData := range appstate.Options() {
|
||||
opt := kolide.Option{
|
||||
Name: initData.Name,
|
||||
Value: kolide.OptionValue{Val: initData.Value},
|
||||
|
|
@ -116,6 +115,12 @@ func (d *Datastore) MigrateData() error {
|
|||
SMTPVerifySSLCerts: true,
|
||||
}
|
||||
|
||||
d.mtx.Unlock()
|
||||
|
||||
if err := d.createBuiltinLabels(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -124,10 +129,6 @@ func (d *Datastore) Drop() error {
|
|||
}
|
||||
|
||||
func (d *Datastore) Initialize() error {
|
||||
if err := d.createBuiltinLabels(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := d.createDevUsers(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -260,79 +261,7 @@ func (d *Datastore) createDevPacksAndQueries() error {
|
|||
}
|
||||
|
||||
func (d *Datastore) createBuiltinLabels() error {
|
||||
labels := []kolide.Label{
|
||||
{
|
||||
UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{
|
||||
CreateTimestamp: kolide.CreateTimestamp{
|
||||
CreatedAt: time.Now().UTC(),
|
||||
},
|
||||
UpdateTimestamp: kolide.UpdateTimestamp{
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
},
|
||||
},
|
||||
Platform: "darwin",
|
||||
Name: "Mac OS X",
|
||||
Query: "select 1 from osquery_info where build_platform = 'darwin';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{
|
||||
CreateTimestamp: kolide.CreateTimestamp{
|
||||
CreatedAt: time.Now().UTC(),
|
||||
},
|
||||
UpdateTimestamp: kolide.UpdateTimestamp{
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
},
|
||||
},
|
||||
Platform: "ubuntu",
|
||||
Name: "Ubuntu Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'ubuntu';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{
|
||||
CreateTimestamp: kolide.CreateTimestamp{
|
||||
CreatedAt: time.Now().UTC(),
|
||||
},
|
||||
UpdateTimestamp: kolide.UpdateTimestamp{
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
},
|
||||
},
|
||||
Platform: "centos",
|
||||
Name: "CentOS Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'centos';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{
|
||||
CreateTimestamp: kolide.CreateTimestamp{
|
||||
CreatedAt: time.Now().UTC(),
|
||||
},
|
||||
UpdateTimestamp: kolide.UpdateTimestamp{
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
},
|
||||
},
|
||||
Platform: "windows",
|
||||
Name: "MS Windows",
|
||||
Query: "select 1 from osquery_info where build_platform = 'windows';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
UpdateCreateTimestamps: kolide.UpdateCreateTimestamps{
|
||||
CreateTimestamp: kolide.CreateTimestamp{
|
||||
CreatedAt: time.Now().UTC(),
|
||||
},
|
||||
UpdateTimestamp: kolide.UpdateTimestamp{
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
},
|
||||
},
|
||||
Name: "All Hosts",
|
||||
Query: "select 1;",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
}
|
||||
|
||||
for _, label := range labels {
|
||||
for _, label := range appstate.Labels() {
|
||||
label := label
|
||||
_, err := d.NewLabel(&label)
|
||||
if err != nil {
|
||||
|
|
|
|||
39
server/datastore/internal/appstate/labels.go
Normal file
39
server/datastore/internal/appstate/labels.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
package appstate
|
||||
|
||||
import "github.com/kolide/kolide-ose/server/kolide"
|
||||
|
||||
// Labels is the set of builtin labels that should be populated in the
|
||||
// datastore
|
||||
func Labels() []kolide.Label {
|
||||
return []kolide.Label{
|
||||
{
|
||||
Name: "All Hosts",
|
||||
Query: "select 1;",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "darwin",
|
||||
Name: "Mac OS X",
|
||||
Query: "select 1 from osquery_info where build_platform = 'darwin';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "ubuntu",
|
||||
Name: "Ubuntu Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'ubuntu';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "centos",
|
||||
Name: "CentOS Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'centos';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "windows",
|
||||
Name: "MS Windows",
|
||||
Query: "select 1 from osquery_info where build_platform = 'windows';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -2,69 +2,79 @@ package appstate
|
|||
|
||||
import "github.com/kolide/kolide-ose/server/kolide"
|
||||
|
||||
var Options = []struct {
|
||||
// Options is the set of builtin osquery options that should be populated in
|
||||
// the datastore
|
||||
func Options() []struct {
|
||||
Name string
|
||||
Value interface{}
|
||||
Type kolide.OptionType
|
||||
ReadOnly bool
|
||||
}{
|
||||
// These options are read only, attempting to modify one of these will
|
||||
// raise an error
|
||||
{"disable_distributed", false, kolide.OptionTypeBool, kolide.ReadOnly},
|
||||
{"distributed_plugin", "tls", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"distributed_tls_read_endpoint", "/api/v1/osquery/distributed/read", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"distributed_tls_write_endpoint", "/api/v1/osquery/distributed/write", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"pack_delimiter", "/", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
// These options may be modified by an admin user
|
||||
{"aws_access_key_id", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_firehose_period", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"aws_firehose_stream", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_kinesis_period", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"aws_kinesis_random_partition_key", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"aws_kinesis_stream", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_profile_name", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_region", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_secret_access_key", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_arn_role", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_region", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_session_name", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_timeout", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"buffered_log_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"decorations_top_level", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_caching", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_database", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_decorators", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_events", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_kernel", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_logging", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_tables", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"distributed_interval", 10, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"distributed_tls_max_attempts", 3, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"enable_foreign", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"enable_monitor", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"ephemeral", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"events_expiry", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"events_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"events_optimize", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"host_identifier", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_event_type", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_mode", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_path", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_plugin", "tls", kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_secondary_status_only", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_syslog_facility", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"logger_tls_compress", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_tls_endpoint", "/api/v1/osquery/log", kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_tls_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"logger_tls_period", 10, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"pack_refresh_interval", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"read_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"read_user_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_default_interval", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_splay_percent", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_timeout", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"utc", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"value_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"verbose", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"worker_threads", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
} {
|
||||
|
||||
return []struct {
|
||||
Name string
|
||||
Value interface{}
|
||||
Type kolide.OptionType
|
||||
ReadOnly bool
|
||||
}{
|
||||
// These options are read only, attempting to modify one of these will
|
||||
// raise an error
|
||||
{"disable_distributed", false, kolide.OptionTypeBool, kolide.ReadOnly},
|
||||
{"distributed_plugin", "tls", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"distributed_tls_read_endpoint", "/api/v1/osquery/distributed/read", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"distributed_tls_write_endpoint", "/api/v1/osquery/distributed/write", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
{"pack_delimiter", "/", kolide.OptionTypeString, kolide.ReadOnly},
|
||||
// These options may be modified by an admin user
|
||||
{"aws_access_key_id", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_firehose_period", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"aws_firehose_stream", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_kinesis_period", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"aws_kinesis_random_partition_key", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"aws_kinesis_stream", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_profile_name", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_region", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_secret_access_key", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_arn_role", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_region", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_session_name", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"aws_sts_timeout", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"buffered_log_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"decorations_top_level", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_caching", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_database", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_decorators", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_events", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_kernel", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_logging", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"disable_tables", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"distributed_interval", 10, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"distributed_tls_max_attempts", 3, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"enable_foreign", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"enable_monitor", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"ephemeral", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"events_expiry", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"events_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"events_optimize", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"host_identifier", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_event_type", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_mode", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_path", nil, kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_plugin", "tls", kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_secondary_status_only", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_syslog_facility", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"logger_tls_compress", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"logger_tls_endpoint", "/api/v1/osquery/log", kolide.OptionTypeString, kolide.NotReadOnly},
|
||||
{"logger_tls_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"logger_tls_period", 10, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"pack_refresh_interval", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"read_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"read_user_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_default_interval", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_splay_percent", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"schedule_timeout", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"utc", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"value_max", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
{"verbose", nil, kolide.OptionTypeBool, kolide.NotReadOnly},
|
||||
{"worker_threads", nil, kolide.OptionTypeInt, kolide.NotReadOnly},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ func Up_20161223115449(tx *sql.Tx) error {
|
|||
) VALUES (?, ?, ?, ?)
|
||||
`
|
||||
|
||||
for _, opt := range appstate.Options {
|
||||
for _, opt := range appstate.Options() {
|
||||
ov := kolide.Option{
|
||||
Name: opt.Name,
|
||||
ReadOnly: opt.ReadOnly,
|
||||
|
|
@ -44,7 +44,7 @@ func Down_20161223115449(tx *sql.Tx) error {
|
|||
DELETE FROM options
|
||||
WHERE name = ?
|
||||
`
|
||||
for _, opt := range appstate.Options {
|
||||
for _, opt := range appstate.Options() {
|
||||
_, err := tx.Exec(sqlStatement, opt.Name)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
package data
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/kolide/kolide-ose/server/datastore/internal/appstate"
|
||||
)
|
||||
|
||||
func init() {
|
||||
MigrationClient.AddMigration(Up_20161229171615, Down_20161229171615)
|
||||
}
|
||||
|
||||
func Up_20161229171615(tx *sql.Tx) error {
|
||||
sql := `
|
||||
INSERT INTO labels (
|
||||
name,
|
||||
description,
|
||||
query,
|
||||
platform,
|
||||
label_type
|
||||
) VALUES (?, ?, ?, ?, ?)
|
||||
`
|
||||
|
||||
for _, label := range appstate.Labels() {
|
||||
_, err := tx.Exec(sql, label.Name, label.Description, label.Query, label.Platform, label.LabelType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func Down_20161229171615(tx *sql.Tx) error {
|
||||
sql := `
|
||||
DELETE FROM labels
|
||||
WHERE name = ? AND label_type = ?
|
||||
`
|
||||
|
||||
for _, label := range appstate.Labels() {
|
||||
_, err := tx.Exec(sql, label.Name, label.LabelType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
@ -90,14 +90,6 @@ func (d *Datastore) MigrateData() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Initialize preload data needed by the application
|
||||
func (d *Datastore) Initialize() error {
|
||||
if err := d.createBuiltinLabels(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Drop removes database
|
||||
func (d *Datastore) Drop() error {
|
||||
tables := []struct {
|
||||
|
|
@ -190,53 +182,3 @@ func generateMysqlConnectionString(conf config.MysqlConfig) string {
|
|||
conf.Database,
|
||||
)
|
||||
}
|
||||
|
||||
func (d *Datastore) createBuiltinLabels() error {
|
||||
// Nuke built in labels and recreate them
|
||||
_, err := d.db.Exec("DELETE from labels WHERE label_type = ?", kolide.LabelTypeBuiltIn)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
labels := []kolide.Label{
|
||||
{
|
||||
Name: "All Hosts",
|
||||
Query: "select 1;",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "darwin",
|
||||
Name: "Mac OS X",
|
||||
Query: "select 1 from osquery_info where build_platform = 'darwin';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "ubuntu",
|
||||
Name: "Ubuntu Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'ubuntu';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "centos",
|
||||
Name: "CentOS Linux",
|
||||
Query: "select 1 from osquery_info where build_platform = 'centos';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
{
|
||||
Platform: "windows",
|
||||
Name: "MS Windows",
|
||||
Query: "select 1 from osquery_info where build_platform = 'windows';",
|
||||
LabelType: kolide.LabelTypeBuiltIn,
|
||||
},
|
||||
}
|
||||
|
||||
for _, label := range labels {
|
||||
_, err = d.NewLabel(&label)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue