TicketAbstractorClient

Client for accessing to a TicketAbstractor service.

Installation

Add this line to your application's Gemfile:

gem 'ticket_abstractor_client'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ticket_abstractor_client

API

API Documentation

Upgrading

Since version 1.5.0, TicketAbstractorClient.initialize_client returns an instance of TicketAbstractorClient::Base instead of TicketAbstractorClient class.

Usage

Initialize:

require 'ticket_abstractor_client'

without security token:

client = TicketAbstractorClient.initialize_client('http://ticket.abstractor.url')

with security token:

client = TicketAbstractorClient.initialize_client('http://ticket.abstractor.url', 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3')

Access clients:

client.jira
client.brouha
client.itrc
client.ilogger
client.sev_one
client.service_now

Jira

Get list of Jira endpoints:

client.jira.endpoints #=> { 'endpoint_name_1' => 'http://www.jira-endpoint.com', 'endpoint_name_2' => '... }

Get access to specific Jira instance:

client.jira.get_issue ... #=> default Jira instance (T&P)
client.jira('endpoint_name_1').get_issue ... #=> Jira at 'http://www.jira-endpoint.com'

Grab issue:

client.jira.get_issue 'IFS-123'
client.jira.get_issue_status 'IFS-123'

Get issues by filter:

jira_filter_id = 2145
client.jira.get_issues_by_filter jira_filter_id #=> [{ issue_1 }, { issue_2 }, ...]
client.jira.get_issues_by_filter jira_filter_id, page, per_page, show_total: true #=> { total: 2, issues: [...] }

Create issue (project, summary, description and issuetype fields are required):

options = { project: "IFS", summary: "Summary", description: "Desc", issuetype: "Bug"}
client.jira.create_issue options

Create issue with an attachment:

options = { project: "IFS", summary: "Summary", description: "Desc", issuetype: "Bug"}
attachment = File.new('file.png', 'rb')
client.jira.create_issue options, attachment

Create issue using Jira params:

options = { fields: { project: { key: "IFS" }, summary: "Summary", issuetype: { id: 82 } } }
attachment = File.new('file.png', 'rb')
client.jira.raw_create_issue options, attachment

Update issue (issuekey field is required):

client.jira.update_issue(issuekey: 'IFS-123', description: 'new description')

Attach the file to issue:

attachment = File.new('file.png', 'rb')
client.jira.update_issue({ issuekey: 'IFS-123' }, attachment)

Create incident (project, summary, description and issuetype fields are required):

options = { project: "IFS", summary: "Summary", description: "Desc", issuetype: {id: "3"},
  customfields: {
    customfield_1: {id: "22"},
    customfield_2: {value: "No Impact"}
  }}
client.jira.create_tvx_issue options

Add comment to the issue (issuekey and comment fields are required):

client.jira.add_comment(issuekey: 'IFS-123', comment: 'comment to ticket')

Add an actiity to the issue (issuekey, comment and opts fields are required): opts should containt { id:, display_name:, event_id:}

client.jira.add_activity(issuekey: 'IFS-123', comment: 'activity comment to ticket',
  generator: {
    id: 'https://intel.xcal.tv',
    display_name: 'OIV'
  },
  event_id: '23456'
)

Brouha

Grab issue:

client.brouha.get_issue '12'

Create issue:

options = {
  severity: 'Severity 5',
  title: 'incident title',
  bridge: '123456789',
  summary: 'incident description',
  product: 'Xfinity Voice',
  service: 'voicemail',
  division: 'incident division',
  desk: 'incident desk',
  opened_by: 'incident manager',
  start_time: 'incident start time'
}

client.brouha.create_issue options

List products and services:

client.brouha.list_product_services

Update issue:

issue_key = 23
options = {
  id: 23,
  alarm_url: 'http://server.domain/alarms/'
}

client.brouha.update_issue issue_key, options

iTRC

Find apps:

client.itrc.list_apps
client.itrc.find_app 'itrc'

Find app_groups:

client.itrc.list_app_groups
client.itrc.find_app_group 'app-mgmt-tools'

Find business units:

client.itrc.list_business_units
client.itrc.find_business_unit 3

Find departments:

client.itrc.list_departments
client.itrc.find_department 4

ILogger

Grab incidents:

client.ilogger.get_incidents 'owner=brouha&incident_desk=ASD&limit=10&offset=0'

SevOne

Get data from graph:

## :graph => :data_sources is required
## :timespan => :start_time and :end_time is required
params = {
  graph: {
    data_sources: [
      { device_name: "ccprtr-br-a1-p", object_name: "ae1", indicator: "ifHCOutOctets" },
      { device_name: "ccprtr-br-a2-p", object_name: "ae1", indicator: "ifHCOutOctets" }
    ]
  }
}

## query which fetch data for period(time in UNIX timestamp)
client.sev_one.report_get_data_from_graph(params.merge(timespan: { start_time: 1423242600.0, end_time: 1423242900.0 }))

## query which fetch data for last 5 minutes
client.sev_one.report_get_data_from_graph(params.merge(timespan: { simple_timespan: "past 5 minutes" }))

Get data from flowfalcon graph:

## :graph => :data_sources is required
## :timespan => :start_time and :end_time is required
params = {
  graph: {
    data_sources: [
      { device_name: "68.87.7.129" },
      { device_name: "68.87.7.130" }
    ]
  }
}

## query which fetch data for period(time in UNIX timestamp)
client.sev_one.flowfalcon_get_data_from_graph(params.merge(timespan: { start_time: 1423242600.0, end_time: 1423242900.0 }))

Service Now

## get all incidents:
client.service_now.get_all_incidents(limit: '1000', offset: '0', table_name: 'incident')

# service_desk - is assigment_group in ServiceNow API. It should be escaped
# states - get incidents included in this states. It should be integers separated by comma
client.service_now.get_all_incidents(service_desk: 'T%26P+Prod+Support', states: '1,2,9,10,11')

# get incident:
# :incident_id is a required parameter
client.service_now.get_incident(incident_id: '', table_name: 'incident')

# create incident:
# :incident_params is a required parameter
client.service_now.create_incident(incident_params: {}, table_name: 'incident')

# update incident
# :incident_params and :sys_id is a required parameters
client.service_now.update_incident(incident_params: {}, sys_id: '', table_name: 'incident')

# get comments
# :incident_id is required parameter.
client.service_now.get_comments(incident_id: '', table_name: 'incident', display_value: false)

# get all assignment groups:
client.service_now.get_all_groups()
client.service_now.get_all_groups(query: 'activeIStrue', limit: '100', fields: 'name,sys_id')

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request