Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agent Actions: Part 1 of Osquerybeat with Agent actions #24507

Merged
merged 11 commits into from Mar 22, 2021

Conversation

aleksmaus
Copy link
Member

What does this PR do?

Agent Actions: Part 1 of Osquerybeat with Agent actions
This a first part of the original PR #24456
For more details on the whole picture and how it suppose to work refer the original PR details.

@urso I'll keep the original PR and will rebase it once these changes make it in.

Why is it important?

This allows the security assets management team to ship osquery integration in the upcoming release.

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

@botelastic botelastic bot added needs_team Indicates that the issue/PR needs a Team:* label Team:Ingest Management labels Mar 11, 2021
@elasticmachine
Copy link
Collaborator

Pinging @elastic/ingest-management (Team:Ingest Management)

@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Mar 11, 2021
@elasticmachine
Copy link
Collaborator

elasticmachine commented Mar 11, 2021

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview

Expand to view the summary

Build stats

  • Build Cause: Started by user Aleksandr Maus

  • Start Time: 2021-03-18T18:33:21.466+0000

  • Duration: 129 min 3 sec

  • Commit: 21a3785

Test stats 🧪

Test Results
Failed 0
Passed 46404
Skipped 5105
Total 51509

Trends 🧪

Image of Build Times

Image of Tests

💚 Flaky test report

Tests succeeded.

Expand to view the summary

Test stats 🧪

Test Results
Failed 0
Passed 46404
Skipped 5105
Total 51509

@aleksmaus
Copy link
Member Author

aleksmaus commented Mar 11, 2021

odd:

FAIL: auditbeat/module/file_integrity/monitor TestNonRecursive

local run check

=== RUN   TestNonRecursive
--- PASS: TestNonRecursive (6.04s)

🤷

@aleksmaus
Copy link
Member Author

/test

} else {
action.StartedAt = readMapString(res, "started_at")
action.CompletedAt = readMapString(res, "completed_at")
action.Error = readMapString(res, "error")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if these keys are empty?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably ok for the error, can add some value for started/completed

@@ -757,7 +757,7 @@ func (*SleepAction) Name() string {
return "sleep"
}

func (*SleepAction) Execute(request map[string]interface{}) (map[string]interface{}, error) {
func (*SleepAction) Execute(ctx context.Context, request map[string]interface{}) (map[string]interface{}, error) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the context needed, and why is the sleep not cancellable. For cancellation consider timed.Wait.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the Action interface use context.Context for cancellation or is it require to pass values via Values?

See line 769: The sleep is not cancellable and should be changed to err := timed.Wait(ctx, time.Duration(sleep)) in order to make the action cancellable.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahh, misunderstood the previous comment, will update SleepAction implementation

x-pack/elastic-agent/pkg/fleetapi/action.go Show resolved Hide resolved
UnregisterAction(action client.Action)

// SetPayload sets the client payload
SetPayload(map[string]interface{})
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As this interface describes how input/Beats developers interact with the Agent: What exactly is the payload, what can/users do with it? Am I required to set it, or is it better to ignore SetPayload?

My understanding is that Endpoint uses the payload in order to pass some 'private monitoring' data via Agent to Kibana. I don't see why we need this on the Beats side as well, though.

Copy link
Member Author

@aleksmaus aleksmaus Mar 12, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The payload was something that was not exposed for the beat to set.
In the case of osquerybeat work we need to leverage the payload to communicate to the agent the version of osqueryd.
Also using payload to communicate to the agent what inputs the application/beat is subscribed to.
This allows the agent to not care and not parse the config details of the particular app/beat.
Upon connection to the agent the beat subscribes to the actions on a receiving gRCP side and communicates back to the agent what "input types" are supported by the app.
More details are in the original PR: #24456

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this specific to osquerybeat?

Why not have a proper interface/type for the payload if it is bound to actual functionality in Agent?
If other Beats use a Payload, will it be used for similar or completely different functionality?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is generic just was not exposed, so the beats could not set their custom payload.
If you look at the current status updates, they pass nil with the status update payload

cm.client.Status(proto.StateObserved_STOPPING, "Stopping", nil)

@blakerouse mentioned before that there is already existing payload we could leverage to pass the custom payload over gRPC back to the agent. So I leveraged what we already have in place. Open for other suggestions.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I'm missing context here.

  1. Why not have a proper interface/type for the payload if it is bound to actual functionality in Agent?
  2. If other Beats use a Payload, will it be used for similar or completely different functionality?

Copy link
Member Author

@aleksmaus aleksmaus Mar 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I'm missing context here.

  1. Why not have a proper interface/type for the payload if it is bound to actual functionality in Agent?

We already have the payload that can be used. So I might be missing the bigger picture:
It's possible that I'm leveraging something the way it should not be used.
Not sure why we need another payload. What was the original purpose of this existing payload? and why it can't be
used for this particular purpose.

  1. If other Beats use a Payload, will it be used for similar or completely different functionality?

It's whatever payload they want to send back that gets passed with the checkin events back to the server.

So there are two things that I use the payload for:

  1. passing the osqueryd binary version with check in to the server
  2. passing the input_types array back to the elastic agent so it know where to dispatch the actions

Is this the right approach? @blakerouse

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aleksmaus I think in this context you are miss using the payload. The payload has always been opaque to Elastic Agent. Using it for registering the input_types to the Elastic Agent feels more like a hack than the proper use of payload.

I don't think it is correct behavior that the input types are told to the Agent from the beat anyway. I think it would be better for this to be determined by the Agent already. Being that the specification file in Agent already has to code in the input type that is allowed to a beat, then that should be used instead.

Basically removing the need for payload to be used for the input_types. I do think you are using it correctly for the version of osquery.

@urso
Copy link

urso commented Mar 12, 2021

I didn't check the CI errors. Jenkins itself was rather unstable the last days. But I noticed that quite a few (unrelated?) packages have been updated in go.mod. Some of these packages don't follow the semantics convetions and might also impact CI (e.g. updating x/sys sometimes makes problems) .

@aleksmaus
Copy link
Member Author

I'll update the go.mod to roll back all unnecessary modules updates, will see if it helps.

@aleksmaus
Copy link
Member Author

I didn't check the CI errors. Jenkins itself was rather unstable the last days. But I noticed that quite a few (unrelated?) packages have been updated in go.mod. Some of these packages don't follow the semantics convetions and might also impact CI (e.g. updating x/sys sometimes makes problems) .

what's strange that the test that was failing in the unrelated beat was failing only on win8 and passing on all other versions of win.

@aleksmaus
Copy link
Member Author

/test

@aleksmaus
Copy link
Member Author

hmmm .... all arm packaging failed ...

@aleksmaus
Copy link
Member Author

/test

}

if v, ok := m[key]; ok {
if s, ok := v.(string); ok {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how about if s, ok := v.(string); ok && s != "" { ... } ? In that case we will return def if the key exists, but the contents is empty.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure

@ph
Copy link
Contributor

ph commented Mar 15, 2021

@blakerouse Can you also review this?

@ph ph added Team:Elastic-Agent Label for the Agent team and removed Team:Ingest Management labels Mar 15, 2021
@elasticmachine
Copy link
Collaborator

Pinging @elastic/agent (Team:Agent)

@ph
Copy link
Contributor

ph commented Mar 15, 2021

@aleksmaus please use "Team:Agent" instead of "Team:Ingest management".

@@ -7,3 +7,7 @@ pkg/agent/operation/tests/scripts/configurable-1.0-darwin-x86/configurable
pkg/agent/operation/tests/scripts/servicable-1.0-darwin-x86/configurable
pkg/agent/transpiler/tests/exec-1.0-darwin-x86_64/exec
pkg/agent/application/fleet.yml
pkg/core/plugin/operation/tests/scripts/configurable/1.0/configurable
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this file about?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, will remove. I certainly did add this by hand.

Based on conversation on PR made the change so now the input type are
not passed back to the agent. Instead they are derived by the agent from
the application spec.

This is the additional property that was added to the spec to declare
accepted action_input_types:

action_input_types:
- osquery
@aleksmaus
Copy link
Member Author

@blakerouse I made the change as we discussed.
Setting the input types from the spec, not passing from the beat as before.
The original PR is updated #24456 to test the actions roundtrip with osquerybeat.

@aleksmaus
Copy link
Member Author

@aleksmaus please use "Team:Agent" instead of "Team:Ingest management".

looks like the pesky botelastic adds it back :-)

@ph
Copy link
Contributor

ph commented Mar 17, 2021

@aleksmaus I have missed that in the changes of teams see #24599

Copy link
Contributor

@blakerouse blakerouse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for adjust based on what we discussed. I like this and it looks good.

@aleksmaus
Copy link
Member Author

yesterday it failed on packed beat, now it's libbeat 🤷

[2021-03-18T03:07:29.265Z] Error: running "docker-compose -p libbeat_8_0_0_a83440b1d6-snapshot run -e DOCKER_COMPOSE_PROJECT_NAME=libbeat_8_0_0_a83440b1d6-snapshot -e BEAT_STRICT_PERMS=false -e STACK_ENVIRONMENT=snapshot -e TESTING_ENVIRONMENT=snapshot -e GOCACHE=/go/src/github.com/elastic/beats/build/docker-gocache -v /var/lib/jenkins/workspace/PR-24507-14-3ffc9353-9e38-4aab-aeba-f39d495fa294/pkg/mod/cache/download:/gocache:ro -e GOPROXY=file:///gocache,direct -e EXEC_UID=1161 -e EXEC_GID=1162 -e BEATS_INSIDE_INTEGRATION_TEST_ENV=true -e GOFLAGS=-mod=readonly -e TEST_COVERAGE=true -e RACE_DETECTOR=true -e TEST_TAGS=null,oracle beat /go/src/github.com/elastic/beats/x-pack/libbeat/build/mage-linux-amd64 pythonIntegTest" failed with exit code 1

@aleksmaus
Copy link
Member Author

[2021-03-18T13:51:19.666Z] tests\system\test_registrar.py:987: 

[2021-03-18T13:51:19.666Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

[2021-03-18T13:51:19.666Z] 

[2021-03-18T13:51:19.666Z] self = <test_registrar.Test testMethod=test_restart_state_reset>

[2021-03-18T13:51:19.666Z] cond = <function Test.test_restart_state_reset.<locals>.<lambda> at 0x00000200884B1790>

[2021-03-18T13:51:19.666Z] max_timeout = 30, poll_interval = 0.1, name = 'cond'

[2021-03-18T13:51:19.666Z] 

[2021-03-18T13:51:19.666Z]     def wait_until(self, cond, max_timeout=10, poll_interval=0.1, name="cond"):

[2021-03-18T13:51:19.666Z]         """

[2021-03-18T13:51:19.666Z]         Waits until the cond function returns true,

[2021-03-18T13:51:19.666Z]         or until the max_timeout is reached. Calls the cond

[2021-03-18T13:51:19.666Z]         function every poll_interval seconds.

[2021-03-18T13:51:19.666Z]     

[2021-03-18T13:51:19.666Z]         If the max_timeout is reached before cond() returns

[2021-03-18T13:51:19.666Z]         true, an exception is raised.

[2021-03-18T13:51:19.666Z]         """

[2021-03-18T13:51:19.666Z]         start = datetime.now()

[2021-03-18T13:51:19.666Z]         while not cond():

[2021-03-18T13:51:19.666Z]             if datetime.now() - start > timedelta(seconds=max_timeout):

[2021-03-18T13:51:19.666Z] >               raise TimeoutError("Timeout waiting for '{}' to be true. ".format(name) +

[2021-03-18T13:51:19.666Z]                                    "Waited {} seconds.".format(max_timeout))

[2021-03-18T13:51:19.666Z] E               beat.beat.TimeoutError: Timeout waiting for 'cond' to be true. Waited 30 seconds.

[2021-03-18T13:51:19.666Z] 

[2021-03-18T13:51:19.666Z] ..\libbeat\tests\system\beat\beat.py:362: TimeoutError

[2021-03-18T13:51:19.666Z] - generated xml file: C:\Users\jenkins\workspace\PR-24507-15-67dbe16d-8701-435d-8b6d-7bfee827ebdd\src\github.com\elastic\beats\filebeat\build\TEST-python-unit.xml -

[2021-03-18T13:51:19.666Z] ============================ slowest 20 durations =============================

[2021-03-18T13:51:19.666Z] 30.11s call     filebeat/tests/system/test_registrar.py::Test::test_restart_state_reset

[2021-03-18T13:51:19.666Z] 5.86s call     filebeat/tests/system/test_registrar.py::Test::test_restart_state

[2021-03-18T13:51:19.667Z] 4.72s call     filebeat/tests/system/test_shutdown.py::Test::test_shutdown_wait_timeout

[2021-03-18T13:51:19.667Z] 4.43s call     filebeat/tests/system/test_input.py::Test::test_harvester_limit

[2021-03-18T13:51:19.667Z] 4.43s call     filebeat/tests/system/test_reload_inputs.py::Test::test_reload_add

[2021-03-18T13:51:19.667Z] 4.36s call     filebeat/tests/system/test_crawler.py::Test::test_encodings

[2021-03-18T13:51:19.667Z] 4.22s call     filebeat/tests/system/test_crawler.py::Test::test_multiple_appends

[2021-03-18T13:51:19.667Z] 3.66s call     filebeat/tests/system/test_input.py::Test::test_close_inactive_file_rotation_and_removal2

[2021-03-18T13:51:19.667Z] 3.62s call     filebeat/tests/system/test_input.py::Test::test_rotating_close_inactive_low_write_rate

[2021-03-18T13:51:19.667Z] 3.54s call     filebeat/tests/system/test_multiline.py::Test::test_close_timeout_with_multiline

[2021-03-18T13:51:19.667Z] 3.53s call     filebeat/tests/system/test_reload_inputs.py::Test::test_reload_same_config

[2021-03-18T13:51:19.667Z] 3.49s call     filebeat/tests/system/test_harvester.py::Test::test_close_timeout

[2021-03-18T13:51:19.667Z] 3.43s call     filebeat/tests/system/test_reload_inputs.py::Test::test_reload_same_input

[2021-03-18T13:51:19.667Z] 3.42s call     filebeat/tests/system/test_reload_inputs.py::Test::test_start_stop_replace

[2021-03-18T13:51:19.667Z] 3.42s call     filebeat/tests/system/test_registrar.py::Test::test_state_after_rotation

[2021-03-18T13:51:19.667Z] 3.33s call     filebeat/tests/system/test_reload_inputs.py::Test::test_start_stop

[2021-03-18T13:51:19.667Z] 3.32s call     filebeat/tests/system/test_registrar.py::Test::test_state_after_rotation_ignore_older

[2021-03-18T13:51:19.667Z] 3.32s call     filebeat/tests/system/test_reload_modules.py::Test::test_start_stop

[2021-03-18T13:51:19.667Z] 2.86s call     filebeat/tests/system/test_shutdown.py::Test::test_shutdown

[2021-03-18T13:51:19.667Z] 2.72s call     filebeat/tests/system/test_multiline.py::Test::test_timeout

[2021-03-18T13:51:19.667Z] =========================== short test summary info ===========================

[2021-03-18T13:51:19.667Z] FAILED tests\system\test_registrar.py::Test::test_restart_state_reset - beat....

[2021-03-18T13:51:19.667Z] =========== 1 failed, 165 passed, 178 skipped in 210.26s (0:03:30) ============

@aleksmaus
Copy link
Member Author

packetbeat on this run

[2021-03-18T15:51:15.985Z] fatal error: found pointer to free object

[2021-03-18T15:51:15.985Z] 

[2021-03-18T15:51:15.985Z] runtime stack:

[2021-03-18T15:51:15.985Z] runtime.throw(0x67b99e, 0x1c)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/panic.go:1116 +0x64

[2021-03-18T15:51:15.985Z] runtime.(*mspan).reportZombies(0x3d033510)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mgcsweep.go:827 +0x30b

[2021-03-18T15:51:15.985Z] runtime.(*mspan).sweep(0x3d033510, 0xfffffe00, 0xffffffff)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mgcsweep.go:456 +0x3ef

[2021-03-18T15:51:15.985Z] runtime.(*mcentral).uncacheSpan(0x801870, 0x3d033510)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mcentral.go:383 +0xd4

[2021-03-18T15:51:15.985Z] runtime.(*mcache).releaseAll(0xbb0df8)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mcache.go:162 +0x5a

[2021-03-18T15:51:15.985Z] runtime.(*mcache).prepareForSweep(0xbb0df8)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mcache.go:189 +0x3c

[2021-03-18T15:51:15.985Z] runtime.gcMarkTermination.func4.1(0x11027500)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/mgc.go:1772 +0x24

[2021-03-18T15:51:15.985Z] runtime.forEachP(0x6870fc)

[2021-03-18T15:51:15.985Z] 	c:/go/src/runtime/proc.go:1343 +0x13a

[2021-03-18T15:51:15.986Z] runtime.gcMarkTermination.func4()

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/mgc.go:1771 +0x23

[2021-03-18T15:51:15.986Z] runtime.systemstack(0x0)

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/asm_386.s:391 +0x53

[2021-03-18T15:51:15.986Z] runtime.mstart()

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/proc.go:1116

[2021-03-18T15:51:15.986Z] 

[2021-03-18T15:51:15.986Z] goroutine 6 [running]:

[2021-03-18T15:51:15.986Z] runtime.systemstack_switch()

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/asm_386.s:352 fp=0x11030dc4 sp=0x11030dc0 pc=0x45cf20

[2021-03-18T15:51:15.986Z] runtime.gcMarkTermination(0xc96b6dba, 0x3fef2622)

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/mgc.go:1770 +0x74b fp=0x11030f70 sp=0x11030dc4 pc=0x41866b

[2021-03-18T15:51:15.986Z] runtime.gcMarkDone()

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/mgc.go:1630 +0x24d fp=0x11030f9c sp=0x11030f70 pc=0x417e7d

[2021-03-18T15:51:15.986Z] runtime.gcBgMarkWorker(0x11022000)

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/mgc.go:2018 +0x258 fp=0x11030fe8 sp=0x11030f9c pc=0x419178

[2021-03-18T15:51:15.986Z] runtime.goexit()

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/asm_386.s:1333 +0x1 fp=0x11030fec sp=0x11030fe8 pc=0x45e541

[2021-03-18T15:51:15.986Z] created by runtime.gcBgMarkStartWorkers

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/mgc.go:1839 +0x61

[2021-03-18T15:51:15.986Z] 

[2021-03-18T15:51:15.986Z] goroutine 1 [runnable, locked to thread]:

[2021-03-18T15:51:15.986Z] syscall.Syscall(0x758c8afb, 0x2, 0x4b400000, 0x0, 0x0, 0x0, 0x0, 0x0)

[2021-03-18T15:51:15.986Z] 	c:/go/src/runtime/syscall_windows.go:188 +0xbb

[2021-03-18T15:51:15.986Z] syscall.FlushViewOfFile(0x4b400000, 0x0, 0x115670e0, 0x11567110)

[2021-03-18T15:51:15.986Z] 	c:/go/src/syscall/zsyscall_windows.go:1057 +0x6e

[2021-03-18T15:51:15.986Z] cmd/link/internal/ld.(*OutBuf).munmap(0x110420c0)

[2021-03-18T15:51:15.986Z] 	c:/go/src/cmd/link/internal/ld/outbuf_windows.go:40 +0x43

[2021-03-18T15:51:15.986Z] cmd/link/internal/ld.(*OutBuf).copyHeap(0x110420c0, 0x111081a0)

[2021-03-18T15:51:15.986Z] 	c:/go/src/cmd/link/internal/ld/outbuf.go:152 +0x4c

[2021-03-18T15:51:15.986Z] cmd/link/internal/ld.(*OutBuf).Close(0x110420c0, 0x66e86d, 0x6)

[2021-03-18T15:51:15.986Z] 	c:/go/src/cmd/link/internal/ld/outbuf.go:116 +0x109

[2021-03-18T15:51:15.986Z] cmd/link/internal/ld.Main(0x7f0940, 0x10, 0x20, 0x1, 0x4, 0x8, 0x0, 0x0, 0x674f00, 0x12, ...)

[2021-03-18T15:51:15.986Z] 	c:/go/src/cmd/link/internal/ld/main.go:352 +0x1256

[2021-03-18T15:51:15.986Z] main.main()

[2021-03-18T15:51:15.986Z] 	c:/go/src/cmd/link/main.go:68 +0x150

[2021-03-18T15:51:15.986Z] Error: running "go test -c -o packetbeat.test -coverpkg ./..." failed with exit code 2

script returned exit code 2

@aleksmaus
Copy link
Member Author

/test

@aleksmaus
Copy link
Member Author

[2021-03-18T17:15:55.600Z] package ran for 5m24.252273559s

[2021-03-18T17:15:55.600Z] Error: failed building auditbeat type=docker for platform=linux/arm64: failed to build docker: running "docker build -t docker.elastic.co/beats/auditbeat-ubi8:8.0.0-SNAPSHOT build/package/auditbeat-ubi8/auditbeat-linux-arm64.docker/docker-build" failed with exit code 1

@aleksmaus aleksmaus merged commit 0b4e053 into elastic:master Mar 22, 2021
aleksmaus added a commit to aleksmaus/beats that referenced this pull request Mar 22, 2021
* Agent Actions: Part 1 of Osquerybeat with Agent actions

* Rollback some mods upgrade. Address some code review feedback

* Address code review feedback

* Add missing copyright header

* Address more of the code review feedback

* Change the way the inputs are tied to the applications

Based on conversation on PR made the change so now the input type are
not passed back to the agent. Instead they are derived by the agent from
the application spec.

This is the additional property that was added to the spec to declare
accepted action_input_types:

action_input_types:
- osquery

* Make action_input_type field optional in the spec. Fixes the existing test.

(cherry picked from commit 0b4e053)
urso pushed a commit that referenced this pull request Apr 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Team:Elastic-Agent Label for the Agent team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants