gitlab_support_readiness 1.0.95 → 1.0.97

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7535177c20ccf51d51d851d1de39ac41637dd84909df860ec3a9fc526ee55e00
4
- data.tar.gz: f9a495ad819800df0f3d38216d8643f7d0f14d987f204e9b69dca531c39a0d8b
3
+ metadata.gz: 2a1ef97a0e31a1b469b1e012d856d5915d9b96c6ee85984b851854eb219fadf1
4
+ data.tar.gz: 5be4b830b795774ed4640a19afb8093ac29dd0636d4ea124309e9525762bb8a2
5
5
  SHA512:
6
- metadata.gz: fccf094da0fa1e9e834243ff3dc1b3fc412f89b481210709328719e30e15ad7e88bdff0e7dea4f6e1cf5e80c4d1904d08c947c4d9c181eef178a769ee8ba06e8
7
- data.tar.gz: 2ae62ba826f27b9cc9b2b529b1574df63c465ab219a53cfbef6a33972ac2245767a0f88657ff01ae47c972eba718ede743ff986d775777e80ca2158ee8b8fc84
6
+ metadata.gz: 78b62c7a8e266710bc424266234075691e376b120dccc10dbea12617c676c8b7d4eb788b5edfa9d19a517b892fd4ecdae2a623a3a065931474fd11977c956b11
7
+ data.tar.gz: dd20a3f36025cf1ed488a497ab97f2560b604f0512861798c79a854a59efa0a1189681c9d20546eba244084a072aa3a04a114a16d8e62e54532adaa017822a24
@@ -752,6 +752,7 @@ module Readiness
752
752
  'sub_consumption_cicd_minutes' => org.organization_fields['sub_consumption_cicd_minutes'],
753
753
  'sub_consumption_duo_enterprise' => org.organization_fields['sub_consumption_duo_enterprise'],
754
754
  'sub_consumption_duo_premium' => org.organization_fields['sub_consumption_duo_premium'],
755
+ 'sub_consumption_duo_amazon_q' => org.organization_fields['sub_consumption_duo_amazon_q'],
755
756
  'sub_consumption_eap' => org.organization_fields['sub_consumption_eap'],
756
757
  'sub_consumption_storage' => org.organization_fields['sub_consumption_storage'],
757
758
  'sub_proserv' => org.organization_fields['sub_proserv'],
@@ -806,6 +807,7 @@ module Readiness
806
807
  'sub_consumption_cicd_minutes' => org.organization_fields['sub_consumption_cicd_minutes'],
807
808
  'sub_consumption_duo_enterprise' => org.organization_fields['sub_consumption_duo_enterprise'],
808
809
  'sub_consumption_duo_premium' => org.organization_fields['sub_consumption_duo_premium'],
810
+ 'sub_consumption_duo_amazon_q' => org.organization_fields['sub_consumption_duo_amazon_q'],
809
811
  'sub_consumption_eap' => org.organization_fields['sub_consumption_eap'],
810
812
  'sub_consumption_storage' => org.organization_fields['sub_consumption_storage'],
811
813
  'sub_proserv' => org.organization_fields['sub_proserv'],
@@ -1001,6 +1003,7 @@ module Readiness
1001
1003
  'sub_consumption_cicd_minutes' => account['sub_consumption_cicd_minutes'],
1002
1004
  'sub_consumption_duo_enterprise' => account['sub_consumption_duo_enterprise'],
1003
1005
  'sub_consumption_duo_premium' => account['sub_consumption_duo_premium'],
1006
+ 'sub_consumption_duo_amazon_q' => account['sub_consumption_duo_amazon_q'],
1004
1007
  'sub_consumption_eap' => account['sub_consumption_eap'],
1005
1008
  'sub_consumption_storage' => account['sub_consumption_storage'],
1006
1009
  'sub_dotcom_premium' => account['sub_dotcom_premium'],
@@ -1053,6 +1056,7 @@ module Readiness
1053
1056
  'sub_consumption_cicd_minutes' => account['sub_consumption_cicd_minutes'],
1054
1057
  'sub_consumption_duo_enterprise' => account['sub_consumption_duo_enterprise'],
1055
1058
  'sub_consumption_duo_premium' => account['sub_consumption_duo_premium'],
1059
+ 'sub_consumption_duo_amazon_q' => account['sub_consumption_duo_amazon_q'],
1056
1060
  'sub_consumption_eap' => account['sub_consumption_eap'],
1057
1061
  'sub_consumption_storage' => account['sub_consumption_storage'],
1058
1062
  'sub_dotcom_premium' => account['sub_dotcom_premium'],
@@ -149,6 +149,7 @@ module Readiness
149
149
  "sub_consumption_cicd_minutes" => subscriptions.include?('sub_consumption_cicd_minutes'),
150
150
  "sub_consumption_duo_enterprise" => subscriptions.include?('sub_consumption_duo_enterprise'),
151
151
  "sub_consumption_duo_premium" => subscriptions.include?('sub_consumption_duo_premium'),
152
+ "sub_consumption_duo_amazon_q" => subscriptions.include?('sub_consumption_duo_amazon_q'),
152
153
  "sub_consumption_eap" => subscriptions.include?('sub_consumption_eap'),
153
154
  "sub_consumption_storage" => subscriptions.include?('sub_consumption_storage'),
154
155
  "sub_proserv" => subscriptions.include?('sub_proserv'),
@@ -205,6 +206,7 @@ module Readiness
205
206
  "sub_consumption_cicd_minutes" => subscriptions.include?('sub_consumption_cicd_minutes'),
206
207
  "sub_consumption_duo_enterprise" => subscriptions.include?('sub_consumption_duo_enterprise'),
207
208
  "sub_consumption_duo_premium" => subscriptions.include?('sub_consumption_duo_premium'),
209
+ "sub_consumption_duo_amazon_q" => subscriptions.include?('sub_consumption_duo_amazon_q'),
208
210
  "sub_consumption_eap" => subscriptions.include?('sub_consumption_eap'),
209
211
  "sub_consumption_storage" => subscriptions.include?('sub_consumption_storage'),
210
212
  "sub_proserv" => subscriptions.include?('sub_proserv'),
@@ -244,6 +246,7 @@ module Readiness
244
246
  sub_types.push('sub_consumption_cicd_minutes') if SubscriptionDefinitions.consumption_cicd_minutes.include? sub.Name
245
247
  sub_types.push('sub_consumption_duo_premium') if SubscriptionDefinitions.consumption_duo_premium.include? sub.Name
246
248
  sub_types.push('sub_consumption_duo_enterprise') if SubscriptionDefinitions.consumption_duo_enterprise.include? sub.Name
249
+ sub_types.push('sub_consumption_duo_amazon_q') if SubscriptionDefinitions.consumption_duo_amazon_q.include? sub.Name
247
250
  sub_types.push('sub_consumption_eap') if SubscriptionDefinitions.consumption_eap.include? sub.Name
248
251
  sub_types.push('sub_consumption_storage') if SubscriptionDefinitions.consumption_storage.include? sub.Name
249
252
  sub_types.push('sub_proserv') if SubscriptionDefinitions.proserv.include? sub.Name
@@ -78,6 +78,25 @@ module Readiness
78
78
  ]
79
79
  end
80
80
 
81
+ ##
82
+ # Defines Consumption => GitLab Duo with Amazon Q subscriptions
83
+ #
84
+ # @author Jason Colyer
85
+ # @since 1.0.40
86
+ # @return [Array]
87
+ def self.consumption_duo_amazon_q
88
+ [
89
+ 'Dedicated - GitLab Duo with Amazon Q - 1 Year',
90
+ 'Dedicated - GitLab Duo with Amazon Q - 2 Year',
91
+ 'Dedicated - GitLab Duo with Amazon Q - 3 Year',
92
+ 'Dedicated - GitLab Duo with Amazon Q - Monthly',
93
+ 'Self-Managed - GitLab Duo with Amazon Q - 1 Year',
94
+ 'Self-Managed - GitLab Duo with Amazon Q - 2 Year',
95
+ 'Self-Managed - GitLab Duo with Amazon Q - 3 Year',
96
+ 'Self-Managed - GitLab Duo with Amazon Q - Monthly'
97
+ ]
98
+ end
99
+
81
100
  ##
82
101
  # Defines Consumption => CI/CD Minutes subscriptions
83
102
  #
@@ -0,0 +1,178 @@
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 DisableUSGov within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.97
12
+ class DisableUSGov < Readiness::Client
13
+ ##
14
+ # Process a Disable US Government request
15
+ #
16
+ # @author Jason Colyer
17
+ # @since 1.0.97
18
+ def self.process!(gitlab_client, gitlab_admin_client, zendesk_client, sfdc_client)
19
+ @gitlab_client = gitlab_client
20
+ @gitlab_admin_client = gitlab_admin_client
21
+ @zendesk_client = zendesk_client
22
+ @sfdc_client = sfdc_client
23
+ requester
24
+ zd_user
25
+ checks
26
+ unless errors.count.zero?
27
+ Readiness::SupportSuperFormProcessor::Shared.invalid_enable_usgov(requester, errors)
28
+ end
29
+ issue = Readiness::GitLab::Issues.new
30
+ issue.title = 'Remove US Government Support exception'
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
+ # Peform validity checks for this request
39
+ #
40
+ # @author Jason Colyer
41
+ # @since 1.0.97
42
+ def self.checks
43
+ errors.push("Invalid SFDC account given: #{account_id}") if account.nil?
44
+ return unless errors.count.zero?
45
+
46
+ errors.push("SFDC account #{account_id} does not have an exception to remove") if account.Support_Instance__c != 'federal-support'
47
+ end
48
+
49
+ ##
50
+ # Sets the global variable errors
51
+ #
52
+ # @author Jason Colyer
53
+ # @since 1.0.97
54
+ def self.errors
55
+ @errors ||= []
56
+ end
57
+
58
+ ##
59
+ # Sets the global variable requester
60
+ #
61
+ # @author Jason Colyer
62
+ # @since 1.0.97
63
+ def self.requester
64
+ @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
65
+ end
66
+
67
+ ##
68
+ # Sets the global variable zd_user
69
+ #
70
+ # @author Jason Colyer
71
+ # @since 1.0.97
72
+ def self.zd_user
73
+ @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
74
+ end
75
+
76
+ ##
77
+ # Sets the global variable requester_email
78
+ #
79
+ # @author Jason Colyer
80
+ # @since 1.0.97
81
+ def self.requester_email
82
+ @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
83
+ end
84
+
85
+ ##
86
+ # Sets the global variable account
87
+ #
88
+ # @author Jason Colyer
89
+ # @since 1.0.97
90
+ def self.account
91
+ @account ||= fetch_account
92
+ end
93
+
94
+ ##
95
+ # Run a SQOL query to get account information
96
+ #
97
+ # @author Jason Colyer
98
+ # @since 1.0.97
99
+ def self.fetch_account
100
+ query = Readiness::Salesforce::Queries.new(account_query)
101
+ results = Readiness::Salesforce::Queries.run!(@sfdc_client, query)
102
+ results.first
103
+ end
104
+
105
+ ##
106
+ # Sets the global variable account_id
107
+ #
108
+ # @author Jason Colyer
109
+ # @since 1.0.97
110
+ def self.account_id
111
+ @account_id ||= ENV.fetch('DISABLE_US_GOV_SUPPORT_SFDC_ACCOUNT')
112
+ end
113
+
114
+ ##
115
+ # Returns a String to get account information
116
+ #
117
+ # @author Jason Colyer
118
+ # @since 1.0.97
119
+ def self.account_query
120
+ <<~STRING
121
+ SELECT
122
+ Account_ID_18__c,
123
+ Name,
124
+ Ultimate_Parent_Sales_Segment_Employees__c,
125
+ Account_Owner_Calc__c,
126
+ Technical_Account_Manager_Name__c,
127
+ GS_Health_Score_Color__c,
128
+ Restricted_Account__c,
129
+ Solutions_Architect_Lookup__r.Name,
130
+ Support_Hold__c,
131
+ Support_Instance__c,
132
+ (
133
+ SELECT
134
+ Id,
135
+ Name,
136
+ Zuora__ProductName__c,
137
+ Zuora__EffectiveEndDate__c,
138
+ Zuora__Quantity__c,
139
+ Zuora__TotalContractValue__c,
140
+ Subscription_Status__c
141
+ FROM Zuora__R00N40000001lGjTEAU__r
142
+ )
143
+ FROM Account
144
+ WHERE
145
+ Id = '#{account_id}'
146
+ STRING
147
+ end
148
+
149
+ ##
150
+ # Return the string for the issue body
151
+ #
152
+ # @author Jason Colyer
153
+ # @since 1.0.97
154
+ def self.message
155
+ <<~STRING
156
+ ## Remove US Government Support exception for #{account.Account_ID_18__c}
157
+
158
+ A request has been filed to remove the US Government Support exception for a SFDC account. The details are as follows:
159
+
160
+ - Requester: @#{requester.username}
161
+ - SFDC Account: [#{account.Account_ID_18__c}](https://gitlab.lightning.force.com/lightning/r/Account/#{account.Account_ID_18__c}/view)
162
+
163
+ #### Readiness TODO list
164
+
165
+ - [ ] Review above information for accuracy
166
+ - [ ] Confirm the corresponding organization does not currently have an ongoing tickets
167
+ - [ ] Follow the process detailed in [this handbook page](https://handbook.gitlab.com/handbook/support/readiness/operations/docs/policies/us_gov_support_exceptions)
168
+
169
+ /assign @#{requester.username} @jcolyer @secole @lyle
170
+
171
+ /label ~"Readiness::Triage" "Readiness::Current Quarter"
172
+
173
+ cc @leeeee-gtlb
174
+ STRING
175
+ end
176
+ end
177
+ end
178
+ end
@@ -27,8 +27,8 @@ module Readiness
27
27
  Readiness::SupportSuperFormProcessor::Shared.invalid_enable_usgov(requester, errors)
28
28
  end
29
29
  issue = Readiness::GitLab::Issues.new
30
- issue.title = 'Enable US Government Support'
31
- issue.description = message(file_path)
30
+ issue.title = 'Add US Government Support exception'
31
+ issue.description = message
32
32
  create = Readiness::GitLab::Issues.create!(@gitlab_client, project, issue)
33
33
  puts "Issue created: #{create.web_url}"
34
34
  exit 0
@@ -44,7 +44,7 @@ module Readiness
44
44
  errors.push("Invalid SFDC opportunity given: #{opportunity_id}") if opportunity.nil?
45
45
  return unless errors.count.zero?
46
46
 
47
- errors.push("SFDC account #{account_id} is already entitled") if Readiness::Salesforce::Client.us_gover_enabled?(@sfdc_client, account_id)
47
+ errors.push("SFDC account #{account_id} already has the exception") if account.Support_Instance__c == 'federal-support'
48
48
  errors.push("Missing US Government SKU on #{account_id}") unless correct_sku?
49
49
  end
50
50
 
@@ -54,6 +54,8 @@ module Readiness
54
54
  # @author Jason Colyer
55
55
  # @since 1.0.42
56
56
  def self.correct_sku?
57
+ return false if account.Zuora__R00N40000001lGjTEAU__r.nil?
58
+
57
59
  account.Zuora__R00N40000001lGjTEAU__r.map { |r| r.Name }.each do |name|
58
60
  return true if Readiness::Salesforce::SubscriptionDefinitions.usgov_12x5.include? name
59
61
  return true if Readiness::Salesforce::SubscriptionDefinitions.usgov_24x7.include? name
@@ -172,6 +174,7 @@ module Readiness
172
174
  Restricted_Account__c,
173
175
  Solutions_Architect_Lookup__r.Name,
174
176
  Support_Hold__c,
177
+ Support_Instance__c,
175
178
  (
176
179
  SELECT
177
180
  Id,
@@ -211,9 +214,9 @@ module Readiness
211
214
  # @since 1.0.42
212
215
  def self.message
213
216
  <<~STRING
214
- ## Enable US Government Support for #{account.Account_ID_18__c}
217
+ ## Add US Government Support exception for #{account.Account_ID_18__c}
215
218
 
216
- A request has been filed to enable US Government Support for a SFDC account. The details are as follows:
219
+ A request has been filed to add the US Government Support exception for a SFDC account. The details are as follows:
217
220
 
218
221
  - Requester: @#{requester.username}
219
222
  - SFDC Account: [#{account.Account_ID_18__c}](https://gitlab.lightning.force.com/lightning/r/Account/#{account.Account_ID_18__c}/view)
@@ -224,11 +227,13 @@ module Readiness
224
227
  #### Readiness TODO list
225
228
 
226
229
  - [ ] Review above information
227
- - [ ] Follow the process detailed in [this handbook page](https://handbook.gitlab.com/handbook/support/readiness/operations/docs/policies/enable_us_gov_support)
230
+ - [ ] Follow the process detailed in [this handbook page](https://handbook.gitlab.com/handbook/support/readiness/operations/docs/policies/us_gov_support_exceptions)
228
231
 
229
232
  /assign @#{requester.username} @jcolyer @secole @lyle
230
233
 
231
- cc @jscarborough @JamesRLopes
234
+ /label ~"Readiness::Triage" "Readiness::Current Quarter"
235
+
236
+ cc @jscarborough @leeeee-gtlb
232
237
  STRING
233
238
  end
234
239
  end
@@ -215,7 +215,7 @@ module Readiness
215
215
  email.subject = 'Invalid Support Super Form submission'
216
216
  email.text = invalid_enable_usgov_message(requester, errors)
217
217
  Readiness::Mailgun::Emails.send!(mailgun_client, email)
218
- puts "Invalid enable us gov submission by #{requester.email}"
218
+ puts "Invalid enable/disable us gov submission by #{requester.email}"
219
219
  exit 0
220
220
  end
221
221
 
@@ -485,7 +485,7 @@ module Readiness
485
485
  <<~STRING
486
486
  Greetings @#{requester.username} ,
487
487
 
488
- Your recent request to enable US Goverment support was not able to be filed due to the following issues:
488
+ Your recent request to enable/disable US Goverment support was not able to be filed due to the following issues:
489
489
 
490
490
  #{errors.map { |e| "- #{e}" }.join("\n")}
491
491
 
@@ -12,6 +12,7 @@ module Readiness
12
12
 
13
13
  require "#{__dir__}/support_super_form_processor/create_article"
14
14
  require "#{__dir__}/support_super_form_processor/create_macro"
15
+ require "#{__dir__}/support_super_form_processor/disable_us_government"
15
16
  require "#{__dir__}/support_super_form_processor/edit_macro"
16
17
  require "#{__dir__}/support_super_form_processor/enable_us_government"
17
18
  require "#{__dir__}/support_super_form_processor/global_ir_dotcom_subscriptions_billing_entity_change"
@@ -359,6 +359,7 @@ module Readiness
359
359
  addons.push('AI') if @organization.organization_fields['sub_consumption_ai']
360
360
  addons.push('GitLab Duo Premium') if @organization.organization_fields['sub_consumption_duo_premium']
361
361
  addons.push('GitLab Duo Enterprise') if @organization.organization_fields['sub_consumption_duo_enterprise']
362
+ addons.push('GitLab Duo with Amazon Q') if @organization.organization_fields['sub_consumption_duo_amazon_q']
362
363
  addons.push('AI addon') if @organization.organization_fields['sub_consumption_ai']
363
364
  addons.push('Success Advanced') if @organization.organization_fields['sub_ss_success_growth']
364
365
  addons.push('Success Signature') if @organization.organization_fields['sub_ss_success_enterprise']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab_support_readiness
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.95
4
+ version: 1.0.97
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Colyer
@@ -319,6 +319,7 @@ files:
319
319
  - lib/support_readiness/support_super_form_processor.rb
320
320
  - lib/support_readiness/support_super_form_processor/create_article.rb
321
321
  - lib/support_readiness/support_super_form_processor/create_macro.rb
322
+ - lib/support_readiness/support_super_form_processor/disable_us_government.rb
322
323
  - lib/support_readiness/support_super_form_processor/edit_macro.rb
323
324
  - lib/support_readiness/support_super_form_processor/enable_us_government.rb
324
325
  - lib/support_readiness/support_super_form_processor/global_ir_dotcom_subscriptions_billing_entity_change.rb