kibana/docs/developer
Jean-Louis Leysens a182b8e9be
Files plugin (#137421)
* added files plugin

* [Files] Create files saved object and blob storage (#131886)

* initial version of file saved objects

* initial version of file saved objects part ii

* added .blob index and setup logic for the file service and the blob service

* wip: need to add .blob access to kibana_system role

* use multiple-isolated after speaking of oleg

* added metadata field

* [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix'

* [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs'

* updated file statuses per feedback

* removed created_by and added "alt" text field and converted "name" to type "text" too

* split content_type into mime and extension

* use BlobStorage interface in adapters prop

* minor fixes

* handle multiple Kibanas at startup time

* fix jest test

* do not set up index at setup time

* set importable exportable to false explicitly

* remove use of non-existent function

* added plugin ID, use type instead of interface to avoid specific interface issue and use typescript to check that properties map corresponds to type

* remove storage_id for now

* make the name snake case!

* added fixmes

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>

* [Files] Implement ES-based blob store (#132123)

* minor clean up

* remove unused import

* added modified version of the content stream from reporting

* remove plugin_id, replace with file_kind

* remove unused commented out code and clean up imports

* added jest.config.js

* added FileChunkDocument interface and added the head_chunk_id for easier deletion of related file chunks

* added an additional test case for writing with content stream

* first implementation of ES blob storage

* fix imports

* get closer to a final version of the blobstore interface, use esClient.get rather than esClient.search since we are using IDs

* added jest integration tests

* add some comments

* fix: eslint types issues

* remove unused values

* minor refactor for clarity

* fix when saved objects are registered

* remove unused variable

* fix jest tests and make getMaxSize function sync

* fix logger prefixes

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>

* [Files] File service CRUD functionality and audit logging (#132416)

* big ol wipperooni, but got a lot of initial functionality written out

* added some todos and fixed import

* finish adding integration tests for file service! also added the partial update capability to file

* added file service integration tests and finalized Files and InternalFileService APIs

* added security plugin

* big refactor for security audit logging: FileServiceFactory

* type lint

* update delete file integration test and remove done TODOs

* move comment

* docs, accessibility modifiers and updated some import ordering

* fix comments

* pass in index name to ES blob store

* tidy up debug and error messages

* [Files] Added more chunking Jest integration tests (#132530)

* added more thorough integration tests of chunking

* refactor chunksize to a value that is passed to the ES constructor, update a comment and update tests

* [Files] Public API v1 (#132602)

* created public API, everything except the file registry

* ensure the custom meta types are working as expected

* added index: false to content

* Revert "added index: false to content"

This reverts commit 74259f86638aefc24755874cbd6ac89e0170c192.

* updated comment

* update how ids are generated

* also filter out deleted files

* fix id generation

* test file deletion after upload failure

* [Files] File kinds registry v0.1 (#132700)

* initial commit of file kind registry

* add actual registry

* updated attributes reduceer slightly

* separate blob storage interface, make the blob storage type a unique const

* added integration test for file kinds

* update test after adding registry logic

* partial attributes

* [Files] Blob storage with attributes (#134057)

* updated blob storage interface with attributes

* added dynamic: false to the file chunk doc for ES blob store

* update mocks

* support attributes at the blob store level part i

* actually test setting of attributes, also refactor app_extra_data to app_meta_data

* remove unused import

* some corrections to tests, also refresh after creating a blob that has attributes to enable search

* remove unnecessary default

* getBaseId -> getContentReferenceId and added a bunch of doc comments

* refactored getting of attribute chunk id, encapsulate everything inside content stream

* remove app_search_data

* app_meta_data -> app_metadata

* [Files] Added `Transform` to blob stores (#134846)

* added max byte size stream transform

* added stream transforms to files

* rename MaxByteSize to MaxByteSizeTransform

* try a cool cool ternary, yeah

* minor refactor

* address PR feedback

* [Files] File kind HTTP APIs and tests (#134655)

* first version of dynamically creating file kinds routes

* added update, delete, download, list and find endpoints and some minor refactoring

* added return statement and additional requirement for file kind ids to be URI safe

* update comment

* added API integration tests for the file kinds routes, a lot of refactoring; removed the upload endpoint service since this does not make since with proxies, fixed a bunch of issues in registering routes and the enhanced file kind router

* move the method to the specific route file too

* remove unused function

* add download content type response header

* remove unused import

* download http method should be "get" not "delete"

* actually pass through the mime type

* slight refactor after changing the create file response

* findFile => getById

* remove trailing verbs

* update copy

* addressing pr feedback

* added missing property

* fix copy

* added comment

* regrouping imoprts

* rename "find" route to "getById"

* [File storage] Public-side Client (#135403)

* refactor store name

* wip: first version of restful-ish endpoint types captured in one place except for path

* use the endpoint definition directly

* added first iteration of files client based on shared types

* slight refactor

* added content type headers and removed unused type

* slight refactor and expose server and public side types

* finish refactor

* updated files plugin ui limits

* [Files] Public file sharing service (#135598)

* add new public file saved object type

* generate random token

* file share service, first iteration

* initial version of files share service work, we can create a file share

* delete shares when a file is deleted

* refactor to InternalFileSharingService because certain events need to be audited

* further clean up and added a comment

* finish refactor

* update tests

* refactor tractor

* move integration tests folder

* does not need to be async, also added some samples to doc comment

* added comment

* use SO object references instead of hacking it yourself, also added comments and moved some stuff around

* refactor to internal file share service

* fix type lint

* valid_until as unix ts

* commit simplify random string generator

* fix type issues and update SO integration tests

* woops, 51 not 55

* change label

* minor refactor to file service (#135836)

* remove attributes from blobstore layer and update IDs to be xxxxx.1 instead of 1.xxxxx (#136294)

* [Files] Refactor File metadata (#136370)

* refactor tractor keeps on rolling

* fix type issues

* [Files] Conform with new blob store specification (#136396)

* refactor es mappings

* move puid file

* updated the content stream implementation to support identifying "last" chunk

* updated the es blob store

* updated es mappings

* minor updates to the file object, but importantly, passing the file ID to the blob store so that files and blobs are connected

* updated test assertion

* rather use cuid because it uses cryptography to reduce the chance of collisions (#136658)

* do not index bid field (#136707)

* [Files] Find endpoint (#136529)

* refactor http endpoint interface names

* wip on find files route, need to create shared test harness and test utils

* added toJSON helper

* pass through the filter

* fix refactor to "getById" on file service instead of find and move order of attributes

* actually add the toJSON utility

* added shared integration test setup code

* added find route path to common

* return if 400 is returned when trying to create blob storage index. This is an edge case that can be hit if creation happens at the same time

* update the find algo to build a kuery expression string that we pass to SO service, note: we want to prevent query injection shenanigans so we JSON.stringify

* updated the create endpoint to enforce mime type from file type, thank you

* updated the create endpoint to enforce mime type from file type, thank you

* updated some tests and actually register the find enpoint, also updated to use mimeType

* added a few integration level tests for the new find endpoint

* updated the new setup integration test harness for use in new find and old file kinds integration tests

* use flattened type for "Meta" and "hash" fields on saved object so that we can store multiple values in an object and search

* updated import with "type" annotation

* added readme explaining patterns used for routes

* fix file kind integration tests

* remove unused endpoint

* do not expose chunk size and compression for now

* use nodeBuilder rather than manually building a kuery string

* make query strings limited in length and refactor "Extension" to "extension" plus some other minor changes

* reorg some lines

* [Files] Use `application/cbor` to optimise file uploads and downloads (#136528)

* move puid file

* added cbor-x dependency

* remove all references to "raw" from the test code

* remove "encoding" parameter and refactor to use cbor encoding for blob chunks, in this way we do not encoding our payloads to UTF-8 or Base64 Kibana side, only decode

* fixed content stream tests

* require instead of import cbor-x for now

* [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix'

* try disable eslint comment scoped

* download also as cbor to buffer directly, also updated upload endpoint to report when content has already been uploaded

* updated tests and handle some edge case when reading buffers

* remove unused require and added a comment

* moved lengthy comment to separate file

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>

* [Files] Added metrics endpoint and functionality (#136725)

* added service-level functionality for getting usage metrics

* built the metrics endpoint

* do not count size of deleted files

* updated comment

* added agg by status and extension

* update test assertions

* [Files] File errors (#136946)

* added domain-specific errors

* map file errors to http responses and clean up list endpoint

* [Files] Public File share HTTP endpoints (#137172)

* refactor where server and client routes are declared

* added new endpoint types and refactor api/files/files/metrics|share to api/files/metrics|share

* added some more comments, a new error type for the file share service and created the endpoint handler for creating file shares

* added doc comments to the file kind interface

* rename test utils folder to "test_utils" and added a basic test for creating a share

* added test_util folder and updated share test

* added new endpoint types, updated import to test utils, updated share name

* added unshare endpoint

* added share list endpoint and refactored share JSON with version that contains token and version without

* actually register the list shares route

* a bunch of refactoring for saved object type "id" rather than "token" for the object id, also added the public download endpoint

* updated error behavior on download endpoint

* fixed test

* use unix timestamp in seconds

* added file name param to public download endpoint and added shared fileName schema

* remove unused file and added public download tests

* share to shares

* added get endopint and updated tests and test titles per feedback

* added get endpoint

* updated test and back to milliseconds on validUntil

* updated name of params in route and update error message in response

* return only known messages in the expected format

* update test

* use Readable.from

* reintroduce crazy typecasting

* added security audit log tests (#137253)

* [Files] Generate download headers utility tests (#137203)

* move common schema to common schema file and move THAT file to a shared location

* update mime type behaviour

* update integration tests

* added a little something to the README

* update cbor-x to latest

* delete "require" of cbor-x

* upgrade cbor-x

* rename "public" to "public_facing"

* remove old lint rule

* added a bunch of docs

* fix interface surface area

* more doc comments

* more more doc comments

* more more more doc comments

* more more more more doc comments

* more more more more more more doc comments

* Actually 50GiB

Co-authored-by: Vadim Kibana <82822460+vadimkibana@users.noreply.github.com>

* Remove unnecessary comment

Co-authored-by: Vadim Kibana <82822460+vadimkibana@users.noreply.github.com>

* hasContent -> isReady

* only call the createIndexIfNotExists function once per instance

* [Files] Create files client (#137879)

* biig refactor to use FileClient in File and remove all metadata functionality from file service

* update file service factory to work with metadata client after refactor

* also rename file share updateable attrs interface

* updated use of types in saved objects client

* export function arg types

* added the creation helper file and added an example file for using it

* implement find for the es index client

* moved the query builder logic to a shared place

* rename file, add prefixes and embed es doc in "file" key in ES document

* type exports

* fix bad rebase

* Minor changes and updates to types

* fix another minor type issue

* [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix'

* fix minor type issues and update "update" behavior to only apply updatable fields bru

* [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix'

* actually be able to update status... also some other types cleanups

* [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix'

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>

* remove TODO

* update link to team

* throw errors more consistently

* createAuditLog -> writeAuditLog

* more more more more more more more doc comments

* more more more more more more more more doc comments

* more more more more more more more more more doc comments

* more more more more more more more more more more doc comments

* more more more more more more more more more more more more  doc comments

* [Files] ES client tests (#138174)

* move test utils and update expected metric size

* remove cuid from "file"

* update file client to set id using cuid and update types

* moved test utils and wip of integration tests for file client

* added es-index backed file client tests

* adjust the upload endpoint to also return the file size

* added size to response expect

* fix some type issues

* fix type issues

* [Files] Register routes at setup time (#138392)

* updated the fileKindRegistory to live behind a getter setter so that instantation can be taken care of in one place

* refactor conditional endpoint registration and update tests to register file kind after setup

* register routes at setup time

* remove outdated README

* fix import of non-existent function

* register routes...

* [Files] PR feedback 1 (#138417)

* update comments and plugin description

* filter lists and finds on non-deleted files

* updated comment

* added tests for larger files and files exactly divisible by chunk size

* [CI] Auto-commit changed files from 'node scripts/build_plugin_list_docs'

* do not use regexp

* fix test assertion

* update content stream tests

* make fewer fields searchable

* ok

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>

* remove legacy comment

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Vadim Kibana <82822460+vadimkibana@users.noreply.github.com>
2022-08-11 12:31:49 +02:00
..
advanced Bump Node.js to 16.16.0 (#135926) 2022-07-07 17:05:09 -05:00
architecture [core] remove root index.ts file (#137001) 2022-07-22 15:04:23 -07:00
best-practices [core] remove root index.ts file (#137001) 2022-07-22 15:04:23 -07:00
contributing Fix broken link to CiStatsReporter (#138407) 2022-08-10 00:33:38 +09:30
getting-started docs(NA): drop windows native development support (#135964) 2022-07-21 14:37:18 +01:00
images add images and content for functional UI test debugging tutorial (#96790) 2021-04-14 18:05:13 -05:00
plugin release_note:skip Issue #97976 (#137839) 2022-08-03 11:07:55 +02:00
index.asciidoc Add more details on developer documentation (#126674) 2022-03-03 11:44:05 -07:00
plugin-list.asciidoc Files plugin (#137421) 2022-08-11 12:31:49 +02:00
telemetry.asciidoc [dev/cli/timings] report on time to dev server listening (#95120) 2021-03-24 18:45:24 -04:00