diff --git a/.ci/test-matrix.yml b/.ci/test-matrix.yml index 6936e68c..9b0418bf 100644 --- a/.ci/test-matrix.yml +++ b/.ci/test-matrix.yml @@ -1,7 +1,7 @@ --- STACK_VERSION: - - 7.x-SNAPSHOT + - 7.12.0 TEST_SUITE: - free diff --git a/api_generator/Cargo.toml b/api_generator/Cargo.toml index a4516cfe..41c69d46 100644 --- a/api_generator/Cargo.toml +++ b/api_generator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "api_generator" -version = "7.11.0-alpha.1" +version = "7.12.0-alpha.1" publish = false description = "Generates source code for elasticsearch package, from the Elasticsearch REST API specs" repository = "https://github.com/elastic/elasticsearch-rs" diff --git a/api_generator/docs/namespaces/features.md b/api_generator/docs/namespaces/features.md new file mode 100644 index 00000000..19791309 --- /dev/null +++ b/api_generator/docs/namespaces/features.md @@ -0,0 +1,3 @@ +Features APIs + +Allows [introspecting and managing features](https://www.elastic.co/guide/en/elasticsearch/reference/current/features-apis.html) provided by Elasticsearch and Elasticsearch plugins. diff --git a/api_generator/rest_specs/snapshot.get_features.json b/api_generator/rest_specs/features.get_features.json similarity index 67% rename from api_generator/rest_specs/snapshot.get_features.json rename to api_generator/rest_specs/features.get_features.json index 76b340d3..6d5e8b5a 100644 --- a/api_generator/rest_specs/snapshot.get_features.json +++ b/api_generator/rest_specs/features.get_features.json @@ -1,8 +1,8 @@ { - "snapshot.get_features":{ + "features.get_features":{ "documentation":{ - "url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html", - "description":"Returns a list of features which can be snapshotted in this cluster." + "url":"https://www.elastic.co/guide/en/elasticsearch/reference/master/get-features-api.html", + "description":"Gets a list of features which can be included in snapshots using the feature_states field when creating a snapshot" }, "stability":"stable", "visibility":"public", @@ -12,7 +12,7 @@ "url":{ "paths":[ { - "path":"/_snapshottable_features", + "path":"/_features", "methods":[ "GET" ] diff --git a/api_generator/rest_specs/last_downloaded_version b/api_generator/rest_specs/last_downloaded_version index e28dc5ba..4f294e28 100644 --- a/api_generator/rest_specs/last_downloaded_version +++ b/api_generator/rest_specs/last_downloaded_version @@ -1 +1 @@ -7.x \ No newline at end of file +7.12 \ No newline at end of file diff --git a/api_generator/src/generator/code_gen/mod.rs b/api_generator/src/generator/code_gen/mod.rs index 37095d65..e2157c72 100644 --- a/api_generator/src/generator/code_gen/mod.rs +++ b/api_generator/src/generator/code_gen/mod.rs @@ -137,7 +137,7 @@ impl GetPath for syn::Ty { fn get_path(&self) -> &syn::Path { match *self { syn::Ty::Path(_, ref p) => &p, - ref p => panic!(format!("Expected syn::Ty::Path, but found {:?}", p)), + ref p => panic!("Expected syn::Ty::Path, but found {:?}", p), } } } diff --git a/elasticsearch/Cargo.toml b/elasticsearch/Cargo.toml index 3f1b1e2b..23efcf32 100644 --- a/elasticsearch/Cargo.toml +++ b/elasticsearch/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "elasticsearch" -version = "7.11.0-alpha.1" +version = "7.12.0-alpha.1" edition = "2018" authors = ["Elastic and Contributors"] description = "Official Elasticsearch Rust client" @@ -29,6 +29,7 @@ rustls-tls = ["reqwest/rustls-tls"] base64 = "^0.11" bytes = "^1.0" dyn-clone = "~1" +lazy_static = "1.4" percent-encoding = "2.1.0" reqwest = { version = "~0.11", default-features = false, features = ["gzip", "json"] } url = "^2.1" @@ -45,6 +46,7 @@ futures = "0.3.1" http = "0.2" hyper = { version = "0.14", default-features = false, features = ["tcp", "stream", "server"] } os_type = "2.2" +regex="1.4" sysinfo = "0.12.0" textwrap = "^0.11" tokio = { version = "1.0", default-features = false, features = ["macros", "net", "time", "rt-multi-thread"] } diff --git a/elasticsearch/build.rs b/elasticsearch/build.rs index 1a213aa3..53983a99 100644 --- a/elasticsearch/build.rs +++ b/elasticsearch/build.rs @@ -20,7 +20,8 @@ extern crate rustc_version; use rustc_version::{version_meta, Channel}; fn main() { - match version_meta().unwrap().channel { + let version = version_meta().unwrap(); + match version.channel { Channel::Stable => { println!("cargo:rustc-cfg=RUSTC_IS_STABLE"); } @@ -34,4 +35,11 @@ fn main() { println!("cargo:rustc-cfg=RUSTC_IS_DEV"); } } + + let semver = version.semver; + let mut rustcv: String = format!("{}.{}.{}", semver.major, semver.minor, semver.patch); + if version.channel != Channel::Stable { + rustcv.push('p'); + } + println!("cargo:rustc-env=RUSTC_VERSION={}", rustcv); } diff --git a/elasticsearch/src/.generated.toml b/elasticsearch/src/.generated.toml index 06ea6570..2b552183 100644 --- a/elasticsearch/src/.generated.toml +++ b/elasticsearch/src/.generated.toml @@ -7,6 +7,7 @@ written = [ 'dangling_indices.rs', 'enrich.rs', 'eql.rs', + 'features.rs', 'graph.rs', 'ilm.rs', 'indices.rs', diff --git a/elasticsearch/src/features.rs b/elasticsearch/src/features.rs new file mode 100644 index 00000000..a1b3e2a2 --- /dev/null +++ b/elasticsearch/src/features.rs @@ -0,0 +1,190 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// ----------------------------------------------- +// This file is generated, Please do not edit it manually. +// Run the following in the root of the repo to regenerate: +// +// cargo make generate-api +// ----------------------------------------------- + +//! Features APIs +//! +//! Allows [introspecting and managing features](https://www.elastic.co/guide/en/elasticsearch/reference/current/features-apis.html) provided by Elasticsearch and Elasticsearch plugins. + +#![allow(unused_imports)] +use crate::{ + client::Elasticsearch, + error::Error, + http::{ + headers::{HeaderMap, HeaderName, HeaderValue, ACCEPT, CONTENT_TYPE}, + request::{Body, JsonBody, NdBody, PARTS_ENCODED}, + response::Response, + transport::Transport, + Method, + }, + params::*, +}; +use percent_encoding::percent_encode; +use serde::Serialize; +use std::{borrow::Cow, time::Duration}; +#[derive(Debug, Clone, PartialEq)] +#[doc = "API parts for the Features Get Features API"] +pub enum FeaturesGetFeaturesParts { + #[doc = "No parts"] + None, +} +impl FeaturesGetFeaturesParts { + #[doc = "Builds a relative URL path to the Features Get Features API"] + pub fn url(self) -> Cow<'static, str> { + match self { + FeaturesGetFeaturesParts::None => "/_features".into(), + } + } +} +#[doc = "Builder for the [Features Get Features API](https://www.elastic.co/guide/en/elasticsearch/reference/7.11/get-features-api.html)\n\nGets a list of features which can be included in snapshots using the feature_states field when creating a snapshot"] +#[derive(Clone, Debug)] +pub struct FeaturesGetFeatures<'a, 'b> { + transport: &'a Transport, + parts: FeaturesGetFeaturesParts, + error_trace: Option, + filter_path: Option<&'b [&'b str]>, + headers: HeaderMap, + human: Option, + master_timeout: Option<&'b str>, + pretty: Option, + request_timeout: Option, + source: Option<&'b str>, +} +impl<'a, 'b> FeaturesGetFeatures<'a, 'b> { + #[doc = "Creates a new instance of [FeaturesGetFeatures]"] + pub fn new(transport: &'a Transport) -> Self { + let headers = HeaderMap::new(); + FeaturesGetFeatures { + transport, + parts: FeaturesGetFeaturesParts::None, + headers, + error_trace: None, + filter_path: None, + human: None, + master_timeout: None, + pretty: None, + request_timeout: None, + source: None, + } + } + #[doc = "Include the stack trace of returned errors."] + pub fn error_trace(mut self, error_trace: bool) -> Self { + self.error_trace = Some(error_trace); + self + } + #[doc = "A comma-separated list of filters used to reduce the response."] + pub fn filter_path(mut self, filter_path: &'b [&'b str]) -> Self { + self.filter_path = Some(filter_path); + self + } + #[doc = "Adds a HTTP header"] + pub fn header(mut self, key: HeaderName, value: HeaderValue) -> Self { + self.headers.insert(key, value); + self + } + #[doc = "Return human readable values for statistics."] + pub fn human(mut self, human: bool) -> Self { + self.human = Some(human); + self + } + #[doc = "Explicit operation timeout for connection to master node"] + pub fn master_timeout(mut self, master_timeout: &'b str) -> Self { + self.master_timeout = Some(master_timeout); + self + } + #[doc = "Pretty format the returned JSON response."] + pub fn pretty(mut self, pretty: bool) -> Self { + self.pretty = Some(pretty); + self + } + #[doc = "Sets a request timeout for this API call.\n\nThe timeout is applied from when the request starts connecting until the response body has finished."] + pub fn request_timeout(mut self, timeout: Duration) -> Self { + self.request_timeout = Some(timeout); + self + } + #[doc = "The URL-encoded request definition. Useful for libraries that do not accept a request body for non-POST requests."] + pub fn source(mut self, source: &'b str) -> Self { + self.source = Some(source); + self + } + #[doc = "Creates an asynchronous call to the Features Get Features API that can be awaited"] + pub async fn send(self) -> Result { + let path = self.parts.url(); + let method = Method::Get; + let headers = self.headers; + let timeout = self.request_timeout; + let query_string = { + #[serde_with::skip_serializing_none] + #[derive(Serialize)] + struct QueryParams<'b> { + error_trace: Option, + #[serde(serialize_with = "crate::client::serialize_coll_qs")] + filter_path: Option<&'b [&'b str]>, + human: Option, + master_timeout: Option<&'b str>, + pretty: Option, + source: Option<&'b str>, + } + let query_params = QueryParams { + error_trace: self.error_trace, + filter_path: self.filter_path, + human: self.human, + master_timeout: self.master_timeout, + pretty: self.pretty, + source: self.source, + }; + Some(query_params) + }; + let body = Option::<()>::None; + let response = self + .transport + .send(method, &path, headers, query_string.as_ref(), body, timeout) + .await?; + Ok(response) + } +} +#[doc = "Namespace client for Features APIs"] +pub struct Features<'a> { + transport: &'a Transport, +} +impl<'a> Features<'a> { + #[doc = "Creates a new instance of [Features]"] + pub fn new(transport: &'a Transport) -> Self { + Self { transport } + } + pub fn transport(&self) -> &Transport { + self.transport + } + #[doc = "[Features Get Features API](https://www.elastic.co/guide/en/elasticsearch/reference/7.11/get-features-api.html)\n\nGets a list of features which can be included in snapshots using the feature_states field when creating a snapshot"] + pub fn get_features<'b>(&'a self) -> FeaturesGetFeatures<'a, 'b> { + FeaturesGetFeatures::new(self.transport()) + } +} +impl Elasticsearch { + #[doc = "Creates a namespace client for Features APIs"] + pub fn features(&self) -> Features { + Features::new(self.transport()) + } +} diff --git a/elasticsearch/src/http/transport.rs b/elasticsearch/src/http/transport.rs index 14a2cdea..ead0c82a 100644 --- a/elasticsearch/src/http/transport.rs +++ b/elasticsearch/src/http/transport.rs @@ -37,6 +37,7 @@ use crate::{ }; use base64::write::EncoderWriter as Base64Encoder; use bytes::BytesMut; +use lazy_static::lazy_static; use serde::Serialize; use std::{ error, fmt, @@ -97,6 +98,37 @@ impl fmt::Display for BuildError { /// Default address to Elasticsearch running on `http://localhost:9200` pub static DEFAULT_ADDRESS: &str = "http://localhost:9200"; +lazy_static! { + /// Client metadata header: service, language, transport, followed by additional information + static ref CLIENT_META: String = build_meta(); +} + +fn build_meta() -> String { + let mut version_parts = env!("CARGO_PKG_VERSION").split(&['.', '-'][..]); + let mut version = String::new(); + + // major.minor.patch followed with an optional 'p' for preliminary versions + version.push_str(version_parts.next().unwrap()); + version.push('.'); + version.push_str(version_parts.next().unwrap()); + version.push('.'); + version.push_str(version_parts.next().unwrap()); + if version_parts.next().is_some() { + version.push('p'); + } + + let rustc = env!("RUSTC_VERSION"); + let mut meta = format!("es={},rs={},t={}", version, rustc, version); + + if cfg!(feature = "native-tls") { + meta.push_str(",tls=n"); + } else if cfg!(feature = "rustls-tls") { + meta.push_str(",tls=r"); + } + + meta +} + /// Builds a HTTP transport to make API calls to Elasticsearch pub struct TransportBuilder { client_builder: reqwest::ClientBuilder, @@ -108,6 +140,7 @@ pub struct TransportBuilder { proxy_credentials: Option, disable_proxy: bool, headers: HeaderMap, + meta_header: bool, timeout: Option, } @@ -128,6 +161,7 @@ impl TransportBuilder { proxy_credentials: None, disable_proxy: false, headers: HeaderMap::new(), + meta_header: true, timeout: None, } } @@ -187,6 +221,16 @@ impl TransportBuilder { self } + /// Whether to send a `x-elastic-client-meta` header that describes the runtime environment. + /// + /// This header contains information that is similar to what could be found in `User-Agent`. Using a separate + /// header allows applications to use `User-Agent` for their own needs, e.g. to identify application version + /// or other environment information. Defaults to `true`. + pub fn enable_meta_header(mut self, enable: bool) -> Self { + self.meta_header = enable; + self + } + /// Sets a global request timeout for the client. /// /// The timeout is applied from when the request starts connecting until the response body has finished. @@ -270,6 +314,7 @@ impl TransportBuilder { client, conn_pool: self.conn_pool, credentials: self.credentials, + send_meta: self.meta_header, }) } } @@ -309,6 +354,7 @@ pub struct Transport { client: reqwest::Client, credentials: Option, conn_pool: Box, + send_meta: bool, } impl Transport { @@ -396,13 +442,20 @@ impl Transport { } // default headers first, overwrite with any provided - let mut request_headers = HeaderMap::with_capacity(3 + headers.len()); + let mut request_headers = HeaderMap::with_capacity(4 + headers.len()); request_headers.insert(CONTENT_TYPE, HeaderValue::from_static(DEFAULT_CONTENT_TYPE)); request_headers.insert(ACCEPT, HeaderValue::from_static(DEFAULT_ACCEPT)); request_headers.insert(USER_AGENT, HeaderValue::from_static(DEFAULT_USER_AGENT)); for (name, value) in headers { request_headers.insert(name.unwrap(), value); } + // if meta header enabled, send it last so that it's not overridden. + if self.send_meta { + request_headers.insert( + "x-elastic-client-meta", + HeaderValue::from_static(CLIENT_META.as_str()), + ); + } request_builder = request_builder.headers(request_headers); @@ -601,9 +654,10 @@ impl ConnectionPool for CloudConnectionPool { #[cfg(test)] pub mod tests { + use super::*; #[cfg(any(feature = "native-tls", feature = "rustls-tls"))] use crate::auth::ClientCertificate; - use crate::http::transport::{CloudId, Connection, SingleNodeConnectionPool, TransportBuilder}; + use regex::Regex; use url::Url; #[test] @@ -742,4 +796,12 @@ pub mod tests { let conn = Connection::new(url); assert_eq!(conn.url.as_str(), "http://10.1.2.3/"); } + + #[test] + pub fn test_meta_header() { + let re = Regex::new(r"^es=[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}p?,rs=[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}p?,t=[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}p?(,tls=[rn])?$").unwrap(); + let x: &str = CLIENT_META.as_str(); + println!("{}", x); + assert!(re.is_match(x)); + } } diff --git a/elasticsearch/src/lib.rs b/elasticsearch/src/lib.rs index 24a12cf1..1ae7da84 100644 --- a/elasticsearch/src/lib.rs +++ b/elasticsearch/src/lib.rs @@ -372,6 +372,7 @@ pub mod cluster; pub mod dangling_indices; pub mod enrich; pub mod eql; +pub mod features; pub mod graph; pub mod ilm; pub mod indices; diff --git a/elasticsearch/src/snapshot.rs b/elasticsearch/src/snapshot.rs index 19fda9a9..c2e7561b 100644 --- a/elasticsearch/src/snapshot.rs +++ b/elasticsearch/src/snapshot.rs @@ -1145,127 +1145,6 @@ impl<'a, 'b> SnapshotGet<'a, 'b> { } } #[derive(Debug, Clone, PartialEq)] -#[doc = "API parts for the Snapshot Get Features API"] -pub enum SnapshotGetFeaturesParts { - #[doc = "No parts"] - None, -} -impl SnapshotGetFeaturesParts { - #[doc = "Builds a relative URL path to the Snapshot Get Features API"] - pub fn url(self) -> Cow<'static, str> { - match self { - SnapshotGetFeaturesParts::None => "/_snapshottable_features".into(), - } - } -} -#[doc = "Builder for the [Snapshot Get Features API](https://www.elastic.co/guide/en/elasticsearch/reference/7.11/modules-snapshots.html)\n\nReturns a list of features which can be snapshotted in this cluster."] -#[derive(Clone, Debug)] -pub struct SnapshotGetFeatures<'a, 'b> { - transport: &'a Transport, - parts: SnapshotGetFeaturesParts, - error_trace: Option, - filter_path: Option<&'b [&'b str]>, - headers: HeaderMap, - human: Option, - master_timeout: Option<&'b str>, - pretty: Option, - request_timeout: Option, - source: Option<&'b str>, -} -impl<'a, 'b> SnapshotGetFeatures<'a, 'b> { - #[doc = "Creates a new instance of [SnapshotGetFeatures]"] - pub fn new(transport: &'a Transport) -> Self { - let headers = HeaderMap::new(); - SnapshotGetFeatures { - transport, - parts: SnapshotGetFeaturesParts::None, - headers, - error_trace: None, - filter_path: None, - human: None, - master_timeout: None, - pretty: None, - request_timeout: None, - source: None, - } - } - #[doc = "Include the stack trace of returned errors."] - pub fn error_trace(mut self, error_trace: bool) -> Self { - self.error_trace = Some(error_trace); - self - } - #[doc = "A comma-separated list of filters used to reduce the response."] - pub fn filter_path(mut self, filter_path: &'b [&'b str]) -> Self { - self.filter_path = Some(filter_path); - self - } - #[doc = "Adds a HTTP header"] - pub fn header(mut self, key: HeaderName, value: HeaderValue) -> Self { - self.headers.insert(key, value); - self - } - #[doc = "Return human readable values for statistics."] - pub fn human(mut self, human: bool) -> Self { - self.human = Some(human); - self - } - #[doc = "Explicit operation timeout for connection to master node"] - pub fn master_timeout(mut self, master_timeout: &'b str) -> Self { - self.master_timeout = Some(master_timeout); - self - } - #[doc = "Pretty format the returned JSON response."] - pub fn pretty(mut self, pretty: bool) -> Self { - self.pretty = Some(pretty); - self - } - #[doc = "Sets a request timeout for this API call.\n\nThe timeout is applied from when the request starts connecting until the response body has finished."] - pub fn request_timeout(mut self, timeout: Duration) -> Self { - self.request_timeout = Some(timeout); - self - } - #[doc = "The URL-encoded request definition. Useful for libraries that do not accept a request body for non-POST requests."] - pub fn source(mut self, source: &'b str) -> Self { - self.source = Some(source); - self - } - #[doc = "Creates an asynchronous call to the Snapshot Get Features API that can be awaited"] - pub async fn send(self) -> Result { - let path = self.parts.url(); - let method = Method::Get; - let headers = self.headers; - let timeout = self.request_timeout; - let query_string = { - #[serde_with::skip_serializing_none] - #[derive(Serialize)] - struct QueryParams<'b> { - error_trace: Option, - #[serde(serialize_with = "crate::client::serialize_coll_qs")] - filter_path: Option<&'b [&'b str]>, - human: Option, - master_timeout: Option<&'b str>, - pretty: Option, - source: Option<&'b str>, - } - let query_params = QueryParams { - error_trace: self.error_trace, - filter_path: self.filter_path, - human: self.human, - master_timeout: self.master_timeout, - pretty: self.pretty, - source: self.source, - }; - Some(query_params) - }; - let body = Option::<()>::None; - let response = self - .transport - .send(method, &path, headers, query_string.as_ref(), body, timeout) - .await?; - Ok(response) - } -} -#[derive(Debug, Clone, PartialEq)] #[doc = "API parts for the Snapshot Get Repository API"] pub enum SnapshotGetRepositoryParts<'b> { #[doc = "No parts"] @@ -1946,10 +1825,6 @@ impl<'a> Snapshot<'a> { pub fn get<'b>(&'a self, parts: SnapshotGetParts<'b>) -> SnapshotGet<'a, 'b> { SnapshotGet::new(self.transport(), parts) } - #[doc = "[Snapshot Get Features API](https://www.elastic.co/guide/en/elasticsearch/reference/7.11/modules-snapshots.html)\n\nReturns a list of features which can be snapshotted in this cluster."] - pub fn get_features<'b>(&'a self) -> SnapshotGetFeatures<'a, 'b> { - SnapshotGetFeatures::new(self.transport()) - } #[doc = "[Snapshot Get Repository API](https://www.elastic.co/guide/en/elasticsearch/reference/7.11/modules-snapshots.html)\n\nReturns information about a repository."] pub fn get_repository<'b>( &'a self, diff --git a/yaml_test_runner/Cargo.toml b/yaml_test_runner/Cargo.toml index fc3bdaf8..679838ee 100644 --- a/yaml_test_runner/Cargo.toml +++ b/yaml_test_runner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yaml_test_runner" -version = "7.11.0-alpha.1" +version = "7.12.0-alpha.1" publish = false edition = "2018" authors = ["Elastic and Contributors"] diff --git a/yaml_test_runner/skip.yml b/yaml_test_runner/skip.yml index 9cac7379..d20d514c 100644 --- a/yaml_test_runner/skip.yml +++ b/yaml_test_runner/skip.yml @@ -26,22 +26,180 @@ tests: # expected value json["indices"][0]["name"] to match String("test_index1") but was String(".security-7") - "Resolve index with indices, aliases, and data streams" + xpack/license/20_put_license.yml: + # expected value json["basic_was_started"] to match Bool(true) but was Bool(false) + - "Current license is trial means not eligle to start trial" + # expected value json["license_status"] to match String("valid") but was String("invalid") + - "Installing and getting license works" + # expected value json["acknowledged"] to match Bool(false) but was Bool(true) + - "Must acknowledge to start basic" + # expected value json["license_status"] to match String("valid") but was String("invalid") + - "Should install a feature type license" + + xpack/license/30_enterprise_license.yml: + # expected value json["license_status"] to match String("valid") but was String("invalid") + - "Installing enterprise license" + + xpack/ml/calendar_crud.yml: + - "*" + xpack/ml/filter_crud.yml: # Warning "this request accesses system indices..." to match is wrong on all tests - "*" + xpack/ml/custom_all_field.yml: + - "*" + + xpack/ml/data_frame_analytics_cat_apis.yml: + - "*" + + xpack/ml/data_frame_analytics_crud.yml: + - "*" + + xpack/ml/datafeed_cat_apis.yml: + - "*" + + xpack/ml/datafeeds_crud.yml: + - "*" + xpack/ml/delete_expired_data.yml: # Warning "this request accesses system indices..." to match is wrong. - "Test delete expired data with job id" + xpack/ml/delete_job_force.yml: + - "*" + + xpack/ml/explain_data_frame_analytics.yml: + - "*" + + xpack/ml/get_datafeed_stats.yml: + - "*" + + xpack/ml/get_datafeeds.yml: + - "*" + + xpack/ml/get_model_snapshots.yml: + - "*" + + xpack/ml/get_trained_model_stats.yml: + - "*" + + xpack/ml/inference_crud.yml: + - "*" + + xpack/ml/inference_processor.yml: + - "*" + + xpack/ml/job_cat_apis.yml: + - "*" + + xpack/ml/job_groups.yml: + - "*" + + xpack/ml/jobs_crud.yml: + - "*" + + xpack/ml/jobs_get.yml: + - "*" + + xpack/ml/jobs_get_result_categories.yml: + - "*" + + xpack/ml/jobs_get_result_influencers.yml: + - "*" + + xpack/ml/jobs_get_result_overall_buckets.yml: + - "*" + + xpack/ml/jobs_get_result_records.yml: + - "*" + + xpack/ml/jobs_get_stats.yml: + - "*" + + xpack/ml/ml_anomalies_default_mappings.yml: + - "*" + + xpack/ml/ml_info.yml: + - "*" + + xpack/ml/pipeline_inference.yml: + - "*" + + xpack/ml/post_data.yml: + - "*" + + xpack/ml/preview_datafeed.yml: + - "*" + + xpack/ml/set_upgrade_mode.yml: + - "*" + + xpack/ml/start_data_frame_analytics.yml: + - "*" + + xpack/ml/start_stop_datafeed.yml: + - "*" + + xpack/ml/stop_data_frame_analytics.yml: + - "*" + + xpack/ml/trained_model_cat_apis.yml: + - "*" + + xpack/ml/upgrade_job_snapshot.yml: + - "*" + + xpack/privileges/40_get_user_privs.yml: + - "*" + + xpack/rollup/delete_job.yml: + - "*" + + xpack/rollup/get_jobs.yml: + - "*" + + xpack/rollup/put_job.yml: + - "*" + + xpack/rollup/security_tests.yml: + - "*" + + xpack/rollup/start_job.yml: + - "*" + + xpack/rollup/stop_job.yml: + - "*" + xpack/runtime_fields/20_long.yml: # expected value ... to match Number(40.0) but was Number(40) - "terms agg" - - + + xpack/searchable_snapshots/10_usage.yml: + - "*" + + xpack/set_security_user/10_small_users_one_index.yml: + - "*" + + xpack/snapshot/10_basic.yml: + - "*" + xpack/ssl/10_basic.yml: # this test returns the CA cert before the cert, so always fails - "Test get SSL certificates" + xpack/token/10_basic.yml: + - "*" + + xpack/token/11_invalidation.yml: + - "*" + + xpack/transform/transforms_force_delete.yml: + - "*" + + xpack/transform/transforms_start_stop.yml: + - "*" + xpack/transform/transforms_stats_continuous.yml: # this test always returns "exponential_avg_checkpoint_duration_ms": 0.0 . seems like it might be missing data in # the setup, fires quicker than any documents are processed, or the delay of 1m is too high? @@ -62,6 +220,9 @@ tests: xpack/unsigned_long/60_collapse.yml: - "*" + xpack/xpack/20_info.yml: + - "*" + free/cat.aliases/10_basic.yml: # this test fails as the regex needs a \n before the ending $ - "Multiple alias names"