chef-licensing 0.4.44 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/chef-licensing.gemspec +6 -3
- data/lib/chef-licensing/config.rb +9 -1
- data/lib/chef-licensing/context.rb +36 -1
- data/lib/chef-licensing/exceptions/invalid_file_format_version.rb +10 -0
- data/lib/chef-licensing/exceptions/license_file_corrupted.rb +9 -0
- data/lib/chef-licensing/exceptions/unsupported_content_type.rb +9 -0
- data/lib/chef-licensing/license.rb +5 -1
- data/lib/chef-licensing/license_key_fetcher/chef_licensing_interactions.yaml +85 -234
- data/lib/chef-licensing/license_key_fetcher/file.rb +71 -14
- data/lib/chef-licensing/license_key_fetcher/license_file/base.rb +63 -0
- data/lib/chef-licensing/license_key_fetcher/license_file/v3.rb +12 -0
- data/lib/chef-licensing/license_key_fetcher/license_file/v4.rb +27 -0
- data/lib/chef-licensing/license_key_fetcher.rb +45 -20
- data/lib/chef-licensing/list_license_keys.rb +9 -3
- data/lib/chef-licensing/restful_client/base.rb +62 -26
- data/lib/chef-licensing/restful_client/middleware/content_type_validator.rb +24 -0
- data/lib/chef-licensing/restful_client/middleware/exceptions_handler.rb +1 -3
- data/lib/chef-licensing/restful_client/v1.rb +0 -2
- data/lib/chef-licensing/tui_engine/tui_actions.rb +11 -88
- data/lib/chef-licensing/version.rb +1 -1
- data/lib/chef-licensing.rb +5 -0
- metadata +16 -13
- data/LICENSE +0 -1
- data/lib/chef-licensing/exceptions/license_generation_failed.rb +0 -9
- data/lib/chef-licensing/exceptions/license_generation_rejected.rb +0 -7
- data/lib/chef-licensing/license_key_generator.rb +0 -47
@@ -1,8 +1,5 @@
|
|
1
1
|
require_relative "../license_key_validator"
|
2
|
-
require_relative "../license_key_generator"
|
3
2
|
require_relative "../exceptions/invalid_license"
|
4
|
-
require_relative "../exceptions/license_generation_failed"
|
5
|
-
require_relative "../exceptions/license_generation_rejected"
|
6
3
|
require_relative "../license_key_fetcher/base"
|
7
4
|
require_relative "../config"
|
8
5
|
require_relative "../context"
|
@@ -46,9 +43,12 @@ module ChefLicensing
|
|
46
43
|
def is_license_allowed?(input)
|
47
44
|
client_api_call(license_id)
|
48
45
|
self.license_type = get_license_type
|
46
|
+
# When user enters the license via TUI, we need to check if the license type is commercial to display warnings.
|
47
|
+
input[:is_commercial] = license_type == :commercial ? true : false
|
48
|
+
input[:license_type] = license_type
|
49
49
|
if license_restricted?(license_type)
|
50
50
|
# Existing license keys needs to be fetcher to show details of existing license of license type which is restricted.
|
51
|
-
# However, if user is trying to add
|
51
|
+
# However, if user is trying to add Free Tier License, and user has active trial license, we fetch the trial license key
|
52
52
|
if license_type == :free && LicenseKeyFetcher::File.user_has_active_trial_license?(@opts)
|
53
53
|
existing_license_keys_in_file = LicenseKeyFetcher::File.fetch_license_keys_based_on_type(:trial, @opts)
|
54
54
|
else
|
@@ -69,65 +69,24 @@ module ChefLicensing
|
|
69
69
|
input[:license_expiration_date] = Date.parse(license.expiration_date).strftime("%a, %d %b %Y")
|
70
70
|
input[:number_of_days_in_expiration] = license.number_of_days_in_expiration
|
71
71
|
"about_to_expire"
|
72
|
+
elsif license.exhausted? && (license.license_type.downcase == "commercial" || license.license_type.downcase == "free")
|
73
|
+
input[:license_type] = license.license_type
|
74
|
+
"exhausted_license"
|
72
75
|
else
|
73
76
|
"active"
|
74
77
|
end
|
75
78
|
end
|
76
79
|
|
77
|
-
def
|
78
|
-
|
79
|
-
(user_name =~ /\A[a-zA-Z]{1,16}\Z/) == 0
|
80
|
-
end
|
81
|
-
|
82
|
-
def is_email_valid?(input)
|
83
|
-
(input[:gather_user_email_for_license_generation] =~ URI::MailTo::EMAIL_REGEXP) == 0
|
84
|
-
end
|
85
|
-
|
86
|
-
def is_company_name_valid?(input)
|
87
|
-
(input[:gather_user_company_for_license_generation] =~ /\A[a-zA-Z0-9][a-zA-Z0-9\W_]{2,15}\z/) == 0
|
88
|
-
end
|
89
|
-
|
90
|
-
def is_phone_no_valid?(input)
|
91
|
-
# No validation
|
92
|
-
# Optional field
|
93
|
-
true
|
94
|
-
end
|
95
|
-
|
96
|
-
def generate_trial_license(input)
|
97
|
-
generate_license(input, :trial)
|
98
|
-
end
|
99
|
-
|
100
|
-
def generate_free_license(input)
|
101
|
-
generate_license(input, :free)
|
80
|
+
def is_run_allowed_on_license_exhausted?(input)
|
81
|
+
input[:license_type].downcase == "commercial"
|
102
82
|
end
|
103
83
|
|
104
84
|
def fetch_license_id(input)
|
105
85
|
license_id
|
106
86
|
end
|
107
87
|
|
108
|
-
def
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
def fetch_license_failure_rejection_msg(input)
|
113
|
-
rejection_msg
|
114
|
-
end
|
115
|
-
|
116
|
-
def select_license_generation_based_on_type(inputs)
|
117
|
-
if inputs.key? :free_license_selection
|
118
|
-
inputs[:license_type] = :free
|
119
|
-
"free"
|
120
|
-
elsif inputs.key? :trial_license_selection
|
121
|
-
inputs[:license_type] = :trial
|
122
|
-
"trial"
|
123
|
-
else
|
124
|
-
inputs[:license_type] = :commercial
|
125
|
-
"commercial"
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def license_generation_rejected?(inputs)
|
130
|
-
!!rejection_msg
|
88
|
+
def is_commercial_license?(input)
|
89
|
+
input[:is_commercial]
|
131
90
|
end
|
132
91
|
|
133
92
|
def fetch_invalid_license_msg(input)
|
@@ -138,20 +97,6 @@ module ChefLicensing
|
|
138
97
|
ChefLicensing::ListLicenseKeys.display_overview({ license_keys: [license_id] })
|
139
98
|
end
|
140
99
|
|
141
|
-
def clear_license_type_selection(inputs)
|
142
|
-
inputs.delete(:free_license_selection)
|
143
|
-
inputs.delete(:trial_license_selection)
|
144
|
-
inputs.delete(:commercial_license_selection)
|
145
|
-
end
|
146
|
-
|
147
|
-
def are_user_details_present?(inputs)
|
148
|
-
inputs.key?(:gather_user_first_name_for_license_generation) &&
|
149
|
-
inputs.key?(:gather_user_last_name_for_license_generation) &&
|
150
|
-
inputs.key?(:gather_user_email_for_license_generation) &&
|
151
|
-
inputs.key?(:gather_user_company_for_license_generation) &&
|
152
|
-
inputs.key?(:gather_user_phone_no_for_license_generation)
|
153
|
-
end
|
154
|
-
|
155
100
|
def set_license_info(input)
|
156
101
|
self.license_id = input[:license_id]
|
157
102
|
self.license_type = input[:license_type]
|
@@ -191,28 +136,6 @@ module ChefLicensing
|
|
191
136
|
|
192
137
|
attr_accessor :opts
|
193
138
|
|
194
|
-
def generate_license(inputs, license_type)
|
195
|
-
spinner = TTY::Spinner.new(":spinner [Running] License generation in progress...", format: :dots, clear: true, output: output)
|
196
|
-
spinner.auto_spin # Start the spinner
|
197
|
-
self.license_id = ChefLicensing::LicenseKeyGenerator.send("generate_#{license_type}_license!",
|
198
|
-
first_name: inputs[:gather_user_first_name_for_license_generation],
|
199
|
-
last_name: inputs[:gather_user_last_name_for_license_generation],
|
200
|
-
email_id: inputs[:gather_user_email_for_license_generation],
|
201
|
-
product: ChefLicensing::Config.chef_product_name&.capitalize,
|
202
|
-
company: inputs[:gather_user_company_for_license_generation],
|
203
|
-
phone: inputs[:gather_user_phone_no_for_license_generation])
|
204
|
-
spinner.success # Stop the spinner
|
205
|
-
true
|
206
|
-
rescue ChefLicensing::LicenseGenerationFailed => e
|
207
|
-
spinner.error # Stop the spinner
|
208
|
-
self.error_msg = e.message
|
209
|
-
false
|
210
|
-
rescue ChefLicensing::LicenseGenerationRejected => e
|
211
|
-
spinner.error # Stop the spinner
|
212
|
-
self.rejection_msg = e.message
|
213
|
-
false
|
214
|
-
end
|
215
|
-
|
216
139
|
def get_license(license_key)
|
217
140
|
spinner = TTY::Spinner.new(":spinner [Running] License validation in progress...", format: :dots, clear: true, output: output)
|
218
141
|
spinner.auto_spin # Start the spinner
|
data/lib/chef-licensing.rb
CHANGED
@@ -8,6 +8,7 @@ require "chef-licensing/exceptions/software_not_entitled"
|
|
8
8
|
require "chef-licensing/exceptions/client_error"
|
9
9
|
require "chef-licensing/api/client"
|
10
10
|
require "chef-licensing/license_key_fetcher/prompt"
|
11
|
+
require "chef-licensing/context"
|
11
12
|
|
12
13
|
module ChefLicensing
|
13
14
|
class << self
|
@@ -66,5 +67,9 @@ module ChefLicensing
|
|
66
67
|
def add_license
|
67
68
|
ChefLicensing::LicenseKeyFetcher.add_license
|
68
69
|
end
|
70
|
+
|
71
|
+
def license_context
|
72
|
+
ChefLicensing::Context.license
|
73
|
+
end
|
69
74
|
end
|
70
75
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-licensing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Inspec Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef-config
|
@@ -79,9 +79,9 @@ dependencies:
|
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '7.0'
|
82
|
-
- - "
|
82
|
+
- - "<"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 7.
|
84
|
+
version: '7.1'
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -89,9 +89,9 @@ dependencies:
|
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '7.0'
|
92
|
-
- - "
|
92
|
+
- - "<"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 7.
|
94
|
+
version: '7.1'
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: tty-spinner
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +114,6 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
-
- LICENSE
|
118
117
|
- chef-licensing.gemspec
|
119
118
|
- lib/chef-licensing.rb
|
120
119
|
- lib/chef-licensing/api/client.rb
|
@@ -134,25 +133,29 @@ files:
|
|
134
133
|
- lib/chef-licensing/exceptions/describe_error.rb
|
135
134
|
- lib/chef-licensing/exceptions/error.rb
|
136
135
|
- lib/chef-licensing/exceptions/feature_not_entitled.rb
|
136
|
+
- lib/chef-licensing/exceptions/invalid_file_format_version.rb
|
137
137
|
- lib/chef-licensing/exceptions/invalid_license.rb
|
138
|
-
- lib/chef-licensing/exceptions/
|
139
|
-
- lib/chef-licensing/exceptions/license_generation_rejected.rb
|
138
|
+
- lib/chef-licensing/exceptions/license_file_corrupted.rb
|
140
139
|
- lib/chef-licensing/exceptions/list_licenses_error.rb
|
141
140
|
- lib/chef-licensing/exceptions/missing_api_credentials_error.rb
|
142
141
|
- lib/chef-licensing/exceptions/restful_client_connection_error.rb
|
143
142
|
- lib/chef-licensing/exceptions/restful_client_error.rb
|
144
143
|
- lib/chef-licensing/exceptions/software_not_entitled.rb
|
144
|
+
- lib/chef-licensing/exceptions/unsupported_content_type.rb
|
145
145
|
- lib/chef-licensing/license.rb
|
146
146
|
- lib/chef-licensing/license_key_fetcher.rb
|
147
147
|
- lib/chef-licensing/license_key_fetcher/base.rb
|
148
148
|
- lib/chef-licensing/license_key_fetcher/chef_licensing_interactions.yaml
|
149
149
|
- lib/chef-licensing/license_key_fetcher/file.rb
|
150
|
+
- lib/chef-licensing/license_key_fetcher/license_file/base.rb
|
151
|
+
- lib/chef-licensing/license_key_fetcher/license_file/v3.rb
|
152
|
+
- lib/chef-licensing/license_key_fetcher/license_file/v4.rb
|
150
153
|
- lib/chef-licensing/license_key_fetcher/prompt.rb
|
151
|
-
- lib/chef-licensing/license_key_generator.rb
|
152
154
|
- lib/chef-licensing/license_key_validator.rb
|
153
155
|
- lib/chef-licensing/licensing_service/local.rb
|
154
156
|
- lib/chef-licensing/list_license_keys.rb
|
155
157
|
- lib/chef-licensing/restful_client/base.rb
|
158
|
+
- lib/chef-licensing/restful_client/middleware/content_type_validator.rb
|
156
159
|
- lib/chef-licensing/restful_client/middleware/exceptions_handler.rb
|
157
160
|
- lib/chef-licensing/restful_client/v1.rb
|
158
161
|
- lib/chef-licensing/tui_engine.rb
|
@@ -165,7 +168,7 @@ files:
|
|
165
168
|
- lib/chef-licensing/version.rb
|
166
169
|
homepage: https://github.com/chef/chef-licensing
|
167
170
|
licenses:
|
168
|
-
-
|
171
|
+
- Apache-2.0
|
169
172
|
metadata:
|
170
173
|
homepage_uri: https://github.com/chef/chef-licensing
|
171
174
|
source_code_uri: https://github.com/chef/chef-licensing
|
@@ -177,14 +180,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
180
|
requirements:
|
178
181
|
- - ">="
|
179
182
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
183
|
+
version: 3.1.0
|
181
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
185
|
requirements:
|
183
186
|
- - ">="
|
184
187
|
- !ruby/object:Gem::Version
|
185
188
|
version: '0'
|
186
189
|
requirements: []
|
187
|
-
rubygems_version: 3.
|
190
|
+
rubygems_version: 3.2.3
|
188
191
|
signing_key:
|
189
192
|
specification_version: 4
|
190
193
|
summary: Chef License storage, generation, and entitlement
|
data/LICENSE
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Proprietary code. All rights reserved.
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative "restful_client/v1"
|
2
|
-
require_relative "exceptions/license_generation_failed"
|
3
|
-
|
4
|
-
module ChefLicensing
|
5
|
-
class LicenseKeyGenerator
|
6
|
-
attr_reader :payload
|
7
|
-
|
8
|
-
class << self
|
9
|
-
# @param [Hash] KWARGS keys accepted are [first_name, last_name, email_id, product, company, phone]
|
10
|
-
def generate_trial_license!(kwargs)
|
11
|
-
new(kwargs).generate_trial_license!
|
12
|
-
end
|
13
|
-
|
14
|
-
def generate_free_license!(kwargs)
|
15
|
-
new(kwargs).generate_free_license!
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def initialize(kwargs, restful_client: ChefLicensing::RestfulClient::V1)
|
20
|
-
# TODO: validate kwargs
|
21
|
-
@payload = build_payload_from(kwargs)
|
22
|
-
@restful_client = restful_client.new
|
23
|
-
end
|
24
|
-
|
25
|
-
def generate_trial_license!
|
26
|
-
response = @restful_client.generate_trial_license(payload)
|
27
|
-
# need some logic around delivery
|
28
|
-
# how the delivery is decided?
|
29
|
-
response.licenseId
|
30
|
-
rescue RestfulClientError => e
|
31
|
-
raise ChefLicensing::LicenseGenerationFailed, e.message
|
32
|
-
end
|
33
|
-
|
34
|
-
def generate_free_license!
|
35
|
-
response = @restful_client.generate_free_license(payload)
|
36
|
-
response.licenseId
|
37
|
-
rescue RestfulClientError => e
|
38
|
-
raise ChefLicensing::LicenseGenerationFailed, e.message
|
39
|
-
end
|
40
|
-
|
41
|
-
private
|
42
|
-
|
43
|
-
def build_payload_from(kwargs)
|
44
|
-
kwargs.slice(:first_name, :last_name, :email_id, :product, :company, :phone)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|