From dbf41328fb8c6fdb646c7edbbeeec98139516887 Mon Sep 17 00:00:00 2001 From: apmmachine Date: Tue, 25 Jan 2022 05:12:45 +0000 Subject: [PATCH 01/52] bump stack version 8.1.0-aa69d697 --- .ci/Jenkinsfile | 4 ++-- .stack-version | 2 +- cli/config/compose/profiles/fleet/docker-compose.yml | 6 +++--- cli/config/compose/profiles/metricbeat/docker-compose.yml | 2 +- cli/config/kubernetes/base/elasticsearch/deployment.yaml | 2 +- cli/config/kubernetes/base/fleet-server/deployment.yaml | 2 +- cli/config/kubernetes/base/kibana/deployment.yaml | 2 +- internal/common/defaults.go | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index ca0f559243..6b92d178bd 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -48,12 +48,12 @@ pipeline { booleanParam(name: "notifyOnGreenBuilds", defaultValue: false, description: "If it's needed to notify to Slack with green builds.") string(name: 'SLACK_CHANNEL', defaultValue: 'observablt-bots', description: 'The Slack channel(s) where errors will be posted. For multiple channels, use a comma-separated list of channels') string(name: 'ELASTIC_AGENT_DOWNLOAD_URL', defaultValue: '', description: 'If present, it will override the download URL for the Elastic agent artifact. (I.e. https://snapshots.elastic.co/8.0.0-59098054/downloads/beats/elastic-agent/elastic-agent-8.0.0-SNAPSHOT-linux-x86_64.tar.gz') - string(name: 'BEAT_VERSION', defaultValue: '8.1.0-dbc834fd-SNAPSHOT', description: 'SemVer version of the Beat to be used for the tests. You can use here the tag of your PR to test your changes') + string(name: 'BEAT_VERSION', defaultValue: '8.1.0-aa69d697-SNAPSHOT', description: 'SemVer version of the Beat to be used for the tests. You can use here the tag of your PR to test your changes') string(name: 'ELASTIC_AGENT_STALE_VERSION', defaultValue: '7.17-SNAPSHOT', description: 'SemVer version of the stale stand-alone elastic-agent to be used for Fleet upgrade tests.') choice(name: 'LOG_LEVEL', choices: ['DEBUG', 'TRACE', 'INFO'], description: 'Log level to be used') choice(name: 'TIMEOUT_FACTOR', choices: ['5', '3', '7', '11'], description: 'Max number of minutes for timeout backoff strategies') string(name: 'KIBANA_VERSION', defaultValue: '', description: 'Docker tag of the kibana to be used for the tests. It will refer to an image related to a Kibana PR, under the Observability-CI namespace') - string(name: 'STACK_VERSION', defaultValue: '8.1.0-dbc834fd-SNAPSHOT', description: 'SemVer version of the stack to be used for the tests.') + string(name: 'STACK_VERSION', defaultValue: '8.1.0-aa69d697-SNAPSHOT', description: 'SemVer version of the stack to be used for the tests.') string(name: 'HELM_CHART_VERSION', defaultValue: '7.11.2', description: 'SemVer version of Helm chart to be used.') string(name: 'HELM_VERSION', defaultValue: '3.5.2', description: 'SemVer version of Helm to be used.') string(name: 'KIND_VERSION', defaultValue: '0.10.0', description: 'SemVer version of Kind to be used.') diff --git a/.stack-version b/.stack-version index 7a6844f9c2..40040e875d 100644 --- a/.stack-version +++ b/.stack-version @@ -1 +1 @@ -8.1.0-dbc834fd-SNAPSHOT +8.1.0-aa69d697-SNAPSHOT diff --git a/cli/config/compose/profiles/fleet/docker-compose.yml b/cli/config/compose/profiles/fleet/docker-compose.yml index cf284cbab6..8f21f77f88 100644 --- a/cli/config/compose/profiles/fleet/docker-compose.yml +++ b/cli/config/compose/profiles/fleet/docker-compose.yml @@ -16,7 +16,7 @@ services: - xpack.security.authc.api_key.enabled=true - ELASTIC_USERNAME=elastic - ELASTIC_PASSWORD=changeme - image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-dbc834fd-SNAPSHOT}" + image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}" platform: ${stackPlatform:-linux/amd64} ports: - "9200:9200" @@ -28,14 +28,14 @@ services: test: "curl -f http://localhost:5601/login | grep kbn-injected-metadata 2>&1 >/dev/null" retries: 600 interval: 1s - image: "docker.elastic.co/${kibanaDockerNamespace:-kibana}/kibana:${kibanaVersion:-8.1.0-dbc834fd-SNAPSHOT}" + image: "docker.elastic.co/${kibanaDockerNamespace:-kibana}/kibana:${kibanaVersion:-8.1.0-aa69d697-SNAPSHOT}" platform: ${stackPlatform:-linux/amd64} ports: - "5601:5601" volumes: - ./${kibanaProfile:-default}/kibana.config.yml:/usr/share/kibana/config/kibana.yml fleet-server: - image: "docker.elastic.co/beats/elastic-agent-complete:${stackVersion:-8.1.0-dbc834fd-SNAPSHOT}" + image: "docker.elastic.co/beats/elastic-agent-complete:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}" depends_on: elasticsearch: condition: service_healthy diff --git a/cli/config/compose/profiles/metricbeat/docker-compose.yml b/cli/config/compose/profiles/metricbeat/docker-compose.yml index 85ae9b115d..6e8f3255c4 100644 --- a/cli/config/compose/profiles/metricbeat/docker-compose.yml +++ b/cli/config/compose/profiles/metricbeat/docker-compose.yml @@ -9,7 +9,7 @@ services: - xpack.monitoring.collection.enabled=true - ELASTIC_USERNAME=elastic - ELASTIC_PASSWORD=changeme - image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-dbc834fd-SNAPSHOT}" + image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}" platform: ${stackPlatform:-linux/amd64} ports: - "9200:9200" diff --git a/cli/config/kubernetes/base/elasticsearch/deployment.yaml b/cli/config/kubernetes/base/elasticsearch/deployment.yaml index dd7d1e7d5c..7ce491d244 100644 --- a/cli/config/kubernetes/base/elasticsearch/deployment.yaml +++ b/cli/config/kubernetes/base/elasticsearch/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: elasticsearch - image: docker.elastic.co/elasticsearch/elasticsearch:8.1.0-dbc834fd-SNAPSHOT + image: docker.elastic.co/elasticsearch/elasticsearch:8.1.0-aa69d697-SNAPSHOT envFrom: - configMapRef: name: elasticsearch-config diff --git a/cli/config/kubernetes/base/fleet-server/deployment.yaml b/cli/config/kubernetes/base/fleet-server/deployment.yaml index 9ecbf7664e..b4e30e6ed5 100644 --- a/cli/config/kubernetes/base/fleet-server/deployment.yaml +++ b/cli/config/kubernetes/base/fleet-server/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: fleet-server - image: docker.elastic.co/beats/elastic-agent:8.1.0-dbc834fd-SNAPSHOT + image: docker.elastic.co/beats/elastic-agent:8.1.0-aa69d697-SNAPSHOT env: - name: FLEET_SERVER_ENABLE value: "1" diff --git a/cli/config/kubernetes/base/kibana/deployment.yaml b/cli/config/kubernetes/base/kibana/deployment.yaml index c52cd9b70b..018d340eca 100644 --- a/cli/config/kubernetes/base/kibana/deployment.yaml +++ b/cli/config/kubernetes/base/kibana/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: kibana - image: docker.elastic.co/kibana/kibana:8.1.0-dbc834fd-SNAPSHOT + image: docker.elastic.co/kibana/kibana:8.1.0-aa69d697-SNAPSHOT env: - name: ELASTICSEARCH_URL value: http://elasticsearch:9200 diff --git a/internal/common/defaults.go b/internal/common/defaults.go index 29a11ca426..2472dc1d04 100644 --- a/internal/common/defaults.go +++ b/internal/common/defaults.go @@ -36,7 +36,7 @@ const FleetServerAgentServiceName = "fleet-server" var AgentStaleVersion = "7.17-SNAPSHOT" // BeatVersionBase is the base version of the Beat to use -var BeatVersionBase = "8.1.0-dbc834fd-SNAPSHOT" +var BeatVersionBase = "8.1.0-aa69d697-SNAPSHOT" // BeatVersion is the version of the Beat to use // It can be overriden by BEAT_VERSION env var From dd004a05fb605daf590cee6527affc4ffb24358e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 27 Jan 2022 19:21:11 +0100 Subject: [PATCH 02/52] fix: use new kibana roles and users We are going to use 'admin' everywhere --- .../profiles/fleet/default/kibana.config.yml | 2 +- .../compose/profiles/fleet/docker-compose.yml | 7 +++- .../profiles/fleet/elasticsearch-roles.yml | 34 +++++++++++++++++++ .../profiles/fleet/elasticsearch-users | 9 +++++ .../profiles/fleet/elasticsearch-users_roles | 13 +++++++ .../preconfigured-policies/kibana.config.yml | 2 +- .../services/elastic-agent/docker-compose.yml | 2 ++ internal/elasticsearch/client.go | 4 +-- internal/kibana/client.go | 2 +- 9 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 cli/config/compose/profiles/fleet/elasticsearch-roles.yml create mode 100644 cli/config/compose/profiles/fleet/elasticsearch-users create mode 100644 cli/config/compose/profiles/fleet/elasticsearch-users_roles diff --git a/cli/config/compose/profiles/fleet/default/kibana.config.yml b/cli/config/compose/profiles/fleet/default/kibana.config.yml index 64840917d2..b5ffcd9e6d 100644 --- a/cli/config/compose/profiles/fleet/default/kibana.config.yml +++ b/cli/config/compose/profiles/fleet/default/kibana.config.yml @@ -5,7 +5,7 @@ server.host: "0.0.0.0" telemetry.enabled: false elasticsearch.hosts: [ "http://elasticsearch:9200" ] -elasticsearch.username: elastic +elasticsearch.username: admin elasticsearch.password: changeme xpack.monitoring.ui.container.elasticsearch.enabled: true diff --git a/cli/config/compose/profiles/fleet/docker-compose.yml b/cli/config/compose/profiles/fleet/docker-compose.yml index 8f21f77f88..5138ae9656 100644 --- a/cli/config/compose/profiles/fleet/docker-compose.yml +++ b/cli/config/compose/profiles/fleet/docker-compose.yml @@ -14,12 +14,17 @@ services: - xpack.license.self_generated.type=trial - xpack.security.enabled=true - xpack.security.authc.api_key.enabled=true - - ELASTIC_USERNAME=elastic + - xpack.security.authc.token.enabled=true + - ELASTIC_USERNAME=admin - ELASTIC_PASSWORD=changeme image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}" platform: ${stackPlatform:-linux/amd64} ports: - "9200:9200" + volumes: + - ./elasticsearch-roles.yml:/usr/share/elasticsearch/config/roles.yml + - ./elasticsearch-users:/usr/share/elasticsearch/config/users + - ./elasticsearch-users_roles:/usr/share/elasticsearch/config/users_roles kibana: depends_on: elasticsearch: diff --git a/cli/config/compose/profiles/fleet/elasticsearch-roles.yml b/cli/config/compose/profiles/fleet/elasticsearch-roles.yml new file mode 100644 index 0000000000..91277fa8dd --- /dev/null +++ b/cli/config/compose/profiles/fleet/elasticsearch-roles.yml @@ -0,0 +1,34 @@ +--- +apm_server: + cluster: ['manage_ilm', 'manage_security', 'manage_api_key'] + indices: + - names: ['apm-*', 'logs-apm*', 'metrics-apm*', 'traces-apm*'] + privileges: ['write', 'create_index', 'manage', 'manage_ilm'] + applications: + - application: 'apm' + privileges: ['sourcemap:write', 'event:write', 'config_agent:read'] + resources: '*' +beats: + cluster: ['manage_index_templates', 'monitor', 'manage_ingest_pipelines', 'manage_ilm', 'manage_security', 'manage_api_key'] + indices: + - names: ['filebeat-*', 'shrink-filebeat-*'] + privileges: ['all'] +filebeat: + cluster: ['manage_index_templates', 'monitor', 'manage_ingest_pipelines', 'manage_ilm'] + indices: + - names: ['filebeat-*', 'shrink-filebeat-*'] + privileges: ['all'] +heartbeat: + cluster: ['manage_index_templates', 'monitor', 'manage_ingest_pipelines', 'manage_ilm'] + indices: + - names: ['heartbeat-*', 'shrink-heartbeat-*'] + privileges: ['all'] +metricbeat: + cluster: ['manage_index_templates', 'monitor', 'manage_ingest_pipelines', 'manage_ilm'] + indices: + - names: ['metricbeat-*', 'shrink-metricbeat-*'] + privileges: ['all'] +opbeans: + indices: + - names: ['opbeans-*'] + privileges: ['write', 'read'] diff --git a/cli/config/compose/profiles/fleet/elasticsearch-users b/cli/config/compose/profiles/fleet/elasticsearch-users new file mode 100644 index 0000000000..4cc30a99d9 --- /dev/null +++ b/cli/config/compose/profiles/fleet/elasticsearch-users @@ -0,0 +1,9 @@ +admin:$2a$10$xiY0ZzOKmDDN1p3if4t4muUBwh2.bFHADoMRAWQgSClm4ZJ4132Y. +apm_server_user:$2a$10$iTy29qZaCSVn4FXlIjertuO8YfYVLCbvoUAJ3idaXfLRclg9GXdGG +apm_user_ro:$2a$10$hQfy2o2u33SapUClsx8NCuRMpQyHP9b2l4t3QqrBA.5xXN2S.nT4u +beats_user:$2a$10$LRpKi4/Q3Qo4oIbiu26rH.FNIL4aOH4aj2Kwi58FkMo1z9FgJONn2 +filebeat_user:$2a$10$sFxIEX8tKyOYgsbJLbUhTup76ssvSD3L4T0H6Raaxg4ewuNr.lUFC +heartbeat_user:$2a$10$nKUGDr/V5ClfliglJhfy8.oEkjrDtklGQfhd9r9NoFqQeoNxr7uUK +kibana_system_user:$2a$10$nN6sRtQl2KX9Gn8kV/.NpOLSk6Jwn8TehEDnZ7aaAgzyl/dy5PYzW +metricbeat_user:$2a$10$5PyTd121U2ZXnFk9NyqxPuLxdptKbB8nK5egt6M5/4xrKUkk.GReG +opbeans_user:$2a$10$iTy29qZaCSVn4FXlIjertuO8YfYVLCbvoUAJ3idaXfLRclg9GXdGG diff --git a/cli/config/compose/profiles/fleet/elasticsearch-users_roles b/cli/config/compose/profiles/fleet/elasticsearch-users_roles new file mode 100644 index 0000000000..c1939933f0 --- /dev/null +++ b/cli/config/compose/profiles/fleet/elasticsearch-users_roles @@ -0,0 +1,13 @@ +apm_server:apm_server_user +apm_system:apm_server_user +apm_user:apm_server_user,apm_user_ro +beats:beats_user +beats_system:beats_user,filebeat_user,heartbeat_user,metricbeat_user +filebeat:filebeat_user +heartbeat:heartbeat_user +ingest_admin:apm_server_user +kibana_system:admin,kibana_system_user +kibana_user:apm_server_user,apm_user_ro,beats_user,filebeat_user,heartbeat_user,metricbeat_user,opbeans_user +metricbeat:metricbeat_user +opbeans:opbeans_user +superuser:admin diff --git a/cli/config/compose/profiles/fleet/preconfigured-policies/kibana.config.yml b/cli/config/compose/profiles/fleet/preconfigured-policies/kibana.config.yml index dd2ff396c8..ac9e571481 100644 --- a/cli/config/compose/profiles/fleet/preconfigured-policies/kibana.config.yml +++ b/cli/config/compose/profiles/fleet/preconfigured-policies/kibana.config.yml @@ -5,7 +5,7 @@ server.host: "0.0.0.0" telemetry.enabled: false elasticsearch.hosts: [ "http://elasticsearch:9200" ] -elasticsearch.username: elastic +elasticsearch.username: admin elasticsearch.password: changeme xpack.monitoring.ui.container.elasticsearch.enabled: true diff --git a/cli/config/compose/services/elastic-agent/docker-compose.yml b/cli/config/compose/services/elastic-agent/docker-compose.yml index c886b0ca69..19669a3110 100644 --- a/cli/config/compose/services/elastic-agent/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/docker-compose.yml @@ -8,6 +8,8 @@ services: kibana: condition: service_healthy environment: + - "ELASTICSEARCH_USERNAME=admin" + - "ELASTICSEARCH_PASSWORD=changeme" - "FLEET_SERVER_ENABLE=${fleetServerMode:-0}" - "FLEET_SERVER_INSECURE_HTTP=${fleetServerMode:-0}" - "FLEET_ENROLL=${fleetEnroll:-1}" diff --git a/internal/elasticsearch/client.go b/internal/elasticsearch/client.go index b5c8b71088..f395bae26c 100644 --- a/internal/elasticsearch/client.go +++ b/internal/elasticsearch/client.go @@ -137,7 +137,7 @@ func getElasticsearchClient(ctx context.Context) (*es.Client, error) { func getElasticsearchClientFromHostPort(ctx context.Context, host string, port int, scheme string) (*es.Client, error) { cfg := es.Config{ Addresses: []string{fmt.Sprintf("%s://%s:%d", scheme, host, port)}, - Username: "elastic", + Username: "admin", Password: shell.GetEnv("ELASTICSEARCH_PASSWORD", "changeme"), } @@ -302,7 +302,7 @@ func WaitForIndices() (string, error) { r := curl.HTTPRequest{ URL: fmt.Sprintf("%s://%s:%d/_cat/indices?v", esEndpoint.Scheme, esEndpoint.Host, esEndpoint.Port), BasicAuthPassword: shell.GetEnv("ELASTICSEARCH_PASSWORD", "changeme"), - BasicAuthUser: "elastic", + BasicAuthUser: "admin", } response, err := curl.Get(r) diff --git a/internal/kibana/client.go b/internal/kibana/client.go index ab5e79827b..2d5adff849 100644 --- a/internal/kibana/client.go +++ b/internal/kibana/client.go @@ -30,7 +30,7 @@ type Client struct { // NewClient creates a new instance of the client. func NewClient() (*Client, error) { host := getBaseURL() - username := "elastic" + username := "admin" password := shell.GetEnv("KIBANA_PASSWORD", "changeme") return &Client{ From ba5d9f8c97e4548f9bc7a4649e8a7441c0ea22af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 27 Jan 2022 19:27:51 +0100 Subject: [PATCH 03/52] feat: add a method for checking ES cluster health --- internal/elasticsearch/client.go | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/internal/elasticsearch/client.go b/internal/elasticsearch/client.go index f395bae26c..3bde0e9ce9 100644 --- a/internal/elasticsearch/client.go +++ b/internal/elasticsearch/client.go @@ -290,6 +290,60 @@ func WaitForElasticsearch(ctx context.Context, maxTimeoutMinutes time.Duration) return true, nil } +// WaitForClusterHealth waits for the elasticsearch cluster to be healthy +func WaitForClusterHealth(ctx context.Context) error { + span, _ := apm.StartSpanOptions(ctx, "ClusterHealth", "elasticsearch.cluster.health", apm.SpanOptions{ + Parent: apm.SpanFromContext(ctx).TraceContext(), + }) + defer span.End() + + esClient, err := getElasticsearchClient(ctx) + if err != nil { + return err + } + + exp := utils.GetExponentialBackOff(60 * time.Second) + + retryCount := 1 + + healthFunction := func() error { + response, err := esClient.Cluster.Health() + if err != nil { + log.WithFields(log.Fields{ + "error": err, + "retry": retryCount, + "elapsedTime": exp.GetElapsedTime(), + }).Warn("The Elasticsearch Cluster Health API is not available yet") + + retryCount++ + + return err + } + + log.WithFields(log.Fields{ + "retries": retryCount, + "response": response, + "elapsedTime": exp.GetElapsedTime(), + }).Trace("The Elasticsearch Cluster Health API is available") + + if response.StatusCode != 200 { + log.WithFields(log.Fields{ + "retries": retryCount, + "statusCode": response.StatusCode, + "elapsedTime": exp.GetElapsedTime(), + }).Warn("The Elasticsearch Cluster is not healthy yet. Retrying") + + retryCount++ + + return fmt.Errorf("the Elasticsearch Cluster is not healthy yet. Retrying") + } + + return nil + } + + return backoff.Retry(healthFunction, exp) +} + // WaitForIndices waits for the elasticsearch indices to return the list of indices. func WaitForIndices() (string, error) { exp := utils.GetExponentialBackOff(60 * time.Second) From 5254105356e3e4717df9a24a8d01305615ace085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 27 Jan 2022 19:30:27 +0100 Subject: [PATCH 04/52] fix: create fleet-server after getting a service token from elasticsearch --- .../compose/profiles/fleet/docker-compose.yml | 20 ---- .../fleet-server/docker-compose.yml | 26 +++++ e2e/_suites/fleet/fleet.go | 36 ++++++ internal/elasticsearch/client.go | 106 ++++++++++++++++++ 4 files changed, 168 insertions(+), 20 deletions(-) create mode 100644 cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml diff --git a/cli/config/compose/profiles/fleet/docker-compose.yml b/cli/config/compose/profiles/fleet/docker-compose.yml index 5138ae9656..d1f8c334ca 100644 --- a/cli/config/compose/profiles/fleet/docker-compose.yml +++ b/cli/config/compose/profiles/fleet/docker-compose.yml @@ -39,23 +39,3 @@ services: - "5601:5601" volumes: - ./${kibanaProfile:-default}/kibana.config.yml:/usr/share/kibana/config/kibana.yml - fleet-server: - image: "docker.elastic.co/beats/elastic-agent-complete:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}" - depends_on: - elasticsearch: - condition: service_healthy - kibana: - condition: service_healthy - ports: - - "8220:8220" - healthcheck: - test: "curl -f http://127.0.0.1:8220/api/status | grep HEALTHY 2>&1 >/dev/null" - retries: 12 - interval: 5s - environment: - - "FLEET_SERVER_ENABLE=1" - - "FLEET_SERVER_INSECURE_HTTP=1" - - "KIBANA_FLEET_SETUP=1" - - "KIBANA_FLEET_HOST=http://kibana:5601" - - "FLEET_SERVER_HOST=0.0.0.0" - - "FLEET_SERVER_PORT=8220" diff --git a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml new file mode 100644 index 0000000000..940a1297a9 --- /dev/null +++ b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml @@ -0,0 +1,26 @@ +version: '2.4' +services: + fleet-server: + image: "docker.elastic.co/${elasticAgentDockerNamespace:-beats}/elastic-agent${elasticAgentDockerImageSuffix}:${elasticAgentTag:-8.0.0-SNAPSHOT}" + depends_on: + elasticsearch: + condition: service_healthy + kibana: + condition: service_healthy + environment: + - "ELASTICSEARCH_USERNAME=admin" + - "ELASTICSEARCH_PASSWORD=changeme" + - "FLEET_SERVER_ENABLE=${fleetServerMode:-0}" + - "FLEET_SERVER_HOST=0.0.0.0" + - "FLEET_SERVER_INSECURE_HTTP=${fleetServerMode:-0}" + - "FLEET_SERVER_PORT=${fleetServerPort:-8220}" + - "FLEET_SERVER_SERVICE_TOKEN=${fleetServerServiceToken:-}" + - "FLEET_ENROLL=${fleetEnroll:-1}" + - "FLEET_ENROLLMENT_TOKEN=${fleetEnrollmentToken:-}" + - "FLEET_INSECURE=${fleetInsecure:-0}" + - "FLEET_URL=${fleetUrl:-}" + - "KIBANA_FLEET_HOST=http://kibana:5601" + - "KIBANA_FLEET_SETUP=${fleetServerMode:-0}" + platform: ${stackPlatform:-linux/amd64} + ports: + - "127.0.0.1:${fleetServerPort:-8220}:8220" diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index fca9acbae7..88d4e391ce 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -618,6 +618,13 @@ func bootstrapFleet(ctx context.Context, env map[string]string) error { }).Fatal("Unable to create kibana client") } + err = elasticsearch.WaitForClusterHealth(ctx) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Fatal("Elasticsearch Cluster is not healthy") + } + err = kibanaClient.RecreateFleet(ctx) if err != nil { log.WithFields(log.Fields{ @@ -626,6 +633,35 @@ func bootstrapFleet(ctx context.Context, env map[string]string) error { }).Fatal("Fleet could not be recreated") } + serviceToken, err := elasticsearch.GetAPIToken(ctx) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Fatal("Could not get API Token from Elasticsearch") + } + + fleetServerEnv := make(map[string]string) + for k, v := range env { + fleetServerEnv[k] = v + } + fleetServerEnv["fleetServerMode"] = "1" + fleetServerEnv["fleetServerPort"] = "8220" + fleetServerEnv["fleetInsecure"] = "1" + fleetServerEnv["fleetServerServiceToken"] = serviceToken.AccessToken + + fleetServerSrv := deploy.ServiceRequest{ + Name: common.ElasticAgentServiceName, + Flavour: "fleet-server", + } + + err = deployer.Add(ctx, deploy.NewServiceRequest(common.FleetProfileName), []deploy.ServiceRequest{fleetServerSrv}, fleetServerEnv) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + "env": fleetServerEnv, + }).Fatal("Fleet Server could not be started") + } + err = kibanaClient.WaitForFleet(ctx) if err != nil { log.WithFields(log.Fields{ diff --git a/internal/elasticsearch/client.go b/internal/elasticsearch/client.go index 3bde0e9ce9..324b00b8c0 100644 --- a/internal/elasticsearch/client.go +++ b/internal/elasticsearch/client.go @@ -160,6 +160,112 @@ func getElasticsearchClientFromHostPort(ctx context.Context, host string, port i return esClient, nil } +// SecurityTokenResponse wraps a security token result +type SecurityTokenResponse struct { + AccessToken string `json:"access_token"` + Authentication struct { + Realm struct { + Name string `json:"name"` + Type string `json:"type"` + } `json:"authentication_realm"` + Type string `json:"authentication_type"` + Email string `json:"email"` + Enabled bool `json:"enabled"` + FullName bool `json:"full_name"` + LookupRealm struct { + Name string `json:"name"` + Type string `json:"type"` + } `json:"lookup_realm"` + Metadata struct { + Reserved string `json:"_reserved"` + } `json:"lookup_realm"` + Roles []string `json:"roles"` + Username string `json:"username"` + } `json:"authentication"` + ExpiresIn int `json:"expires_in"` + Type string `json:"type"` +} + +// SecurityTokenRequest payload for requesting a security token +type SecurityTokenRequest struct { + GrantType string `json:"grant_type"` +} + +// GetAPIToken retrieves an OAuth API token +func GetAPIToken(ctx context.Context) (SecurityTokenResponse, error) { + span, _ := apm.StartSpanOptions(ctx, "Get API Token", "elasticsearch.security.get-token", apm.SpanOptions{ + Parent: apm.SpanFromContext(ctx).TraceContext(), + }) + defer span.End() + + result := SecurityTokenResponse{} + + esClient, err := getElasticsearchClient(ctx) + if err != nil { + return result, err + } + + securityToken := SecurityTokenRequest{ + GrantType: "client_credentials", + } + + log.WithFields(log.Fields{ + "tokenRequest": securityToken, + }).Debug("Retrieving Elasticsearch's API token") + + var buf bytes.Buffer + err = json.NewEncoder(&buf).Encode(securityToken) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("Error decoding Security Token struct") + + return result, err + } + + res, err := esClient.Security.GetToken(&buf) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("Error retrieving security token from Elasticsearch") + + return result, err + } + defer res.Body.Close() + + if res.IsError() { + var e map[string]interface{} + if err := json.NewDecoder(res.Body).Decode(&e); err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("Error parsing error response body from Elasticsearch") + + return result, err + } + + err := fmt.Errorf( + "error getting response from Elasticsearch. Status: %s, ResponseError: %v", + res.Status(), e) + + return result, err + } + + if err := json.NewDecoder(res.Body).Decode(&result); err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Error("Error parsing response body from Elasticsearch") + + return result, err + } + + log.WithFields(log.Fields{ + "status": res.Status(), + "result": result, + }).Debug("API Token retrieved from Elasticsearch") + + return result, nil +} + // Search provide search interface to ES func Search(ctx context.Context, indexName string, query map[string]interface{}) (SearchResult, error) { span, _ := apm.StartSpanOptions(ctx, "Search", "elasticsearch.search", apm.SpanOptions{ From 4f1ace2078f46e8cfb7e15c78a93566b10139c21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 27 Jan 2022 21:09:07 +0100 Subject: [PATCH 05/52] fix: start stack using Fleet's test suite code Instead of calling the compose, we are calling the bootstrapping code for the Fleet test suite but without any valid tag. Because we are setting DEVELOPER_MODE=true for the stack node, it will keep the stack even though the scenarios and tags finished. We also pass a non-existing gherkin tag, to avoid running any scenario but the bootstrap code, only. --- .ci/ansible/playbook.yml | 18 ++++++++++++------ .ci/ansible/tasks/setup_test_script.yml | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 6d596337ab..80bbf70eb8 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -65,6 +65,11 @@ tags: - setup-stack + - name: Configure test script + include_tasks: tasks/setup_test_script.yml + tags: + - setup-stack + - name: Add SSH keys to stack include_tasks: tasks/install_ssh_keys.yml tags: @@ -72,19 +77,20 @@ - name: Configure stack files ansible.builtin.replace: - path: "/home/{{ ansible_user }}/e2e-testing/cli/config/compose/profiles/fleet/default/kibana.config.yml" + path: '{{ item.path }}' regexp: '{{ item.old }}' replace: '{{ item.new }}' loop: - - { old: 'http://elasticsearch', new: 'http://{{ inventory_hostname }}' } - - { old: 'http://fleet-server', new: 'http://{{ inventory_hostname }}' } - - { old: 'http://package-registry:8080', new: 'https://epr-staging.elastic.co' } + - { old: 'http://elasticsearch', new: 'http://{{ inventory_hostname }}', path: "/home/{{ ansible_user }}/e2e-testing/cli/config/compose/profiles/fleet/default/kibana.config.yml" } + - { old: 'http://fleet-server', new: 'http://{{ inventory_hostname }}', path: "/home/{{ ansible_user }}/e2e-testing/cli/config/compose/profiles/fleet/default/kibana.config.yml" } + - { old: 'http://kibana', new: 'http://{{ inventory_hostname }}', path: "/home/{{ ansible_user }}/e2e-testing/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml" } + - { old: 'http://package-registry:8080', new: 'https://epr-staging.elastic.co', path: "/home/{{ ansible_user }}/e2e-testing/cli/config/compose/profiles/fleet/default/kibana.config.yml" } tags: - setup-stack - - name: Start stack + - name: Start stack without any tag to spin up the stack using Fleet's bootstrapping code become: true - shell: docker-compose -f /home/{{ansible_user}}/e2e-testing/cli/config/compose/profiles/fleet/docker-compose.yml up -d + shell: "/home/{{ ansible_user }}/e2e-testing/.ci/scripts/functional-test.sh 'non-existing-tag'" tags: - setup-stack diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 5d6004bf30..e8f98a1f6b 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -1,4 +1,18 @@ --- +- name: Extend environment for Stack Bootstrapping + lineinfile: + state: present + line: "{{ itemd }}" + insertafter: EOF + dest: "/home/{{ ansible_user }}/e2e-testing/.env" + create: yes + with_items: + - "export SUITE=fleet" + - "export PROVIDER=docker" + - "export DEVELOPER_MODE=true" + - "export SKIP_PULL=1" + when: "'stack' == nodeLabel" + - name: Extend environment for Fleet testing lineinfile: state: present From ad786f526f0001acebfd00e955dc881dc00f8bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 27 Jan 2022 21:53:01 +0100 Subject: [PATCH 06/52] fix: typo --- .ci/ansible/tasks/setup_test_script.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index e8f98a1f6b..0562225f74 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -2,7 +2,7 @@ - name: Extend environment for Stack Bootstrapping lineinfile: state: present - line: "{{ itemd }}" + line: "{{ item }}" insertafter: EOF dest: "/home/{{ ansible_user }}/e2e-testing/.env" create: yes From 019f166a1e03faf4239a7f149012e5a5840b7a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 07:42:19 +0100 Subject: [PATCH 07/52] fix: selective execution of the .env for fleet suite --- .ci/ansible/tasks/setup_test_script.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 0562225f74..58cdccde97 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,8 +29,7 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - - when: "'fleet' == suite" + when: "'fleet' == suite and 'stack' != nodeLabel" - name: Extend environment for Fleet with elastic-package testing lineinfile: From 7608d4b16d6bccd24392701ca46494f08eb18faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 08:06:58 +0100 Subject: [PATCH 08/52] chore: try 'not in' --- .ci/ansible/tasks/setup_test_script.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 58cdccde97..e32a0c254f 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,7 +29,7 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - when: "'fleet' == suite and 'stack' != nodeLabel" + when: "'fleet' == suite and 'stack' not in nodeLabel" - name: Extend environment for Fleet with elastic-package testing lineinfile: From 42239f0b9c9a5932822c35aa3798ee265dbcb0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 10:01:25 +0100 Subject: [PATCH 09/52] chore: use AND conditionals as a list --- .ci/ansible/tasks/setup_test_script.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index e32a0c254f..ac6e09b2b0 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,7 +29,9 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - when: "'fleet' == suite and 'stack' not in nodeLabel" + when: + - suite == "fleet" + - nodeLabel != "stack" - name: Extend environment for Fleet with elastic-package testing lineinfile: From f146866e1798136ce35a6651b606121aa17c64f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 10:24:17 +0100 Subject: [PATCH 10/52] fix: check for stckRunner to be defined --- .ci/ansible/tasks/setup_test_script.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index ac6e09b2b0..4743bdd7cc 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,9 +29,7 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - when: - - suite == "fleet" - - nodeLabel != "stack" + when: "suite == 'fleet' and stackRunner is defined" - name: Extend environment for Fleet with elastic-package testing lineinfile: From 15b819d59cdd02f6e8d8e486e2fd7c585386a375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 10:56:59 +0100 Subject: [PATCH 11/52] fix: pass stackRunner var to the stack creation --- .ci/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index 6b92d178bd..8c425a799e 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -215,7 +215,7 @@ pipeline { ansible( stackWorkspace, env.RUN_ID.split('-')[0], - "-i \"${stackRunner.ip},\" -t setup-stack --extra-vars=\"${LABELS_STRING} nodeLabel=stack nodeUser=${stackMachine.username} nodeImage=${stackMachine.image} nodeInstanceType=${stackMachine.instance_type}\"" + "-i \"${stackRunner.ip},\" -t setup-stack --extra-vars=\"${LABELS_STRING} stackRunner=${stackRunner.ip} nodeLabel=stack nodeUser=${stackMachine.username} nodeImage=${stackMachine.image} nodeInstanceType=${stackMachine.instance_type}\"" ) } From 2a56928706ef7b0bbdcfd10e049f30ac4ea245e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 11:13:18 +0100 Subject: [PATCH 12/52] fix: check for suite is defined first --- .ci/ansible/tasks/setup_test_script.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 4743bdd7cc..3ffcdc7dd7 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,7 +29,7 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - when: "suite == 'fleet' and stackRunner is defined" + when: "suite is defined and stackRunner is defined and suite == 'fleet'" - name: Extend environment for Fleet with elastic-package testing lineinfile: From ad87b888083222bd2ca4c7705d755e9232e4b100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 12:41:15 +0100 Subject: [PATCH 13/52] fix: check for suite var --- .ci/ansible/tasks/setup_test_script.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 3ffcdc7dd7..a6927a03a0 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -54,7 +54,7 @@ with_items: - "export SUITE={{ lookup('env', 'SUITE') or 'kubernetes-autodiscover' }}" - "export PROVIDER={{ lookup('env', 'PROVIDER') or 'docker' }}" - when: "'kubernetes_autodiscover' == suite" + when: "suite is defined and 'kubernetes_autodiscover' == suite" - name: Extend environment for Helm testing lineinfile: @@ -66,7 +66,7 @@ with_items: - "export SUITE={{ lookup('env', 'SUITE') or 'helm' }}" - "export PROVIDER={{ lookup('env', 'PROVIDER') or 'docker' }}" - when: "'helm' == suite" + when: "suite is defined and 'helm' == suite" - name: Extend environment lineinfile: From e60bbb4288d53ae33635b1a5760cf4a3ca6a1513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 28 Jan 2022 17:45:13 +0100 Subject: [PATCH 14/52] chore: use multiline for when condirtionals --- .ci/ansible/tasks/setup_test_script.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index a6927a03a0..9a313c5b7c 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -29,7 +29,10 @@ - "export KIBANA_URL=http://{{stackRunner}}:5601" - "export FLEET_URL=http://{{stackRunner}}:8220" - "export SKIP_PULL=1" - when: "suite is defined and stackRunner is defined and suite == 'fleet'" + when: + - suite is defined + - stackRunner is defined + - suite == "fleet" - name: Extend environment for Fleet with elastic-package testing lineinfile: @@ -54,7 +57,9 @@ with_items: - "export SUITE={{ lookup('env', 'SUITE') or 'kubernetes-autodiscover' }}" - "export PROVIDER={{ lookup('env', 'PROVIDER') or 'docker' }}" - when: "suite is defined and 'kubernetes_autodiscover' == suite" + when: + - suite is defined + - suite == "kubernetes_autodiscover" - name: Extend environment for Helm testing lineinfile: @@ -66,7 +71,9 @@ with_items: - "export SUITE={{ lookup('env', 'SUITE') or 'helm' }}" - "export PROVIDER={{ lookup('env', 'PROVIDER') or 'docker' }}" - when: "suite is defined and 'helm' == suite" + when: + - suite is defined + - suite == "helm" - name: Extend environment lineinfile: From 0c7d9b70233907cf87ceecc243339b97066c1172 Mon Sep 17 00:00:00 2001 From: Adam Stokes <51892+adam-stokes@users.noreply.github.com> Date: Fri, 28 Jan 2022 13:26:29 -0500 Subject: [PATCH 15/52] fix docker install Signed-off-by: Adam Stokes <51892+adam-stokes@users.noreply.github.com> --- .ci/ansible/playbook.yml | 8 ++++---- .ci/ansible/tasks/runners.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 80bbf70eb8..538f1a9e51 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -108,13 +108,13 @@ - role: geerlingguy.docker docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] - when: "'kubernetes_autodiscover' in nodeLabel or 'helm' in nodeLabel or 'fleet_amd64' in nodeLabel or 'fleet_elastic_pkg' in nodeLabel" + when: nodeLabel in ["kubernetes_autodiscover", "helm", "debian_amd64", "centos8_amd64", "sles15", "fleet_elastic_pkg"] - role: andrewrothstein.kubectl - when: "'kubernetes_autodiscover' in nodeLabel or 'helm' in nodeLabel" + when: nodeLabel in ["kubernetes_autodiscover", "helm"] - role: andrewrothstein.kind - when: "'kubernetes_autodiscover' in nodeLabel or 'helm' in nodeLabel" + when: nodeLabel in ["kubernetes_autodiscover", "helm"] - role: geerlingguy.helm - when: "'kubernetes_autodiscover' in nodeLabel or 'helm' in nodeLabel" + when: nodeLabel in ["kubernetes_autodiscover", "helm"] - role: gantsign.golang vars: golang_version: 1.17 diff --git a/.ci/ansible/tasks/runners.yml b/.ci/ansible/tasks/runners.yml index d244e6bd57..70437ed58e 100644 --- a/.ci/ansible/tasks/runners.yml +++ b/.ci/ansible/tasks/runners.yml @@ -52,7 +52,7 @@ - start-node - name: Wait for SSH to come up - wait_for: host={{ nodeItem.public_ip }} port=22 delay=10 timeout=60 + wait_for: host={{ nodeItem.public_ip }} port=22 delay=10 loop: "{{ ec2.instances }}" loop_control: loop_var: nodeItem From 6dd4774c90d3f5f0e7ce64a851504fb208a42301 Mon Sep 17 00:00:00 2001 From: Adam Stokes <51892+adam-stokes@users.noreply.github.com> Date: Fri, 28 Jan 2022 14:03:35 -0500 Subject: [PATCH 16/52] fix suite definition for autodiscover Signed-off-by: Adam Stokes <51892+adam-stokes@users.noreply.github.com> --- .ci/ansible/playbook.yml | 2 +- .ci/ansible/tasks/setup_test_script.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 538f1a9e51..fca5697eea 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -108,7 +108,7 @@ - role: geerlingguy.docker docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] - when: nodeLabel in ["kubernetes_autodiscover", "helm", "debian_amd64", "centos8_amd64", "sles15", "fleet_elastic_pkg"] + when: nodeLabel in ["kubernetes_autodiscover", "helm", "debian_amd64", "centos8_amd64", "fleet_elastic_pkg"] - role: andrewrothstein.kubectl when: nodeLabel in ["kubernetes_autodiscover", "helm"] - role: andrewrothstein.kind diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 9a313c5b7c..0c8ff81abf 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -59,7 +59,7 @@ - "export PROVIDER={{ lookup('env', 'PROVIDER') or 'docker' }}" when: - suite is defined - - suite == "kubernetes_autodiscover" + - suite == "kubernetes-autodiscover" - name: Extend environment for Helm testing lineinfile: From f90337f019547d0174bd5110fda2614452b00cdd Mon Sep 17 00:00:00 2001 From: Adam Stokes <51892+adam-stokes@users.noreply.github.com> Date: Fri, 28 Jan 2022 14:59:25 -0500 Subject: [PATCH 17/52] add kubectl to path Signed-off-by: Adam Stokes <51892+adam-stokes@users.noreply.github.com> --- .ci/ansible/tasks/setup_test_script.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/ansible/tasks/setup_test_script.yml b/.ci/ansible/tasks/setup_test_script.yml index 0c8ff81abf..8814352056 100644 --- a/.ci/ansible/tasks/setup_test_script.yml +++ b/.ci/ansible/tasks/setup_test_script.yml @@ -86,7 +86,7 @@ - "export STACK_VERSION={{ lookup('file', '{{workspace}}/.stack-version') or '8.0.0-SNAPSHOT' }}" - "export BEAT_VERSION={{ lookup('file', '{{workspace}}/.stack-version') or '8.0.0-SNAPSHOT' }}" - "export ELASTIC_APM_GLOBAL_LABELS={{ lookup('env', 'ELASTIC_APM_GLOBAL_LABELS') }}" - - "export PATH=$PATH:/opt/go/{{golang_version}}/bin" + - "export PATH=$PATH:/opt/go/{{golang_version}}/bin:/usr/local/bin" - name: Create Fleet test script file become: no From 1278d32e82f1b7823fe3343200a3f8dde7f3f3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 31 Jan 2022 18:43:18 +0100 Subject: [PATCH 18/52] chore: bump elastic-agent versions to 8.1.hashed snapshot --- cli/config/compose/services/elastic-agent/docker-compose.yml | 2 +- .../services/elastic-agent/fleet-server/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/config/compose/services/elastic-agent/docker-compose.yml b/cli/config/compose/services/elastic-agent/docker-compose.yml index 19669a3110..ce50ee6098 100644 --- a/cli/config/compose/services/elastic-agent/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/docker-compose.yml @@ -1,7 +1,7 @@ version: '2.4' services: elastic-agent: - image: "docker.elastic.co/${elasticAgentDockerNamespace:-beats}/elastic-agent${elasticAgentDockerImageSuffix}:${elasticAgentTag:-8.0.0-SNAPSHOT}" + image: "docker.elastic.co/${elasticAgentDockerNamespace:-beats}/elastic-agent${elasticAgentDockerImageSuffix}:${elasticAgentTag:-8.1.0-aa69d697-SNAPSHOT}" depends_on: elasticsearch: condition: service_healthy diff --git a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml index 940a1297a9..0d5c10c773 100644 --- a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml @@ -1,7 +1,7 @@ version: '2.4' services: fleet-server: - image: "docker.elastic.co/${elasticAgentDockerNamespace:-beats}/elastic-agent${elasticAgentDockerImageSuffix}:${elasticAgentTag:-8.0.0-SNAPSHOT}" + image: "docker.elastic.co/${elasticAgentDockerNamespace:-beats}/elastic-agent${elasticAgentDockerImageSuffix}:${elasticAgentTag:-8.1.0-aa69d697-SNAPSHOT}" depends_on: elasticsearch: condition: service_healthy From 7d9dea33ae5d187606d710e8bc8b72b1a0237105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 31 Jan 2022 20:09:47 +0100 Subject: [PATCH 19/52] fix: use docker provider for APM integration It will run on Debian AMD/ARM and SLES15 --- .ci/.e2e-tests-for-elastic-agent.yaml | 2 +- .ci/.e2e-tests.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/.e2e-tests-for-elastic-agent.yaml b/.ci/.e2e-tests-for-elastic-agent.yaml index 16ab01b0c6..05d45f874b 100644 --- a/.ci/.e2e-tests-for-elastic-agent.yaml +++ b/.ci/.e2e-tests-for-elastic-agent.yaml @@ -40,7 +40,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["fleet_elastic_pkg"] + platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] diff --git a/.ci/.e2e-tests.yaml b/.ci/.e2e-tests.yaml index 443ef14000..4978c28bed 100644 --- a/.ci/.e2e-tests.yaml +++ b/.ci/.e2e-tests.yaml @@ -51,7 +51,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["fleet_elastic_pkg"] + platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From 306551cfd3d9900076fd10374289b869acd87a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 07:58:34 +0100 Subject: [PATCH 20/52] chore: add client alive SSH settings --- .ci/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index 5c2ef9e872..58ac1555b3 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -329,7 +329,7 @@ def checkSkipTests() { def sshexec(workspace, connection, cmd){ - sh "ssh -tt -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${workspace}/e2essh ${connection.user}@${connection.ip} -- '${cmd}'" + sh "ssh -tt -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o ClientAliveInterval=60 -o ClientAliveCountMax=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${workspace}/e2essh ${connection.user}@${connection.ip} -- '${cmd}'" } def scpr(workspace, connection, remote_src, local_dst){ From b162c97e7a4d849a7417aac2f61df40de57edc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 09:50:34 +0100 Subject: [PATCH 21/52] Revert "chore: add client alive SSH settings" This reverts commit 306551cfd3d9900076fd10374289b869acd87a34. --- .ci/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index 58ac1555b3..5c2ef9e872 100644 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -329,7 +329,7 @@ def checkSkipTests() { def sshexec(workspace, connection, cmd){ - sh "ssh -tt -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o ClientAliveInterval=60 -o ClientAliveCountMax=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${workspace}/e2essh ${connection.user}@${connection.ip} -- '${cmd}'" + sh "ssh -tt -o TCPKeepAlive=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${workspace}/e2essh ${connection.user}@${connection.ip} -- '${cmd}'" } def scpr(workspace, connection, remote_src, local_dst){ From 365038755a931dd942a6e6927517278160e289d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 10:11:29 +0100 Subject: [PATCH 22/52] chore: define SSHD server settings for runners --- .ci/ansible/files/sshd_config | 2 ++ .ci/ansible/tasks/install_deps.yml | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 .ci/ansible/files/sshd_config diff --git a/.ci/ansible/files/sshd_config b/.ci/ansible/files/sshd_config new file mode 100644 index 0000000000..d92462db64 --- /dev/null +++ b/.ci/ansible/files/sshd_config @@ -0,0 +1,2 @@ +ClientAliveInterval 60 +ClientAliveCountMax 10 diff --git a/.ci/ansible/tasks/install_deps.yml b/.ci/ansible/tasks/install_deps.yml index 248696398d..05dbc67ba8 100644 --- a/.ci/ansible/tasks/install_deps.yml +++ b/.ci/ansible/tasks/install_deps.yml @@ -51,3 +51,12 @@ - name: Install ssh-import-id python package to copy public SSH keys from Github accounts pip: name: ssh-import-id + +- name: Set sshd configuration for client alive settings + ansible.builtin.copy: + src: sshd_config + dest: /etc/ssh/sshd_config + owner: "{{ ansible_user }}" + group: "{{ ansible_user }}" + mode: '0600' + when: ansible_distribution in ["CentOS", "Debian", "Fedora", "RedHat", "Ubuntu"] From 3a5ad4f34fcb921282f578068f37466453e32adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 11:11:40 +0100 Subject: [PATCH 23/52] chore: skip ubi8 scenarios We need to adapt them to the dnew deployment model. See #2088 --- .../fleet/features/apm_integration.feature | 2 +- .../fleet/features/stand_alone_agent.feature | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/e2e/_suites/fleet/features/apm_integration.feature b/e2e/_suites/fleet/features/apm_integration.feature index 309a80b85c..13852c0acc 100644 --- a/e2e/_suites/fleet/features/apm_integration.feature +++ b/e2e/_suites/fleet/features/apm_integration.feature @@ -15,7 +15,7 @@ Examples: default | default | @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | diff --git a/e2e/_suites/fleet/features/stand_alone_agent.feature b/e2e/_suites/fleet/features/stand_alone_agent.feature index 485f745cb5..311d35791d 100644 --- a/e2e/_suites/fleet/features/stand_alone_agent.feature +++ b/e2e/_suites/fleet/features/stand_alone_agent.feature @@ -16,7 +16,7 @@ Examples: default | default | @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -32,7 +32,7 @@ Examples: default | default | @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -49,7 +49,7 @@ Examples: default | default | @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -66,7 +66,7 @@ Examples: default | default | @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -79,7 +79,7 @@ Scenario Outline: Adding the process_summary System Integration to an stand-alon Then "system/metrics" with "process.summary" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -97,7 +97,7 @@ Scenario Outline: Adding the core System Integration to an stand-alone-agent Then "system/metrics" with "core" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -115,7 +115,7 @@ Scenario Outline: Adding the cpu System Integration to an stand-alone-agent Then "system/metrics" with "cpu" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -133,7 +133,7 @@ Scenario Outline: Adding the diskio System Integration to an stand-alone-agent Then "system/metrics" with "diskio" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -151,7 +151,7 @@ Scenario Outline: Adding the fsstat System Integration to an stand-alone-agent Then "system/metrics" with "fsstat" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -169,7 +169,7 @@ Scenario Outline: Adding the load System Integration to an stand-alone-agent Then "system/metrics" with "load" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -187,7 +187,7 @@ Scenario Outline: SAdding the memory System Integration to an stand-alone-agent Then "system/metrics" with "memory" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -205,7 +205,7 @@ Scenario Outline: Adding the network System Integration to an stand-alone-agent Then "system/metrics" with "network" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -223,7 +223,7 @@ Scenario Outline: Adding the process System Integration to an stand-alone-agent Then "system/metrics" with "process" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -241,7 +241,7 @@ Scenario Outline: Adding the socket_summary System Integration to an stand-alone Then "system/metrics" with "socket_summary" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | @@ -259,7 +259,7 @@ Scenario Outline: Adding the uptime System Integration to an stand-alone-agent Then "system/metrics" with "uptime" metrics are present in the datastreams @ubi8 -@skip:arm64 +@skip Examples: Ubi8 | image | | ubi8 | From 181404a9ed6b15d30bfbeb68f4cf537b33bec9b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 12:46:49 +0100 Subject: [PATCH 24/52] fix: transform response from bytes to string --- internal/kibana/integrations.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/kibana/integrations.go b/internal/kibana/integrations.go index e5480bdf3f..7426c17633 100644 --- a/internal/kibana/integrations.go +++ b/internal/kibana/integrations.go @@ -69,7 +69,7 @@ func (c *Client) AddIntegrationToPolicy(ctx context.Context, packageDS PackageDa "elapsedTime": exp.GetElapsedTime(), "err": err, "statusCode": statusCode, - "response": respBody, + "response": string(respBody), "package": packageDS, "retry": retryCount, }).Warn("could not add package to policy because of HTTP code is not 200") From 5a643228f14c1f23e2d0b272080a11bac4163dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 13:40:02 +0100 Subject: [PATCH 25/52] fix: properly read Input Streams and Vars --- e2e/_suites/fleet/fleet.go | 49 +++++++++++++++++++++++-------------- internal/kibana/policies.go | 20 ++++++++++----- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 88d4e391ce..20c4370a8c 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -6,6 +6,7 @@ package main import ( "context" + "encoding/json" "fmt" "io/ioutil" "os" @@ -189,11 +190,16 @@ func (fts *FleetTestSuite) beforeScenario() { } for _, item := range jsonData.Children() { + var streams []kibana.Stream + if err := json.Unmarshal(item.Path("streams").Bytes(), &streams); err != nil { + return err + } + if item.Path("type").Data().(string) == "system/metrics" { packageDataStream.Inputs = append(packageDataStream.Inputs, kibana.Input{ Type: item.Path("type").Data().(string), Enabled: item.Path("enabled").Data().(bool), - Streams: item.S("streams").Data().([]interface{}), + Streams: streams, Vars: map[string]kibana.Var{ "system.hostfs": { Value: "", @@ -205,7 +211,7 @@ func (fts *FleetTestSuite) beforeScenario() { packageDataStream.Inputs = append(packageDataStream.Inputs, kibana.Input{ Type: item.Path("type").Data().(string), Enabled: item.Path("enabled").Data().(bool), - Streams: item.S("streams").Data().([]interface{}), + Streams: streams, }) } } @@ -1493,7 +1499,7 @@ func inputs(integration string) []kibana.Input { { Type: "apm", Enabled: true, - Streams: []interface{}{}, + Streams: []kibana.Stream{}, Vars: map[string]kibana.Var{ "apm-server": { Value: "host", @@ -1507,20 +1513,20 @@ func inputs(integration string) []kibana.Input { { Type: "linux/metrics", Enabled: true, - Streams: []interface{}{ - map[string]interface{}{ - "id": "linux/metrics-linux.memory-" + uuid.New().String(), - "enabled": true, - "data_stream": map[string]interface{}{ - "dataset": "linux.memory", - "type": "metrics", + Streams: []kibana.Stream{ + { + ID: "linux/metrics-linux.memory-" + uuid.New().String(), + Enabled: true, + DS: kibana.DataStream{ + Dataset: "linux.memory", + Type: "metrics", + }, + Vars: map[string]kibana.Var{ + "period": { + Value: "1s", + Type: "string", + }, }, - }, - }, - Vars: map[string]kibana.Var{ - "period": { - Value: "1s", - Type: "string", }, }, }, @@ -1592,7 +1598,7 @@ func readJSONFile(file string) (*gabs.Container, error) { return jsonParsed.S("inputs"), nil } -func parseJSONMetrics(data *gabs.Container, integration string, set string, metrics string) []interface{} { +func parseJSONMetrics(data *gabs.Container, integration string, set string, metrics string) []kibana.Stream { for i, item := range data.Children() { if item.Path("type").Data().(string) == integration { for idx, stream := range item.S("streams").Children() { @@ -1606,13 +1612,18 @@ func parseJSONMetrics(data *gabs.Container, integration string, set string, metr true, fmt.Sprintf("inputs.%d.streams.%d.enabled", i, idx), ) - dataStreamOut, _ := data.Path(fmt.Sprintf("inputs.%d.streams", i)).Data().([]interface{}) + + var dataStreamOut []kibana.Stream + if err := json.Unmarshal(data.Path(fmt.Sprintf("inputs.%d.streams", i)).Bytes(), &dataStreamOut); err != nil { + return []kibana.Stream{} + } + return dataStreamOut } } } } - return nil + return []kibana.Stream{} } func (fts *FleetTestSuite) thePolicyIsUpdatedToHaveSystemSet(name string, set string) error { diff --git a/internal/kibana/policies.go b/internal/kibana/policies.go index 4867869eaf..07cac74c78 100644 --- a/internal/kibana/policies.go +++ b/internal/kibana/policies.go @@ -193,12 +193,12 @@ type DataStream struct { // Input represents a package-level input. type Input struct { - Type string `json:"type"` - Enabled bool `json:"enabled"` - Streams []interface{} `json:"streams"` - Vars Vars `json:"vars,omitempty"` - Config interface{} `json:"config,omitempty"` - CompiledStream interface{} `json:"compiled_stream,omitempty"` + Type string `json:"type"` + Enabled bool `json:"enabled"` + Streams []Stream `json:"streams"` + Vars Vars `json:"vars,omitempty"` + Config interface{} `json:"config,omitempty"` + CompiledStream interface{} `json:"compiled_stream,omitempty"` } // PackageDataStream represents a request to add a single package's single data stream to a @@ -215,6 +215,14 @@ type PackageDataStream struct { Package IntegrationPackage `json:"package"` } +// Stream represents a stream for an input +type Stream struct { + DS DataStream `json:"data_stream"` + Enabled bool `json:"enabled"` + ID string `json:"id"` + Vars Vars `json:"vars,omitempty"` +} + // ListPackagePolicies return list of package policies func (c *Client) ListPackagePolicies(ctx context.Context) ([]PackageDataStream, error) { span, _ := apm.StartSpanOptions(ctx, "Listing package policies", "fleet.package-policies.items", apm.SpanOptions{ From da1b80d76bc04187a8a0cfee2fabee96f944edbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 16:29:28 +0100 Subject: [PATCH 26/52] fix: expose port for 0.0.0.0 --- .../services/elastic-agent/fleet-server/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml index 0d5c10c773..cfba4dde99 100644 --- a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml @@ -23,4 +23,4 @@ services: - "KIBANA_FLEET_SETUP=${fleetServerMode:-0}" platform: ${stackPlatform:-linux/amd64} ports: - - "127.0.0.1:${fleetServerPort:-8220}:8220" + - "${fleetServerPort:-8220}:8220" From b396c8488426701e966ad6c07bce6e448ec1d0da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 16:53:00 +0100 Subject: [PATCH 27/52] fix: streams could go empty --- internal/kibana/policies.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/kibana/policies.go b/internal/kibana/policies.go index 07cac74c78..2abe4e312c 100644 --- a/internal/kibana/policies.go +++ b/internal/kibana/policies.go @@ -195,7 +195,7 @@ type DataStream struct { type Input struct { Type string `json:"type"` Enabled bool `json:"enabled"` - Streams []Stream `json:"streams"` + Streams []Stream `json:"streams",omitempty` Vars Vars `json:"vars,omitempty"` Config interface{} `json:"config,omitempty"` CompiledStream interface{} `json:"compiled_stream,omitempty"` From c2b6ea97fff737cf7b132324bc8636e3d9a80435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 17:17:07 +0100 Subject: [PATCH 28/52] fix: expose port for 0.0.0.0 --- cli/config/compose/services/elastic-agent/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/config/compose/services/elastic-agent/docker-compose.yml b/cli/config/compose/services/elastic-agent/docker-compose.yml index ce50ee6098..a11851d9c2 100644 --- a/cli/config/compose/services/elastic-agent/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/docker-compose.yml @@ -18,4 +18,4 @@ services: - "FLEET_URL=${fleetUrl:-}" platform: ${stackPlatform:-linux/amd64} ports: - - "127.0.0.1:${fleetServerPort:-8220}:8220" + - "${fleetServerPort:-8220}:8220" From 0e217368bf680f5b80a0963f19c94a82e6195faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 22:31:42 +0100 Subject: [PATCH 29/52] fix: support checking for process count in containers --- e2e/_suites/fleet/fleet.go | 9 +- e2e/_suites/fleet/stand-alone.go | 12 +- e2e/_suites/fleet/world.go | 17 ++- internal/action/process.go | 192 +++++++++++++++++++++++++++++++ internal/deploy/base.go | 10 ++ internal/deploy/base_test.go | 14 +++ 6 files changed, 242 insertions(+), 12 deletions(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 20c4370a8c..38e2929ad9 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -602,7 +602,14 @@ func (fts *FleetTestSuite) processStateChangedOnTheHost(process string, state st manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) - return CheckProcessState(fts.deployer, manifest.Name, process, "stopped", 0) + var srv deploy.ServiceRequest + if fts.StandAlone { + srv = deploy.NewServiceContainerRequest(manifest.Name) + } else { + srv = deploy.NewServiceRequest(manifest.Name) + } + + return CheckProcessState(fts.currentContext, fts.deployer, srv, process, "stopped", 0) } // bootstrapFleet this method creates the runtime dependencies for the Fleet test suite, being of special diff --git a/e2e/_suites/fleet/stand-alone.go b/e2e/_suites/fleet/stand-alone.go index d4ea843a64..d1705fdbc6 100644 --- a/e2e/_suites/fleet/stand-alone.go +++ b/e2e/_suites/fleet/stand-alone.go @@ -33,7 +33,7 @@ func (fts *FleetTestSuite) thereIsNewDataInTheIndexFromAgent() error { maxTimeout := time.Duration(utils.TimeoutFactor) * time.Minute * 2 minimumHitsCount := 20 - agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName).WithFlavour(fts.Image) + agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName).WithFlavour(fts.Image) manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) result, err := searchAgentData(fts.currentContext, manifest.Hostname, fts.RuntimeDependenciesStartDate, minimumHitsCount, maxTimeout) @@ -47,7 +47,7 @@ func (fts *FleetTestSuite) thereIsNewDataInTheIndexFromAgent() error { } func (fts *FleetTestSuite) theDockerContainerIsStopped(serviceName string) error { - agentService := deploy.NewServiceRequest(serviceName) + agentService := deploy.NewServiceContainerRequest(serviceName) err := fts.deployer.Stop(fts.currentContext, agentService) if err != nil { return err @@ -61,7 +61,7 @@ func (fts *FleetTestSuite) thereIsNoNewDataInTheIndexAfterAgentShutsDown() error maxTimeout := time.Duration(30) * time.Second minimumHitsCount := 1 - agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) + agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName) manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) result, err := searchAgentData(fts.currentContext, manifest.Hostname, fts.AgentStoppedDate, minimumHitsCount, maxTimeout) if err != nil { @@ -96,7 +96,7 @@ func (fts *FleetTestSuite) startStandAloneAgent(image string, flavour string, en // load the docker images that were already: // a. downloaded from the GCP bucket // b. fetched from the local beats binaries - agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) + agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName) dockerInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, "docker") dockerInstaller.Preinstall(fts.currentContext) @@ -133,9 +133,9 @@ func (fts *FleetTestSuite) startStandAloneAgent(image string, flavour string, en common.ProfileEnv[k] = v } - agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName).WithFlavour(flavour) + agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName).WithFlavour(flavour) - err = fts.deployer.Add(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), []deploy.ServiceRequest{agentService}, common.ProfileEnv) + err = fts.deployer.Add(fts.currentContext, deploy.NewServiceContainerRequest(common.FleetProfileName), []deploy.ServiceRequest{agentService}, common.ProfileEnv) if err != nil { log.Error("Could not deploy the elastic-agent") return err diff --git a/e2e/_suites/fleet/world.go b/e2e/_suites/fleet/world.go index e6038c5aa1..bcca28ac74 100644 --- a/e2e/_suites/fleet/world.go +++ b/e2e/_suites/fleet/world.go @@ -5,6 +5,7 @@ package main import ( + "context" "strconv" "time" @@ -37,27 +38,33 @@ func (imts *IngestManagerTestSuite) thereAreInstancesOfTheProcessInTheState(ocur return err } - return CheckProcessState(imts.Fleet.deployer, manifest.Name, process, state, count) + var srv deploy.ServiceRequest + if imts.Fleet.StandAlone { + srv = deploy.NewServiceContainerRequest(manifest.Name) + } else { + srv = deploy.NewServiceRequest(manifest.Name) + } + + return CheckProcessState(imts.Fleet.currentContext, imts.Fleet.deployer, srv, process, state, count) } // CheckProcessState checks if a process is in the desired state in a container // name of the container for the service: // we are using the underlying deployer to run the commands in the container/service -func CheckProcessState(deployer deploy.Deployment, service string, process string, state string, occurrences int) error { +func CheckProcessState(ctx context.Context, deployer deploy.Deployment, service deploy.ServiceRequest, process string, state string, occurrences int) error { timeout := time.Duration(utils.TimeoutFactor) * time.Minute - serviceRequest := deploy.NewServiceRequest(service) actionOpts := action.ProcessAction{ Process: process, DesiredState: state, Occurrences: occurrences, MaxTimeout: timeout} - waitForProcess, err := action.Attach(imts.Fleet.currentContext, deployer, serviceRequest, action.ActionWaitForProcess, actionOpts) + waitForProcess, err := action.Attach(ctx, deployer, service, action.ActionWaitForProcess, actionOpts) if err != nil { log.WithField("error", err).Error("Unable to attach Process check action") } - _, err = waitForProcess.Run(imts.Fleet.currentContext) + _, err = waitForProcess.Run(ctx) if err != nil { if state == "started" { log.WithFields(log.Fields{ diff --git a/internal/action/process.go b/internal/action/process.go index 5eed90ccf5..28f3cbfde6 100644 --- a/internal/action/process.go +++ b/internal/action/process.go @@ -11,6 +11,7 @@ import ( "time" "github.com/cenkalti/backoff/v4" + "github.com/elastic/e2e-testing/internal/common" "github.com/elastic/e2e-testing/internal/deploy" "github.com/elastic/e2e-testing/internal/utils" "github.com/shirou/gopsutil/v3/process" @@ -43,6 +44,11 @@ func AttachActionWaitProcess(deploy deploy.Deployment, service deploy.ServiceReq // Run executes the command func (a *actionWaitProcess) Run(ctx context.Context) (string, error) { + if a.service.IsContainer { + // when we run the tests in a container, we need to execute the command inside the container + return runInContainer(ctx, a) + } + exp := utils.GetExponentialBackOff(a.opts.MaxTimeout) pidState := "stopped" @@ -114,3 +120,189 @@ func (a *actionWaitProcess) Run(ctx context.Context) (string, error) { return "", nil } + +// runInContainer restored from https://github.com/elastic/e2e-testing/pull/1740, it executes +// pgrep in the target container defined by the service of the actionWaitProcess +func runInContainer(ctx context.Context, a *actionWaitProcess) (string, error) { + log.WithFields(log.Fields{ + "desiredState": a.opts.DesiredState, + "occurrences": a.opts.Occurrences, + "process": a.opts.Process, + }).Trace("Checking for container") + + exp := utils.GetExponentialBackOff(a.opts.MaxTimeout) + + mustBePresent := false + if a.opts.DesiredState == "started" { + mustBePresent = true + } + retryCount := 1 + + processStatus := func() error { + log.WithFields(log.Fields{ + "desiredState": a.opts.DesiredState, + "occurrences": a.opts.Occurrences, + "process": a.opts.Process, + }).Trace("Checking process desired state on the container") + + // pgrep -d: -d, --delimiter specify output delimiter + //i.e. "pgrep -d , metricbeat": 483,519 + cmds := []string{"pgrep", "-d", ",", a.opts.Process} + output, err := a.deploy.ExecIn(ctx, deploy.NewServiceRequest(common.FleetProfileName), a.service, cmds) + if err != nil { + if !mustBePresent && a.opts.Occurrences == 0 { + log.WithFields(log.Fields{ + "cmds": cmds, + "desiredState": a.opts.DesiredState, + "elapsedTime": exp.GetElapsedTime(), + "error": err, + "service": a.service, + "mustBePresent": mustBePresent, + "occurrences": a.opts.Occurrences, + "process": a.opts.Process, + "retry": retryCount, + }).Warn("Process is not present and number of occurences is 0") + return nil + } + + log.WithFields(log.Fields{ + "cmds": cmds, + "desiredState": a.opts.DesiredState, + "elapsedTime": exp.GetElapsedTime(), + "error": err, + "service": a.service, + "mustBePresent": mustBePresent, + "occurrences": a.opts.Occurrences, + "process": a.opts.Process, + "retry": retryCount, + }).Warn("Could not get number of processes in the container") + + retryCount++ + + return err + } + + // tokenize the pids to get each pid's state, adding them to an array if they match the desired state + // From Split docs: + // If output does not contain sep and sep is not empty, Split returns a + // slice of length 1 whose only element is s, that's why we first initialise to the empty array + pids := strings.Split(output, ",") + if len(pids) == 1 && pids[0] == "" { + pids = []string{} + } + + log.WithFields(log.Fields{ + "count": len(pids), + "desiredState": a.opts.DesiredState, + "mustBePresent": mustBePresent, + "pids": pids, + "process": a.opts.Process, + }).Tracef("Pids for process found") + + desiredStatePids := []string{} + + for _, pid := range pids { + pidStateCmds := []string{"ps", "-q", pid, "-o", "state", "--no-headers"} + pidState, err := a.deploy.ExecIn(ctx, deploy.NewServiceRequest(common.FleetProfileName), a.service, pidStateCmds) + if err != nil { + log.WithFields(log.Fields{ + "cmds": cmds, + "desiredState": a.opts.DesiredState, + "elapsedTime": exp.GetElapsedTime(), + "error": err, + "service": a.service, + "mustBePresent": mustBePresent, + "occurrences": a.opts.Occurrences, + "pid": pid, + "process": a.opts.Process, + "retry": retryCount, + }).Warn("Could not check pid status in the container") + + retryCount++ + + return err + } + + log.WithFields(log.Fields{ + "desiredState": a.opts.DesiredState, + "mustBePresent": mustBePresent, + "pid": pid, + "pidState": pidState, + "process": a.opts.Process, + }).Tracef("Checking if process is in the S state") + + // if the process must be present, then check for the S state + // From 'man ps': + // D uninterruptible sleep (usually IO) + // R running or runnable (on run queue) + // S interruptible sleep (waiting for an event to complete) + // T stopped by job control signal + // t stopped by debugger during the tracing + // W paging (not valid since the 2.6.xx kernel) + // X dead (should never be seen) + // Z defunct ("zombie") process, terminated but not reaped by its parent + if mustBePresent && pidState == "S" { + desiredStatePids = append(desiredStatePids, pid) + } else if !mustBePresent { + desiredStatePids = append(desiredStatePids, pid) + } + } + + occurrencesMatched := (len(desiredStatePids) == a.opts.Occurrences) + + // both true or both false + if mustBePresent == occurrencesMatched { + log.WithFields(log.Fields{ + "desiredOccurrences": a.opts.Occurrences, + "desiredState": a.opts.DesiredState, + "service": a.service, + "mustBePresent": mustBePresent, + "occurrences": len(desiredStatePids), + "process": a.opts.Process, + }).Infof("Process desired state checked") + + return nil + } + + if mustBePresent { + err = fmt.Errorf("%s process is not running in the container with the desired number of occurrences (%d) yet", a.opts.Process, a.opts.Occurrences) + log.WithFields(log.Fields{ + "desiredOccurrences": a.opts.Occurrences, + "desiredState": a.opts.DesiredState, + "elapsedTime": exp.GetElapsedTime(), + "error": err, + "service": a.service, + "occurrences": len(desiredStatePids), + "process": a.opts.Process, + "retry": retryCount, + }).Warn(err.Error()) + + retryCount++ + + return err + } + + err = fmt.Errorf("%s process is still running in the container", a.opts.Process) + log.WithFields(log.Fields{ + "desiredOccurrences": a.opts.Occurrences, + "elapsedTime": exp.GetElapsedTime(), + "error": err, + "service": a.service, + "occurrences": len(desiredStatePids), + "process": a.opts.Process, + "state": a.opts.DesiredState, + "retry": retryCount, + }).Warn(err.Error()) + + retryCount++ + + return err + } + + err := backoff.Retry(processStatus, exp) + if err != nil { + return "", err + } + + return "", nil +} diff --git a/internal/deploy/base.go b/internal/deploy/base.go index efbcc5f834..1329821962 100644 --- a/internal/deploy/base.go +++ b/internal/deploy/base.go @@ -77,6 +77,7 @@ type ServiceRequest struct { Name string BackgroundProcesses []string // optional, configured using builder method to add processes that must be installed in the service Flavour string // optional, configured using builder method + IsContainer bool // optional, set to true when the service is backed by a container Scale int // default: 1 WaitStrategies []WaitForServiceRequest // wait strategies for the service } @@ -91,6 +92,15 @@ func NewServiceRequest(n string) ServiceRequest { } } +// NewServiceContainerRequest creates a request for a service +func NewServiceContainerRequest(n string) ServiceRequest { + srv := NewServiceRequest(n) + + srv.IsContainer = true + + return srv +} + // GetName returns the name of the service request, including flavour if needed func (sr ServiceRequest) GetName() string { serviceIncludingFlavour := sr.Name diff --git a/internal/deploy/base_test.go b/internal/deploy/base_test.go index 0326fcf014..44594b8cfa 100644 --- a/internal/deploy/base_test.go +++ b/internal/deploy/base_test.go @@ -47,6 +47,20 @@ func Test_New(t *testing.T) { }) } +func Test_ServiceRequest(t *testing.T) { + t.Run("ServiceRequest as service", func(t *testing.T) { + srv := NewServiceRequest("foo") + + assert.False(t, srv.IsContainer, "Service should not be a container") + }) + + t.Run("ServiceRequest as container", func(t *testing.T) { + srv := NewServiceContainerRequest("foo") + + assert.True(t, srv.IsContainer, "Service should be a container") + }) +} + func Test_ServiceRequest_GetName(t *testing.T) { t.Run("ServiceRequest without flavour", func(t *testing.T) { srv := NewServiceRequest("foo") From 51d57e124ff6843e1b02829bacbd2001702d67aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 22:42:29 +0100 Subject: [PATCH 30/52] chore: unskip apm-server on ubi8 --- e2e/_suites/fleet/features/apm_integration.feature | 1 - 1 file changed, 1 deletion(-) diff --git a/e2e/_suites/fleet/features/apm_integration.feature b/e2e/_suites/fleet/features/apm_integration.feature index 13852c0acc..113305560f 100644 --- a/e2e/_suites/fleet/features/apm_integration.feature +++ b/e2e/_suites/fleet/features/apm_integration.feature @@ -15,7 +15,6 @@ Examples: default | default | @ubi8 -@skip Examples: Ubi8 | image | | ubi8 | From 05639d2ae693d8b451467cc595ecbf4f659e878b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Tue, 1 Feb 2022 22:45:13 +0100 Subject: [PATCH 31/52] chore: always install docker on runners --- .ci/ansible/playbook.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 7b3e71bfe3..f7afb41398 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -108,7 +108,6 @@ - role: geerlingguy.docker docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] - when: suite in ["kubernetes-autodiscover", "helm"] or nodeLabel in ["debian_amd64", "centos8_amd64", "fleet_elastic_pkg"] - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] - role: andrewrothstein.kind From 9ce12f10ef26cee9a1a49760d29be81f25005619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 08:05:04 +0100 Subject: [PATCH 32/52] chore: bump elastic-package to v0.36.0 --- go.mod | 8 +-- go.sum | 208 +++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 139 insertions(+), 77 deletions(-) diff --git a/go.mod b/go.mod index ec962872d0..49393b7b50 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,12 @@ go 1.14 require ( github.com/Flaque/filet v0.0.0-20201012163910-45f684403088 github.com/Jeffail/gabs/v2 v2.6.0 - github.com/cenkalti/backoff/v4 v4.1.0 + github.com/cenkalti/backoff/v4 v4.1.1 github.com/cucumber/godog v0.11.0 github.com/cucumber/messages-go/v10 v10.0.3 // indirect - github.com/docker/cli v20.10.7+incompatible - github.com/docker/docker v20.10.6+incompatible - github.com/elastic/elastic-package v0.32.1 + github.com/docker/cli v20.10.11+incompatible + github.com/docker/docker v20.10.12+incompatible + github.com/elastic/elastic-package v0.36.0 github.com/elastic/go-elasticsearch/v8 v8.0.0-20210317102009-a9d74cec0186 github.com/elastic/go-windows v1.0.1 // indirect github.com/gobuffalo/packr/v2 v2.8.1 diff --git a/go.sum b/go.sum index 276990c1d6..e1942b3997 100644 --- a/go.sum +++ b/go.sum @@ -51,6 +51,7 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/AlecAivazis/survey/v2 v2.3.2 h1:TqTB+aDDCLYhf9/bD2TwSO8u8jDSmMUd2SUVO4gCnU8= github.com/AlecAivazis/survey/v2 v2.3.2/go.mod h1:TH2kPCDU3Kqq7pLbnCWwZXDBjnhZtmsCle5EiYDJ2fg= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v56.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -59,16 +60,20 @@ github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSW github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.20/go.mod h1:o3tqFY+QR40VOlk+pV4d77mORO64jOXSgEnPQgLK6JY= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.15/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= @@ -95,8 +100,9 @@ github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.1 h1:aPJp2QD7OOrhO5tQXqQoGSJc+DjDtWTGLOmNyAm6FgY= +github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= @@ -104,8 +110,10 @@ github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg3 github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.21 h1:btRfUDThBE5IKcvI8O8jOiIkujUsAMBSRsYDYmEi6oM= github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= +github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= +github.com/Microsoft/hcsshim v0.9.1 h1:VfDCj+QnY19ktX5TsH22JHcjaZ05RWQiwDbOyEg5ziM= +github.com/Microsoft/hcsshim v0.9.1/go.mod h1:Y/0uV2jUab5kBI7SQgl62at0AVX7uaruzADAVmxm3eM= github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= @@ -119,14 +127,16 @@ github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV github.com/PaesslerAG/jsonpath v0.1.1 h1:c1/AToHQMVsduPAa4Vh6xp2U0evy4t8SWp8imEsylIk= github.com/PaesslerAG/jsonpath v0.1.1/go.mod h1:lVboNxFGal/VwW6d9JzIy56bUsYAP6tH/x80vjnCseY= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/ProtonMail/go-crypto v0.0.0-20211221144345-a4f6767435ab h1:5FiL/TCaiKCss/BLMIACDxxadYrx767l9kh0qYX+sLQ= -github.com/ProtonMail/go-crypto v0.0.0-20211221144345-a4f6767435ab/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20220113124808-70ae35bab23f h1:J2FzIrXN82q5uyUraeJpLIm7U6PffRwje2ORho5yIik= +github.com/ProtonMail/go-crypto v0.0.0-20220113124808-70ae35bab23f/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/ProtonMail/go-mime v0.0.0-20190923161245-9b5a4261663a h1:W6RrgN/sTxg1msqzFFb+G80MFmpjMw61IU+slm+wln4= github.com/ProtonMail/go-mime v0.0.0-20190923161245-9b5a4261663a/go.mod h1:NYt+V3/4rEeDuaev/zw1zCq8uqVEuPHzDPo3OZrlGJ4= -github.com/ProtonMail/gopenpgp/v2 v2.4.0 h1:LUUPJ0d/kwFxPUUzTfiM/oW5vgicDD18ryaR01ez8wY= -github.com/ProtonMail/gopenpgp/v2 v2.4.0/go.mod h1:RFjoVjfhV8f78tjz/fLrp/OXkugL3QmWsiJq/fsQYA4= +github.com/ProtonMail/gopenpgp/v2 v2.4.2 h1:xPcQYAa3D3V2sDhJq0bYWwlWtxzTudxm1/XXHlSWcJo= +github.com/ProtonMail/gopenpgp/v2 v2.4.2/go.mod h1:0byYFEOo6x4F/1YqhN7Z6m015Cqnxllz3CGb5cjJueY= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= @@ -148,6 +158,7 @@ github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHG github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -167,6 +178,7 @@ github.com/aws/aws-sdk-go v1.34.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU github.com/aymerick/raymond v2.0.2+incompatible h1:VEp3GpgdAnv9B2GFyTvqgcKvY+mfKMjPOA3SbKLtnU0= github.com/aymerick/raymond v2.0.2+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -188,8 +200,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.0 h1:c8LkOFQTzuO0WBM/ae5HdGQuZPfPxp7lqBRwQRm4fSc= -github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= @@ -199,6 +211,7 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8= github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= @@ -240,8 +253,9 @@ github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1 github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= +github.com/containerd/cgroups v1.0.2 h1:mZBclaSgNDfPWtfhj2xJY28LZ9nYIgzB0pwSURPl6JM= +github.com/containerd/cgroups v1.0.2/go.mod h1:qpbpJ1jmlqsR9f2IyaLPsdkCdnt0rbDVqIDlhuu5tRY= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= @@ -255,14 +269,15 @@ github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.2/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.7 h1:rQyoYtj4KddB3bxG6SAqd4+08gePNyJjRqvOIfV3rkM= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= +github.com/containerd/containerd v1.5.9 h1:rs6Xg1gtIxaeyG+Smsb/0xaSDu1VgFhOCKBXxMxbsF4= +github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -291,11 +306,13 @@ github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJ github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= +github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= @@ -347,10 +364,12 @@ github.com/cucumber/messages-go/v10 v10.0.1/go.mod h1:kA5T38CBlBbYLU12TIrJ4fk4wS github.com/cucumber/messages-go/v10 v10.0.3 h1:m/9SD/K/A15WP7i1aemIv7cwvUw+viS51Ui5HBw1cdE= github.com/cucumber/messages-go/v10 v10.0.3/go.mod h1:9jMZ2Y8ZxjLY6TG2+x344nt5rXstVVDYSdS5ySfI1WY= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= +github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -360,20 +379,24 @@ github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8l github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/distribution/distribution/v3 v3.0.0-20210804104954-38ab4c606ee3/go.mod h1:gt38b7cvVKazi5XkHvINNytZXgTEntyhtyM3HQz46Nk= +github.com/distribution/distribution/v3 v3.0.0-20211118083504-a29a3c99a684/go.mod h1:UfCu3YXJJCI+IdnqGgYP82dk2+Joxmv+mUTVBES6wac= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= -github.com/docker/cli v20.10.7+incompatible h1:pv/3NqibQKphWZiAskMzdz8w0PRbtTaEB+f6NwdU7Is= -github.com/docker/cli v20.10.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v20.10.11+incompatible h1:tXU1ezXcruZQRrMP8RN2z9N91h+6egZTS1gsPsKantc= +github.com/docker/cli v20.10.11+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.6+incompatible h1:oXI3Vas8TI8Eu/EjH4srKHJBVqraSzJybhxY7Om9faQ= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U= +github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.4/go.mod h1:ofX3UI0Gz1TteYBjtgs07O36Pyasyp66D2uKT7H8W1c= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= @@ -390,8 +413,8 @@ github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj6 github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elastic/elastic-package v0.32.1 h1:GX0Kyoi8hRWvrq9jfjpkZmeQxsJkBfGJd8bDLYk2w+g= -github.com/elastic/elastic-package v0.32.1/go.mod h1:l1fEnF52XRBL6a5h6uAemtdViz2bjtjUtgdQcuRhEAY= +github.com/elastic/elastic-package v0.36.0 h1:EsDME4iLHQUSzxor7F2CPueHpPu/GNBL6D4VYUiIHRg= +github.com/elastic/elastic-package v0.36.0/go.mod h1:TUyhRXtf+kazrUthMF+5FtngcFJZtsgty0o/nnl8UFU= github.com/elastic/go-elasticsearch/v7 v7.16.0 h1:GHsxDFXIAlhSleXun4kwA89P7kQFADRChqvgOPeYP5A= github.com/elastic/go-elasticsearch/v7 v7.16.0/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= github.com/elastic/go-elasticsearch/v8 v8.0.0-20210317102009-a9d74cec0186 h1:F07rUXGNyhzJZKXI08EI/eAURqzhDqoRSdb//R+BOx4= @@ -479,25 +502,29 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/errors v0.19.8 h1:doM+tQdZbUm9gydV9yR+iQNmztbjj7I3sW4sIcAwIzc= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/strfmt v0.21.0 h1:hX2qEZKmYks+t0hKeb4VTJpUm2UYsdL3+DCid5swxIs= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= @@ -548,8 +575,9 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v3.3.0+incompatible h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -559,8 +587,10 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -605,6 +635,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSxrmI1w= +github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -618,6 +650,7 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -664,6 +697,7 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -754,7 +788,8 @@ github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= -github.com/jmoiron/sqlx v1.3.1/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= +github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= @@ -824,8 +859,10 @@ github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhR github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= @@ -835,6 +872,7 @@ github.com/magefile/mage v1.11.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXq github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -872,10 +910,12 @@ github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.11/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -890,7 +930,7 @@ github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceT github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/copystructure v1.1.1/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -907,15 +947,16 @@ github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGg github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1 h1:1O+1cHA1aujwEwwVMa2Xm2l+gIpUHyd3+D+d7LZh1kM= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -955,16 +996,20 @@ github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6 github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= @@ -975,8 +1020,9 @@ github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go. github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= @@ -1040,6 +1086,7 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1073,6 +1120,7 @@ github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43 github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= @@ -1268,6 +1316,7 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1285,19 +1334,17 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191122220453-ac88ee75c92c/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI= +golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1394,12 +1441,15 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d h1:62NvYBuaanGXR2ZOfwDFkhhl6X1DUgf8qg3GuQvxZsE= +golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1457,6 +1507,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1546,13 +1597,13 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211102192858-4dd72447c267/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1570,12 +1621,14 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1595,6 +1648,7 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1628,12 +1682,14 @@ golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200526224456-8b020aee10d2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1645,9 +1701,10 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1725,12 +1782,14 @@ google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1763,8 +1822,9 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 h1:Et6SkiuvnBn+SgrSYXs/BrUpGB4mbdwt4R3vaPIlicA= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1795,8 +1855,9 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0 h1:XT2/MFpuPFsEX2fWh3YQtHkZ+WYZFQRfaUgLZYj/p6A= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.43.0 h1:Eeu7bZtDZ2DpRCsLhUlcrLnvYaMK1Gz86a+hMVvELmM= +google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1869,8 +1930,8 @@ gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm0 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -helm.sh/helm/v3 v3.7.2 h1:xn1OxcZEpgKpp4CCpPz1KKUyb9gAtTouXV2E3S8ChYQ= -helm.sh/helm/v3 v3.7.2/go.mod h1:UXuiAn0+FfBpqbiMuwWt8/aAKkfJvnWLBJ6f4HcFs0M= +helm.sh/helm/v3 v3.8.0 h1:vlQQDDQkrH4NECOFbGcwjjKyHL5Sa3xNLjMxXm7fMVo= +helm.sh/helm/v3 v3.8.0/go.mod h1:0nYPSuvuj8TTJDLRSAfbzGGbazPZsayaDpP8s9FfZT8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1885,86 +1946,87 @@ howett.net/plist v0.0.0-20201203080718-1454fab16a06/go.mod h1:vMygbs4qMhSZSc4lCU k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk= -k8s.io/api v0.23.1 h1:ncu/qfBfUoClqwkTGbeRqqOqBCRoUAflMuOaOD7J0c8= k8s.io/api v0.23.1/go.mod h1:WfXnOnwSqNtG62Y1CdjoMxh7r7u9QXGCkA1u0na2jgo= -k8s.io/apiextensions-apiserver v0.22.4 h1:2iGpcVyw4MnAyyXVJU2Xg6ZsbIxAOfRHo0LF5A5J0RA= -k8s.io/apiextensions-apiserver v0.22.4/go.mod h1:kH9lxD8dbJ+k0ZizGET55lFgdGjO8t45fgZnCVdZEpw= +k8s.io/api v0.23.3 h1:KNrME8KHGr12Ozjf8ytOewKzZh6hl/hHUZeHddT3a38= +k8s.io/api v0.23.3/go.mod h1:w258XdGyvCmnBj/vGzQMj6kzdufJZVUwEM1U2fRJwSQ= +k8s.io/apiextensions-apiserver v0.23.1 h1:xxE0q1vLOVZiWORu1KwNRQFsGWtImueOrqSl13sS5EU= +k8s.io/apiextensions-apiserver v0.23.1/go.mod h1:0qz4fPaHHsVhRApbtk3MGXNn2Q9M/cVWWhfHdY2SxiM= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= -k8s.io/apimachinery v0.23.1 h1:sfBjlDFwj2onG0Ijx5C+SrAoeUscPrmghm7wHP+uXlo= k8s.io/apimachinery v0.23.1/go.mod h1:SADt2Kl8/sttJ62RRsi9MIV4o8f5S3coArm0Iu3fBno= +k8s.io/apimachinery v0.23.3 h1:7IW6jxNzrXTsP0c8yXz2E5Yx/WTzVPTsHIx/2Vm0cIk= +k8s.io/apimachinery v0.23.3/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.22.4/go.mod h1:38WmcUZiiy41A7Aty8/VorWRa8vDGqoUzDf2XYlku0E= -k8s.io/cli-runtime v0.22.4/go.mod h1:x35r0ERHXr/MrbR1C6MPJxQ3xKG6+hXi9m2xLzlMPZA= -k8s.io/cli-runtime v0.23.1 h1:vHUZrq1Oejs0WaJnxs09mLHKScvIIl2hMSthhS8o8Yo= +k8s.io/apiserver v0.23.1/go.mod h1:Bqt0gWbeM2NefS8CjWswwd2VNAKN6lUKR85Ft4gippY= k8s.io/cli-runtime v0.23.1/go.mod h1:r9r8H/qfXo9w+69vwUL7LokKlLRKW5D6A8vUKCx+YL0= +k8s.io/cli-runtime v0.23.3 h1:aJiediw+uUbxkfO6BNulcAMTUoU9Om43g3R7rIkYqcw= +k8s.io/cli-runtime v0.23.3/go.mod h1:yA00O5pDqnjkBh8fkuugBbfIfjB1nOpz+aYLotbnOfc= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.4/go.mod h1:Yzw4e5e7h1LNHA4uqnMVrpEpUs1hJOiuBsJKIlRCHDA= -k8s.io/client-go v0.23.1 h1:Ma4Fhf/p07Nmj9yAB1H7UwbFHEBrSPg8lviR24U2GiQ= k8s.io/client-go v0.23.1/go.mod h1:6QSI8fEuqD4zgFK0xbdwfB/PthBsIxCJMa3s17WlcO0= -k8s.io/code-generator v0.22.4/go.mod h1:qjYl54pQ/emhkT0UxbufbREYJMWsHNNV/jSVwhYZQGw= +k8s.io/client-go v0.23.3 h1:23QYUmCQ/W6hW78xIwm3XqZrrKZM+LWDqW2zfo+szJs= +k8s.io/client-go v0.23.3/go.mod h1:47oMd+YvAOqZM7pcQ6neJtBiFH7alOyfunYN48VsmwE= +k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= +k8s.io/code-generator v0.23.1/go.mod h1:V7yn6VNTCWW8GqodYCESVo95fuiEg713S8B7WacWZDA= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.4 h1:7qwLJnua2ppGNZrRGDQ0vhsFebI39VGbZ4zdR5ArViI= -k8s.io/component-base v0.22.4/go.mod h1:MrSaQy4a3tFVViff8TZL6JHYSewNCLshZCwHYM58v5A= -k8s.io/component-helpers v0.22.4/go.mod h1:A50qTyczDFbhZDifIfS2zFrHuPk9UNOWPpvNZ+3RSIs= +k8s.io/component-base v0.23.1 h1:j/BqdZUWeWKCy2v/jcgnOJAzpRYWSbGcjGVYICko8Uc= +k8s.io/component-base v0.23.1/go.mod h1:6llmap8QtJIXGDd4uIWJhAq0Op8AtQo6bDW2RrNMTeo= +k8s.io/component-helpers v0.23.1/go.mod h1:ZK24U+2oXnBPcas2KolLigVVN9g5zOzaHLkHiQMFGr0= k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0 h1:bUO6drIvCIsvZ/XFgfxoGFQU/a4Qkh0iAlvUR7vlHJw= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 h1:E3J9oCLlaobFUqsjG9DfKbP2BmgwBL2p7pn0A3dG9W4= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kubectl v0.22.4 h1:ECUO1QWyZ70DiIKEfgBx+8i9D98uspVOwgc1APs/07w= -k8s.io/kubectl v0.22.4/go.mod h1:ok2qRT6y2Gy4+y+mniJVyUMKeBHP4OWS9Rdtf/QTM5I= +k8s.io/kubectl v0.23.1 h1:gmscOiV4Y4XIRIn14gQBBADoyyVrDZPbxRCTDga4RSA= +k8s.io/kubectl v0.23.1/go.mod h1:Ui7dJKdUludF8yWAOSN7JZEkOuYixX5yF6E6NjoukKE= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/metrics v0.22.4/go.mod h1:6F/iwuYb1w2QDCoHkeMFLf4pwHBcYKLm4mPtVHKYrIw= +k8s.io/metrics v0.23.1/go.mod h1:qXvsM1KANrc+ZZeFwj6Phvf0NLiC+d3RwcsLcdGc+xs= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs= k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -oras.land/oras-go v0.4.0/go.mod h1:VJcU+VE4rkclUbum5C0O7deEZbBYnsnpbGSACwTjOcg= +k8s.io/utils v0.0.0-20211116205334-6203023598ed h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE= +k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +oras.land/oras-go v1.1.0/go.mod h1:1A7vR/0KknT2UkJVWh+xMi95I/AhK8ZrxrnUSmXN0bQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s= sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/kustomize/api v0.8.11/go.mod h1:a77Ls36JdfCWojpUqR6m60pdGY1AYFix4AH83nJtY1g= sigs.k8s.io/kustomize/api v0.10.1 h1:KgU7hfYoscuqag84kxtzKdEC3mKMb99DPI3a0eaV1d0= sigs.k8s.io/kustomize/api v0.10.1/go.mod h1:2FigT1QN6xKdcnGS2Ppp1uIWrtWN28Ms8A3OZUZhwr8= -sigs.k8s.io/kustomize/cmd/config v0.9.13/go.mod h1:7547FLF8W/lTaDf0BDqFTbZxM9zqwEJqCKN9sSR0xSs= -sigs.k8s.io/kustomize/kustomize/v4 v4.2.0/go.mod h1:MOkR6fmhwG7hEDRXBYELTi5GSFcLwfqwzTRHW3kv5go= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= +sigs.k8s.io/kustomize/cmd/config v0.10.2/go.mod h1:K2aW7nXJ0AaT+VA/eO0/dzFLxmpFcTzudmAgDwPY1HQ= +sigs.k8s.io/kustomize/kustomize/v4 v4.4.1/go.mod h1:qOKJMMz2mBP+vcS7vK+mNz4HBLjaQSWRY22EF6Tb7Io= sigs.k8s.io/kustomize/kyaml v0.13.0 h1:9c+ETyNfSrVhxvphs+K2dzT3dh5oVPPEqPOE/cUpScY= sigs.k8s.io/kustomize/kyaml v0.13.0/go.mod h1:FTJxEZ86ScK184NpGSAQcfEqee0nul8oLCK30D47m4E= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= +sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From c6c29acb23aadd35933e524cdaa3bd7d7599e5f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 08:06:10 +0100 Subject: [PATCH 33/52] chore: use elastic-package for apm-server scenarios --- .ci/.e2e-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/.e2e-tests.yaml b/.ci/.e2e-tests.yaml index 4978c28bed..443ef14000 100644 --- a/.ci/.e2e-tests.yaml +++ b/.ci/.e2e-tests.yaml @@ -51,7 +51,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["debian_arm64", "debian_amd64", "sles15"] + platforms: ["fleet_elastic_pkg"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From b5896a84471383f4f3cf90c289e704660f70d6c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 08:06:32 +0100 Subject: [PATCH 34/52] chore: use elastic-package for apm-server scenarios --- .ci/.e2e-tests-for-elastic-agent.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/.e2e-tests-for-elastic-agent.yaml b/.ci/.e2e-tests-for-elastic-agent.yaml index 05d45f874b..16ab01b0c6 100644 --- a/.ci/.e2e-tests-for-elastic-agent.yaml +++ b/.ci/.e2e-tests-for-elastic-agent.yaml @@ -40,7 +40,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["debian_arm64", "debian_amd64", "sles15"] + platforms: ["fleet_elastic_pkg"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From cb4d70ad462fc89eea29859244d8001a20b58811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 10:24:56 +0100 Subject: [PATCH 35/52] Revert "chore: use elastic-package for apm-server scenarios" This reverts commit b5896a84471383f4f3cf90c289e704660f70d6c7. --- .ci/.e2e-tests-for-elastic-agent.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/.e2e-tests-for-elastic-agent.yaml b/.ci/.e2e-tests-for-elastic-agent.yaml index 16ab01b0c6..05d45f874b 100644 --- a/.ci/.e2e-tests-for-elastic-agent.yaml +++ b/.ci/.e2e-tests-for-elastic-agent.yaml @@ -40,7 +40,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["fleet_elastic_pkg"] + platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From b15b947a66f6b6b4b52f4c0f3085f07f5d3fe953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 10:24:59 +0100 Subject: [PATCH 36/52] Revert "chore: use elastic-package for apm-server scenarios" This reverts commit c6c29acb23aadd35933e524cdaa3bd7d7599e5f7. --- .ci/.e2e-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/.e2e-tests.yaml b/.ci/.e2e-tests.yaml index 443ef14000..4978c28bed 100644 --- a/.ci/.e2e-tests.yaml +++ b/.ci/.e2e-tests.yaml @@ -51,7 +51,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["fleet_elastic_pkg"] + platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From fd32a98e1c55443b1a6fa4bfa5ee3b5b6d10cf2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 10:37:20 +0100 Subject: [PATCH 37/52] chore: run dockerised tests only on debian --- .ci/.e2e-tests-for-elastic-agent.yaml | 2 +- .ci/.e2e-tests.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/.e2e-tests-for-elastic-agent.yaml b/.ci/.e2e-tests-for-elastic-agent.yaml index 05d45f874b..d2f81145a6 100644 --- a/.ci/.e2e-tests-for-elastic-agent.yaml +++ b/.ci/.e2e-tests-for-elastic-agent.yaml @@ -40,7 +40,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["debian_arm64", "debian_amd64", "sles15"] + platforms: ["debian_amd64"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] diff --git a/.ci/.e2e-tests.yaml b/.ci/.e2e-tests.yaml index 4978c28bed..284104ec17 100644 --- a/.ci/.e2e-tests.yaml +++ b/.ci/.e2e-tests.yaml @@ -51,7 +51,7 @@ SUITES: platforms: ["debian_arm64", "debian_amd64", "sles15"] - name: "APM Integration" tags: "apm_server" - platforms: ["debian_arm64", "debian_amd64", "sles15"] + platforms: ["debian_amd64"] - name: "Linux Integration" tags: "linux_integration" platforms: ["debian_arm64", "debian_amd64", "sles15"] From 57d5ee9335ff0a4ddee420515a408cf57367016f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 10:53:41 +0100 Subject: [PATCH 38/52] chore: do not print out tar extract command --- internal/installer/elasticagent_tar.go | 2 +- internal/installer/elasticagent_tar_macos.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/installer/elasticagent_tar.go b/internal/installer/elasticagent_tar.go index 28c435bba7..df417963f8 100644 --- a/internal/installer/elasticagent_tar.go +++ b/internal/installer/elasticagent_tar.go @@ -142,7 +142,7 @@ func (i *elasticAgentTARPackage) Preinstall(ctx context.Context) error { return err } - _, err = i.Exec(ctx, []string{"tar", "-xvf", binaryPath}) + _, err = i.Exec(ctx, []string{"tar", "-zxf", binaryPath}) if err != nil { return err } diff --git a/internal/installer/elasticagent_tar_macos.go b/internal/installer/elasticagent_tar_macos.go index e3b1ec3761..faf5223d47 100644 --- a/internal/installer/elasticagent_tar_macos.go +++ b/internal/installer/elasticagent_tar_macos.go @@ -130,7 +130,7 @@ func (i *elasticAgentTARDarwinPackage) Preinstall(ctx context.Context) error { return err } - _, err = i.Exec(ctx, []string{"tar", "-xvf", binaryPath}) + _, err = i.Exec(ctx, []string{"tar", "-zxf", binaryPath}) if err != nil { return err } From e8e98e1b5683879d023512e3df199a0ab145e9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 10:56:26 +0100 Subject: [PATCH 39/52] fix: keep a Docker deployer for docker-based tests --- e2e/_suites/fleet/fleet.go | 66 +++++++++++++----------- e2e/_suites/fleet/ingest_manager_test.go | 5 +- e2e/_suites/fleet/stand-alone.go | 12 ++--- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 38e2929ad9..c81a5ebd51 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -56,7 +56,8 @@ type FleetTestSuite struct { Version string // current elastic-agent version kibanaClient *kibana.Client deployer deploy.Deployment - BeatsProcess string // (optional) name of the Beats that must be present before installing the elastic-agent + dockerDeployer deploy.Deployment // used for docker related deployents, such as the stand-alone containers + BeatsProcess string // (optional) name of the Beats that must be present before installing the elastic-agent // date controls for queries AgentStoppedDate time.Time RuntimeDependenciesStartDate time.Time @@ -65,6 +66,13 @@ type FleetTestSuite struct { DefaultAPIKey string } +func (fts *FleetTestSuite) getDeployer() deploy.Deployment { + if fts.StandAlone { + return fts.dockerDeployer + } + return fts.deployer +} + // afterScenario destroys the state created by a scenario func (fts *FleetTestSuite) afterScenario() { defer func() { @@ -86,7 +94,7 @@ func (fts *FleetTestSuite) afterScenario() { if !fts.StandAlone { // for the centos/debian flavour we need to retrieve the internal log files for the elastic-agent, as they are not // exposed as container logs. For that reason we need to go through the installer abstraction - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) if log.IsLevelEnabled(log.DebugLevel) { err := agentInstaller.Logs(fts.currentContext) @@ -103,12 +111,12 @@ func (fts *FleetTestSuite) afterScenario() { } } else if log.IsLevelEnabled(log.DebugLevel) { // for the Docker image, we simply retrieve container logs - _ = fts.deployer.Logs(fts.currentContext, agentService) + _ = fts.getDeployer().Logs(fts.currentContext, agentService) } err := fts.unenrollHostname() if err != nil { - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) log.WithFields(log.Fields{ "err": err, "hostname": manifest.Hostname, @@ -117,7 +125,7 @@ func (fts *FleetTestSuite) afterScenario() { } env := fts.getProfileEnv() - _ = fts.deployer.Remove(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), []deploy.ServiceRequest{deploy.NewServiceRequest(serviceName)}, env) + _ = fts.getDeployer().Remove(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), []deploy.ServiceRequest{deploy.NewServiceRequest(serviceName)}, env) // TODO: Determine why this may be empty here before being cleared out if fts.CurrentTokenID != "" { @@ -292,7 +300,7 @@ func (fts *FleetTestSuite) theStandaloneAgentIsListedInFleetWithStatus(desiredSt retryCount := 0 agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) waitForAgents := func() error { retryCount++ @@ -368,7 +376,7 @@ func (fts *FleetTestSuite) anStaleAgentIsDeployedToFleetWithInstaller(version, i func (fts *FleetTestSuite) installCerts() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) err := agentInstaller.InstallCerts(fts.currentContext) if err != nil { @@ -396,7 +404,7 @@ func (fts *FleetTestSuite) anAgentIsUpgraded(desiredVersion string) error { } agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) return fts.kibanaClient.UpgradeAgent(fts.currentContext, manifest.Hostname, desiredVersion) } @@ -410,7 +418,7 @@ func (fts *FleetTestSuite) agentInVersion(version string) error { agentInVersionFn := func() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) agent, err := fts.kibanaClient.GetAgentByHostname(fts.currentContext, manifest.Hostname) if err != nil { return err @@ -437,7 +445,7 @@ func (fts *FleetTestSuite) agentInVersion(version string) error { func (fts *FleetTestSuite) agentRunPolicy(policyName string) error { agentRunPolicyFn := func() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) policies, err := fts.kibanaClient.ListPolicies(fts.currentContext) if err != nil { @@ -537,12 +545,12 @@ func (fts *FleetTestSuite) anAgentIsDeployedToFleetWithInstallerAndFleetServer(i agentService, } env := fts.getProfileEnv() - err := fts.deployer.Add(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), services, env) + err := fts.getDeployer().Add(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), services, env) if err != nil { return err } - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, installerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, installerType) err = deployAgentToFleet(fts.currentContext, agentInstaller, fts.CurrentToken) if err != nil { return err @@ -552,7 +560,7 @@ func (fts *FleetTestSuite) anAgentIsDeployedToFleetWithInstallerAndFleetServer(i func (fts *FleetTestSuite) processStateChangedOnTheHost(process string, state string) error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) if state == "started" { err := agentInstaller.Start(fts.currentContext) return err @@ -600,7 +608,7 @@ func (fts *FleetTestSuite) processStateChangedOnTheHost(process string, state st return err } - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) var srv deploy.ServiceRequest if fts.StandAlone { @@ -609,7 +617,7 @@ func (fts *FleetTestSuite) processStateChangedOnTheHost(process string, state st srv = deploy.NewServiceRequest(manifest.Name) } - return CheckProcessState(fts.currentContext, fts.deployer, srv, process, "stopped", 0) + return CheckProcessState(fts.currentContext, fts.getDeployer(), srv, process, "stopped", 0) } // bootstrapFleet this method creates the runtime dependencies for the Fleet test suite, being of special @@ -752,7 +760,7 @@ func (fts *FleetTestSuite) setup() error { func (fts *FleetTestSuite) theAgentIsListedInFleetWithStatus(desiredStatus string) error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) err := theAgentIsListedInFleetWithStatus(fts.currentContext, desiredStatus, manifest.Hostname) if err != nil { return err @@ -885,7 +893,7 @@ func theAgentIsListedInFleetWithStatus(ctx context.Context, desiredStatus string func (fts *FleetTestSuite) theFileSystemAgentFolderIsEmpty() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) pkgManifest, _ := agentInstaller.Inspect() cmd := []string{ @@ -911,14 +919,14 @@ func (fts *FleetTestSuite) theFileSystemAgentFolderIsEmpty() error { func (fts *FleetTestSuite) theHostIsRestarted() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - err := fts.deployer.Stop(fts.currentContext, agentService) + err := fts.getDeployer().Stop(fts.currentContext, agentService) if err != nil { log.WithField("err", err).Error("Could not stop the service") } utils.Sleep(time.Duration(utils.TimeoutFactor) * 10 * time.Second) - err = fts.deployer.Start(fts.currentContext, agentService) + err = fts.getDeployer().Start(fts.currentContext, agentService) if err != nil { log.WithField("err", err).Error("Could not start the service") } @@ -995,7 +1003,7 @@ func (fts *FleetTestSuite) theAgentIsReenrolledOnTheHost() error { log.Trace("Re-enrolling the agent on the host with same token") agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) err := agentInstaller.Enroll(fts.currentContext, fts.CurrentToken) if err != nil { @@ -1083,7 +1091,7 @@ func (fts *FleetTestSuite) theHostNameIsNotShownInTheAdminViewInTheSecurityApp() agentListedInSecurityFn := func() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) host, err := fts.kibanaClient.IsAgentListedInSecurityApp(fts.currentContext, manifest.Hostname) if err != nil { log.WithFields(log.Fields{ @@ -1125,7 +1133,7 @@ func (fts *FleetTestSuite) theHostNameIsShownInTheAdminViewInTheSecurityApp(stat agentListedInSecurityFn := func() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) matches, err := fts.kibanaClient.IsAgentListedInSecurityAppWithStatus(fts.currentContext, manifest.Hostname, status) if err != nil || !matches { log.WithFields(log.Fields{ @@ -1171,7 +1179,7 @@ func (fts *FleetTestSuite) anIntegrationIsSuccessfullyDeployedWithAgentAndInstal func (fts *FleetTestSuite) thePolicyResponseWillBeShownInTheSecurityApp() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) agentID, err := fts.kibanaClient.GetAgentIDByHostname(fts.currentContext, manifest.Hostname) if err != nil { return err @@ -1267,7 +1275,7 @@ func (fts *FleetTestSuite) thePolicyIsUpdatedToHaveMode(name string, mode string func (fts *FleetTestSuite) thePolicyWillReflectTheChangeInTheSecurityApp() error { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) agentID, err := fts.kibanaClient.GetAgentIDByHostname(fts.currentContext, manifest.Hostname) if err != nil { return err @@ -1343,12 +1351,12 @@ func (fts *FleetTestSuite) anAttemptToEnrollANewAgentFails() error { agentService, } env := fts.getProfileEnv() - err := fts.deployer.Add(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), services, env) + err := fts.getDeployer().Add(fts.currentContext, deploy.NewServiceRequest(common.FleetProfileName), services, env) if err != nil { return err } - agentInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, fts.InstallerType) + agentInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, fts.InstallerType) err = deployAgentToFleet(fts.currentContext, agentInstaller, fts.CurrentToken) if err == nil { @@ -1382,7 +1390,7 @@ func (fts *FleetTestSuite) unenrollHostname() error { defer span.End() agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) log.Tracef("Un-enrolling all agentIDs for %s", manifest.Hostname) agents, err := fts.kibanaClient.ListAgents(fts.currentContext) @@ -1544,7 +1552,7 @@ func inputs(integration string) []kibana.Input { func (fts *FleetTestSuite) getAgentOSData() (string, error) { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) agent, err := fts.kibanaClient.GetAgentByHostname(fts.currentContext, manifest.Hostname) if err != nil { return "", err @@ -1554,7 +1562,7 @@ func (fts *FleetTestSuite) getAgentOSData() (string, error) { func (fts *FleetTestSuite) getAgentDefaultAPIKey() (string, error) { agentService := deploy.NewServiceRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) agent, err := fts.kibanaClient.GetAgentByHostname(fts.currentContext, manifest.Hostname) if err != nil { return "", err diff --git a/e2e/_suites/fleet/ingest_manager_test.go b/e2e/_suites/fleet/ingest_manager_test.go index 1867d1ceec..193c362868 100644 --- a/e2e/_suites/fleet/ingest_manager_test.go +++ b/e2e/_suites/fleet/ingest_manager_test.go @@ -44,8 +44,9 @@ func setUpSuite() { imts = IngestManagerTestSuite{ Fleet: &FleetTestSuite{ - kibanaClient: kibanaClient, - deployer: deploy.New(common.Provider), + kibanaClient: kibanaClient, + deployer: deploy.New(common.Provider), + dockerDeployer: deploy.New("docker"), }, } } diff --git a/e2e/_suites/fleet/stand-alone.go b/e2e/_suites/fleet/stand-alone.go index d1705fdbc6..911c77ee5e 100644 --- a/e2e/_suites/fleet/stand-alone.go +++ b/e2e/_suites/fleet/stand-alone.go @@ -35,7 +35,7 @@ func (fts *FleetTestSuite) thereIsNewDataInTheIndexFromAgent() error { agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName).WithFlavour(fts.Image) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) result, err := searchAgentData(fts.currentContext, manifest.Hostname, fts.RuntimeDependenciesStartDate, minimumHitsCount, maxTimeout) if err != nil { return err @@ -48,7 +48,7 @@ func (fts *FleetTestSuite) thereIsNewDataInTheIndexFromAgent() error { func (fts *FleetTestSuite) theDockerContainerIsStopped(serviceName string) error { agentService := deploy.NewServiceContainerRequest(serviceName) - err := fts.deployer.Stop(fts.currentContext, agentService) + err := fts.getDeployer().Stop(fts.currentContext, agentService) if err != nil { return err } @@ -62,7 +62,7 @@ func (fts *FleetTestSuite) thereIsNoNewDataInTheIndexAfterAgentShutsDown() error minimumHitsCount := 1 agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName) - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) result, err := searchAgentData(fts.currentContext, manifest.Hostname, fts.AgentStoppedDate, minimumHitsCount, maxTimeout) if err != nil { if strings.Contains(err.Error(), "type:index_not_found_exception") { @@ -97,7 +97,7 @@ func (fts *FleetTestSuite) startStandAloneAgent(image string, flavour string, en // a. downloaded from the GCP bucket // b. fetched from the local beats binaries agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName) - dockerInstaller, _ := installer.Attach(fts.currentContext, fts.deployer, agentService, "docker") + dockerInstaller, _ := installer.Attach(fts.currentContext, fts.getDeployer(), agentService, "docker") dockerInstaller.Preinstall(fts.currentContext) arch := utils.GetArchitecture() @@ -135,7 +135,7 @@ func (fts *FleetTestSuite) startStandAloneAgent(image string, flavour string, en agentService := deploy.NewServiceContainerRequest(common.ElasticAgentServiceName).WithFlavour(flavour) - err = fts.deployer.Add(fts.currentContext, deploy.NewServiceContainerRequest(common.FleetProfileName), []deploy.ServiceRequest{agentService}, common.ProfileEnv) + err = fts.getDeployer().Add(fts.currentContext, deploy.NewServiceContainerRequest(common.FleetProfileName), []deploy.ServiceRequest{agentService}, common.ProfileEnv) if err != nil { log.Error("Could not deploy the elastic-agent") return err @@ -143,7 +143,7 @@ func (fts *FleetTestSuite) startStandAloneAgent(image string, flavour string, en fts.Image = image - manifest, _ := fts.deployer.Inspect(fts.currentContext, agentService) + manifest, _ := fts.getDeployer().Inspect(fts.currentContext, agentService) err = fts.installTestTools(manifest.Name) if err != nil { From 20e533029c92a4747e9e1b2e002b077caa44ed00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 16:43:55 +0100 Subject: [PATCH 40/52] fix: install docker for ARM --- .ci/ansible/playbook.yml | 5 +++++ .ci/ansible/requirements.yml | 1 + 2 files changed, 6 insertions(+) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index f7afb41398..3906fb5b34 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -108,6 +108,11 @@ - role: geerlingguy.docker docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] + when: '"arm64" not in nodeLabel' + - role: geerlingguy.docker_arm + docker_daemon_options: + default-ulimit: ["nofile=1024000:1024000"] + when: '"arm64" in nodeLabel' - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] - role: andrewrothstein.kind diff --git a/.ci/ansible/requirements.yml b/.ci/ansible/requirements.yml index 2d937fe000..424d54a2b2 100644 --- a/.ci/ansible/requirements.yml +++ b/.ci/ansible/requirements.yml @@ -1,4 +1,5 @@ - src: geerlingguy.docker +- src: geerlingguy.docker_arm - src: geerlingguy.helm - src: andrewrothstein.kubectl - src: andrewrothstein.kind From de618d8fc7b912c894c39d69ad921d5a708bf1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 16:48:50 +0100 Subject: [PATCH 41/52] fix: remove invalid role vars for ARM --- .ci/ansible/playbook.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 3906fb5b34..3c7bd865c8 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -110,8 +110,6 @@ default-ulimit: ["nofile=1024000:1024000"] when: '"arm64" not in nodeLabel' - role: geerlingguy.docker_arm - docker_daemon_options: - default-ulimit: ["nofile=1024000:1024000"] when: '"arm64" in nodeLabel' - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] From 2e689b45ab3b445ddfb941e3dfe0631c5be91e72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Wed, 2 Feb 2022 19:00:10 +0100 Subject: [PATCH 42/52] fix: install python-pip on ARM first --- .ci/ansible/playbook.yml | 4 ++++ .ci/ansible/requirements.yml | 1 + 2 files changed, 5 insertions(+) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 3c7bd865c8..3b0cde445e 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -109,7 +109,10 @@ docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] when: '"arm64" not in nodeLabel' + - role: geerlingguy.pip + when: '"arm64" in nodeLabel' - role: geerlingguy.docker_arm + docker_install_compose: true when: '"arm64" in nodeLabel' - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] @@ -123,6 +126,7 @@ vars: ansible_python_interpreter: "auto" ansible_user: "{{nodeUser}}" + pip_package: "python3-pip" tasks: - name: Install deps include_tasks: tasks/install_deps.yml diff --git a/.ci/ansible/requirements.yml b/.ci/ansible/requirements.yml index 424d54a2b2..712b5888ac 100644 --- a/.ci/ansible/requirements.yml +++ b/.ci/ansible/requirements.yml @@ -1,3 +1,4 @@ +- src: geerlingguy.pip - src: geerlingguy.docker - src: geerlingguy.docker_arm - src: geerlingguy.helm From ecad65328cd0929bf486a85a57942a215dc444b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 3 Feb 2022 09:54:02 +0100 Subject: [PATCH 43/52] fix: install docker on ARM properly See https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ --- .ci/ansible/playbook.yml | 5 ----- .ci/ansible/tasks/install_deps.yml | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index 3b0cde445e..e1ec5ee341 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -109,11 +109,6 @@ docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] when: '"arm64" not in nodeLabel' - - role: geerlingguy.pip - when: '"arm64" in nodeLabel' - - role: geerlingguy.docker_arm - docker_install_compose: true - when: '"arm64" in nodeLabel' - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] - role: andrewrothstein.kind diff --git a/.ci/ansible/tasks/install_deps.yml b/.ci/ansible/tasks/install_deps.yml index 05dbc67ba8..4341bffa37 100644 --- a/.ci/ansible/tasks/install_deps.yml +++ b/.ci/ansible/tasks/install_deps.yml @@ -60,3 +60,9 @@ group: "{{ ansible_user }}" mode: '0600' when: ansible_distribution in ["CentOS", "Debian", "Fedora", "RedHat", "Ubuntu"] + +- name: Install Docker for ARM (Debian, Ubuntu) + ansible.builtin.shell: curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh + when: + - ansible_distribution in ["Debian", "Ubuntu"] + - '"arm64" in nodeLabel' From 96f262c7b9a3347b736533ffd0e1ed402568ee83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 3 Feb 2022 11:03:24 +0100 Subject: [PATCH 44/52] fix: install docker on Suse --- .ci/ansible/playbook.yml | 4 +++- .ci/ansible/tasks/install_deps.yml | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.ci/ansible/playbook.yml b/.ci/ansible/playbook.yml index e1ec5ee341..c6a7c83cff 100644 --- a/.ci/ansible/playbook.yml +++ b/.ci/ansible/playbook.yml @@ -108,7 +108,9 @@ - role: geerlingguy.docker docker_daemon_options: default-ulimit: ["nofile=1024000:1024000"] - when: '"arm64" not in nodeLabel' + when: + - '"arm64" not in nodeLabel' + - 'ansible_os_family not in ["Suse"]' - role: andrewrothstein.kubectl when: suite in ["kubernetes-autodiscover", "helm"] - role: andrewrothstein.kind diff --git a/.ci/ansible/tasks/install_deps.yml b/.ci/ansible/tasks/install_deps.yml index 4341bffa37..cf70235161 100644 --- a/.ci/ansible/tasks/install_deps.yml +++ b/.ci/ansible/tasks/install_deps.yml @@ -18,6 +18,7 @@ name: - autoconf - bison + - docker - flex - gcc - gcc-c++ From 6d0187d6ec555abf6e0962561476fd8798f4f208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 3 Feb 2022 16:03:57 +0100 Subject: [PATCH 45/52] fix: typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Noémi Ványi --- internal/kibana/policies.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/kibana/policies.go b/internal/kibana/policies.go index 2abe4e312c..797e82e4c8 100644 --- a/internal/kibana/policies.go +++ b/internal/kibana/policies.go @@ -195,7 +195,7 @@ type DataStream struct { type Input struct { Type string `json:"type"` Enabled bool `json:"enabled"` - Streams []Stream `json:"streams",omitempty` + Streams []Stream `json:"streams,omitempty"` Vars Vars `json:"vars,omitempty"` Config interface{} `json:"config,omitempty"` CompiledStream interface{} `json:"compiled_stream,omitempty"` From 4b384e9e7a2b72ad60735448b17ba34d620a1e03 Mon Sep 17 00:00:00 2001 From: Adam Stokes <51892+adam-stokes@users.noreply.github.com> Date: Thu, 3 Feb 2022 11:30:09 -0500 Subject: [PATCH 46/52] Fix error checking for revoked enroll token Signed-off-by: Adam Stokes <51892+adam-stokes@users.noreply.github.com> --- e2e/_suites/fleet/fleet.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index c81a5ebd51..37f896fc64 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -1371,7 +1371,7 @@ func (fts *FleetTestSuite) anAttemptToEnrollANewAgentFails() error { // checking the error message produced by the install command in TAR installer // to distinguish from other install errors - if err != nil && strings.HasPrefix(err.Error(), "Failed to install the agent with subcommand:") { + if err != nil && strings.Contains(err.Error(), "Error: enroll command failed") { log.WithFields(log.Fields{ "err": err, "token": fts.CurrentToken, From c0f7c6cba868afbc7d82416ba887da278e3d8949 Mon Sep 17 00:00:00 2001 From: Adam Stokes <51892+adam-stokes@users.noreply.github.com> Date: Thu, 3 Feb 2022 12:36:08 -0500 Subject: [PATCH 47/52] fix logging Signed-off-by: Adam Stokes <51892+adam-stokes@users.noreply.github.com> --- internal/kibana/fleet.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/kibana/fleet.go b/internal/kibana/fleet.go index 0ce66c7df5..a8024eea86 100644 --- a/internal/kibana/fleet.go +++ b/internal/kibana/fleet.go @@ -76,7 +76,7 @@ func NewFleetConfig(token string) (*FleetConfig, error) { // Flags bootstrap flags for fleet server func (cfg FleetConfig) Flags() []string { flags := []string{ - "-e", "-v", "--force", "--insecure", "--enrollment-token=" + cfg.EnrollmentToken, + "--e", "--force", "--insecure", "--enrollment-token=" + cfg.EnrollmentToken, "--url", cfg.FleetServerURL(), } From f43683ed9aa2ca83493e7d49b00896afa4dcb3b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 3 Feb 2022 16:33:34 +0100 Subject: [PATCH 48/52] chore: use empty streams if error --- e2e/_suites/fleet/fleet.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 37f896fc64..64c0848d99 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -200,7 +200,8 @@ func (fts *FleetTestSuite) beforeScenario() { for _, item := range jsonData.Children() { var streams []kibana.Stream if err := json.Unmarshal(item.Path("streams").Bytes(), &streams); err != nil { - return err + log.WithError(err).Warn("Could not unmarshall streams, will use an empty array instead") + streams = []kibana.Stream{} } if item.Path("type").Data().(string) == "system/metrics" { From 49f64e6569a6d9c3ccf4413986d5adf2ba568f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 4 Feb 2022 14:08:56 +0100 Subject: [PATCH 49/52] fix: pass fleet-server policy to fleet-server on bootstrap --- .../elastic-agent/fleet-server/docker-compose.yml | 1 + e2e/_suites/fleet/fleet.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml index cfba4dde99..5b422a7059 100644 --- a/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml +++ b/cli/config/compose/services/elastic-agent/fleet-server/docker-compose.yml @@ -15,6 +15,7 @@ services: - "FLEET_SERVER_INSECURE_HTTP=${fleetServerMode:-0}" - "FLEET_SERVER_PORT=${fleetServerPort:-8220}" - "FLEET_SERVER_SERVICE_TOKEN=${fleetServerServiceToken:-}" + - "FLEET_SERVER_POLICY_ID=${fleetServerPolicyId:-}" - "FLEET_ENROLL=${fleetEnroll:-1}" - "FLEET_ENROLLMENT_TOKEN=${fleetEnrollmentToken:-}" - "FLEET_INSECURE=${fleetInsecure:-0}" diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 64c0848d99..5719a7cbd8 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -655,6 +655,18 @@ func bootstrapFleet(ctx context.Context, env map[string]string) error { }).Fatal("Fleet could not be recreated") } + fleetServicePolicy, err := kibanaClient.CreatePolicy(ctx) + if err != nil { + log.WithFields(log.Fields{ + "error": err, + }).Fatal("Could not create a policy for Fleet Server") + } + log.WithFields(log.Fields{ + "id": fleetServicePolicy.ID, + "name": fleetServicePolicy.Name, + "description": fleetServicePolicy.Description, + }).Info("Fleet Server Policy created") + serviceToken, err := elasticsearch.GetAPIToken(ctx) if err != nil { log.WithFields(log.Fields{ @@ -670,6 +682,7 @@ func bootstrapFleet(ctx context.Context, env map[string]string) error { fleetServerEnv["fleetServerPort"] = "8220" fleetServerEnv["fleetInsecure"] = "1" fleetServerEnv["fleetServerServiceToken"] = serviceToken.AccessToken + fleetServerEnv["fleetServerPolicyId"] = fleetServicePolicy.ID fleetServerSrv := deploy.ServiceRequest{ Name: common.ElasticAgentServiceName, From be2e305f883e6ba9128ae3c8d32881b6cab7b778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 4 Feb 2022 14:12:38 +0100 Subject: [PATCH 50/52] fix: retrieve default fleet-server policy instead of creating a new one --- e2e/_suites/fleet/fleet.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index 5719a7cbd8..f3824479dc 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -655,17 +655,17 @@ func bootstrapFleet(ctx context.Context, env map[string]string) error { }).Fatal("Fleet could not be recreated") } - fleetServicePolicy, err := kibanaClient.CreatePolicy(ctx) + fleetServicePolicy, err := kibanaClient.GetDefaultPolicy(ctx, true) if err != nil { log.WithFields(log.Fields{ "error": err, - }).Fatal("Could not create a policy for Fleet Server") + }).Fatal("Could not get Fleet Server's default policy") } log.WithFields(log.Fields{ "id": fleetServicePolicy.ID, "name": fleetServicePolicy.Name, "description": fleetServicePolicy.Description, - }).Info("Fleet Server Policy created") + }).Info("Fleet Server Policy retrieved") serviceToken, err := elasticsearch.GetAPIToken(ctx) if err != nil { From 34eedbe966d969074b2d000b19ebad3badc430f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Fri, 4 Feb 2022 19:48:07 +0100 Subject: [PATCH 51/52] chore: restart services with restart command Instead of calling stop & start right after it, we are leveraging services ability to be restarted. For linux, systemctl will use "restart", for MacOS it will use "stop and start", for Windows, it's not supported yet --- e2e/_suites/fleet/fleet.go | 6 +----- internal/deploy/base.go | 5 +++-- internal/installer/base.go | 17 +++++++++++++++++ internal/installer/elasticagent_deb.go | 15 +++++++++++++++ internal/installer/elasticagent_docker.go | 16 ++++++++++++++++ internal/installer/elasticagent_rpm.go | 15 +++++++++++++++ internal/installer/elasticagent_tar.go | 16 ++++++++++++++++ internal/installer/elasticagent_tar_macos.go | 9 +++++++++ internal/installer/elasticagent_zip.go | 5 +++++ 9 files changed, 97 insertions(+), 7 deletions(-) diff --git a/e2e/_suites/fleet/fleet.go b/e2e/_suites/fleet/fleet.go index f3824479dc..dbdc83448b 100644 --- a/e2e/_suites/fleet/fleet.go +++ b/e2e/_suites/fleet/fleet.go @@ -566,15 +566,11 @@ func (fts *FleetTestSuite) processStateChangedOnTheHost(process string, state st err := agentInstaller.Start(fts.currentContext) return err } else if state == "restarted" { - err := agentInstaller.Stop(fts.currentContext) + err := agentInstaller.Restart(fts.currentContext) if err != nil { return err } - err = agentInstaller.Start(fts.currentContext) - if err != nil { - return err - } return nil } else if state == "uninstalled" { err := agentInstaller.Uninstall(fts.currentContext) diff --git a/internal/deploy/base.go b/internal/deploy/base.go index 1329821962..fadd9a22de 100644 --- a/internal/deploy/base.go +++ b/internal/deploy/base.go @@ -39,8 +39,9 @@ type ServiceOperator interface { Logs(ctx context.Context) error Postinstall(ctx context.Context) error Preinstall(ctx context.Context) error - Start(ctx context.Context) error // will start a service - Stop(ctx context.Context) error // will stop a service + Restart(ctx context.Context) error // will restart a service + Start(ctx context.Context) error // will start a service + Stop(ctx context.Context) error // will stop a service Uninstall(ctx context.Context) error } diff --git a/internal/installer/base.go b/internal/installer/base.go index 07c4c6c4de..145d5ad9eb 100644 --- a/internal/installer/base.go +++ b/internal/installer/base.go @@ -95,6 +95,23 @@ func systemCtlPostInstall(ctx context.Context, linux string, artifact string, ex return nil } +func systemCtlRestart(ctx context.Context, linux string, artifact string, execFn func(ctx context.Context, args []string) (string, error)) error { + cmds := systemd.RestartCmds(artifact) + span, _ := apm.StartSpanOptions(ctx, "Restarting "+artifact+" service", artifact+"."+linux+".restart", apm.SpanOptions{ + Parent: apm.SpanFromContext(ctx).TraceContext(), + }) + span.Context.SetLabel("arguments", cmds) + span.Context.SetLabel("artifact", artifact) + span.Context.SetLabel("linux", linux) + defer span.End() + + _, err := execFn(ctx, cmds) + if err != nil { + return err + } + return nil +} + func systemCtlStart(ctx context.Context, linux string, artifact string, execFn func(ctx context.Context, args []string) (string, error)) error { cmds := systemd.StartCmds(artifact) span, _ := apm.StartSpanOptions(ctx, "Starting "+artifact+" service", artifact+"."+linux+".start", apm.SpanOptions{ diff --git a/internal/installer/elasticagent_deb.go b/internal/installer/elasticagent_deb.go index f26e58814e..0fa8c2f6bd 100644 --- a/internal/installer/elasticagent_deb.go +++ b/internal/installer/elasticagent_deb.go @@ -181,6 +181,21 @@ func (i *elasticAgentDEBPackage) Preinstall(ctx context.Context) error { return installArtifactFn(ctx, "elastic-agent") } +// Restart will restart a service +func (i *elasticAgentDEBPackage) Restart(ctx context.Context) error { + for _, bp := range i.service.BackgroundProcesses { + if strings.EqualFold(bp, "filebeat") || strings.EqualFold(bp, "metricbeat") { + // restart the dependant binary first + err := systemCtlRestart(ctx, "debian", bp, i.Exec) + if err != nil { + return err + } + } + } + + return systemCtlRestart(ctx, "debian", "elastic-agent", i.Exec) +} + // Start will start a service func (i *elasticAgentDEBPackage) Start(ctx context.Context) error { for _, bp := range i.service.BackgroundProcesses { diff --git a/internal/installer/elasticagent_docker.go b/internal/installer/elasticagent_docker.go index 5b7dbd9040..bc0d3f66c0 100644 --- a/internal/installer/elasticagent_docker.go +++ b/internal/installer/elasticagent_docker.go @@ -126,6 +126,22 @@ func (i *elasticAgentDockerPackage) Preinstall(ctx context.Context) error { ) } +// Restart will restart a service +func (i *elasticAgentDockerPackage) Restart(ctx context.Context) error { + cmds := []string{"systemctl", "restart", "elastic-agent"} + span, _ := apm.StartSpanOptions(ctx, "Restarting Elastic Agent service", "elastic-agent.docker.restart", apm.SpanOptions{ + Parent: apm.SpanFromContext(ctx).TraceContext(), + }) + span.Context.SetLabel("arguments", cmds) + defer span.End() + + _, err := i.Exec(ctx, cmds) + if err != nil { + return err + } + return nil +} + // Start will start a service func (i *elasticAgentDockerPackage) Start(ctx context.Context) error { cmds := []string{"systemctl", "start", "elastic-agent"} diff --git a/internal/installer/elasticagent_rpm.go b/internal/installer/elasticagent_rpm.go index 8c69e09c79..b25c4b8686 100644 --- a/internal/installer/elasticagent_rpm.go +++ b/internal/installer/elasticagent_rpm.go @@ -185,6 +185,21 @@ func (i *elasticAgentRPMPackage) Preinstall(ctx context.Context) error { return installArtifactFn(ctx, "elastic-agent") } +// Restart will restart a service +func (i *elasticAgentRPMPackage) Restart(ctx context.Context) error { + for _, bp := range i.service.BackgroundProcesses { + if strings.EqualFold(bp, "filebeat") || strings.EqualFold(bp, "metricbeat") { + // start the dependant binary first + err := systemCtlRestart(ctx, "centos", bp, i.Exec) + if err != nil { + return err + } + } + } + + return systemCtlRestart(ctx, "centos", "elastic-agent", i.Exec) +} + // Start will start a service func (i *elasticAgentRPMPackage) Start(ctx context.Context) error { for _, bp := range i.service.BackgroundProcesses { diff --git a/internal/installer/elasticagent_tar.go b/internal/installer/elasticagent_tar.go index df417963f8..1cb1a67334 100644 --- a/internal/installer/elasticagent_tar.go +++ b/internal/installer/elasticagent_tar.go @@ -169,6 +169,22 @@ func (i *elasticAgentTARPackage) Preinstall(ctx context.Context) error { } +// Restart will restart a service +func (i *elasticAgentTARPackage) Restart(ctx context.Context) error { + cmds := []string{"systemctl", "restart", "elastic-agent"} + span, _ := apm.StartSpanOptions(ctx, "Restarting Elastic Agent service", "elastic-agent.tar.restart", apm.SpanOptions{ + Parent: apm.SpanFromContext(ctx).TraceContext(), + }) + span.Context.SetLabel("arguments", cmds) + defer span.End() + + _, err := i.Exec(ctx, cmds) + if err != nil { + return err + } + return nil +} + // Start will start a service func (i *elasticAgentTARPackage) Start(ctx context.Context) error { cmds := []string{"systemctl", "start", "elastic-agent"} diff --git a/internal/installer/elasticagent_tar_macos.go b/internal/installer/elasticagent_tar_macos.go index faf5223d47..0a7d95a636 100644 --- a/internal/installer/elasticagent_tar_macos.go +++ b/internal/installer/elasticagent_tar_macos.go @@ -140,6 +140,15 @@ func (i *elasticAgentTARDarwinPackage) Preinstall(ctx context.Context) error { return nil } +// Restart will restart a service +func (i *elasticAgentTARDarwinPackage) Restart(ctx context.Context) error { + err := i.Stop(ctx) + if err != nil { + return err + } + return i.Start(ctx) +} + // Start will start a service func (i *elasticAgentTARDarwinPackage) Start(ctx context.Context) error { cmds := []string{"launchctl", "start", "elastic-agent"} diff --git a/internal/installer/elasticagent_zip.go b/internal/installer/elasticagent_zip.go index 06ebddf191..b54abd676b 100644 --- a/internal/installer/elasticagent_zip.go +++ b/internal/installer/elasticagent_zip.go @@ -143,6 +143,11 @@ func (i *elasticAgentZIPPackage) Preinstall(ctx context.Context) error { return nil } +// Restart will restart a service +func (i *elasticAgentZIPPackage) Restart(ctx context.Context) error { + return nil +} + // Start will start a service func (i *elasticAgentZIPPackage) Start(ctx context.Context) error { return nil From fc29242727c8c43bb0f2efa1ec1d28deb6cbc3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 7 Feb 2022 19:13:03 +0100 Subject: [PATCH 52/52] chore: increase expire timeout of the service token to the max (1h) --- cli/config/compose/profiles/fleet/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/config/compose/profiles/fleet/docker-compose.yml b/cli/config/compose/profiles/fleet/docker-compose.yml index d1f8c334ca..ef5e337f3f 100644 --- a/cli/config/compose/profiles/fleet/docker-compose.yml +++ b/cli/config/compose/profiles/fleet/docker-compose.yml @@ -15,6 +15,7 @@ services: - xpack.security.enabled=true - xpack.security.authc.api_key.enabled=true - xpack.security.authc.token.enabled=true + - xpack.security.authc.token.timeout=60m - ELASTIC_USERNAME=admin - ELASTIC_PASSWORD=changeme image: "docker.elastic.co/elasticsearch/elasticsearch:${stackVersion:-8.1.0-aa69d697-SNAPSHOT}"