gitlab_support_readiness 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/support_readiness/mailgun/client.rb +2 -1
- data/lib/support_readiness/mailgun/emails.rb +1 -1
- data/lib/support_readiness/support_super_form_processor/create_article.rb +375 -0
- data/lib/support_readiness/support_super_form_processor/create_macro.rb +183 -0
- data/lib/support_readiness/support_super_form_processor/edit_macro.rb +161 -0
- data/lib/support_readiness/support_super_form_processor/enable_us_government.rb +236 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_billing_entity_change.rb +218 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_extension.rb +238 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_investigate.rb +238 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_link.rb +213 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_nfr.rb +224 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_reset_seat_qsr.rb +194 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_edit.rb +198 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_extension.rb +228 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_dotcom_trials_over_plan.rb +219 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_hackerone_license.rb +172 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_oem_license.rb +241 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_order_management.rb +267 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_other.rb +137 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_provison_failure.rb +179 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_did_not_receive.rb +191 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_multiyear.rb +188 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_nfr.rb +215 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_resend.rb +188 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_scl.rb +194 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_subscriptions_temp.rb +234 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_edit.rb +203 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_extension.rb +233 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_sm_trials_new.rb +223 -0
- data/lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb +247 -0
- data/lib/support_readiness/support_super_form_processor/global_set_collaboration_id.rb +151 -0
- data/lib/support_readiness/support_super_form_processor/global_set_org_ase.rb +293 -0
- data/lib/support_readiness/support_super_form_processor/global_toggle_escalation.rb +142 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_extension.rb +247 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_former_customer.rb +288 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_migration.rb +238 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_other.rb +221 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_prospect.rb +288 -0
- data/lib/support_readiness/support_super_form_processor/gratis_support_upgrade.rb +298 -0
- data/lib/support_readiness/support_super_form_processor/namespace_availability.rb +213 -0
- data/lib/support_readiness/support_super_form_processor/pd_shadow_modification.rb +189 -0
- data/lib/support_readiness/support_super_form_processor/sa_request_for_support.rb +214 -0
- data/lib/support_readiness/support_super_form_processor/shared.rb +518 -0
- data/lib/support_readiness/support_super_form_processor/team_member_license.rb +144 -0
- data/lib/support_readiness/support_super_form_processor/two_fa_exemption.rb +260 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_order_management.rb +252 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_other.rb +136 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_did_not_receive.rb +162 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_multiyear.rb +159 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_nfr.rb +196 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_resend.rb +159 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_scl.rb +160 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_subs_temp.rb +219 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_edit.rb +189 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_extension.rb +219 -0
- data/lib/support_readiness/support_super_form_processor/usgov_ir_sm_trials_new.rb +209 -0
- data/lib/support_readiness/support_super_form_processor/usgov_set_collaboration_id.rb +151 -0
- data/lib/support_readiness/support_super_form_processor/usgov_set_org_ase.rb +295 -0
- data/lib/support_readiness/support_super_form_processor.rb +67 -0
- data/lib/support_readiness.rb +1 -0
- metadata +59 -2
@@ -0,0 +1,518 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module SupportSuperFormProcessor
|
6
|
+
module SupportSuperFormProcessor
|
7
|
+
##
|
8
|
+
# Defines the class Shared within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.42
|
12
|
+
class Shared < Readiness::Client
|
13
|
+
##
|
14
|
+
# Performs a gitlab.com user check
|
15
|
+
#
|
16
|
+
# @author Jason Colyer
|
17
|
+
# @since 1.0.42
|
18
|
+
# @param client [Object] An instance of {Readiness::GitLab::Client}
|
19
|
+
# @param email [String] The email to search for
|
20
|
+
def self.gitlab_user_check(client, email)
|
21
|
+
user_search = Readiness::GitLab::Users.search_by_email(client, email)
|
22
|
+
requester = user_search.detect { |u| u.email == email }
|
23
|
+
no_such_gitlab_user(email) if requester.nil?
|
24
|
+
requester
|
25
|
+
end
|
26
|
+
|
27
|
+
##
|
28
|
+
# Performs a Zendesk user check
|
29
|
+
#
|
30
|
+
# @author Jason Colyer
|
31
|
+
# @since 1.0.42
|
32
|
+
# @param client [Object] An instance of {Readiness::GitLab::Client}
|
33
|
+
# @param email [String] The email to search for
|
34
|
+
def self.zendesk_user_check(client, email)
|
35
|
+
user_search = Readiness::Zendesk::Search.users(client, "email:#{CGI.escape(email)} -role:end-user")
|
36
|
+
user = user_search.detect { |u| u.email.downcase == email.downcase }
|
37
|
+
no_such_zendesk_user(email) if user.nil?
|
38
|
+
user
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Sends an email if a gitlab.com user check fails
|
43
|
+
#
|
44
|
+
# @author Jason Colyer
|
45
|
+
# @since 1.0.42
|
46
|
+
# @param address [String] The email addresses used
|
47
|
+
def self.no_such_gitlab_user(address)
|
48
|
+
email = Readiness::Mailgun::Emails.new
|
49
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
50
|
+
email.to = address
|
51
|
+
email.subject = 'Invalid Support Super Form submission'
|
52
|
+
email.text = no_such_gitlab_user_message(email)
|
53
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
54
|
+
puts "No such gitlab.com account tied to #{address}"
|
55
|
+
exit 0
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Sends an email if a Zendesk user check fails
|
60
|
+
#
|
61
|
+
# @author Jason Colyer
|
62
|
+
# @since 1.0.42
|
63
|
+
# @param address [String] The email addresses used
|
64
|
+
def self.no_such_zendesk_user(address)
|
65
|
+
email = Readiness::Mailgun::Emails.new
|
66
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
67
|
+
email.to = address
|
68
|
+
email.subject = 'Invalid Support Super Form submission'
|
69
|
+
email.text = no_such_zendesk_user_message(email)
|
70
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
71
|
+
puts "No such Zendesk account tied to #{address}"
|
72
|
+
exit 0
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Sends an email if not an OEM member
|
77
|
+
#
|
78
|
+
# @author Jason Colyer
|
79
|
+
# @since 1.0.42
|
80
|
+
# @param address [String] The email addresses used
|
81
|
+
def self.not_oem_member(address)
|
82
|
+
email = Readiness::Mailgun::Emails.new
|
83
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
84
|
+
email.to = address
|
85
|
+
email.subject = 'Invalid Support Super Form submission'
|
86
|
+
email.text = not_oem_member_message
|
87
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
88
|
+
puts "Not an OEM member - #{address}"
|
89
|
+
exit 0
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Sends an email if not an Order Management member
|
94
|
+
#
|
95
|
+
# @author Jason Colyer
|
96
|
+
# @since 1.0.42
|
97
|
+
# @param address [String] The email addresses used
|
98
|
+
def self.not_order_management_member(address)
|
99
|
+
email = Readiness::Mailgun::Emails.new
|
100
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
101
|
+
email.to = address
|
102
|
+
email.subject = 'Invalid Support Super Form submission'
|
103
|
+
email.text = not_order_management_member_message
|
104
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
105
|
+
puts "Not an Order Management member - #{address}"
|
106
|
+
exit 0
|
107
|
+
end
|
108
|
+
|
109
|
+
##
|
110
|
+
# Sends an email if the namespace provided was invalid
|
111
|
+
#
|
112
|
+
# @author Jason Colyer
|
113
|
+
# @since 1.0.42
|
114
|
+
# @param address [String] The email addresses used
|
115
|
+
def self.invalid_namespace(address, namespace)
|
116
|
+
email = Readiness::Mailgun::Emails.new
|
117
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
118
|
+
email.to = address
|
119
|
+
email.subject = 'Invalid Support Super Form submission'
|
120
|
+
email.text = invalid_namespace_message(namespace)
|
121
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
122
|
+
puts "#{address} provided invalid namespace - #{namespace}"
|
123
|
+
exit 0
|
124
|
+
end
|
125
|
+
|
126
|
+
##
|
127
|
+
# Sends an email if not an Partner Support member
|
128
|
+
#
|
129
|
+
# @author Jason Colyer
|
130
|
+
# @since 1.0.42
|
131
|
+
# @param address [String] The email addresses used
|
132
|
+
def self.not_partner_support_member(address)
|
133
|
+
email = Readiness::Mailgun::Emails.new
|
134
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
135
|
+
email.to = address
|
136
|
+
email.subject = 'Invalid Support Super Form submission'
|
137
|
+
email.text = not_partner_support_member_message
|
138
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
139
|
+
puts "Not an Order Management member - #{address}"
|
140
|
+
exit 0
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Sends an email if not a valid NFR request
|
145
|
+
#
|
146
|
+
# @author Jason Colyer
|
147
|
+
# @since 1.0.42
|
148
|
+
# @param address [String] The email addresses used
|
149
|
+
def self.invalid_nfr_request(address)
|
150
|
+
email = Readiness::Mailgun::Emails.new
|
151
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
152
|
+
email.to = address
|
153
|
+
email.subject = 'Invalid Support Super Form submission'
|
154
|
+
email.text = invalid_nfr_request_message
|
155
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
156
|
+
puts "Invalid NFR request made by #{address}"
|
157
|
+
exit 0
|
158
|
+
end
|
159
|
+
|
160
|
+
##
|
161
|
+
# Sends an email if not a valid Wider Community License request
|
162
|
+
#
|
163
|
+
# @author Jason Colyer
|
164
|
+
# @since 1.0.42
|
165
|
+
# @param address [String] The email addresses used
|
166
|
+
def self.cannot_self_approve(address)
|
167
|
+
email = Readiness::Mailgun::Emails.new
|
168
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
169
|
+
email.to = address
|
170
|
+
email.subject = 'Invalid Support Super Form submission'
|
171
|
+
email.text = cannot_self_approve_message
|
172
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
173
|
+
puts "Invalid WCL request made by #{address}"
|
174
|
+
exit 0
|
175
|
+
end
|
176
|
+
|
177
|
+
##
|
178
|
+
# Sends an email if not a valid article creation request
|
179
|
+
#
|
180
|
+
# @author Jason Colyer
|
181
|
+
# @since 1.0.42
|
182
|
+
def self.invalid_article_creation(requester, errors)
|
183
|
+
email = Readiness::Mailgun::Emails.new
|
184
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
185
|
+
email.to = requester.email
|
186
|
+
email.subject = 'Invalid Support Super Form submission'
|
187
|
+
email.text = invalid_article_creation_message(requester, errors)
|
188
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
189
|
+
puts "Invalid article creation submission by #{requester.email}"
|
190
|
+
exit 0
|
191
|
+
end
|
192
|
+
|
193
|
+
##
|
194
|
+
# Sends an email if not a valid enable us gov request
|
195
|
+
#
|
196
|
+
# @author Jason Colyer
|
197
|
+
# @since 1.0.42
|
198
|
+
def self.invalid_enable_usgov(requester, errors)
|
199
|
+
email = Readiness::Mailgun::Emails.new
|
200
|
+
email.from = 'GitLab Support <techsupport@gitlab.com>'
|
201
|
+
email.to = requester.email
|
202
|
+
email.subject = 'Invalid Support Super Form submission'
|
203
|
+
email.text = invalid_enable_usgov_message(requester, errors)
|
204
|
+
Readiness::Mailgun::Emails.send!(mailgun_client, email)
|
205
|
+
puts "Invalid enable us gov submission by #{requester.email}"
|
206
|
+
exit 0
|
207
|
+
end
|
208
|
+
|
209
|
+
##
|
210
|
+
# Sets a global variable for an instance of {Readiness::Mailgun::Client}
|
211
|
+
#
|
212
|
+
# @author Jason Colyer
|
213
|
+
# @since 1.0.42
|
214
|
+
# @return [Object] {Readiness::Mailgun::Client}
|
215
|
+
def self.mailgun_client
|
216
|
+
@mailgun_client ||= generate_mailgun_connection
|
217
|
+
end
|
218
|
+
|
219
|
+
##
|
220
|
+
# Generates a Mailgun connection
|
221
|
+
#
|
222
|
+
# @author Jason Colyer
|
223
|
+
# @since 1.0.42
|
224
|
+
# @return [Object] {Readiness::Mailgun::Client}
|
225
|
+
def self.generate_mailgun_connection
|
226
|
+
mailgun_config = Readiness::Mailgun::Configuration.new
|
227
|
+
mailgun_config.domain = 'mg.gitlab.com'
|
228
|
+
mailgun_config.token = ENV.fetch('MAILGUN_KEY')
|
229
|
+
Readiness::Mailgun::Client.new(mailgun_config)
|
230
|
+
end
|
231
|
+
|
232
|
+
##
|
233
|
+
# Returns the email body message for a failed gitlab.com user check
|
234
|
+
#
|
235
|
+
# @author Jason Colyer
|
236
|
+
# @since 1.0.42
|
237
|
+
# @return [String]
|
238
|
+
def self.no_such_gitlab_user_message(email)
|
239
|
+
<<~STRING
|
240
|
+
Greetings,
|
241
|
+
|
242
|
+
Recently a Support Super Form submission was made stating the requester email was #{email}.
|
243
|
+
|
244
|
+
We were unable to find a gitlab.com account using that email address as the primary email. As such, the request could not be completed.
|
245
|
+
|
246
|
+
If you have a gitlab.com account using that as a secondary email, please modify your gitlab.com account to make your official GitLab email the primary.
|
247
|
+
|
248
|
+
Once that has been rectified, please re-submit your request.
|
249
|
+
|
250
|
+
Thank you,
|
251
|
+
|
252
|
+
GitLab Support
|
253
|
+
STRING
|
254
|
+
end
|
255
|
+
|
256
|
+
##
|
257
|
+
# Returns the email body message for a failed Zendesk user check
|
258
|
+
#
|
259
|
+
# @author Jason Colyer
|
260
|
+
# @since 1.0.42
|
261
|
+
# @return [String]
|
262
|
+
def self.no_such_zendesk_user_message(email)
|
263
|
+
<<~STRING
|
264
|
+
Greetings,
|
265
|
+
|
266
|
+
The Internal Request Form submission you recently filed was not able to be filed due to the following issues:
|
267
|
+
|
268
|
+
- Invalid Zendesk user: #{CGI.escape(email)}
|
269
|
+
|
270
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
271
|
+
|
272
|
+
Thank you,
|
273
|
+
|
274
|
+
GitLab Support
|
275
|
+
|
276
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
277
|
+
STRING
|
278
|
+
end
|
279
|
+
|
280
|
+
##
|
281
|
+
# Returns the email body message for a failed OEM check
|
282
|
+
#
|
283
|
+
# @author Jason Colyer
|
284
|
+
# @since 1.0.42
|
285
|
+
# @return [String]
|
286
|
+
def self.not_oem_member_message
|
287
|
+
<<~STRING
|
288
|
+
Greetings,
|
289
|
+
|
290
|
+
The Internal Request Form submission you recently filed was not able to be filed due to the following issues:
|
291
|
+
|
292
|
+
- You are not a member of the OEM management team.
|
293
|
+
|
294
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
295
|
+
|
296
|
+
Thank you,
|
297
|
+
|
298
|
+
GitLab Support
|
299
|
+
|
300
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
301
|
+
STRING
|
302
|
+
end
|
303
|
+
|
304
|
+
##
|
305
|
+
# Returns the email body message for a failed Order Management check
|
306
|
+
#
|
307
|
+
# @author Jason Colyer
|
308
|
+
# @since 1.0.42
|
309
|
+
# @return [String]
|
310
|
+
def self.not_order_management_member_message
|
311
|
+
<<~STRING
|
312
|
+
Greetings,
|
313
|
+
|
314
|
+
The Internal Request Form submission you recently filed was not able to be filed due to the following issues:
|
315
|
+
|
316
|
+
- You are not a member of the order management team.
|
317
|
+
|
318
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
319
|
+
|
320
|
+
Thank you,
|
321
|
+
|
322
|
+
GitLab Support
|
323
|
+
|
324
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
325
|
+
STRING
|
326
|
+
end
|
327
|
+
|
328
|
+
##
|
329
|
+
# Returns the email body message when the namespace is invalid
|
330
|
+
#
|
331
|
+
# @author Jason Colyer
|
332
|
+
# @since 1.0.42
|
333
|
+
# @return [String]
|
334
|
+
def self.invalid_namespace_message(namespace)
|
335
|
+
<<~STRING
|
336
|
+
Greetings,
|
337
|
+
|
338
|
+
The Internal Request Form submission you recently filed was not able to be filed due to the following issues:
|
339
|
+
|
340
|
+
- Invalid namespace: '#{namespace}'. Ensure the provided namespace is an existing top-level group, as only those are accepted.
|
341
|
+
|
342
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
343
|
+
|
344
|
+
Thank you,
|
345
|
+
|
346
|
+
GitLab Support
|
347
|
+
|
348
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
349
|
+
STRING
|
350
|
+
end
|
351
|
+
|
352
|
+
##
|
353
|
+
# Returns the email body message when not a Partner Supprot member
|
354
|
+
#
|
355
|
+
# @author Jason Colyer
|
356
|
+
# @since 1.0.42
|
357
|
+
# @return [String]
|
358
|
+
def self.not_partner_support_member_message
|
359
|
+
<<~STRING
|
360
|
+
Greetings,
|
361
|
+
|
362
|
+
The Internal Request Form submission you recently filed was not able to be filed due to the following issues:
|
363
|
+
|
364
|
+
- You are not a member of the partner support team.
|
365
|
+
|
366
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
367
|
+
|
368
|
+
Thank you,
|
369
|
+
|
370
|
+
GitLab Support
|
371
|
+
|
372
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
373
|
+
STRING
|
374
|
+
end
|
375
|
+
|
376
|
+
##
|
377
|
+
# Returns the email body message when not a valid NFR request
|
378
|
+
#
|
379
|
+
# @author Jason Colyer
|
380
|
+
# @since 1.0.42
|
381
|
+
# @return [String]
|
382
|
+
def self.invalid_nfr_request_message
|
383
|
+
<<~STRING
|
384
|
+
Greetings,
|
385
|
+
|
386
|
+
The Internal Request Form submission you recently filed was not able to be filed due to one of the following issues:
|
387
|
+
|
388
|
+
- NFR licenses cannot exceed 25 seats
|
389
|
+
- NFR licenses cannot have an expiration more than one year in the future
|
390
|
+
|
391
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
392
|
+
|
393
|
+
Thank you,
|
394
|
+
|
395
|
+
GitLab Support
|
396
|
+
|
397
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
398
|
+
STRING
|
399
|
+
end
|
400
|
+
|
401
|
+
##
|
402
|
+
# Returns the email body message when not a valid Wider Community License request
|
403
|
+
#
|
404
|
+
# @author Jason Colyer
|
405
|
+
# @since 1.0.42
|
406
|
+
# @return [String]
|
407
|
+
def self.cannot_self_approve_message
|
408
|
+
<<~STRING
|
409
|
+
Greetings,
|
410
|
+
|
411
|
+
The Internal Request Form submission you recently filed was not able to be filed due to one of the following issues:
|
412
|
+
|
413
|
+
- You cannot be the approver for community licenses lasting more than 90 days.
|
414
|
+
|
415
|
+
Please rectify the above issues and re-submit your Internal Request via the form.
|
416
|
+
|
417
|
+
Thank you,
|
418
|
+
|
419
|
+
GitLab Support
|
420
|
+
|
421
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
422
|
+
STRING
|
423
|
+
end
|
424
|
+
|
425
|
+
##
|
426
|
+
# Returns the email body message when not a valid article creation submission
|
427
|
+
#
|
428
|
+
# @author Jason Colyer
|
429
|
+
# @since 1.0.42
|
430
|
+
# @return [String]
|
431
|
+
def self.invalid_article_creation_message(requester, errors)
|
432
|
+
<<~STRING
|
433
|
+
Greetings @#{requester.username} ,
|
434
|
+
|
435
|
+
Your recent request to create a Zendesk article was not able to be filed due to the following issues:
|
436
|
+
|
437
|
+
#{errors.map { |e| "- #{e}" }.join("\n")}
|
438
|
+
|
439
|
+
Please rectify the above issues and re-submit your request via the form.
|
440
|
+
|
441
|
+
Thank you,
|
442
|
+
|
443
|
+
GitLab Support
|
444
|
+
|
445
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
446
|
+
STRING
|
447
|
+
end
|
448
|
+
|
449
|
+
##
|
450
|
+
# Returns the email body message when not a valid enable us gov submission
|
451
|
+
#
|
452
|
+
# @author Jason Colyer
|
453
|
+
# @since 1.0.42
|
454
|
+
# @return [String]
|
455
|
+
def self.invalid_enable_usgov_message(requester, errors)
|
456
|
+
<<~STRING
|
457
|
+
Greetings @#{requester.username} ,
|
458
|
+
|
459
|
+
Your recent request to enable US Goverment support was not able to be filed due to the following issues:
|
460
|
+
|
461
|
+
#{errors.map { |e| "- #{e}" }.join("\n")}
|
462
|
+
|
463
|
+
Please rectify the above issues and re-submit your request via the form.
|
464
|
+
|
465
|
+
Thank you,
|
466
|
+
|
467
|
+
GitLab Support
|
468
|
+
|
469
|
+
Please note this is sent from an unmonitored inbox and replies to it will not be followed up on.
|
470
|
+
STRING
|
471
|
+
end
|
472
|
+
|
473
|
+
def self.sfdc_account_string(link)
|
474
|
+
id = if link =~ /lightning/
|
475
|
+
link.split('/')[-2]
|
476
|
+
else
|
477
|
+
link.split('/').last
|
478
|
+
end
|
479
|
+
classic = "<a href='https://gitlab.my.salesforce.com/#{id}' target='_blank'>Classic</a>"
|
480
|
+
lightning = "<a href='https://gitlab.lightning.force.com/lightning/r/Account/#{id}/view' target='_blank'>Lightning</a>"
|
481
|
+
"SFDC Account: #{id} (#{classic} | #{lightning})"
|
482
|
+
end
|
483
|
+
|
484
|
+
def self.sfdc_opportunity_string(link)
|
485
|
+
id = if link =~ /lightning/
|
486
|
+
link.split('/')[-2]
|
487
|
+
else
|
488
|
+
link.split('/').last
|
489
|
+
end
|
490
|
+
classic = "<a href='https://gitlab.my.salesforce.com/#{id}' target='_blank'>Classic</a>"
|
491
|
+
lightning = "<a href='https://gitlab.lightning.force.com/lightning/r/Opportunity/#{id}/view' target='_blank'>Lightning</a>"
|
492
|
+
"SFDC Opportunity: #{id} (#{classic} | #{lightning})"
|
493
|
+
end
|
494
|
+
|
495
|
+
def self.sfdc_upload_string(link)
|
496
|
+
id = if link =~ /lightning/
|
497
|
+
link.split('/')[-2]
|
498
|
+
else
|
499
|
+
link.split('/').last
|
500
|
+
end
|
501
|
+
classic = "<a href='https://gitlab.my.salesforce.com/#{id}' target='_blank'>Classic</a>"
|
502
|
+
lightning = "<a href='https://gitlab.lightning.force.com/lightning/r/ContentDocument/#{id}/view' target='_blank'>Lightning</a>"
|
503
|
+
"Customer verification proof: #{id} (#{classic} | #{lightning})"
|
504
|
+
end
|
505
|
+
|
506
|
+
def self.sfdc_chattr_string(link)
|
507
|
+
id = if link =~ /lightning/
|
508
|
+
link.split('/')[-2]
|
509
|
+
else
|
510
|
+
link.split('/').last
|
511
|
+
end
|
512
|
+
classic = "<a href='https://gitlab.my.salesforce.com/#{id}' target='_blank'>Classic</a>"
|
513
|
+
lightning = "<a href='https://gitlab.lightning.force.com/lightning/r/#{id}/view' target='_blank'>Lightning</a>"
|
514
|
+
"Chattr link containing approval: #{id} (#{classic} | #{lightning})"
|
515
|
+
end
|
516
|
+
end
|
517
|
+
end
|
518
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module SupportSuperFormProcessor
|
6
|
+
module SupportSuperFormProcessor
|
7
|
+
##
|
8
|
+
# Defines the class TeamMemberLicense within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.42
|
12
|
+
class TeamMemberLicense < Readiness::Client
|
13
|
+
##
|
14
|
+
# Process a Team Member License check request
|
15
|
+
#
|
16
|
+
# @author Jason Colyer
|
17
|
+
# @since 1.0.42
|
18
|
+
def self.process!(client, admin_client)
|
19
|
+
@gitlab_client = client
|
20
|
+
@gitlab_admin_client = admin_client
|
21
|
+
requester
|
22
|
+
issue = Readiness::GitLab::Issues.new
|
23
|
+
issue.title = "GitLab Team Member License request - #{requester.name}"
|
24
|
+
issue.description = team_member_license_message
|
25
|
+
create = Readiness::GitLab::Issues.create!(@gitlab_client, project, issue)
|
26
|
+
puts "Issue created: #{create.web_url}"
|
27
|
+
exit 0
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Sets the global variable requester
|
32
|
+
#
|
33
|
+
# @author Jason Colyer
|
34
|
+
# @since 1.0.42
|
35
|
+
def self.requester
|
36
|
+
@requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Sets the global variable requester_email
|
41
|
+
#
|
42
|
+
# @author Jason Colyer
|
43
|
+
# @since 1.0.42
|
44
|
+
def self.requester_email
|
45
|
+
@requester_email ||= ENV.fetch('REQUESTER_EMAIL')
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Sets the global variable project
|
50
|
+
#
|
51
|
+
# @author Jason Colyer
|
52
|
+
# @since 1.0.42
|
53
|
+
def self.project
|
54
|
+
@project ||= Readiness::GitLab::Projects.find!(@gitlab_client, 12811526)
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Sets the global variable plan
|
59
|
+
#
|
60
|
+
# @author Jason Colyer
|
61
|
+
# @since 1.0.42
|
62
|
+
def self.plan
|
63
|
+
@plan ||= ENV.fetch('TEAM_MEMBER_LICENSE_PLAN')
|
64
|
+
end
|
65
|
+
|
66
|
+
##
|
67
|
+
# Sets the global variable seats
|
68
|
+
#
|
69
|
+
# @author Jason Colyer
|
70
|
+
# @since 1.0.42
|
71
|
+
def self.seats
|
72
|
+
@seats ||= ENV.fetch('TEAM_MEMBER_LICENSE_COUNT')
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Sets the global variable trueup
|
77
|
+
#
|
78
|
+
# @author Jason Colyer
|
79
|
+
# @since 1.0.42
|
80
|
+
def self.trueup
|
81
|
+
@trueup ||= ENV.fetch('TEAM_MEMBER_LICENSE_TRUEUP')
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# Sets the global variable previous
|
86
|
+
#
|
87
|
+
# @author Jason Colyer
|
88
|
+
# @since 1.0.42
|
89
|
+
def self.previous
|
90
|
+
@previous ||= ENV.fetch('TEAM_MEMBER_LICENSE_PREVIOUS')
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# Sets the global variable expiration
|
95
|
+
#
|
96
|
+
# @author Jason Colyer
|
97
|
+
# @since 1.0.42
|
98
|
+
def self.expiration
|
99
|
+
@expiration ||= ENV.fetch('TEAM_MEMBER_LICENSE_EXPIRATION')
|
100
|
+
end
|
101
|
+
|
102
|
+
##
|
103
|
+
# Returns the issue description for a team member license request
|
104
|
+
#
|
105
|
+
# @author Jason Colyer
|
106
|
+
# @since 1.0.42
|
107
|
+
def self.team_member_license_message
|
108
|
+
<<~STRING
|
109
|
+
# GitLab Team Member License request
|
110
|
+
|
111
|
+
## Please Note the Following
|
112
|
+
|
113
|
+
- This is for requesting an **internal** self-managed GitLab license. This license should **only** be used by **GitLab team members**.
|
114
|
+
- This is solely for **self-managed** GitLab instances. If you are wanting a subscription put on a GitLab.com namespace, please file an AR to IT Ops using the appropriate template.
|
115
|
+
- The license can only exist for one year at a time
|
116
|
+
- The license will be generated via our cDot **staging** environment only.
|
117
|
+
|
118
|
+
## Information
|
119
|
+
|
120
|
+
- Name: #{requester.name}
|
121
|
+
- Email: #{requester.email}
|
122
|
+
- GitLab username: @#{requester.username}
|
123
|
+
- License plan: #{plan.capitalize}
|
124
|
+
- Number of users: #{seats}
|
125
|
+
- True-up count: #{trueup}
|
126
|
+
- Previous user count: #{previous}
|
127
|
+
- Expiration date: #{expiration}
|
128
|
+
|
129
|
+
### Support Operations
|
130
|
+
|
131
|
+
* [ ] Follow the directions of the workflow, which can be found [here](https://handbook.gitlab.com/handbook/support/readiness/operations/docs/policies/team_member_licenses/)
|
132
|
+
|
133
|
+
---
|
134
|
+
|
135
|
+
/confidential
|
136
|
+
|
137
|
+
/assign @nabeel.bilgrami @avilla4 @secole @rverschoor
|
138
|
+
|
139
|
+
/label ~"Internal-License" ~"Readiness::Triage" ~"Readiness Priority::Current Quarter"
|
140
|
+
STRING
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|