diff --git a/settings.gradle b/settings.gradle index 76b157d0e4a..c1360dc0009 100644 --- a/settings.gradle +++ b/settings.gradle @@ -72,6 +72,7 @@ addSubProjects('', new File(rootProject.projectDir, 'libs')) addSubProjects('', new File(rootProject.projectDir, 'modules')) addSubProjects('', new File(rootProject.projectDir, 'plugins')) addSubProjects('', new File(rootProject.projectDir, 'qa')) +addSubProjects('', new File(rootProject.projectDir, 'x-pack')) boolean isEclipse = System.getProperty("eclipse.launcher") != null || gradle.startParameter.taskNames.contains('eclipse') || gradle.startParameter.taskNames.contains('cleanEclipse') if (isEclipse) { diff --git a/x-pack/.ci/java-versions.properties b/x-pack/.ci/java-versions.properties deleted file mode 100644 index a0713ce128e..00000000000 --- a/x-pack/.ci/java-versions.properties +++ /dev/null @@ -1,8 +0,0 @@ -# This file is used with all of the non-matrix tests in Jenkins. - -# This .properties file defines the versions of Java with which to -# build and test Elasticsearch for this branch. Valid Java versions -# are 'java' or 'openjdk' followed by the major release number. - -ES_BUILD_JAVA=java10 -ES_RUNTIME_JAVA=java8 diff --git a/x-pack/.ci/matrix-build-javas.yml b/x-pack/.ci/matrix-build-javas.yml deleted file mode 100644 index 84460e2a9a6..00000000000 --- a/x-pack/.ci/matrix-build-javas.yml +++ /dev/null @@ -1,2 +0,0 @@ -ES_BUILD_JAVA: - - java10 diff --git a/x-pack/.ci/matrix-java-exclusions.yml b/x-pack/.ci/matrix-java-exclusions.yml deleted file mode 100644 index 8257f1a1ffb..00000000000 --- a/x-pack/.ci/matrix-java-exclusions.yml +++ /dev/null @@ -1 +0,0 @@ -exclude: diff --git a/x-pack/.ci/matrix-runtime-javas.yml b/x-pack/.ci/matrix-runtime-javas.yml deleted file mode 100644 index ca4e98b8a0b..00000000000 --- a/x-pack/.ci/matrix-runtime-javas.yml +++ /dev/null @@ -1,3 +0,0 @@ -ES_RUNTIME_JAVA: - - java8 - - java10 diff --git a/x-pack/.dir-locals.el b/x-pack/.dir-locals.el deleted file mode 100644 index 2fdca14f5dd..00000000000 --- a/x-pack/.dir-locals.el +++ /dev/null @@ -1,88 +0,0 @@ -((java-mode - . - ((eval - . - (progn - (defun my/point-in-defun-declaration-p () - (let ((bod (save-excursion (c-beginning-of-defun) - (point)))) - (<= bod - (point) - (save-excursion (goto-char bod) - (re-search-forward "{") - (point))))) - - (defun my/is-string-concatenation-p () - "Returns true if the previous line is a string concatenation" - (save-excursion - (let ((start (point))) - (forward-line -1) - (if (re-search-forward " \\\+$" start t) t nil)))) - - (defun my/inside-java-lambda-p () - "Returns true if point is the first statement inside of a lambda" - (save-excursion - (c-beginning-of-statement-1) - (let ((start (point))) - (forward-line -1) - (if (search-forward " -> {" start t) t nil)))) - - (defun my/trailing-paren-p () - "Returns true if point is a training paren and semicolon" - (save-excursion - (end-of-line) - (let ((endpoint (point))) - (beginning-of-line) - (if (re-search-forward "[ ]*);$" endpoint t) t nil)))) - - (defun my/prev-line-call-with-no-args-p () - "Return true if the previous line is a function call with no arguments" - (save-excursion - (let ((start (point))) - (forward-line -1) - (if (re-search-forward ".($" start t) t nil)))) - - (defun my/arglist-cont-nonempty-indentation (arg) - (if (my/inside-java-lambda-p) - '+ - (if (my/is-string-concatenation-p) - 16 - (unless (my/point-in-defun-declaration-p) '++)))) - - (defun my/statement-block-intro (arg) - (if (and (c-at-statement-start-p) (my/inside-java-lambda-p)) 0 '+)) - - (defun my/block-close (arg) - (if (my/inside-java-lambda-p) '- 0)) - - (defun my/arglist-close (arg) (if (my/trailing-paren-p) 0 '--)) - - (defun my/arglist-intro (arg) - (if (my/prev-line-call-with-no-args-p) '++ 0)) - - (c-set-offset 'inline-open 0) - (c-set-offset 'topmost-intro-cont '+) - (c-set-offset 'statement-block-intro 'my/statement-block-intro) - (c-set-offset 'block-close 'my/block-close) - (c-set-offset 'knr-argdecl-intro '+) - (c-set-offset 'substatement-open '+) - (c-set-offset 'substatement-label '+) - (c-set-offset 'case-label '+) - (c-set-offset 'label '+) - (c-set-offset 'statement-case-open '+) - (c-set-offset 'statement-cont '++) - (c-set-offset 'arglist-intro 'my/arglist-intro) - (c-set-offset 'arglist-cont-nonempty '(my/arglist-cont-nonempty-indentation c-lineup-arglist)) - (c-set-offset 'arglist-close 'my/arglist-close) - (c-set-offset 'inexpr-class 0) - (c-set-offset 'access-label 0) - (c-set-offset 'inher-intro '++) - (c-set-offset 'inher-cont '++) - (c-set-offset 'brace-list-intro '+) - (c-set-offset 'func-decl-cont '++) - )) - (c-basic-offset . 4) - (c-comment-only-line-offset . (0 . 0)) - (fill-column . 140) - (fci-rule-column . 140) - (compile-command . "gradle compileTestJava")))) diff --git a/x-pack/.github/ISSUE_TEMPLATE.md b/x-pack/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index b6e1ea3b29c..00000000000 --- a/x-pack/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/x-pack/.gitignore b/x-pack/.gitignore deleted file mode 100644 index 7d76f5bf819..00000000000 --- a/x-pack/.gitignore +++ /dev/null @@ -1,54 +0,0 @@ -.idea/ -.gradle/ -*.iml -*.ipr -*.iws -work/ -/data/ -logs/ -.DS_Store -build/ -build-idea/ -build-eclipse/ -generated-resources/ -target/ -*-execution-hints.log -docs/html/ -docs/build.log -npm-debug.log -/tmp/ -backwards/ -html_docs -.vagrant/ -vendor/ -.bundle -Gemfile.lock - -## eclipse ignores (use 'mvn eclipse:eclipse' to build eclipse projects) -## All files (.project, .classpath, .settings/*) should be generated through Maven which -## will correctly set the classpath based on the declared dependencies and write settings -## files to ensure common coding style across Eclipse and IDEA. -.project -.classpath -eclipse-build -*/.project -*/.classpath -*/eclipse-build -.settings -!/.settings/org.eclipse.core.resources.prefs -!/.settings/org.eclipse.jdt.core.prefs -!/.settings/org.eclipse.jdt.ui.prefs - -## netbeans ignores -nb-configuration.xml -nbactions.xml - -dependency-reduced-pom.xml -github.token - -## ignore attachment files -.local-* -*/.local-* - -## ignore antlr temporary files used by vscode-antlr4 -.antlr diff --git a/x-pack/.projectile b/x-pack/.projectile deleted file mode 100644 index 04f5bf59690..00000000000 --- a/x-pack/.projectile +++ /dev/null @@ -1,8 +0,0 @@ --/target --/license/target --/marvel/target --/qa/target --/shield/target --/watcher/target --/x-dev-tools/target --*.class diff --git a/x-pack/build.gradle b/x-pack/build.gradle index 50325ccca84..ba22fab1722 100644 --- a/x-pack/build.gradle +++ b/x-pack/build.gradle @@ -3,12 +3,6 @@ import org.elasticsearch.gradle.plugin.PluginBuildPlugin import org.elasticsearch.gradle.Version import org.elasticsearch.gradle.precommit.LicenseHeadersTask -if (project.projectDir.name != 'x-pack-elasticsearch') { - throw new GradleException('You must checkout x-pack-elasticsearch in the following directory: /../elasticsearch-extra/x-pack-elasticsearch') -} - -task wrapper(type: Wrapper) - Project xpackRootProject = project subprojects { @@ -78,9 +72,7 @@ subprojects { bwcVersions.snapshotProjectNames.each { snapshotName -> Version snapshot = bwcVersions.getSnapshotForProject(snapshotName) if (snapshot != null && snapshot.onOrAfter("6.3.0")) { - String snapshotProject = ":x-pack-elasticsearch:plugin:bwc:${snapshotName}" + String snapshotProject = ":x-pack:plugin:bwc:${snapshotName}" project(snapshotProject).ext.bwcVersion = snapshot ext.projectSubstitutions["org.elasticsearch.plugin:x-pack:${snapshot}"] = snapshotProject - } - } } diff --git a/x-pack/buildSrc/settings.gradle b/x-pack/buildSrc/settings.gradle deleted file mode 100644 index a1e394b545f..00000000000 --- a/x-pack/buildSrc/settings.gradle +++ /dev/null @@ -1,10 +0,0 @@ -File extrasDir = new File(settingsDir, '../..').getCanonicalFile() -if (extrasDir.name.endsWith('-extra') == false) { - throw new GradleException("x-pack-elasticsearch must be checked out under an elasticsearch-extra directory, found ${extrasDir.name}") -} -File elasticsearchDir = new File(extrasDir.parentFile, extrasDir.name[0..-7]) -if (elasticsearchDir.exists() == false) { - throw new GradleException("${elasticsearchDir.name} is missing as a sibling to ${extrasDir.name}") -} - -project(':').projectDir = new File(elasticsearchDir, 'buildSrc') diff --git a/x-pack/dev-tools/ci b/x-pack/dev-tools/ci deleted file mode 100755 index badd94eba10..00000000000 --- a/x-pack/dev-tools/ci +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/bash -# This script is used as a single command to run the x-pack tests. -# -# It will attempt to check out 'elasticsearch' into a sibling directory -# unless the environment variable `USE_EXISTING_ES` has a value. The -# branch of elasticsearch which will be checked out depends on -# environment variables. If running locally, set GIT_BRANCH. When -# running in Jenkins, that env var is set. When running a PR -# jenkins job, the variables PR_SOURCE_BRANCH and PR_TARGET_BRANCH -# will be set and the source branch will be looked for in elasticsearch -# before falling back to the target branch name. -# -# It will also attempt to install the appropriate version of node.js -# for the Kibana plugin tests using nvm, unless -# `xpack.kibana.build=false` is defined in -# ~/.gradle/gradle.properties. Set a custom nvm directory using the -# `NVM_DIR` environment variable. -# - -# Turn on semi-strict mode -set -e -set -o pipefail - -# Allow the user choose different test through a single cli arg -# default to `check` if no argument has been supplied -key=${1-check} -case $key in - intake) - GRADLE_CLI_ARGS=( - "--info" - "compileJava" - "compileTestJava" - "precommit" - "check" - "-Dtests.network=true" - "-Dtests.badapples=true" - ) - ;; - packagingTest) - GRADLE_CLI_ARGS=( - "--info" - "-Pvagrant.boxes=all" - "packagingTest" - ) - ;; - packagingTestSample) - GRADLE_CLI_ARGS=( - "--info" - "-Pvagrant.boxes=sample" - "packagingTest" - ) - ;; - bwcTest) - GRADLE_CLI_ARGS=( - "--info" - "bwcTest" - ) - ;; - check) - GRADLE_CLI_ARGS=( - "--info" - "check" - "-Dtests.network=true" - "-Dtests.badapples=true" - ) - ;; - releaseTest) - GRADLE_CLI_ARGS=( - "--info" - "check" - "-Dtests.network=true" - "-Dtests.badapples=true" - "-Dbuild.snapshot=false" - "-Dlicense.key=/etc/x-pack/license.key" - "-Dtests.jvm.argline=-Dbuild.snapshot=false" - ) - ;; - *) - echo "Unsupported cli argument $1. Allowed arguments are packagingTest or check. No argument defaults to check." - exit 1;; -esac - -SCRIPT="$0" - -# SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path. -while [ -h "$SCRIPT" ] ; do - ls=$(ls -ld "$SCRIPT") - # Drop everything prior to -> - link=$(expr "$ls" : '.*-> \(.*\)$') - if expr "$link" : '/.*' > /dev/null; then - SCRIPT="$link" - else - SCRIPT=$(dirname "$SCRIPT")/"$link" - fi -done - -# determine base directory -BASE_DIR=$(dirname "$SCRIPT")/.. - -# make BASE_DIR absolute -BASE_DIR=$(cd "$BASE_DIR"; pwd) - -PARENT_DIR=$(cd "$BASE_DIR"/../..; pwd) - -# go to the parent directory -cd $PARENT_DIR - -if [ -z ${USE_EXISTING_ES:+x} ]; then - if [ -d "./elasticsearch" ]; then - echo "I expected a clean workspace but an 'elasticsearch' sibling directory already exists in [$PARENT_DIR]!" - echo - echo "Either define 'USE_EXISTING_ES' or remove the existing 'elasticsearch' sibling." - exit 1 - fi - - function pick_clone_target { - echo "picking which branch of elasticsearch to clone" - - # PR_* are provided by the CI git plugin for pull requests - if [[ -n "$PR_AUTHOR" && -n "$PR_SOURCE_BRANCH" ]]; then - GH_USER="$PR_AUTHOR" - BRANCH="$PR_SOURCE_BRANCH" - echo " -> using pull request author $GH_USER and branch $BRANCH" - if [[ -n "$(git ls-remote --heads https://github.com/$GH_USER/elasticsearch.git $BRANCH 2>/dev/null)" ]]; then - return - fi - fi - GH_USER="elastic" - # GIT_BRANCH is provided by normal CI runs. It starts with the repo, i.e., origin/master - # If we are not in CI, we fall back to the master branch - BRANCH="${PR_TARGET_BRANCH:-${GIT_BRANCH#*/}}" - BRANCH="${BRANCH:-master}" - echo " -> using CI branch $BRANCH from elastic repo" - } - - pick_clone_target - - DEPTH=1 - if [ -n "$BUILD_METADATA" ]; then - IFS=';' read -ra metadata <<< "$BUILD_METADATA" - for kv in "${metadata[@]}"; do - IFS='=' read -ra key_value <<< "$kv" - if [ "${key_value[0]}" == "git_ref_elasticsearch" ]; then - # Force checked out hash if build metadata is set. We use a depth of 100, which - # assumes there are no more than 100 commits between head of the branch and - # last-good-commit. This is still quite a bit faster than pulling the entire history. - ES_REF="${key_value[1]}" - DEPTH=100 - fi - done - fi - - echo " -> checking out '$BRANCH' branch from $GH_USER/elasticsearch..." - git clone -b $BRANCH "https://github.com/$GH_USER/elasticsearch.git" --depth=$DEPTH - - if [ ! -z $ES_REF ]; then - echo " -> using elasticsearch ref from build metadata: $ES_REF" - git -C elasticsearch checkout $ES_REF - else - ES_REF="$(git -C elasticsearch rev-parse HEAD)" - fi - - echo " -> checked out elasticsearch revision: $ES_REF" - echo - -else - if [ -d "./elasticsearch" ]; then - echo "Using existing 'elasticsearch' checkout" - else - echo "You have defined 'USE_EXISTING_ES' but no existing Elasticsearch directory exists!" - exit 2 - fi -fi - -# back to base directory -cd "$BASE_DIR" - -echo "Running x-pack-elasticsearch tests..." -echo "Running in $PWD" - -# output the commands -set -xuf - -# clean -./gradlew --stacktrace clean -Dorg.gradle.java.home=${RUNTIME_JAVA_HOME:-$JAVA_HOME} - -# Actually run the tests -GRADLE_CLI_ARGS+=("-Dorg.gradle.java.home=${RUNTIME_JAVA_HOME:-$JAVA_HOME}") -./gradlew "${GRADLE_CLI_ARGS[@]}" - -# write the ES hash we checked out to build metadata -mkdir build -echo "git_ref_elasticsearch=$ES_REF" > build/build_metadata - -# ~*~ shell-script-mode ~*~ diff --git a/x-pack/dev-tools/github_relabel.pl b/x-pack/dev-tools/github_relabel.pl deleted file mode 100755 index 91800b28e84..00000000000 --- a/x-pack/dev-tools/github_relabel.pl +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; - -use HTTP::Tiny; -use IO::Socket::SSL 1.52; -use utf8; -use Getopt::Long; - -my $Base_URL = "https://api.github.com/repos/"; -my $User_Repo = 'elastic/x-pack-elasticsearch/'; -my $Issue_URL = "https://github.com/${User_Repo}issues"; -use JSON(); -use URI(); -use URI::Escape qw(uri_escape_utf8); - -our $json = JSON->new->utf8(1); -our $http = HTTP::Tiny->new( - default_headers => { - Accept => "application/vnd.github.v3+json", - Authorization => load_github_key() - } -); - -my %Opts = ( state => 'open' ); - -GetOptions( - \%Opts, # - 'state=s', 'labels=s', 'add=s', 'remove=s' -) || exit usage(); - -die usage('--state must be one of open|all|closed') - unless $Opts{state} =~ /^(open|all|closed)$/; - -die usage('--labels is required') unless $Opts{labels}; -die usage('Either --add or --remove is required') - unless $Opts{add} || $Opts{remove}; - -relabel(); - -#=================================== -sub relabel { -#=================================== - my @remove = split /,/, ( $Opts{remove} || '' ); - my @add = split /,/, ( $Opts{add} || '' ); - my $add_json = $json->encode( \@add ); - my $url = URI->new( $Base_URL . $User_Repo . 'issues' ); - $url->query_form( - state => $Opts{state}, - labels => $Opts{labels}, - per_page => 100 - ); - - my $spool = Spool->new($url); - while ( my $issue = $spool->next ) { - my $id = $issue->{number}; - print "$Issue_URL/$id\n"; - if (@add) { - add_label( $id, $add_json ); - } - for (@remove) { - remove_label( $id, $_ ); - } - } - print "Done\n"; -} - -#=================================== -sub add_label { -#=================================== - my ( $id, $json ) = @_; - my $response = $http->post( - $Base_URL . $User_Repo . "issues/$id/labels", - { content => $json, - headers => { "Content-Type" => "application/json; charset=utf-8" } - } - ); - - die "$response->{status} $response->{reason}\n" - unless $response->{success}; - -} - -#=================================== -sub remove_label { -#=================================== - my ( $id, $name ) = @_; - my $url - = $Base_URL - . $User_Repo - . "issues/$id/labels/" - . uri_escape_utf8($name); - my $response = $http->delete($url); - - die "$response->{status} $response->{reason}\n" - unless $response->{success}; - -} - -#=================================== -sub load_github_key { -#=================================== - my ($file) = glob("~/.github_auth"); - unless ( -e $file ) { - warn "File ~/.github_auth doesn't exist - using anonymous API. " - . "Generate a Personal Access Token at https://github.com/settings/applications\n"; - return ''; - } - open my $fh, $file or die "Couldn't open $file: $!"; - my ($key) = <$fh> || die "Couldn't read $file: $!"; - $key =~ s/^\s+//; - $key =~ s/\s+$//; - die "Invalid GitHub key: $key" - unless $key =~ /^[0-9a-f]{40}$/; - return "token $key"; - -} - -#=================================== -sub usage { -#=================================== - my $msg = shift || ''; - - if ($msg) { - $msg = "\nERROR: $msg\n\n"; - } - return $msg . <<"USAGE"; -$0 --state=open|closed|all --labels=foo,bar --add=new1,new2 --remove=old1,old2 - -USAGE - -} - -package Spool; - -use strict; -use warnings; - -#=================================== -sub new { -#=================================== - my $class = shift; - my $url = shift; - return bless { - url => $url, - buffer => [] - }, - $class; -} - -#=================================== -sub next { -#=================================== - my $self = shift; - if ( @{ $self->{buffer} } == 0 ) { - $self->refill; - } - return shift @{ $self->{buffer} }; -} - -#=================================== -sub refill { -#=================================== - my $self = shift; - return unless $self->{url}; - my $response = $http->get( $self->{url} ); - die "$response->{status} $response->{reason}\n" - unless $response->{success}; - - $self->{url} = ''; - - if ( my $link = $response->{headers}{link} ) { - my @links = ref $link eq 'ARRAY' ? @$link : $link; - for ($link) { - next unless $link =~ /<([^>]+)>; rel="next"/; - $self->{url} = $1; - last; - } - } - - push @{ $self->{buffer} }, @{ $json->decode( $response->{content} ) }; - -} diff --git a/x-pack/dev-tools/xes_release_notes.pl b/x-pack/dev-tools/xes_release_notes.pl deleted file mode 100755 index 6033b90d2e6..00000000000 --- a/x-pack/dev-tools/xes_release_notes.pl +++ /dev/null @@ -1,253 +0,0 @@ -#!/usr/bin/env perl -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch 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. - -use strict; -use warnings; - -use HTTP::Tiny 0.070; -use IO::Socket::SSL 1.52; -use utf8; - -my $Github_Key = load_github_key(); -my $Base_URL = "https://${Github_Key}api.github.com/repos/"; -my $User_Repo = 'elastic/x-pack-elasticsearch/'; -my $Issue_URL = "http://github.com/${User_Repo}issues/"; - -my @Groups = ( - "breaking", "breaking-java", "deprecation", "feature", - "enhancement", "bug", "regression", "upgrade", "non-issue", "build", - "docs", "test" -); -my %Group_Labels = ( - breaking => 'Breaking changes', - 'breaking-java' => 'Breaking Java changes', - build => 'Build', - deprecation => 'Deprecations', - docs => 'Docs', - feature => 'New features', - enhancement => 'Enhancements', - bug => 'Bug fixes', - regression => 'Regressions', - test => 'Tests', - upgrade => 'Upgrades', - "non-issue" => 'Non-issue', - other => 'NOT CLASSIFIED', -); - -use JSON(); -use Encode qw(encode_utf8); - -my $json = JSON->new->utf8(1); - -my %All_Labels = fetch_labels(); - -my $version = shift @ARGV - or dump_labels(); - -dump_labels("Unknown version '$version'") - unless $All_Labels{$version}; - -my $issues = fetch_issues($version); -dump_issues( $version, $issues ); - -#=================================== -sub dump_issues { -#=================================== - my $version = shift; - my $issues = shift; - - $version =~ s/v//; - my ( $day, $month, $year ) = (gmtime)[ 3 .. 5 ]; - $month++; - $year += 1900; - - print <<"ASCIIDOC"; -:issue: https://github.com/${User_Repo}issues/ -:pull: https://github.com/${User_Repo}pull/ - -[[release-notes-$version]] -== $version Release Notes - -ASCIIDOC - - for my $group ( @Groups, 'other' ) { - my $group_issues = $issues->{$group} or next; - print "[[$group-$version]]\n" - . "[float]\n" - . "=== $Group_Labels{$group}\n\n"; - - for my $header ( sort keys %$group_issues ) { - my $header_issues = $group_issues->{$header}; - print( $header || 'HEADER MISSING', "::\n" ); - - for my $issue (@$header_issues) { - my $title = $issue->{title}; - - if ( $issue->{state} eq 'open' ) { - $title .= " [OPEN]"; - } - unless ( $issue->{pull_request} ) { - $title .= " [ISSUE]"; - } - my $number = $issue->{number}; - -# print encode_utf8("* $title {pull}${number}[#${number}]"); - print encode_utf8("* $title"); - print "\n"; - print encode_utf8("// https://github.com/${User_Repo}pull/${number}[#${number}]"); - if ( my $related = $issue->{related_issues} ) { - my %uniq = map { $_ => 1 } @$related; - print keys %uniq > 1 - ? " (issues: " - : " (issue: "; -# print join ", ", map {"{issue}${_}[#${_}]"} -# print join ", ", map {"#${_}"} - print join ", ", map {"https://github.com/${User_Repo}issues/${_}[#${_}]"} - sort keys %uniq; - print ")"; - } - print "\n"; - } - print "\n"; - } - print "\n\n"; - } -} - -#=================================== -sub fetch_issues { -#=================================== - my $version = shift; - my @issues; - my %seen; - for my $state ( 'open', 'closed' ) { - my $page = 1; - while (1) { - my $tranche - = fetch( $User_Repo - . 'issues?labels=' - . $version - . '&pagesize=100&state=' - . $state - . '&page=' - . $page ) - or die "Couldn't fetch issues for version '$version'"; - push @issues, @$tranche; - - for my $issue (@$tranche) { - next unless $issue->{pull_request}; - for ( $issue->{body} =~ m{(?:#|${User_Repo}issues/)(\d+)}g ) { - $seen{$_}++; - push @{ $issue->{related_issues} }, $_; - } - } - $page++; - last unless @$tranche; - } - } - - my %group; -ISSUE: - for my $issue (@issues) { - next if $seen{ $issue->{number} } && !$issue->{pull_request}; - - # uncomment for including/excluding PRs already issued in other versions - # next if grep {$_->{name}=~/^v2/} @{$issue->{labels}}; - my %labels = map { $_->{name} => 1 } @{ $issue->{labels} }; - my ($header) = map { substr( $_, 1 ) } grep {/^:/} sort keys %labels; - $header ||= 'NOT CLASSIFIED'; - for (@Groups) { - if ( $labels{$_} ) { - push @{ $group{$_}{$header} }, $issue; - next ISSUE; - } - } - push @{ $group{other}{$header} }, $issue; - } - - return \%group; -} - -#=================================== -sub fetch_labels { -#=================================== - my %all; - my $page = 1; - while (1) { - my $labels = fetch( $User_Repo . 'labels?page=' . $page++ ) - or die "Couldn't retrieve version labels"; - last unless @$labels; - for (@$labels) { - my $name = $_->{name}; - next unless $name =~ /^v/; - $all{$name} = 1; - } - } - return %all; -} - -#=================================== -sub fetch { -#=================================== - my $url = $Base_URL . shift(); -# print "$url\n"; - my $response = HTTP::Tiny->new->get($url); -# use Data::Dumper; -# print Dumper($response); - die "$response->{status} $response->{reason}\n" - unless $response->{success}; - # print $response->{content}; - return $json->decode( $response->{content} ); -} - -#=================================== -sub load_github_key { -#=================================== - - my ($file) = glob("~/.github_auth"); - unless ( -e $file ) { - warn "File ~/.github_auth doesn't exist - using anonymous API. " - . "Generate a personal access token that has repo scope. See https://github.com/elastic/dev/blob/master/shared/development_process.md \n"; - return ''; - } - open my $fh, $file or die "Couldn't open $file: $!"; - my ($key) = <$fh> || die "Couldn't read $file: $!"; - $key =~ s/^\s+//; - $key =~ s/\s+$//; - die "Invalid GitHub key: $key" - unless $key =~ /^[0-9a-f]{40}$/; - return "$key:x-oauth-basic@"; - -} - -#=================================== -sub dump_labels { -#=================================== - my $error = shift || ''; - if ($error) { - $error = "\nERROR: $error\n"; - } - my $labels = join( "\n - ", '', ( sort keys %All_Labels ) ); - die < outfile - - Known versions:$labels - -USAGE - -} diff --git a/x-pack/dev-tools/xescpp_release_notes.pl b/x-pack/dev-tools/xescpp_release_notes.pl deleted file mode 100755 index 3a92a63d089..00000000000 --- a/x-pack/dev-tools/xescpp_release_notes.pl +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env perl -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch 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. - -use strict; -use warnings; - -use HTTP::Tiny 0.070; -use IO::Socket::SSL 1.52; -use utf8; - -my $Github_Key = load_github_key(); -my $Base_URL = "https://${Github_Key}api.github.com/repos/"; -my $User_Repo1 = 'elastic/x-pack-elasticsearch/'; -my $Issue_URL1 = "http://github.com/${User_Repo1}issues/"; -my $User_Repo2 = 'elastic/machine-learning-cpp/'; -my $Issue_URL2 = "http://github.com/${User_Repo2}issues/"; - -my @Groups = ( - "breaking", "breaking-java", "deprecation", "feature", - "enhancement", "bug", "regression", "upgrade", "non-issue", "build", - "docs", "test" -); -my %Group_Labels = ( - breaking => 'Breaking changes', - 'breaking-java' => 'Breaking Java changes', - build => 'Build', - deprecation => 'Deprecations', - docs => 'Docs', - feature => 'New features', - enhancement => 'Enhancements', - bug => 'Bug fixes', - regression => 'Regressions', - test => 'Tests', - upgrade => 'Upgrades', - "non-issue" => 'Non-issue', - other => 'NOT CLASSIFIED', -); - -use JSON(); -use Encode qw(encode_utf8); - -my $json = JSON->new->utf8(1); - -my %All_Labels1 = fetch_labels($User_Repo1); - -my $version = shift @ARGV - or dump_labels(); - -dump_labels(%All_Labels1, "Unknown version '$version'") - unless $All_Labels1{$version}; - -my $issues1 = fetch_issues($User_Repo1, $version); - -# Repeat steps for second repo - -my %All_Labels2 = fetch_labels($User_Repo2); - -dump_labels(%All_Labels2, "Unknown version '$version'") - unless $All_Labels2{$version}; - -my $issues2 = fetch_issues($User_Repo2, $version); - -dump_issues( $User_Repo1, $version, $issues1 ); -dump_issues( $User_Repo2, $version, $issues2 ); - -#=================================== -sub dump_issues { -#=================================== - my $User_Repo = shift; - my $version = shift; - my $issues = shift; - - $version =~ s/v//; - my ( $day, $month, $year ) = (gmtime)[ 3 .. 5 ]; - $month++; - $year += 1900; - - print <<"ASCIIDOC"; - -[[release-notes-$version]] -== X-Pack $version Release Notes - -// Pulled from $User_Repo - -ASCIIDOC - - for my $group ( @Groups, 'other' ) { - my $group_issues = $issues->{$group} or next; - print "[[$group-$version]]\n" - . "[float]\n" - . "=== $Group_Labels{$group}\n\n"; - - for my $header ( sort keys %$group_issues ) { - my $header_issues = $group_issues->{$header}; - print( $header || 'HEADER MISSING', "::\n" ); - - for my $issue (@$header_issues) { - my $title = $issue->{title}; - - if ( $issue->{state} eq 'open' ) { - $title .= " [OPEN]"; - } - unless ( $issue->{pull_request} ) { - $title .= " [ISSUE]"; - } - my $number = $issue->{number}; - -# print encode_utf8("* $title {pull}${number}[#${number}]"); - print encode_utf8("* $title"); - print "\n"; - print encode_utf8("// https://github.com/${User_Repo}pull/${number}[#${number}]"); - if ( my $related = $issue->{related_issues} ) { - my %uniq = map { $_ => 1 } @$related; - print keys %uniq > 1 - ? " (issues: " - : " (issue: "; -# print join ", ", map {"{issue}${_}[#${_}]"} -# print join ", ", map {"#${_}"} - print join ", ", map {"https://github.com/${User_Repo}issues/${_}[#${_}]"} - sort keys %uniq; - print ")"; - } - print "\n"; - } - print "\n"; - } - print "\n\n"; - } -} - -#=================================== -sub fetch_issues { -#=================================== - my $User_Repo = shift; - my $version = shift; - my @issues; - my %seen; - for my $state ( 'open', 'closed' ) { - my $page = 1; - while (1) { - my $tranche - = fetch( $User_Repo - . 'issues?labels=' - . $version - . '&pagesize=100&state=' - . $state - . '&page=' - . $page ) - or die "Couldn't fetch issues for version '$version'"; - push @issues, @$tranche; - - for my $issue (@$tranche) { - next unless $issue->{pull_request}; - for ( $issue->{body} =~ m{(?:#|${User_Repo}issues/)(\d+)}g ) { - $seen{$_}++; - push @{ $issue->{related_issues} }, $_; - } - } - $page++; - last unless @$tranche; - } - } - - my %group; -ISSUE: - for my $issue (@issues) { - next if $seen{ $issue->{number} } && !$issue->{pull_request}; - - # uncomment for including/excluding PRs already issued in other versions - # next if grep {$_->{name}=~/^v2/} @{$issue->{labels}}; - my %labels = map { $_->{name} => 1 } @{ $issue->{labels} }; - my ($header) = map { substr( $_, 1 ) } grep {/^:/} sort keys %labels; - $header ||= 'NOT CLASSIFIED'; - for (@Groups) { - if ( $labels{$_} ) { - push @{ $group{$_}{$header} }, $issue; - next ISSUE; - } - } - push @{ $group{other}{$header} }, $issue; - } - - return \%group; -} - -#=================================== -sub fetch_labels { -#=================================== - my $User_Repo = shift; - my %all; - my $page = 1; - while (1) { - my $labels = fetch( $User_Repo . 'labels?page=' . $page++ ) - or die "Couldn't retrieve version labels"; - last unless @$labels; - for (@$labels) { - my $name = $_->{name}; - next unless $name =~ /^v/; - $all{$name} = 1; - } - } - return %all; -} - -#=================================== -sub fetch { -#=================================== - my $url = $Base_URL . shift(); -# print "$url\n"; - my $response = HTTP::Tiny->new->get($url); -# use Data::Dumper; -# print Dumper($response); - die "$response->{status} $response->{reason}\n" - unless $response->{success}; - # print $response->{content}; - return $json->decode( $response->{content} ); -} - -#=================================== -sub load_github_key { -#=================================== - - my ($file) = glob("~/.github_auth"); - unless ( -e $file ) { - warn "File ~/.github_auth doesn't exist - using anonymous API. " - . "Generate a personal access token that has repo scope. See https://github.com/elastic/dev/blob/master/shared/development_process.md \n"; - return ''; - } - open my $fh, $file or die "Couldn't open $file: $!"; - my ($key) = <$fh> || die "Couldn't read $file: $!"; - $key =~ s/^\s+//; - $key =~ s/\s+$//; - die "Invalid GitHub key: $key" - unless $key =~ /^[0-9a-f]{40}$/; - return "$key:x-oauth-basic@"; - -} - -#=================================== -sub dump_labels { -#=================================== - my %All_Labels = shift; - my $error = shift || ''; - if ($error) { - $error = "\nERROR: $error\n"; - } - my $labels = join( "\n - ", '', ( sort keys %All_Labels ) ); - die < outfile - - Known versions:$labels - -USAGE - -} diff --git a/x-pack/gradle.properties b/x-pack/gradle.properties deleted file mode 100644 index 2cd952fcbd9..00000000000 --- a/x-pack/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -org.gradle.daemon=false -org.gradle.jvmargs=-Xmx2048m diff --git a/x-pack/gradle/wrapper/gradle-wrapper.jar b/x-pack/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 27768f1bbac..00000000000 Binary files a/x-pack/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/x-pack/gradle/wrapper/gradle-wrapper.properties b/x-pack/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 8d6b7c2cbd9..00000000000 --- a/x-pack/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -distributionSha256Sum=6ac2f8f9302f50241bf14cc5f4a3d88504ad20e61bb98c5fd048f7723b61397e diff --git a/x-pack/gradlew b/x-pack/gradlew deleted file mode 100755 index cccdd3d517f..00000000000 --- a/x-pack/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/x-pack/gradlew.bat b/x-pack/gradlew.bat deleted file mode 100644 index e95643d6a2c..00000000000 --- a/x-pack/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/x-pack/qa/audit-tests/build.gradle b/x-pack/qa/audit-tests/build.gradle index 31625512b1b..bc54e051db9 100644 --- a/x-pack/qa/audit-tests/build.gradle +++ b/x-pack/qa/audit-tests/build.gradle @@ -5,7 +5,7 @@ dependencies { testCompile project(path: xpackModule('security'), configuration: 'testArtifacts') } -String outputDir = "generated-resources/${project.name}" +String outputDir = "${buildDir}/generated-resources/${project.name}" task copyXPackPluginProps(type: Copy) { // wth is this? from project(xpackModule('core')).file('src/main/plugin-metadata') from project(xpackModule('core')).tasks.pluginProperties diff --git a/x-pack/settings.gradle b/x-pack/settings.gradle deleted file mode 100644 index dfee2cb7888..00000000000 --- a/x-pack/settings.gradle +++ /dev/null @@ -1,7 +0,0 @@ -File extrasDir = new File(settingsDir, '..').getCanonicalFile() -if (extrasDir.name.endsWith('-extra') == false) { - throw new GradleException("x-pack-elasticsearch must be checked out under an elasticsearch-extra directory, found ${extrasDir.name}") -} -File elasticsearchDir = new File(extrasDir.parentFile, extrasDir.name[0..-7]) -project(':').projectDir = elasticsearchDir -apply from: "${elasticsearchDir}/settings.gradle"