Class: Readiness::SupportSuperFormProcessor::GlobalIRWiderCommunityLicense

Inherits:
Client
  • Object
show all
Defined in:
lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb

Overview

Defines the class GlobalIRWiderCommunityLicense within the module Zendesk.

Author:

  • Jason Colyer

Since:

  • 1.0.42

Class Method Summary collapse

Methods inherited from Client

auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries

Class Method Details

.approverObject

Sets the global variable approver

Author:

  • Jason Colyer

Since:

  • 1.0.42



187
188
189
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 187

def self.approver
  @approver ||= ENV.fetch('APPROVING_MANAGER')
end

.bodyString

Returns the ticket body

Returns:

  • (String)

Author:

  • Jason Colyer

Since:

  • 1.0.42



215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 215

def self.body
  <<~STRING
    <p>
      Greetings,
    </p>
    <p>
      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.
    </p>
    <p>
      A request has been filed for Wider Community License.
    </p>
    <p>
      The information for this is as follows:
    </p>
    <ul>
      <li>Contact's name: #{contact_name}</li>
      <li>
        Contact's email: #{contact_email}
        <a href="https://www.zuora.com/platform/apps/search?searchTerm=#{contact_email}" target='_blank'>(Zuora Search)</a>
        <a href="https://customers.gitlab.com/admin/customer?model_name=customer&query=#{contact_email}" target='_blank'>(Portal Search)</a>
      </li>
      <li>Contact's company: #{company}</li>
      <li>User count: #{current}</li>
      <li>Previous user count: #{previous}</li>
      <li>True-up count: #{trueup}</li>
      <li>Plan: #{plan}</li>
      <li>Expiration date: #{expiration}</li>
      <li>Approving manager email: #{approver}</li>
      <li>Trial: Yes</li>
    </ul>
    <p>
      The reason for the license being issued is:
    </p>
    <pre>
      #{reason}
    </pre>
    <p>
      Some additional context for this request is:
    </p>
    <pre>
      #{context}
    </pre>
    <p>
      You can find the workflow for this ticket
      <a href='https://handbook.gitlab.com/handbook/support/license-and-renewals/workflows/self-managed/creating-wider-community-license/' target='_blank'>here</a>
    </p>
  STRING
end

.companyObject

Sets the global variable company

Author:

  • Jason Colyer

Since:

  • 1.0.42



142
143
144
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 142

def self.company
  @company ||= ENV.fetch('COMPANY')
end

.contact_emailObject

Sets the global variable contact_email

Author:

  • Jason Colyer

Since:

  • 1.0.42



133
134
135
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 133

def self.contact_email
  @contact_email ||= ENV.fetch('CONTACT_EMAIL')
end

.contact_nameObject

Sets the global variable contact_name

Author:

  • Jason Colyer

Since:

  • 1.0.42



124
125
126
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 124

def self.contact_name
  @contact_name ||= ENV.fetch('CONTACT_NAME')
end

.contextObject

Sets the global variable context

Author:

  • Jason Colyer

Since:

  • 1.0.42



115
116
117
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 115

def self.context
  @context ||= ENV.fetch('LNR_OTHER_CONTEXT')
end

.currentObject

Sets the global variable current

Author:

  • Jason Colyer

Since:

  • 1.0.42



151
152
153
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 151

def self.current
  @current ||= ENV.fetch('SEAT_COUNT')
end

.expirationObject

Sets the global variable expiration

Author:

  • Jason Colyer

Since:

  • 1.0.42



196
197
198
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 196

def self.expiration
  @expiration ||= ENV.fetch('EXPIRATION_DATE')
end

.planObject

Sets the global variable plan

Author:

  • Jason Colyer

Since:

  • 1.0.42



178
179
180
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 178

def self.plan
  @plan ||= ENV.fetch('SM_PLAN')
end

.previousObject

Sets the global variable previous

Author:

  • Jason Colyer

Since:

  • 1.0.42



160
161
162
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 160

def self.previous
  @previous ||= ENV.fetch('PREVIOUS_COUNT')
end

.process!(gitlab_client, gitlab_admin_client, zendesk_client) ⇒ Object

Process a Global Internal Request Provision Failure request

Author:

  • Jason Colyer

Since:

  • 1.0.42



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 18

def self.process!(gitlab_client, gitlab_admin_client, zendesk_client)
  @gitlab_client = gitlab_client
  @gitlab_admin_client = gitlab_admin_client
  @zendesk_client = zendesk_client
  @ticket_forms = Readiness::Zendesk::TicketForms.list(@zendesk_client)
  @ticket_fields = Readiness::Zendesk::TicketFields.list(@zendesk_client)
  @lnr_form = Readiness::Zendesk::TicketForms.find_by_name(@zendesk_client, 'L&R', @ticket_forms)
  @area_of_focus_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Area of Focus', @ticket_fields)
  @ticket_stage_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Ticket Stage', @ticket_fields)
  @prfs_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Preferred Region for Support', @ticket_fields)
  @plan_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'GitLab Plan', @ticket_fields)
  @sales_name_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Sales contact name', @ticket_fields)
  @sales_email_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Sales contact email', @ticket_fields)
  @severity_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Customer Severity (maps to priority, do not change)', @ticket_fields)
  @arr_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Ticket ARR', @ticket_fields)
  @priority_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Customer Priority', @ticket_fields)
  @ir_category_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'IR Category', @ticket_fields)
  @ir_submitter_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'IR Submitter', @ticket_fields)
  @channel_field = Readiness::Zendesk::TicketFields.find_by_name(@zendesk_client, 'Channel (Received at email)', @ticket_fields)
  search = Readiness::Zendesk::Users.find_many(@zendesk_client, [379855863520, 12816218763676])
  end_user = search.detect { |s| s.email == 'gitlab_support@example.com' }        
  requester
  zd_user
  if Date.parse(expiration) > (Date.today + 3.months) && requester_email == approver
    Readiness::SupportSuperFormProcessor::Shared.cannot_self_approve((requester_email))
  end
  ticket = Readiness::Zendesk::Tickets.new
  ticket.email_ccs = [
    { user_id: zd_user.id }
  ]
  ticket.requester_id = end_user.id
  ticket.submitter_id = end_user.id
  ticket.comment = { html_body: body }
  ticket.subject = 'Internal Request - SM - Wider Community License'
  ticket.tags = %w[lnr_internal_request lnr_valid_request lnr_community_license]
  ticket.priority = request_priority
  ticket.status = 'new'
  ticket.ticket_form_id = @lnr_form.id
  ticket.custom_fields = [
    { id: @area_of_focus_field.id, value: 'aof_lnr' },
    { id: @ticket_stage_field.id, value: 'stage-frt' },
    { id: @prfs_field.id, value: 'all_regions' },
    { id: @plan_field.id, value: 'free_plan' },
    { id: @sales_name_field.id, value: zd_user.name },
    { id: @sales_email_field.id, value: zd_user.email },
    { id: @severity_field.id, value: 'sev3' },
    { id: @arr_field.id, value: '0' },
    { id: @priority_field.id, value: 'medium' },
    { id: @ir_category_field.id, value: 'ir_wcl' },
    { id: @ir_submitter_field.id, value: zd_user.email },
    { id: @channel_field.id, value: 'created_by_agent' }          
  ]
  create = Readiness::Zendesk::Tickets.create!(@zendesk_client, ticket)
  puts "Ticket created: #{create.id}"
end

.reasonObject

Sets the global variable reason

Author:

  • Jason Colyer

Since:

  • 1.0.42



205
206
207
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 205

def self.reason
  @reason ||= ENV.fetch('REASON_FOR_LICENSE')
end

.request_priorityObject

Sets the global variable request_priority

Author:

  • Jason Colyer

Since:

  • 1.0.42



106
107
108
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 106

def self.request_priority
  @request_priority ||= ENV.fetch('PRIORITY')
end

.requesterObject

Sets the global variable requester

Author:

  • Jason Colyer

Since:

  • 1.0.42



79
80
81
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 79

def self.requester
  @requester ||= Readiness::SupportSuperFormProcessor::Shared.gitlab_user_check(@gitlab_admin_client, requester_email)
end

.requester_emailObject

Sets the global variable requester_email

Author:

  • Jason Colyer

Since:

  • 1.0.42



97
98
99
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 97

def self.requester_email
  @requester_email ||= ENV.fetch('REQUESTER_EMAIL')
end

.trueupObject

Sets the global variable trueup

Author:

  • Jason Colyer

Since:

  • 1.0.42



169
170
171
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 169

def self.trueup
  @trueup ||= ENV.fetch('TRUEUP_COUNT')
end

.zd_userObject

Sets the global variable zd_user

Author:

  • Jason Colyer

Since:

  • 1.0.42



88
89
90
# File 'lib/support_readiness/support_super_form_processor/global_ir_wider_community_license.rb', line 88

def self.zd_user
  @zd_user ||= Readiness::SupportSuperFormProcessor::Shared.zendesk_user_check(@zendesk_client, requester_email)
end