floe-servicenow 0.1.0

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.
@@ -0,0 +1,217 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module Floe
6
+ module ServiceNow
7
+ class Table < Floe::ServiceNow::Methods
8
+ # List available tables
9
+ def self.list_tables(params, secrets, _context)
10
+ error = verify_credentials(secrets)
11
+ return ServiceNow.error!({}, :cause => error) if error
12
+
13
+ error = verify_instance_id(params)
14
+ return ServiceNow.error!({}, :cause => error) if error
15
+
16
+ query_params = {}
17
+ query_params["sysparm_query"] = params["query"] if params["query"]
18
+ query_params["sysparm_limit"] = params["limit"] if params["limit"]
19
+ query_params["sysparm_offset"] = params["offset"] if params["offset"]
20
+ query_params["sysparm_fields"] = params["fields"] if params["fields"]
21
+
22
+ http_params = build_http_params(
23
+ "GET",
24
+ "/api/now/table/sys_db_object",
25
+ params,
26
+ secrets,
27
+ :query => query_params
28
+ )
29
+
30
+ http_request(http_params, {}, {})
31
+ end
32
+
33
+ # Query records from a table
34
+ def self.query_records(params, secrets, _context)
35
+ error = verify_credentials(secrets)
36
+ return ServiceNow.error!({}, :cause => error) if error
37
+
38
+ error = verify_instance_id(params)
39
+ return ServiceNow.error!({}, :cause => error) if error
40
+
41
+ error = verify_required_param(params, "table_name")
42
+ return ServiceNow.error!({}, :cause => error) if error
43
+
44
+ query_params = {}
45
+ query_params["sysparm_query"] = params["query"] if params["query"]
46
+ query_params["sysparm_limit"] = params["limit"] if params["limit"]
47
+ query_params["sysparm_offset"] = params["offset"] if params["offset"]
48
+ query_params["sysparm_fields"] = params["fields"] if params["fields"]
49
+ query_params["sysparm_display_value"] = params["display_value"] if params["display_value"]
50
+ query_params["sysparm_exclude_reference_link"] = params["exclude_reference_link"] if params["exclude_reference_link"]
51
+
52
+ http_params = build_http_params(
53
+ "GET",
54
+ "/api/now/table/#{params['table_name']}",
55
+ params,
56
+ secrets,
57
+ :query => query_params
58
+ )
59
+
60
+ http_request(http_params, {}, {})
61
+ end
62
+
63
+ # Get a single record by sys_id
64
+ def self.get_record(params, secrets, _context)
65
+ error = verify_credentials(secrets)
66
+ return ServiceNow.error!({}, :cause => error) if error
67
+
68
+ error = verify_instance_id(params)
69
+ return ServiceNow.error!({}, :cause => error) if error
70
+
71
+ error = verify_required_param(params, "table_name")
72
+ return ServiceNow.error!({}, :cause => error) if error
73
+
74
+ error = verify_required_param(params, "sys_id")
75
+ return ServiceNow.error!({}, :cause => error) if error
76
+
77
+ query_params = {}
78
+ query_params["sysparm_fields"] = params["fields"] if params["fields"]
79
+ query_params["sysparm_display_value"] = params["display_value"] if params["display_value"]
80
+ query_params["sysparm_exclude_reference_link"] = params["exclude_reference_link"] if params["exclude_reference_link"]
81
+
82
+ http_params = build_http_params(
83
+ "GET",
84
+ "/api/now/table/#{params['table_name']}/#{params['sys_id']}",
85
+ params,
86
+ secrets,
87
+ :query => query_params
88
+ )
89
+
90
+ http_request(http_params, {}, {})
91
+ end
92
+
93
+ # Create a new record
94
+ def self.create_record(params, secrets, _context)
95
+ error = verify_credentials(secrets)
96
+ return ServiceNow.error!({}, :cause => error) if error
97
+
98
+ error = verify_instance_id(params)
99
+ return ServiceNow.error!({}, :cause => error) if error
100
+
101
+ error = verify_required_param(params, "table_name")
102
+ return ServiceNow.error!({}, :cause => error) if error
103
+
104
+ error = verify_required_param(params, "data")
105
+ return ServiceNow.error!({}, :cause => error) if error
106
+
107
+ query_params = {}
108
+ query_params["sysparm_display_value"] = params["display_value"] if params["display_value"]
109
+ query_params["sysparm_exclude_reference_link"] = params["exclude_reference_link"] if params["exclude_reference_link"]
110
+ query_params["sysparm_input_display_value"] = params["input_display_value"] if params["input_display_value"]
111
+
112
+ http_params = build_http_params(
113
+ "POST",
114
+ "/api/now/table/#{params['table_name']}",
115
+ params,
116
+ secrets,
117
+ :query => query_params,
118
+ :body => params["data"]
119
+ )
120
+
121
+ http_request(http_params, {}, {})
122
+ end
123
+
124
+ # Update a record (replace all fields)
125
+ def self.update_record(params, secrets, _context)
126
+ error = verify_credentials(secrets)
127
+ return ServiceNow.error!({}, :cause => error) if error
128
+
129
+ error = verify_instance_id(params)
130
+ return ServiceNow.error!({}, :cause => error) if error
131
+
132
+ error = verify_required_param(params, "table_name")
133
+ return ServiceNow.error!({}, :cause => error) if error
134
+
135
+ error = verify_required_param(params, "sys_id")
136
+ return ServiceNow.error!({}, :cause => error) if error
137
+
138
+ error = verify_required_param(params, "data")
139
+ return ServiceNow.error!({}, :cause => error) if error
140
+
141
+ query_params = {}
142
+ query_params["sysparm_display_value"] = params["display_value"] if params["display_value"]
143
+ query_params["sysparm_exclude_reference_link"] = params["exclude_reference_link"] if params["exclude_reference_link"]
144
+ query_params["sysparm_input_display_value"] = params["input_display_value"] if params["input_display_value"]
145
+
146
+ http_params = build_http_params(
147
+ "PUT",
148
+ "/api/now/table/#{params['table_name']}/#{params['sys_id']}",
149
+ params,
150
+ secrets,
151
+ :query => query_params,
152
+ :body => params["data"]
153
+ )
154
+
155
+ http_request(http_params, {}, {})
156
+ end
157
+
158
+ # Patch a record (update specific fields)
159
+ def self.patch_record(params, secrets, _context)
160
+ error = verify_credentials(secrets)
161
+ return ServiceNow.error!({}, :cause => error) if error
162
+
163
+ error = verify_instance_id(params)
164
+ return ServiceNow.error!({}, :cause => error) if error
165
+
166
+ error = verify_required_param(params, "table_name")
167
+ return ServiceNow.error!({}, :cause => error) if error
168
+
169
+ error = verify_required_param(params, "sys_id")
170
+ return ServiceNow.error!({}, :cause => error) if error
171
+
172
+ error = verify_required_param(params, "data")
173
+ return ServiceNow.error!({}, :cause => error) if error
174
+
175
+ query_params = {}
176
+ query_params["sysparm_display_value"] = params["display_value"] if params["display_value"]
177
+ query_params["sysparm_exclude_reference_link"] = params["exclude_reference_link"] if params["exclude_reference_link"]
178
+ query_params["sysparm_input_display_value"] = params["input_display_value"] if params["input_display_value"]
179
+
180
+ http_params = build_http_params(
181
+ "PATCH",
182
+ "/api/now/table/#{params['table_name']}/#{params['sys_id']}",
183
+ params,
184
+ secrets,
185
+ :query => query_params,
186
+ :body => params["data"]
187
+ )
188
+
189
+ http_request(http_params, {}, {})
190
+ end
191
+
192
+ # Delete a record
193
+ def self.delete_record(params, secrets, _context)
194
+ error = verify_credentials(secrets)
195
+ return ServiceNow.error!({}, :cause => error) if error
196
+
197
+ error = verify_instance_id(params)
198
+ return ServiceNow.error!({}, :cause => error) if error
199
+
200
+ error = verify_required_param(params, "table_name")
201
+ return ServiceNow.error!({}, :cause => error) if error
202
+
203
+ error = verify_required_param(params, "sys_id")
204
+ return ServiceNow.error!({}, :cause => error) if error
205
+
206
+ http_params = build_http_params(
207
+ "DELETE",
208
+ "/api/now/table/#{params['table_name']}/#{params['sys_id']}",
209
+ params,
210
+ secrets
211
+ )
212
+
213
+ http_request(http_params, {}, {})
214
+ end
215
+ end
216
+ end
217
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Floe
4
+ module ServiceNow
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "floe"
4
+ require_relative "servicenow/version"
5
+ require_relative "servicenow/methods"
6
+ require_relative "servicenow/cmdb"
7
+ require_relative "servicenow/incident"
8
+ require_relative "servicenow/oauth"
9
+ require_relative "servicenow/service_catalog"
10
+ require_relative "servicenow/table"
11
+ require_relative "servicenow/runner"
12
+
13
+ module Floe
14
+ module ServiceNow
15
+ class Error < StandardError; end
16
+
17
+ class << self
18
+ def error!(runner_context = {}, cause:, error: "States.TaskFailed")
19
+ runner_context.merge!(
20
+ "running" => false,
21
+ "success" => false,
22
+ "output" => {"Error" => error, "Cause" => cause}
23
+ )
24
+ end
25
+
26
+ def success!(runner_context = {}, output:)
27
+ runner_context.merge!(
28
+ "running" => false,
29
+ "success" => true,
30
+ "output" => output
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: floe-servicenow
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Adam Grare
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: floe
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.19'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.19'
26
+ - !ruby/object:Gem::Dependency
27
+ name: manageiq-style
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rake
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '13.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '13.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: rspec
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ description: ServiceNow API Integration for Floe
69
+ email:
70
+ - adam@grare.com
71
+ executables:
72
+ - floe-servicenow
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".rubocop_local.yml"
77
+ - ".whitesource"
78
+ - CHANGELOG.md
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - docs/cmdb.md
83
+ - docs/incident.md
84
+ - docs/oauth.md
85
+ - docs/service_catalog.md
86
+ - docs/table.md
87
+ - examples/cmdb.asl
88
+ - examples/create_server_ci.asl
89
+ - examples/incident.asl
90
+ - examples/oauth.asl
91
+ - examples/service_catalog.asl
92
+ - examples/table.asl
93
+ - exe/floe-servicenow
94
+ - lib/floe/service_now.rb
95
+ - lib/floe/servicenow.rb
96
+ - lib/floe/servicenow/cmdb.rb
97
+ - lib/floe/servicenow/incident.rb
98
+ - lib/floe/servicenow/methods.rb
99
+ - lib/floe/servicenow/oauth.rb
100
+ - lib/floe/servicenow/runner.rb
101
+ - lib/floe/servicenow/service_catalog.rb
102
+ - lib/floe/servicenow/table.rb
103
+ - lib/floe/servicenow/version.rb
104
+ homepage: https://github.com/ManageIQ/floe-servicenow
105
+ licenses:
106
+ - Apache-2.0
107
+ metadata:
108
+ allowed_push_host: https://rubygems.org
109
+ rubygems_mfa_required: 'true'
110
+ homepage_uri: https://github.com/ManageIQ/floe-servicenow
111
+ source_code_uri: https://github.com/ManageIQ/floe-servicenow
112
+ changelog_uri: https://github.com/ManageIQ/floe-servicenow/blob/master/CHANGELOG.md
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 3.0.0
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubygems_version: 3.6.7
128
+ specification_version: 4
129
+ summary: ServiceNow API Integration for Floe
130
+ test_files: []