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,260 @@
|
|
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 TwoFAExemption within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.42
|
12
|
+
class TwoFAExemption < Readiness::Client
|
13
|
+
##
|
14
|
+
# Process a 2FA Exemption request
|
15
|
+
#
|
16
|
+
# @author Jason Colyer
|
17
|
+
# @since 1.0.42
|
18
|
+
def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
|
19
|
+
@gitlab_client = gitlab_client
|
20
|
+
@gitlab_admin_client = gitlab_admin_client
|
21
|
+
@zendesk_client = zendesk_client
|
22
|
+
requester
|
23
|
+
org_does_not_exist if org.is_a? Hash
|
24
|
+
new_org = Readiness::Zendesk::Organizations.new
|
25
|
+
new_org.id = org.id
|
26
|
+
new_org.tags = org.tags + ['skip_2fa_automation']
|
27
|
+
new_org.custom_fields = { "am_project_id" => collaboration_project_id }
|
28
|
+
Readiness::Zendesk::Organizations.update!(@zendesk_client, new_org)
|
29
|
+
issue = Readiness::GitLab::Issues.new
|
30
|
+
issue.title = "Enable 2FA Exemption for a large organization - #{org.id}"
|
31
|
+
issue.description = message
|
32
|
+
create = Readiness::GitLab::Issues.create!(@gitlab_client, project, issue)
|
33
|
+
puts "Issue created: #{create.web_url}"
|
34
|
+
exit 0
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Create issue when organization does not exist
|
39
|
+
#
|
40
|
+
# @author Jason Colyer
|
41
|
+
# @since 1.0.42
|
42
|
+
def self.org_does_not_exist
|
43
|
+
issue = Readiness::GitLab::Issues.new
|
44
|
+
issue.title = "Invalid Request - Organization Not Found"
|
45
|
+
issue.description = org_does_not_exist_message
|
46
|
+
create = Readiness::GitLab::Issues.create!(@gitlab_client, project, issue)
|
47
|
+
puts "Issue created: #{create.web_url}"
|
48
|
+
exit 0
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
##
|
53
|
+
# Sets the global variable requester
|
54
|
+
#
|
55
|
+
# @author Jason Colyer
|
56
|
+
# @since 1.0.42
|
57
|
+
def self.requester
|
58
|
+
@requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# Sets the global variable requester_email
|
63
|
+
#
|
64
|
+
# @author Jason Colyer
|
65
|
+
# @since 1.0.42
|
66
|
+
def self.requester_email
|
67
|
+
@requester_email ||= ENV.fetch('REQUESTER_EMAIL')
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# Sets the global variable project
|
72
|
+
#
|
73
|
+
# @author Jason Colyer
|
74
|
+
# @since 1.0.42
|
75
|
+
def self.project
|
76
|
+
@project ||= Readiness::GitLab::Projects.find!(@gitlab_client, 12811526)
|
77
|
+
end
|
78
|
+
|
79
|
+
##
|
80
|
+
# Sets the global variable org
|
81
|
+
#
|
82
|
+
# @author Jason Colyer
|
83
|
+
# @since 1.0.42
|
84
|
+
def self.org
|
85
|
+
@org ||= Readiness::Zendesk::Organizations.find(@zendesk_client, org_id)
|
86
|
+
end
|
87
|
+
|
88
|
+
##
|
89
|
+
# Sets the global variable org_id
|
90
|
+
#
|
91
|
+
# @author Jason Colyer
|
92
|
+
# @since 1.0.42
|
93
|
+
def self.org_id
|
94
|
+
@org_id ||= ENV.fetch('ZENDESK_ORGANIZATION_ID')
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Sets the global variable slack_link
|
99
|
+
#
|
100
|
+
# @author Jason Colyer
|
101
|
+
# @since 1.0.42
|
102
|
+
def self.slack_link
|
103
|
+
@slack_link ||= ENV.fetch('ZENDESK_ORG_2FA_SLACK_LINK', nil)
|
104
|
+
end
|
105
|
+
|
106
|
+
##
|
107
|
+
# Sets the global variable mfa_slack_user
|
108
|
+
#
|
109
|
+
# @author Jason Colyer
|
110
|
+
# @since 1.0.42
|
111
|
+
def self.mfa_slack_user
|
112
|
+
@mfa_slack_user ||= ENV.fetch('ZENDESK_ORG_2FA_SLACK_USER')
|
113
|
+
end
|
114
|
+
|
115
|
+
##
|
116
|
+
# Sets the global variable mfa_gitlab_user
|
117
|
+
#
|
118
|
+
# @author Jason Colyer
|
119
|
+
# @since 1.0.42
|
120
|
+
def self.mfa_gitlab_user
|
121
|
+
@mfa_gitlab_user ||= ENV.fetch('ZENDESK_ORG_2FA_GITLAB_USER')
|
122
|
+
end
|
123
|
+
|
124
|
+
##
|
125
|
+
# Sets the global variable collaboration_project_id
|
126
|
+
#
|
127
|
+
# @author Jason Colyer
|
128
|
+
# @since 1.0.42
|
129
|
+
def self.collaboration_project_id
|
130
|
+
@collaboration_project_id ||= ENV.fetch('ZENDESK_ORG_2FA_COLLAB_ID')
|
131
|
+
end
|
132
|
+
|
133
|
+
##
|
134
|
+
# Returns the issue description
|
135
|
+
#
|
136
|
+
# @author Jason Colyer
|
137
|
+
# @since 1.0.42
|
138
|
+
def self.message
|
139
|
+
<<~STRING
|
140
|
+
## Enable 2FA Exemption for a large organization - #{org.id}
|
141
|
+
|
142
|
+
Greetings @#{requester.username} !
|
143
|
+
|
144
|
+
We have set the required tag and collaboration project ID on the organization at this time.
|
145
|
+
|
146
|
+
Please note the required next steps that you will need to work on:
|
147
|
+
|
148
|
+
- [ ] You'll want to get assistance from support managers via the slack channel [#support_leadership](https://gitlab.enterprise.slack.com/archives/C01F9S37AKT) for adding the organization notes needed.
|
149
|
+
- For reference, the organization ID is #{org.id}, making the target note file https://gitlab.com/gitlab-com/support/zendesk-global/organizations/-/blob/master/organizations/#{org.id}.yaml?ref_type=heads
|
150
|
+
- Example org-note:
|
151
|
+
```
|
152
|
+
This organization has access to the "Large Customer 2FA Workflow" (see [documentation](https://handbook.gitlab.com/handbook/support/workflows/account_verification/#large-customers))
|
153
|
+
|
154
|
+
[2FA Reset Template](link to template)
|
155
|
+
```
|
156
|
+
- [ ] You'll want to ensure you've setup the issue template required in the collaboration project
|
157
|
+
- Ensure the filename is `2FA Verification.md`
|
158
|
+
- Ensure the file's location is within path `.gitlab/issue_templates`
|
159
|
+
- Ensure the file contents use the following template:
|
160
|
+
|
161
|
+
#{slack_link.nil? ? template_without_slack : template_with_slack}
|
162
|
+
|
163
|
+
/assign @#{requester.username}
|
164
|
+
STRING
|
165
|
+
end
|
166
|
+
|
167
|
+
##
|
168
|
+
# Returns the template to use when no slack link is present
|
169
|
+
#
|
170
|
+
# @author Jason Colyer
|
171
|
+
# @since 1.0.42
|
172
|
+
def self.template_without_slack
|
173
|
+
<<~STRING
|
174
|
+
```
|
175
|
+
A user in your organization is requesting to have [GitLab two-factor authentication](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) removed from their account. Please review and complete the highlighted sections below.
|
176
|
+
|
177
|
+
**Support Engineer Instructions**
|
178
|
+
|
179
|
+
- Fill out the `Request Details` section below.
|
180
|
+
|
181
|
+
**Request Details**
|
182
|
+
|
183
|
+
- User Requesting Reset: USERS_GITLAB_USERNAME
|
184
|
+
- Support Ticket: TICKET_NUMBER
|
185
|
+
|
186
|
+
**Customer Instructions**
|
187
|
+
|
188
|
+
- Review the request and get in contact with the user requesting the reset to verify its authenticity.
|
189
|
+
- Comment on this issue indicating your approval.
|
190
|
+
- Unassign yourself and any others from this issue.
|
191
|
+
- Assign to the Support Engineer who opened this issue.
|
192
|
+
|
193
|
+
/assign @#{mfa_gitlab_user}
|
194
|
+
|
195
|
+
/label ~"2FA Reset" ~"Awaiting confirmation"
|
196
|
+
```
|
197
|
+
STRING
|
198
|
+
end
|
199
|
+
|
200
|
+
##
|
201
|
+
# Returns the template to use when a slack link is present
|
202
|
+
#
|
203
|
+
# @author Jason Colyer
|
204
|
+
# @since 1.0.42
|
205
|
+
def self.template_with_slack
|
206
|
+
<<~STRING
|
207
|
+
```
|
208
|
+
A user in your organization is requesting to have [GitLab two-factor authentication](https://docs.gitlab.com/ee/user/profile/account/two_factor_authentication.html) removed from their account. Please review and complete the highlighted sections below.
|
209
|
+
|
210
|
+
**Support Engineer Instructions**
|
211
|
+
|
212
|
+
- Ping the customer’s organization owners in #{slack_link} using the [Notify Customer - Slack ](https://handbook.gitlab.com/handbook/support/workflows/account_verification#2-contact-through-slack) template. For this organization the owners are #{mfa_slack_user}.
|
213
|
+
- Fill out the `Request Details` section below.
|
214
|
+
|
215
|
+
**Request Details**
|
216
|
+
|
217
|
+
- User Requesting Reset: USERS_GITLAB_USERNAME
|
218
|
+
- Support Ticket: TICKET_NUMBER
|
219
|
+
|
220
|
+
**Customer Instructions**
|
221
|
+
|
222
|
+
- Review the request and get in contact with the user requesting the reset to verify its authenticity.
|
223
|
+
- Comment on this issue indicating your approval.
|
224
|
+
- Unassign yourself and any others from this issue.
|
225
|
+
- Assign to the Support Engineer who opened this issue.
|
226
|
+
|
227
|
+
/assign @#{mfa_gitlab_user}
|
228
|
+
|
229
|
+
/label ~"2FA Reset" ~"Awaiting confirmation"
|
230
|
+
```
|
231
|
+
STRING
|
232
|
+
end
|
233
|
+
|
234
|
+
##
|
235
|
+
# Returns the issue description
|
236
|
+
#
|
237
|
+
# @author Jason Colyer
|
238
|
+
# @since 1.0.42
|
239
|
+
def self.org_does_not_exist_message
|
240
|
+
<<~STRING
|
241
|
+
## Invalid Request Organization Not Found
|
242
|
+
|
243
|
+
Greetings @#{requester.username} !
|
244
|
+
|
245
|
+
We received a request from you recently, however the organization ID given #{org_id} is not a valid Zendesk Global Organization ID. As such, we are not able to proceed.
|
246
|
+
|
247
|
+
Please review the Zendesk Global organization you were wanting to use once more and file a new submission.
|
248
|
+
|
249
|
+
If you need assistance in locating the organization's ID, please ask in the Slack channel [#support_operations](https://gitlab.slack.com/archives/C018ZGZAMPD)
|
250
|
+
|
251
|
+
/label ~"AutomatedRequests::Invalid Organization"
|
252
|
+
|
253
|
+
/label ~"Invalid Zendesk Global organization given"
|
254
|
+
|
255
|
+
/assign @#{requester.username}
|
256
|
+
STRING
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
@@ -0,0 +1,252 @@
|
|
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 USGovIRORderManagement within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.42
|
12
|
+
class USGovIRORderManagement < Readiness::Client
|
13
|
+
##
|
14
|
+
# Process a US Government Internal Request Order Management request
|
15
|
+
#
|
16
|
+
# @author Jason Colyer
|
17
|
+
# @since 1.0.42
|
18
|
+
def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
|
19
|
+
@gitlab_client = gitlab_client
|
20
|
+
@gitlab_admin_client = gitlab_admin_client
|
21
|
+
@zendesk_client = zendesk_client
|
22
|
+
requester
|
23
|
+
zd_user
|
24
|
+
unless zd_user.tags.include? 'order_management_team'
|
25
|
+
Readiness::SupportSuperFormProcessor::Shared.not_order_management_member(requester_email)
|
26
|
+
end
|
27
|
+
ticket = Readiness::Zendesk::Tickets.new
|
28
|
+
ticket.requester_id = zd_user.id
|
29
|
+
ticket.submitter_id = zd_user.id
|
30
|
+
ticket.comment = { html_body: body }
|
31
|
+
ticket.subject = 'xxxxx'
|
32
|
+
ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_order_management]
|
33
|
+
ticket.priority = 'normal'
|
34
|
+
ticket.status = 'new'
|
35
|
+
ticket.ticket_form_id = 360001803151
|
36
|
+
ticket.custom_fields = [
|
37
|
+
{ id: 11717320292244, value: 'xxxxxxxxxxxxxxxxxxx' },
|
38
|
+
{ id: 11717222771604, value: zd_user.email }
|
39
|
+
]
|
40
|
+
create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
|
41
|
+
puts "Ticket created: https://gitlab-federal-support.zendesk.com/agent/tickets/#{create.id}"
|
42
|
+
end
|
43
|
+
|
44
|
+
##
|
45
|
+
# Sets the global variable requester
|
46
|
+
#
|
47
|
+
# @author Jason Colyer
|
48
|
+
# @since 1.0.42
|
49
|
+
def self.requester
|
50
|
+
@requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
|
51
|
+
end
|
52
|
+
|
53
|
+
##
|
54
|
+
# Sets the global variable zd_user
|
55
|
+
#
|
56
|
+
# @author Jason Colyer
|
57
|
+
# @since 1.0.42
|
58
|
+
def self.zd_user
|
59
|
+
@zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# Sets the global variable requester_email
|
64
|
+
#
|
65
|
+
# @author Jason Colyer
|
66
|
+
# @since 1.0.42
|
67
|
+
def self.requester_email
|
68
|
+
@requester_email ||= ENV.fetch('REQUESTER_EMAIL')
|
69
|
+
end
|
70
|
+
|
71
|
+
##
|
72
|
+
# Sets the global variable context
|
73
|
+
#
|
74
|
+
# @author Jason Colyer
|
75
|
+
# @since 1.0.42
|
76
|
+
def self.context
|
77
|
+
@context ||= ENV.fetch('INTERNAL_REQUEST_USFED_CONTEXT')
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Sets the global variable contact_name
|
82
|
+
#
|
83
|
+
# @author Jason Colyer
|
84
|
+
# @since 1.0.42
|
85
|
+
def self.contact_name
|
86
|
+
@contact_name ||= ENV.fetch('INTERNAL_REQUEST_USFED_CONTACT_NAME')
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
# Sets the global variable contact_email
|
91
|
+
#
|
92
|
+
# @author Jason Colyer
|
93
|
+
# @since 1.0.42
|
94
|
+
def self.contact_email
|
95
|
+
@contact_email ||= ENV.fetch('INTERNAL_REQUEST_USFED_EMAIL')
|
96
|
+
end
|
97
|
+
|
98
|
+
##
|
99
|
+
# Sets the global variable company
|
100
|
+
#
|
101
|
+
# @author Jason Colyer
|
102
|
+
# @since 1.0.42
|
103
|
+
def self.company
|
104
|
+
@company ||= ENV.fetch('INTERNAL_REQUEST_USFED_COMPANY_NAME')
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# Sets the global variable opp_link
|
109
|
+
#
|
110
|
+
# @author Jason Colyer
|
111
|
+
# @since 1.0.42
|
112
|
+
def self.opp_link
|
113
|
+
@opp_link ||= ENV.fetch('USFED_ORDER_MANAGEMENT_SFDC_OPPORTUNITY')
|
114
|
+
end
|
115
|
+
|
116
|
+
##
|
117
|
+
# Sets the global variable sub_name
|
118
|
+
#
|
119
|
+
# @author Jason Colyer
|
120
|
+
# @since 1.0.42
|
121
|
+
def self.sub_name
|
122
|
+
@sub_name ||= ENV.fetch('USFED_ORDER_MANAGEMENT_SUB_NAME')
|
123
|
+
end
|
124
|
+
|
125
|
+
##
|
126
|
+
# Sets the global variable sub_id
|
127
|
+
#
|
128
|
+
# @author Jason Colyer
|
129
|
+
# @since 1.0.42
|
130
|
+
def self.sub_id
|
131
|
+
@sub_id ||= ENV.fetch('USFED_ORDER_MANAGEMENT_ZUORA_ID')
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Sets the global variable start_date
|
136
|
+
#
|
137
|
+
# @author Jason Colyer
|
138
|
+
# @since 1.0.42
|
139
|
+
def self.start_date
|
140
|
+
@start_date ||= ENV.fetch('USFED_ORDER_MANAGEMENT_START_DATE')
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Sets the global variable end_date
|
145
|
+
#
|
146
|
+
# @author Jason Colyer
|
147
|
+
# @since 1.0.42
|
148
|
+
def self.end_date
|
149
|
+
@end_date ||= ENV.fetch('USFED_ORDER_MANAGEMENT_END_DATE')
|
150
|
+
end
|
151
|
+
|
152
|
+
##
|
153
|
+
# Sets the global variable current
|
154
|
+
#
|
155
|
+
# @author Jason Colyer
|
156
|
+
# @since 1.0.42
|
157
|
+
def self.current
|
158
|
+
@current ||= ENV.fetch('USFED_ORDER_MANAGEMENT_USERS')
|
159
|
+
end
|
160
|
+
|
161
|
+
##
|
162
|
+
# Sets the global variable previous
|
163
|
+
#
|
164
|
+
# @author Jason Colyer
|
165
|
+
# @since 1.0.42
|
166
|
+
def self.previous
|
167
|
+
@previous ||= ENV.fetch('USFED_ORDER_MANAGEMENT_PREVIOUS')
|
168
|
+
end
|
169
|
+
|
170
|
+
##
|
171
|
+
# Sets the global variable trueup
|
172
|
+
#
|
173
|
+
# @author Jason Colyer
|
174
|
+
# @since 1.0.42
|
175
|
+
def self.trueup
|
176
|
+
@trueup ||= ENV.fetch('USFED_ORDER_MANAGEMENT_TRUEUPS')
|
177
|
+
end
|
178
|
+
|
179
|
+
##
|
180
|
+
# Sets the global variable plan
|
181
|
+
#
|
182
|
+
# @author Jason Colyer
|
183
|
+
# @since 1.0.42
|
184
|
+
def self.plan
|
185
|
+
@plan ||= ENV.fetch('USFED_ORDER_MANAGEMENT_PLAN')
|
186
|
+
end
|
187
|
+
|
188
|
+
##
|
189
|
+
# Sets the global variable sfdc_account
|
190
|
+
#
|
191
|
+
# @author Jason Colyer
|
192
|
+
# @since 1.0.42
|
193
|
+
def self.sfdc_account
|
194
|
+
@sfdc_account ||= ENV.fetch('INTERNAL_REQUEST_USFED_SFDC_ACCOUNT')
|
195
|
+
end
|
196
|
+
|
197
|
+
##
|
198
|
+
# Sets the global variable version
|
199
|
+
#
|
200
|
+
# @author Jason Colyer
|
201
|
+
# @since 1.0.42
|
202
|
+
def self.version
|
203
|
+
@version ||= ENV.fetch('INTERNAL_REQUEST_USFED_VERSION')
|
204
|
+
end
|
205
|
+
|
206
|
+
##
|
207
|
+
# Returns the ticket body
|
208
|
+
#
|
209
|
+
# @author Jason Colyer
|
210
|
+
# @since 1.0.42
|
211
|
+
# @return [String]
|
212
|
+
def self.body
|
213
|
+
<<~STRING
|
214
|
+
<p>
|
215
|
+
Greetings,
|
216
|
+
</p>
|
217
|
+
<p>
|
218
|
+
Please note that this is an <b>INTERNAL</b> ticket and should <b>NEVER</b> be shared with anyone. Please do not CC, BCC, forward, or anything else that can send the information from this ticket. <b>NEVER</b> add <i>anyone</i> outside of GitLab to this ticket or communications stemming from this ticket.
|
219
|
+
</p>
|
220
|
+
<p>
|
221
|
+
A request has been filed for Order Management.
|
222
|
+
</p>
|
223
|
+
<p>
|
224
|
+
The information for this is as follows:
|
225
|
+
</p>
|
226
|
+
<ul>
|
227
|
+
<li>Contact's name: #{contact_name}</li>
|
228
|
+
<li>Contact's email: #{contact_email}</li>
|
229
|
+
<li>Contact's company: #{company}</li>
|
230
|
+
<li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_opportunity_string(opp_link)}</li>
|
231
|
+
<li>Subscription name: #{sub_name}</li>
|
232
|
+
<li>Subscription ID: #{sub_id}</li>
|
233
|
+
<li>Start date: #{start_date}</li>
|
234
|
+
<li>End date: #{end_date}</li>
|
235
|
+
<li>User count: #{current}</li>
|
236
|
+
<li>Previous user count: #{previous}</li>
|
237
|
+
<li>True-up count: #{trueup}</li>
|
238
|
+
<li>Plan: #{plan}</li>
|
239
|
+
<li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_account_string(sfdc_account)}</li>
|
240
|
+
<li>GitLab Version: #{version}</li>
|
241
|
+
</ul>
|
242
|
+
<p>
|
243
|
+
Some additional context for this request is:
|
244
|
+
</p>
|
245
|
+
<pre>
|
246
|
+
#{context}
|
247
|
+
</pre>
|
248
|
+
STRING
|
249
|
+
end
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
@@ -0,0 +1,136 @@
|
|
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 USGovIROther within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.42
|
12
|
+
class USGovIROther < Readiness::Client
|
13
|
+
##
|
14
|
+
# Process a US Government Internal Request Other request
|
15
|
+
#
|
16
|
+
# @author Jason Colyer
|
17
|
+
# @since 1.0.42
|
18
|
+
def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
|
19
|
+
@gitlab_client = gitlab_client
|
20
|
+
@gitlab_admin_client = gitlab_admin_client
|
21
|
+
@zendesk_client = zendesk_client
|
22
|
+
requester
|
23
|
+
zd_user
|
24
|
+
ticket = Readiness::Zendesk::Tickets.new
|
25
|
+
ticket.requester_id = zd_user.id
|
26
|
+
ticket.submitter_id = zd_user.id
|
27
|
+
ticket.comment = { html_body: body }
|
28
|
+
ticket.subject = 'xxxxx'
|
29
|
+
ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_internal_request_other]
|
30
|
+
ticket.priority = 'normal'
|
31
|
+
ticket.status = 'new'
|
32
|
+
ticket.ticket_form_id = 360001803151
|
33
|
+
ticket.custom_fields = [
|
34
|
+
{ id: 11717320292244, value: 'ir_other' },
|
35
|
+
{ id: 11717222771604, value: zd_user.email }
|
36
|
+
]
|
37
|
+
create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
|
38
|
+
puts "Ticket created: https://gitlab-federal-support.zendesk.com/agent/tickets/#{create.id}"
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Sets the global variable requester
|
43
|
+
#
|
44
|
+
# @author Jason Colyer
|
45
|
+
# @since 1.0.42
|
46
|
+
def self.requester
|
47
|
+
@requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Sets the global variable zd_user
|
52
|
+
#
|
53
|
+
# @author Jason Colyer
|
54
|
+
# @since 1.0.42
|
55
|
+
def self.zd_user
|
56
|
+
@zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
|
57
|
+
end
|
58
|
+
|
59
|
+
##
|
60
|
+
# Sets the global variable requester_email
|
61
|
+
#
|
62
|
+
# @author Jason Colyer
|
63
|
+
# @since 1.0.42
|
64
|
+
def self.requester_email
|
65
|
+
@requester_email ||= ENV.fetch('REQUESTER_EMAIL')
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Sets the global variable context
|
70
|
+
#
|
71
|
+
# @author Jason Colyer
|
72
|
+
# @since 1.0.42
|
73
|
+
def self.context
|
74
|
+
@context ||= ENV.fetch('INTERNAL_REQUEST_USFED_CONTEXT')
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# Sets the global variable contact_email
|
79
|
+
#
|
80
|
+
# @author Jason Colyer
|
81
|
+
# @since 1.0.42
|
82
|
+
def self.contact_email
|
83
|
+
@contact_email ||= ENV.fetch('INTERNAL_REQUEST_USFED_EMAIL')
|
84
|
+
end
|
85
|
+
|
86
|
+
##
|
87
|
+
# Sets the global variable sfdc_account
|
88
|
+
#
|
89
|
+
# @author Jason Colyer
|
90
|
+
# @since 1.0.42
|
91
|
+
def self.sfdc_account
|
92
|
+
@sfdc_account ||= ENV.fetch('INTERNAL_REQUEST_USFED_SFDC_ACCOUNT')
|
93
|
+
end
|
94
|
+
|
95
|
+
##
|
96
|
+
# Sets the global variable version
|
97
|
+
#
|
98
|
+
# @author Jason Colyer
|
99
|
+
# @since 1.0.42
|
100
|
+
def self.version
|
101
|
+
@version ||= ENV.fetch('INTERNAL_REQUEST_USFED_VERSION')
|
102
|
+
end
|
103
|
+
|
104
|
+
##
|
105
|
+
# Returns the ticket body
|
106
|
+
#
|
107
|
+
# @author Jason Colyer
|
108
|
+
# @since 1.0.42
|
109
|
+
# @return [String]
|
110
|
+
def self.body
|
111
|
+
<<~STRING
|
112
|
+
<p>
|
113
|
+
Greetings
|
114
|
+
</p>
|
115
|
+
<p>
|
116
|
+
Please note that this is an <b>INTERNAL</b> ticket and should <b>NEVER</b> be shared with anyone. Please do not CC, BCC, forward, or anything else that can send the information from this ticket. <b>NEVER</b> add <i>anyone</i> outside of GitLab to this ticket or communications stemming from this ticket.
|
117
|
+
</p>
|
118
|
+
<p>
|
119
|
+
A request has been filed for Other (nothing else fits the request).
|
120
|
+
</p>
|
121
|
+
<ul>
|
122
|
+
<li>GitLab Version: #{version}</li>
|
123
|
+
<li>#{Readiness::SupportSuperFormProcessor::Shared.sfdc_account_string(sfdc_account)}</li>
|
124
|
+
<li>Contact email: #{contact_email}</li>
|
125
|
+
</ul>
|
126
|
+
<p>
|
127
|
+
Some additional context for this request is:
|
128
|
+
</p>
|
129
|
+
<pre>
|
130
|
+
#{context}
|
131
|
+
</pre>
|
132
|
+
STRING
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|