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

Add Enterprise Search API endpoints for 1 Click ELSER ML Model Deployment #154697

Closed
wants to merge 239 commits into from
Closed

Add Enterprise Search API endpoints for 1 Click ELSER ML Model Deployment #154697

wants to merge 239 commits into from

Conversation

markjhoy
Copy link
Contributor

Summary

Adds Enterprise Search internal API endpoints for deploying and monitoring the deployment status of an ELSER ML model (and possibly other models in the future) via the 1 click deployment process. This is to not allow a direct call from the Kibana front end to the underlying Elasticsearch ML endpoints.

Closes https://github.com/elastic/enterprise-search-team/issues/4295

Checklist

For maintainers

markjhoy and others added 30 commits April 10, 2023 20:03
Fixes #154375
### background
#105326 replaced tile_map
visualization implementation with a new implementation that is a wrapper
around MapEmbeddable.

#152952 removed geohash_grid
aggregation. This causes a regression where existing tile_map
visualizations no longer work. Even though geohash_grid aggregation is
no longer used, the AggType is still needed so that new tile_map
visualization wrapper can access aggregation configuration state.

This PR adds back geohash_grid AggType in `legacyAggs` for this purpose.
PR also adds a functional test to better prevent regressions with
tile_map

### Test
* install web logs sample data
* install legacy tile_map saved objects from 
    ```

{"attributes":{"fieldFormatMap":"{\"hour_of_day\":{}}","runtimeFieldMap":"{\"hour_of_day\":{\"type\":\"long\",\"script\":{\"source\":\"emit(doc['timestamp'].value.getHour());\"}}}","timeFieldName":"timestamp","title":"kibana_sample_data_logs"},"coreMigrationVersion":"7.17.5","id":"90943e30-9a47-11e8-b64d-95841ca0b247","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"type":"index-pattern","updated_at":"2022-08-17T20:25:52.585Z","version":"WzEzMDQsMV0="}

{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"region_map","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"geo.dest\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addTooltip\":true,\"colorSchema\":\"Yellow
to
Red\",\"emsHotLink\":\"https://maps.elastic.co/v7.16?locale=en#file/world_countries\",\"isDisplayWarning\":true,\"legendPosition\":\"bottomright\",\"mapCenter\":[0,0],\"mapZoom\":2,\"outlineWeight\":1,\"selectedJoinField\":{\"description\":\"ISO
3166-1 alpha-2
code\",\"name\":\"iso2\",\"type\":\"id\"},\"selectedLayer\":{\"attribution\":\"<a
rel=\\\"noreferrer noopener\\\"
href=\\\"http://www.naturalearthdata.com/about/terms-of-use\\\">Made
with NaturalEarth</a> | <a rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap
contributors</a> | <a rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps
Service</a>\",\"created_at\":\"2020-10-28T16:16:08.720286\",\"fields\":[{\"description\":\"ISO
3166-1 alpha-2
code\",\"name\":\"iso2\",\"type\":\"id\"},{\"description\":\"ISO 3166-1
alpha-3 code\",\"name\":\"iso3\",\"type\":\"id\"},{\"description\":\"ISO
3166-1 numeric
code\",\"name\":\"iso_numeric\",\"type\":\"id\"},{\"description\":\"name\",\"name\":\"name\",\"type\":\"property\"}],\"format\":\"topojson\",\"id\":\"world_countries\",\"isEMS\":true,\"layerId\":\"elastic_maps_service.World
Countries\",\"meta\":{\"feature_collection_path\":\"data\"},\"name\":\"World
Countries\",\"origin\":\"elastic_maps_service\"},\"showAllShapes\":true,\"wms\":{\"enabled\":false,\"options\":{\"attribution\":\"\",\"format\":\"image/png\",\"layers\":\"\",\"styles\":\"\",\"transparent\":true,\"version\":\"\"},\"selectedTmsLayer\":{\"attribution\":\"<a
rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap
contributors</a> | <a rel=\\\"noreferrer noopener\\\"
href=\\\"https://openmaptiles.org\\\">OpenMapTiles</a> | <a
rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps
Service</a>\",\"id\":\"road_map\",\"maxZoom\":20,\"minZoom\":0,\"origin\":\"elastic_maps_service\"},\"url\":\"\"}},\"title\":\"region_map\",\"type\":\"region_map\"}"},"coreMigrationVersion":"7.17.5","id":"64a5b9f0-1e6b-11ed-833b-a105e9534fa9","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-08-17T20:30:50.288Z","version":"WzE0MDIsMV0="}

{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"tile_map","uiStateJSON":"{\"mapZoom\":2,\"mapCenter\":[13.64385981167601,-135.97675761558068]}","version":1,"visState":"{\"title\":\"tile_map\",\"type\":\"tile_map\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"precision\":2,\"useGeocentroid\":true,\"isFilteredByCollar\":true},\"schema\":\"segment\"}],\"params\":{\"colorSchema\":\"Yellow
to Red\",\"mapType\":\"Scaled Circle
Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"url\":\"\",\"options\":{\"version\":\"\",\"layers\":\"\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"\",\"styles\":\"\"},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":20,\"attribution\":\"<a
rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.openstreetmap.org/copyright\\\">OpenStreetMap
contributors</a> | <a rel=\\\"noreferrer noopener\\\"
href=\\\"https://openmaptiles.org\\\">OpenMapTiles</a> | <a
rel=\\\"noreferrer noopener\\\"
href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps
Service</a>\"}}}}"},"coreMigrationVersion":"7.17.5","id":"4b073190-1e6b-11ed-833b-a105e9534fa9","migrationVersion":{"visualization":"7.17.0"},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2022-08-17T20:29:28.769Z","version":"WzEzNDksMV0="}

{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"7.17.5\",\"type\":\"visualization\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"ad02c99b-8bae-42e0-8a43-d27762f1e607\"},\"panelIndex\":\"ad02c99b-8bae-42e0-8a43-d27762f1e607\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_ad02c99b-8bae-42e0-8a43-d27762f1e607\"},{\"version\":\"7.17.5\",\"type\":\"visualization\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"8412ffc8-b94c-4bbd-aa55-fa670f3fb4ee\"},\"panelIndex\":\"8412ffc8-b94c-4bbd-aa55-fa670f3fb4ee\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8412ffc8-b94c-4bbd-aa55-fa670f3fb4ee\"}]","timeRestore":false,"title":"dash
with legacy map
visualizations","version":1},"coreMigrationVersion":"7.17.5","id":"97437d70-1e6b-11ed-833b-a105e9534fa9","migrationVersion":{"dashboard":"7.17.3"},"references":[{"id":"64a5b9f0-1e6b-11ed-833b-a105e9534fa9","name":"ad02c99b-8bae-42e0-8a43-d27762f1e607:panel_ad02c99b-8bae-42e0-8a43-d27762f1e607","type":"visualization"},{"id":"4b073190-1e6b-11ed-833b-a105e9534fa9","name":"8412ffc8-b94c-4bbd-aa55-fa670f3fb4ee:panel_8412ffc8-b94c-4bbd-aa55-fa670f3fb4ee","type":"visualization"}],"type":"dashboard","updated_at":"2022-08-17T20:31:36.656Z","version":"WzE0MzEsMV0="}

{"excludedObjects":[],"excludedObjectsCount":0,"exportedCount":4,"missingRefCount":0,"missingReferences":[]}

    ```
* Open dashboard and verify tile_map renders

---------

Co-authored-by: kibanamachine <[email protected]>
…ummary (#154373)

## 📓 Summary

Closes #153360 

To correctly sync the brush selection with the time service there was
the need for a refactor on how we handle the host filters, simplifying a
bit the code implementation and re-using existing abstractions.

## 🧪 Testing

- Navigate to Hosts View
- Create an Inventory Alert that can easily trigger
- Reload the search until the alerts are triggered
- Click on the alerts tab to preview them
- Select a time range on the chart and see the changes reflected on the
chart and the time range globally applied.


https://user-images.githubusercontent.com/34506779/230015011-1b48deba-7c05-47df-80b1-37e8ee046b05.mov

---------

Co-authored-by: Marco Antonio Ghiani <[email protected]>
Co-authored-by: Kibana Machine <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
## Summary

- Adds a toggle for custom marks (`perfromance.mark()`) on synthetics
waterfall chart.
- Updates the design per design feedback.

<img width="1689" alt="Screenshot 2023-04-05 at 21 01 54"
src="https://user-images.githubusercontent.com/2748376/230267962-1d87a4d7-7229-4657-9bfb-f587dbb80613.png">
…appings (#154473)

**Related to:** elastic/security-team#6268
(internal)

## Summary

For each of our Saved Object types, we must:

1. Remove any SO field mappings with `index: false` (or `enabled:
false`, although a first pass was done in
#149102) from our SO `mappings`
declarations
2. Audit and remove any _unused_ SO fields to minimize our footprint

This PR addresses these two requirements for this `security-rule` saved
object type (prebuilt rule asset).

## Details

Specifically, the PR removes the `name` field from the mappings because:

- We don't filter, sort, search, or aggregate by it.
- We might need to do it in the future for our prebuilt rule
upgrade/installation workflows, but for now we're going to implement
filtering, sorting, and pagination on the client side, thus there's no
need for this mapping server-side.

<img width="1295" alt="Screenshot 2023-04-05 at 15 19 10"
src="https://user-images.githubusercontent.com/7359339/230094740-706a9a78-fec3-469e-a4ad-e8b7d7309c78.png">

Also, we may need to add more fields to this mapping in the future to
implement further improvements for the prebuilt rule installation,
upgrade, or deprecation workflows.

### Checklist

- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
  - [x] The unit test for SO mapping hashes has been updated.
- [ ] More tests will be added as part of
#148176 and
#148192
## Summary
This commit uses a new pipeline to update the kibana-controller service

I removed the other sections because they did not really apply 😬
## Summary

Closes #150993

In case there is a single `/` in the markdown it uses the (empty) label
as we are doing in other cases.

<img width="808" alt="image"
src="https://user-images.githubusercontent.com/17003240/230896158-fbdb2f73-76c3-44a0-8e69-041dadd379a6.png">


### Checklist

- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
## Summary

- Adds a script to generate a content page with ML Kibana API groups
- Updates the `apiDocs` npm command
## Summary

Issue: #154040


Apis added: 

1. Get all the tags with name `Security Solution` or Create a Security
Solution tag if no results found
#### GET /internal/tags
```
[
    {
        "id": "ba964280-d211-11ed-890b-153ddf1a08e9",
        "name": "Security Solution",
        "description": "Security Solution auto-generated tag",
        "color": "#2c7b82"
    }
]
```
2. Get dashboards with Security Solution tags
#### GET /internal/dashboards
```
[
    {
        "type": "dashboard",
        "id": "7de391b0-c1ca-11e7-8995-936807a28b16-ecs",
        "namespaces": [
            "default"
        ],
        "attributes": {
            "description": "Overview of kernel executions",
            "hits": 0,
            "kibanaSavedObjectMeta": {
                "searchSourceJSON": "{\"filter\":[],\"highlightAll\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"version\":true}"
            },
            "optionsJSON": "{\"darkTheme\":false,\"useMargins\":false}",
            "panelsJSON": "[{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":12,\"i\":\"1\",\"w\":16,\"x\":16,\"y\":0},\"panelIndex\":\"1\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_1\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":12,\"i\":\"3\",\"w\":16,\"x\":32,\"y\":0},\"panelIndex\":\"3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_3\"},{\"version\":\"7.3.0\",\"type\":\"visualization\",\"gridData\":{\"h\":12,\"i\":\"5\",\"w\":16,\"x\":0,\"y\":0},\"panelIndex\":\"5\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_5\"},{\"version\":\"7.3.0\",\"type\":\"search\",\"gridData\":{\"h\":20,\"i\":\"6\",\"w\":48,\"x\":0,\"y\":12},\"panelIndex\":\"6\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_6\"}]",
            "timeRestore": false,
            "title": "[Auditbeat Auditd] Executions ECS",
            "version": 1
        },
        "references": [
            {
                "name": "1:panel_1",
                "id": "20a8e8d0-c1c8-11e7-8995-936807a28b16-ecs",
                "type": "visualization"
            },
            {
                "name": "3:panel_3",
                "id": "f81a6de0-c1c1-11e7-8995-936807a28b16-ecs",
                "type": "visualization"
            },
            {
                "name": "5:panel_5",
                "id": "2efac370-c1ca-11e7-8995-936807a28b16-ecs",
                "type": "visualization"
            },
            {
                "name": "6:panel_6",
                "id": "d382f5b0-c1c6-11e7-8995-936807a28b16-ecs",
                "type": "search"
            },
            {
                "name": "tag-ref-ba964280-d211-11ed-890b-153ddf1a08e9",
                "id": "ba964280-d211-11ed-890b-153ddf1a08e9",
                "type": "tag"
            }
        ],
        "coreMigrationVersion": "8.8.0",
        "typeMigrationVersion": "8.7.0",
        "updated_at": "2023-04-03T11:38:00.902Z",
        "created_at": "2023-04-03T11:20:46.473Z",
        "version": "WzE4NzMsMV0=",
        "score": 0
    }
]
```

<img width="2557" alt="Screenshot 2023-03-31 at 16 10 49"
src="https://user-images.githubusercontent.com/6295984/229166859-6d765332-aa04-4da2-acde-456b04682914.png">


<img width="2547" alt="Screenshot 2023-03-31 at 16 09 28"
src="https://user-images.githubusercontent.com/6295984/229166834-0b61c1cd-53a8-4c5c-892e-94f19deb95f2.png">


### Checklist

Delete any items that are not applicable to this PR.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
…lyout is open (#152812)

Fixes #150615
Fixes #147944

## Summary

Takes care of wrapping and overflowing of panels on small screens or
when monitor test run flyout is open in push mode.

The PR addresses the Monitor Overview, Management, Monitor Details and Monitor Add/Edit
pages.
Closes #152326.

### Changes
- `fetchWithTimeout` function was added, so we can fetch the external
bucket where the versions are with a timeout. This is mostly useful for
air-gapped environments.
- `fetchAgentsLatestVersion` was introduced an it's in charge of
fetching the bucket and handling the errors accordingly.
- `getAgentsItems` now returns `latestVersion` property for each agent.
- New column was created in the UI to list the latestVersion per agent.

When no timing out


https://user-images.githubusercontent.com/1313018/227519796-e5569475-451d-4c04-8243-d18c8e7126c3.mov

When timing out


https://user-images.githubusercontent.com/1313018/227520011-ae616a07-e87b-4d0f-bd29-4b3338aa5df2.mov

### Pending

- [ ] Replace bucket URL with production bucket url

---------

Co-authored-by: kibanamachine <[email protected]>
…tments (#154660)

## Summary

Adjusts the `execute` response action output:

- File deletion notification is in yellow text on the Download button
component
- Execution Error output is not added if it's empty (only Execute
context and STDOUT would be shown)
- Execution Error output is expanded by default if it's included. Error
accordion will be positioned below the execution context accordion.
- Add some space between the download link and the rest of execution
accordions
- Zip file truncation is displayed in context under the output and error
accordions if applicable
- Execution output accordion is at the bottom
- current working directory text will say "Executed from: /path/path"


In addition:

- Endpoint Emulator CLI too was enhanced to recognize two additional
tokens in the action's `comment` that will impact the `execute` response
output:
    - `EXECUTE:FAILURE` - will respond with an `execute` error output
    - `EXECUTE:SUCCESS` - will respond with an `execute` success output
This commit fixes an issue introduced in
#142741 where the time bounds were
computed in an expression `time_scale` that can be run on both the
server and the client.
Computing time-related information on each side (server/client), means
that we need to align temporarily with the client timezone to make an
effective calculation.
This temporary alignment had a bug when executed on the client: the
the first time it gets completed, the restored timezone was the wrong
timezone, in particular, the function used to get the current configured
timezone `moment().zoneName()` return abbreviated zone names and in some
cases also non-unique abbreviations (see
https://momentjs.com/timezone/docs/#/using-timezones/formatting/) making
the restoration a bit difficult and problematic.

The fix instead did the following:
- replace the `moment().zoneName()` with `moment.defaultZone?.name` even
this is not typed, this property is exposed by moment [since years
now](https://github.com/moment/moment-timezone/blob/2448cdcbe15875bc22ddfbc184794d0a6b568b90/moment-timezone.js#L603)
and is the only way to get the `defaultZone` configured through the
`setDefault`.
- replace the try/catch/finally block with a more readable
implementation: using a "safe" implementation to update the timezone in
moment we can get rid of the try/catch and we can make it more linear.
 

fix #154309

The unit test was firstly tested with the old implementation (and it was
failing because the `zoneName` was returning `EDT` which is not a valid
IANA timezone and the timezone were set to `undefined`. With the new
implementation, it returns the specified timezone correctly. I haven't
tested the function itself because I don't know the internal details and
this is also out of the scope of the fix.
This PR does some clean up and adds some validation.

Notable changes
- Removes unused operation code
- Adds check to ensure that only a single file can be contained in a
file attachment
- Adds some testing
- Modifies the LimitChecker to use the file service to determine how
many files are attached to a case
## Summary

Fixes #152536

In unified search timepicker you can set your own custom timeranges for
reusability. It is very easy to make a mistake such as the one described
in the issue. This fails on the usePrettyDuration function of eui. I
wrapped the function on a try catch to not fail (it will instead default
to the default timerange 15 minutes).


![2](https://user-images.githubusercontent.com/17003240/230848628-b3930455-d8a8-40b0-b699-d604454859cb.gif)

### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
…erting rules (#154189)

Resolves #152140

## Summary
Updates the following functions in the Rules Client to re-use the API
key in context and avoid having the system invalidate them when no
longer in use:

- bulk_delete
- bulk_edit
- clone
- create
- delete
- update
- update_api_key

Also adds a new field to the rule SO to help determine when whether an
api key was created by a user or created by us.

### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

### To verify

- Follow these
[instructions](https://www.elastic.co/guide/en/kibana/master/api-keys.html#create-api-key)
to create an api key. Make sure to copy your api key
- Run the following 
```
curl -X POST "http://localhost:5601/api/alerting/rule/" -H 'Authorization: ApiKey ${API_KEY}' -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d'
{
  "rule_type_id": "example.pattern",
  "name": "pattern",
  "schedule": {
    "interval": "5s"
  },
  "actions": [
  ],
  "consumer": "alerts",
  "tags": [],
  "notify_when": "onActionGroupChange",
  "params": {
    "patterns": {
      "instA": " a - - a "
    }
  }
}'
```
- Verify that the request returns a rule
with`"api_key_created_by_user":true`
- Try this with the other rules clients functions listed above to verify
that you can manage alerting rules when authenticated with an api key
- Verify that `"api_key_created_by_user":false` when you remove the api
key header and add `-u ${USERNAME}:${PASSWORD}` to authenticate
## Summary

Security solution changed recently their alert tables to the alert table
provided by ResponseOps. For this reason, I removed the experimental
badge from the cases alerts table in the security solution and mark it
as GA.

### For maintainers

- [x] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

Co-authored-by: Kibana Machine <[email protected]>
gigerdo and others added 25 commits April 18, 2023 14:15
…ist. (#153854)

Removes the warning about the email allowlist in Elastic Cloud from the docs.

It is not necessary anymore to allowlist individual email addresses in Elastic Cloud. The connector can now be used immediately without any additional config.

Instead I added a link to the list of limitations for the Elastic Cloud connector (rate-limit etc.)
## Summary

Improves the title of the notification popover for sampled data per
feedback given

<img width="689" alt="image"
src="https://user-images.githubusercontent.com/17003240/232739407-c3a7eb9b-7403-41c4-a427-1999b0fd0b7b.png">
…tests and un-skip test suite (#155060)

## Summary

- Update test data for endpoint list FTR tests and un-skip test suite

Fixes #154916 
Fixes #154917
…f controller (#155107)

## Summary

Resolves odd behavior with the runtime field code editor - most common
case is inability to remove last character.

Move some field state back to react and out of controller.

Fixes #154351
…54045)

Resolves: #152289

With this PR we make some of the `debug` logs `warn` and return the
message to the health API as reason to add in the status summary
message.
## Summary

Fixes #112176

Improves the way the inspector table is rendered when there are multiple
columns. I just applied the eui team feedback

**Now**

<img width="1257" alt="image"
src="https://user-images.githubusercontent.com/17003240/232727448-561cd07a-84ec-472f-9968-27631ef9f4f1.png">


**Before**
<img width="875" alt="image"
src="https://user-images.githubusercontent.com/17003240/232727840-24514f38-0a6f-47a3-89ed-adc0bc7ea2f0.png">
…ch bar. (#154885)

Fixes an issue there the global state `_g` and app state `_a` would get
out of sync and overwrite each other. For example, a click on Refresh in
the date picker (global state) could reset the search bar (app state) to
empty.

The issue was that in `x-pack/packages/ml/url_state/src/url_state.tsx`
the `searchString` could become a stale value in `setUrlState`. This PR
fixes it by using the approach already used in `usePageUrlState`: The
`searchString` is passed on to be stored via `useRef` so that the
`setUrlState` setter can always access the most recent value.
<img width="200" alt="Screen Shot 2023-04-13 at 12 04 26 PM"
src="https://user-images.githubusercontent.com/373691/231845867-303fe34d-5032-49cf-8408-dc7b7725e6e8.png">


### Steps to test
* Load your favorite sample data set and open its dashboard
* Click "Share" and then click "PDF Reports"
* Open browser devtools and open network tab. Turn on network throttling
to better see loading state
* Click "Generate PDF". Notice how button now gives feedback its clicked
and something is happening. Before, button would not show loading state
and users are confused into thinking nothing is happening.

---------

Co-authored-by: Kibana Machine <[email protected]>
## Summary

Adds the final section to the HTTP versioning tutorial about using the
route versioning specification.
Fixes #151595 

## Summary

In this PR we will be merging a feature branch into `main`.

This feature branch is a collection of several different PRs with file
functionality for cases.

- #152941
- #153957
- #154432
- #153853

Most of the code was already reviewed so this will mainly be used for
testing.

- Files tab in the case detail view.
- Attach files to a case.
- View a list of all files attached to a case (with pagination).
- Preview image files attached to a case.
- Search for files attached to a case by file name.
- Download files attached to a case.
- Users are now able to see file activity in the case detail view.
- Image files have a different icon and a clickable file name to
preview.
- Other files have a standard "document" icon and the name is not
clickable.
- The file can be downloaded by clicking the download icon.

## Release notes

Support file attachments in Cases.

---------

Co-authored-by: kibanamachine <[email protected]>
## Summary

Removed the search applications overview page and replaced it as the
default page with the search preview page.
…54803)

Fixes the check `isValidProbability` to include `0.5`.
issue: elastic/security-team#6154

## Summary

<img width="400" alt="Screenshot 2023-04-11 at 12 50 53"
src="https://user-images.githubusercontent.com/1490444/231138956-efc25a93-9807-434f-be80-d6de2a504f48.png"><img
width="400" alt="Screenshot 2023-04-11 at 12 51 09"
src="https://user-images.githubusercontent.com/1490444/231138890-8e7ea468-7ac8-4c65-97bf-3f9f6c983d8f.png">

<img width="400" alt="Screenshot 2023-04-11 at 12 51 01"
src="https://user-images.githubusercontent.com/1490444/231138927-96b6b66c-f77b-4b63-b805-c410f5a15783.png"><img
width="400" alt="Screenshot 2023-04-11 at 12 47 21"
src="https://user-images.githubusercontent.com/1490444/231138978-de7c495b-56ce-4b7b-bd22-76c53656ef3e.png">

### Main changes
* Creates a new user details flyout displayed on the Alerts page and
timeline.
* Introduce a new experimental feature `newUserDetailsFlyout` (disabled
by default)
* Create `managedUserDetails` API which fetches data from the index
created by the Azure integration.

### Miscellaneous
* Delete unused `lastSeen` and `first_seen` types.
* Delete unused `jobKey`property from anomaly score components
* Rename `userDetails` API and hook to `observedUserDetails`.
* Add `filterQuery` property to `useFirstLastSeen `. 
* To use it inside the flyout, since the user flyout show data in the
time range.
* Create a simplified `TestProvidersComponent` for Storybook named
`StorybookProviders`
* It should allow us to render more complex components that require
access to the redux store, theme, and kibana context.
  * Add `experimentalFeatures` property to `queryFactory.buildDsl`.

### Out of scope:
* The user can Snooze or Dismiss this prompt.
* Displaying integration errors inside the flyout 
* User page

## Storybook 
Please check the "💚 Build Succeeded" message


## How to test it
* You need a kibana instance with user data and alerts
* Enable the experimental feature `newUserDetailsFlyout`
* Go to the alerts page or timeline
* Open the user flyout


## How to install the new Azure integration
_The integration is under development, so you have to follow a series of
steps:_

1. Install docker desktop for Mac (only for macOS)
2. Install elastic-package  https://github.com/elastic/elastic-package
3. Add elastic-package to $PATH
4. Download the integration source code from GitHub branch
https://github.com/taylor-swanson/integrations/tree/entityanalytics_azure
5. Start the local K8 cluster `elastic-package stack up -vd --version
8.8.0-SNAPSHOT`
6. Enter the integration folder `cd packages/entityanalytics_azure/`
7. Build the integration `elastic-package build`
8. Update the registry with the new integration build `elastic-package
stack up -vd --services package-registry`
9. Open kibana integrations
<img width="243" alt="Screenshot 2023-04-11 at 11 24 14"
src="https://user-images.githubusercontent.com/1490444/231116552-2f3a6858-16a7-4654-bbd3-4ce76c693a8a.png">

10. Find entity analytics Azure integration (you need to check the
'display beta integrations' box)

<img width="1176" alt="Screenshot 2023-04-11 at 11 24 29"
src="https://user-images.githubusercontent.com/1490444/231116927-a8ffcb0b-a175-4cfe-b8c3-4a8acade317c.png">

11. Configured the integration with Azure tenant id, application id, and
secret (ask @machadoum)
12. Configured the integration with login URL, Login scopes, and API URL
(ask @machadoum)


### Checklist

Delete any items that are not applicable to this PR.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md)
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] Any UI touched in this PR is usable by keyboard only (learn more
about [keyboard accessibility](https://webaim.org/techniques/keyboard/))
[x] This renders correctly on smaller devices using a responsive layout.
(You can test this [in your
browser](https://www.browserstack.com/guide/responsive-testing-on-local-server))
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

---------

Co-authored-by: kibanamachine <[email protected]>
## Summary

This PR is just the first phase for response ops to go through their
saved object attributes. The idea is to comment out all the attributes
that we all agree that we do not need to filter/search/sort/aggregate
on.

After, in a second phase/PR, we will create a new file who will
represent all of attributes in our saved object as a source of truth.
Then, we will generate our SO mappings from this source of truth to
register our saved object.

Phase 3, we will try to generate also our type from our source of truth.

---------

Co-authored-by: kibanamachine <[email protected]>
Excludes metadata fields from schema page.

Given a mapping with 2 fields:
```
{
  "books": {
    "mappings": {
      "properties": {
        "author": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "title": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    }
  }
}
```

before:
<img width="1275" alt="Screenshot 2023-04-18 at 14 25 42"
src="https://user-images.githubusercontent.com/16032709/232776695-7027d3aa-0d68-4c1e-a787-906a6c6dbff6.png">

after:
<img width="1287" alt="Screenshot 2023-04-18 at 14 13 25"
src="https://user-images.githubusercontent.com/16032709/232776508-9a428350-40a8-43c3-a602-94aad49d8d97.png">
…55039)

This PR hides a configurable field if its dependencies (document field
`depends_on`) are not satisfied.
Fields that have one or many dependencies also have some styling
changes.
….com:markjhoy/kibana into markjhoy/4295_add_ELSER_deploy_api_endpoints

# Conflicts:
#	x-pack/plugins/enterprise_search/common/types/ml.ts
#	x-pack/plugins/enterprise_search/server/lib/ml/get_ml_model_deployment_status.ts
#	x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_deployment.ts
#	x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts
@markjhoy
Copy link
Contributor Author

bad rebase / merge that pulled in a lot of unnecessary commits... going to close this and open a new one... :/

@markjhoy
Copy link
Contributor Author

closing this - replaced by: #155213

@markjhoy markjhoy closed this Apr 18, 2023
@markjhoy markjhoy deleted the markjhoy/4295_add_ELSER_deploy_api_endpoints branch April 18, 2023 23:32
@kibana-ci
Copy link
Collaborator

kibana-ci commented Apr 18, 2023

💔 Build Failed

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #1 / endpoint Response Actions Responder from alerts should show Responder from alert details under alerts list page

Metrics [docs]

✅ unchanged

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.