Commit graph

20 commits

Author SHA1 Message Date
Elena Shostak
a71c9ba38a
Added scope field to features config. (#191634)
## Summary
Kibana needs to more tightly control the set of visible features within
a space, in order to support the new solution-based navigation.
Added `scope` field to the features configuration. This enhancement is
intended to prevent new features from appearing in Space Visibility
Toggles.


### Checklist

- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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


__Fixes: https://github.com/elastic/kibana/issues/191299__

## Release Note

Added `scope` field to the features configuration. This enhancement is
intended to prevent new features from appearing in Space Visibility
Toggles.

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2024-09-12 19:22:20 -05:00
Sébastien Loix
03607ec7e0
[Stateful sidenav] Remove Launch Darkly feature flag (#189513) 2024-08-02 07:48:19 -05:00
elena-shostak
3d09eaa6fc
[Spaces] Passing default solution from cloud onboarding process (#185926)
## Summary

Passing default solution from cloud onboarding process.

1. Renaming. Solution changes are not released yet, would be shipped
with `8.15`, so it's fine to do it.
   - `search` -> `es`
   - `observability` -> `oblt`
   - Adjusted telemetry accordingly
2. Added `cloud` as optional dependency to `spaces` plugin to use
`onboarding.defaultSolution` passed through setup contract.

### How to test
1. Set `xpack.cloud.onboarding.default_solution` to `es | oblt |
security`
2. Check that default space was created with provided solution `GET
kbn:/api/spaces/space/default`

### Checklist

- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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


### 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)

__Fixes: https://github.com/elastic/kibana/issues/184999__

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2024-06-18 11:10:52 +02:00
elena-shostak
afb3d37469
[Spaces] Space solution property (#183986)
## Summary

Added solution property for the space.

- Forbidden in serverless.
- To facilitate iterative development made the property as optional in
stateful offering until all of the workstreams are complete.

### How to test API changes
```
# Should create space
POST kbn:/api/spaces/space 
{
  "name": "space without solution",
  "id": "my-space-solution-1",
  "description": "a description",
  "color": "#5c5959",
  "disabledFeatures": []
}

# Should fail with 400
POST kbn:/api/spaces/space 
{
  "name": "space with solution",
  "id": "my-space-solution-2",
  "description": "a description",
  "color": "#5c5959",
  "solution": "some_solution",
  "disabledFeatures": []
}

# Should fail with 400
POST kbn:/api/spaces/space 
{
  "name": "space with solution",
  "id": "my-space-solution-2",
  "description": "a description",
  "color": "#5c5959",
  "solution": null,
  "disabledFeatures": []
}

# Should create space
POST kbn:/api/spaces/space 
{
  "name": "space with solution",
  "id": "my-space-solution-2",
  "description": "a description",
  "color": "#5c5959",
  "solution": "search",
  "disabledFeatures": []
}

# Should get 'my-space-solution-1' space without solution field
GET kbn:/api/spaces/space/my-space-solution-1

# Should get 'my-space-solution-2' space with solution field
GET kbn:/api/spaces/space/my-space-solution-2 

# Should fail to update with 400
PUT kbn:/api/spaces/space/my-space-solution-1
{
  "id": "my-space-solution-1",
  "name": "my-space-solution-1 name",
  "solution": "some_solution"
}

# Should fail to update with 400
PUT kbn:/api/spaces/space/my-space-solution-1
{
  "id": "my-space-solution-1",
  "name": "my-space-solution-1 name",
  "solution": null
}

# Should update 'my-space-solution-1'
PUT kbn:/api/spaces/space/my-space-solution-1
{
  "id": "my-space-solution-1",
  "name": "my-space-solution-1 name",
  "solution": "security"
}

# Should get 'my-space-solution-1' space wit solution field set to 'security'
GET kbn:/api/spaces/space/my-space-solution-1

# Should return list where 
# 1. 'my-space-solution-1' has solution 'security'
# 2. 'my-space-solution-2' has solution 'search'
# 3. Other spaces don't have solution field present
GET kbn:/api/spaces/space
```


### Checklist

- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed ([Security and Spaces
config](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/6076),
[Spaces only
config](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/6075))

### 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)

__Fixes: https://github.com/elastic/kibana/issues/183559__

## Release note
Added optional solution property for Space in a stateful offering.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2024-05-27 12:25:44 +02:00
Alejandro Fernández Haro
593d391172
Add @typescript-eslint/no-floating-promises (#181456)
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@elastic.co>
Co-authored-by: Patrick Mueller <patrick.mueller@elastic.co>
2024-05-01 08:41:31 -07:00
Jeramy Soucy
fe0ffab1da
Prepare the Security domain HTTP APIs for Serverless (#162087)
Closes #161337

## Summary

Uses build flavor(see #161930) to disable specific Kibana security,
spaces, and encrypted saved objects HTTP API routes in serverless (see
details in #161337). HTTP APIs that will be public in serverless have
been handled in #162523.

**IMPORTANT: This PR leaves login, user, and role routes enabled. The
primary reason for this is due to several testing mechanisms that rely
on basic authentication and custom roles (UI, Cypress). These tests will
be modified to use SAML authentication and serverless roles in the
immediate future. Once this occurs, we will disable these routes.**

### Testing
This PR also implements testing API access in serverless.
- The testing strategy for disabled routes in serverless is to verify a
`404 not found `response.
- The testing strategy for internal access routes in serverless is to
verify that without the internal request header
(`x-elastic-internal-origin`), a `400 bad request response` is received,
then verify that with the internal request header, a `200 ok response`
is received.
- The strategy for public routes in serverless is to verify a `200 ok`
or `203 redirect` is received.

~~blocked by #161930~~
~~blocked by #162149 for test implementation~~

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@elastic.co>
2023-08-23 12:34:45 +02:00
Thomas Watson
99db840a85
Upgrade ESLint to v8 (#162309)
Upgrade eslint from 7.32.0 to 8.46.0.

For details of breaking changes, see ESLint blog post, Migrate to v8.0.0:

https://eslint.org/docs/latest/use/migrate-to-8.0.0

For a full list of changes see their CHANGELOG.md:

https://github.com/eslint/eslint/blob/main/CHANGELOG.md

This also upgrades a bunch of ESLint plugins and related packages at the same time:

@types/eslint: 7.28.0 -> 8.44.2
eslint-config-prettier: 8.5.0 -> 9.0.0
eslint-module-utils: 2.6.2 -> 2.8.0
eslint-plugin-ban; 1.5.2 -> 1.6.0
eslint-plugin-cypress: 2.13.2 -> 2.14.0
eslint-plugin-import: 2.24.2 -> 2.28.0
eslint-plugin-jsx-a11y: 6.4.1 -> 6.7.1
eslint-plugin-mocha: 10.0.5 -> 10.1.0
eslint-plugin-no-unsanitized: 3.1.5 -> 4.0.2
2023-08-11 00:32:25 +02:00
Thom Heymann
6b02be4488
Restrict ability to disable features within a Space (#160416)
Resolves https://github.com/elastic/kibana/issues/159392

## Summary

This PR hides the feature visibility section on the space management
screen and disables adding `disabledFeatures` when creating or updating
spaces using the REST API or spaces client on serverless.

## Screenshot

![Spaces-Elastic
(2)](14d4900b-989d-420c-bddf-5ff70d305934)

## Testing

1. Start Kibana in serverless mode: `yarn start --serverless`
2. Edit default space and observe that the feature visibility section is
not rendered
3. Quit Kibana and restart using classic mode: `yarn start`
4. Edit default space and observe that the feature visibility section is
rendered correctly
5. Other considerations:
- Disabling feature visibility in the classic offering should throw an
error (`xpack.spaces.allowFeatureVisibility: false`)
- Enabling feature visibility on serverless should throw an error
(`xpack.spaces.allowFeatureVisibility: true`)
2023-07-03 21:02:31 +01:00
Jeramy Soucy
870d92b142
Versioned common Space interface (#160237)
Closes #159708

## Summary

This PR replaces the common Space interface with a versioned interface
per [The road to versioned HTTP APIs
doc](https://docs.google.com/document/d/1wSj6S5mvbiZ-YeGnrH3McXl0EgLHIXj5T1kkVrbkov4/edit?pli=1#heading=h.ldcj84g80m8x),
and guidance of [Versioning
Interfaces](https://docs.elastic.dev/kibana-dev-docs/versioning-interfaces).
Additionally, this PR replaces the implicit use of saved object
attributes with an explicit conversion from the SO attributes to
versioned interface properties.

### Tests
-
x-pack/plugins/spaces/server/spaces_client/spaces_client_service.test.ts
- x-pack/test/functional/apps/spaces
- x-pack/test/api_integration/apis/spaces

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2023-06-28 13:19:12 -04:00
Thom Heymann
c2e538189e
Make spaces plugin optional (#149044)
## Summary

The purpose of this PR is to make the spaces plugin an optional
dependency so that it can be disabled in future offerings.

In order to achieve this we are reintroducing the following config
option to disable spaces:

```yaml
xpack.spaces.enabled: false
```

This config option is only available in development mode while we
coordinate updating the rest of our plugins.

## Scope

In order to keep the scope manageable, only the following plugins have
been updated as part of this PR:

- `x-pack/plugins/alerting`
- `x-pack/plugins/security`
- `x-pack/plugins/spaces`

The following plugins will need to be updated separately, by working
with the corresponding teams:

- `x-pack/plugins/cases`
- `x-pack/plugins/enterprise_search`
- `x-pack/plugins/fleet`
- `x-pack/plugins/infra`
- `x-pack/plugins/lens`
- `x-pack/plugins/ml`
- `x-pack/plugins/observability`
- `x-pack/plugins/osquery`
- `x-pack/plugins/synthetics`

## Screenshots

### Kibana chrome without spaces selector

<img width="1073" alt="212935199-dd3bb035-b2f5-4fb6-96e9-5d2093c7992c"
src="https://user-images.githubusercontent.com/190132/213432556-18e1c159-1fb1-4808-ad12-47814de575ed.png">

### Simplified role management screen

<img width="1136" alt="Screenshot 2023-01-19 at 11 21 03"
src="https://user-images.githubusercontent.com/190132/213432595-0ae33abb-85e7-4044-82a2-6cc44304af0e.png">
2023-01-31 16:19:43 +02:00
spalger
3730dd0779 fix all violations 2022-04-16 01:37:30 -05:00
Thom Heymann
b94ef10c01
audit space deletion (#124145)
* Add audit logging to space deletion

* Fix outcome

* Delete all non-global saved objects

* Added suggestions from code review

* Fix tests

* Fix wording

* Fix alert type errors

* updated snapshot

* update mocks

* Added suggestions from code review

* fix type error
2022-02-01 10:57:20 -05:00
Tyler Smalley
cd06e5f5af Revert "Add audit logging to space deletion (#123378)"
This reverts commit 5819cfb1bf.
2022-01-25 09:38:54 -08:00
Thom Heymann
5819cfb1bf
Add audit logging to space deletion (#123378)
* Add audit logging to space deletion

* Fix outcome

* Delete all non-global saved objects

* Added suggestions from code review

* Fix tests
2022-01-25 11:26:53 -05:00
Joe Portner
0f1c7ccc98
Prevent Spaces from being disabled (#115283) 2021-10-18 16:17:04 +01:00
Joe Portner
196531502f
Sharing saved objects phase 3.5 (#100424) 2021-06-28 18:06:54 -04:00
Joe Portner
8710a81bea
Cleanup spaces plugin (#91976) 2021-03-01 07:56:44 -05:00
Brandon Kobel
4584a8b570
Elastic License 2.0 (#90099)
* Updating everything except the license headers themselves

* Applying ESLint rules

* Manually replacing the stragglers
2021-02-03 18:12:39 -08:00
Joe Portner
07a3756a62
Create Spaces OSS plugin (#87585) 2021-01-12 12:26:40 -05:00
Larry Gregory
7f962e5839
Removing circular dependency between spaces and security (#81891)
* Removing circular dependency between spaces and security

* Apply suggestions from code review

Co-authored-by: Constance <constancecchen@users.noreply.github.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>

* Tests refactor

- Reorganize top level describes into 3 space-based blocks into based on spaces:
  - space disabled
  - spaces plugin unavailable
  - space enabled (most previous tests go under this new block) with new beforeEach

- wrote new tests for uncovered lines 58, 66-69

* Review1: address PR feedback

* changing fake requests for alerts/actions

* Fixing tests

* fixing more tests

* Additional testing and refactoring

* Apply suggestions from code review

Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>

* Review 2: Address feedback

* Make ESLint happy again

Co-authored-by: Constance <constancecchen@users.noreply.github.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>
Co-authored-by: Constance Chen <constance.chen.3@gmail.com>
2020-11-19 13:41:13 -05:00