func newDropFields(c common.Config) (filter.FilterRule, error) { f := DropFields{} if err := f.CheckConfig(c); err != nil { return nil, err } config := DropFieldsConfig{} err := c.Unpack(&config) if err != nil { return nil, fmt.Errorf("fail to unpack the drop_fields configuration: %s", err) } /* remove read only fields */ for _, readOnly := range filter.MandatoryExportedFields { for i, field := range config.Fields { if readOnly == field { config.Fields = append(config.Fields[:i], config.Fields[i+1:]...) } } } f.Fields = config.Fields cond, err := filter.NewCondition(config.ConditionConfig) if err != nil { return nil, err } f.Cond = cond return &f, nil }
func newDropEvent(c common.Config) (filter.FilterRule, error) { f := DropEvent{} if err := f.CheckConfig(c); err != nil { return nil, err } config := DropEventConfig{} err := c.Unpack(&config) if err != nil { return nil, fmt.Errorf("fail to unpack the drop_event configuration: %s", err) } cond, err := filter.NewCondition(config.ConditionConfig) if err != nil { return nil, err } f.Cond = cond return &f, nil }
func newIncludeFields(c common.Config) (filter.FilterRule, error) { f := IncludeFields{} if err := f.CheckConfig(c); err != nil { return nil, err } config := IncludeFieldsConfig{} err := c.Unpack(&config) if err != nil { return nil, fmt.Errorf("fail to unpack the include_fields configuration: %s", err) } /* add read only fields if they are not yet */ for _, readOnly := range filter.MandatoryExportedFields { found := false for _, field := range config.Fields { if readOnly == field { found = true } } if !found { config.Fields = append(config.Fields, readOnly) } } f.Fields = config.Fields cond, err := filter.NewCondition(config.ConditionConfig) if err != nil { return nil, err } f.Cond = cond return &f, nil }