From f0da6811f95298dedf3cbbfe9fca8591b1365c11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Tue, 27 Oct 2020 13:01:02 +0100 Subject: [PATCH] Add new licence status: expired (#22180) ## What does this PR do? This PR adds a new licence state named `Expired`. Previously, this prevented Beats from connecting to ES. ## Why is it important? Beats were not able to parse expired licences. This problem prevented users from using the features of the software which does not require a licence. ## Related issues Closes #21112 --- CHANGELOG.next.asciidoc | 1 + x-pack/libbeat/licenser/license.go | 5 +++++ x-pack/libbeat/licenser/license_test.go | 5 +++++ .../xpack-with-relax-expired-license-uuid.json | 13 +++++++++++++ x-pack/libbeat/licenser/types.go | 2 ++ 5 files changed, 26 insertions(+) create mode 100644 x-pack/libbeat/licenser/testdata/xpack-with-relax-expired-license-uuid.json diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 99008bf7181..1235422f1dc 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -188,6 +188,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - The `o365input` and `o365` module now recover from an authentication problem or other fatal errors, instead of terminating. {pull}21259[21258] - Orderly close processors when processing pipelines are not needed anymore to release their resources. {pull}16349[16349] - Fix memory leak and events duplication in docker autodiscover and add_docker_metadata. {pull}21851[21851] +- Fix parsing of expired licences. {issue}21112[21112] {pull}22180[22180] *Auditbeat* diff --git a/x-pack/libbeat/licenser/license.go b/x-pack/libbeat/licenser/license.go index e1c64fb314b..179c1c2f088 100644 --- a/x-pack/libbeat/licenser/license.go +++ b/x-pack/libbeat/licenser/license.go @@ -68,6 +68,11 @@ func (l *License) IsActive() bool { return l.Status == Active } +// IsExpired returns true if the licence has expired. +func (l *License) IsExpired() bool { + return l.Status == Expired +} + // IsTrial returns true if the remote cluster is in trial mode. func (l *License) IsTrial() bool { return l.Type == Trial diff --git a/x-pack/libbeat/licenser/license_test.go b/x-pack/libbeat/licenser/license_test.go index d8c8882c2fb..f21e6931e9b 100644 --- a/x-pack/libbeat/licenser/license_test.go +++ b/x-pack/libbeat/licenser/license_test.go @@ -132,6 +132,11 @@ func TestIsActive(t *testing.T) { l: License{Status: Inactive}, expected: false, }, + { + name: "expired", + l: License{Status: Expired}, + expected: false, + }, } for _, test := range tests { diff --git a/x-pack/libbeat/licenser/testdata/xpack-with-relax-expired-license-uuid.json b/x-pack/libbeat/licenser/testdata/xpack-with-relax-expired-license-uuid.json new file mode 100644 index 00000000000..9a933ca3de9 --- /dev/null +++ b/x-pack/libbeat/licenser/testdata/xpack-with-relax-expired-license-uuid.json @@ -0,0 +1,13 @@ +{ + "build": { + "hash": "053779d", + "date": "2018-07-20T05:25:16.206115Z" + }, + "license": { + "uid": "hello-license", + "type": "platinum", + "mode": "platinum", + "status": "expired", + "expiry_date_in_millis": 1588261199999 + } +} diff --git a/x-pack/libbeat/licenser/types.go b/x-pack/libbeat/licenser/types.go index 0e819275808..f0d3b64898d 100644 --- a/x-pack/libbeat/licenser/types.go +++ b/x-pack/libbeat/licenser/types.go @@ -25,11 +25,13 @@ type State int const ( Inactive State = iota Active + Expired ) var stateLookup = map[string]State{ "inactive": Inactive, "active": Active, + "expired": Expired, } var licenseLookup = map[string]LicenseType{