usd 1.3.4.1 → 1.4.1
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/LICENSE.md +0 -0
- data/README.md +11 -2
- data/bin/rusdc +33 -5
- data/bin/set_env +0 -0
- data/change_log.md +20 -0
- data/images/vcard.png +0 -0
- data/lib/usd.rb +8 -4
- data/usd.gemspec +3 -2
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 96c72b434c05223e7b76a1d26c22920f95ced983ce6641f89b3fc3c0e22d5b81
|
|
4
|
+
data.tar.gz: 6fa9a8022c88a580c23063299efb14be72432871e36f08360479b7b88ca0cd6d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 47aed70bac5221913bdb28bd1a9534af9a4770fbe48fb45461242289873c8fa0c68855c8ff2ade0f457f490397cf3d6c64694db872536d4a1d114453a4afa216
|
|
7
|
+
data.tar.gz: 8ea6c8a638e56326a273cb09df3911ac9ac19f53bd3b048d4bae8e60d02db1190ae2ec6ef94c861c9127b477eaee17407b8fafb72e89926a7f7630f379eb769e
|
data/LICENSE.md
CHANGED
|
File without changes
|
data/README.md
CHANGED
|
@@ -56,13 +56,14 @@ rusdc get_attachment_of_co <co_name> <filename> # d
|
|
|
56
56
|
rusdc get_attachment_of_in <incident> <filename> # download an attachment of an Incident and print it out on stdout
|
|
57
57
|
rusdc help [COMMAND] # Describe available commands or one specific command
|
|
58
58
|
rusdc in_add_2_chg <changeorder> <incident> # add incident to changeorder
|
|
59
|
-
rusdc in_add_attachment <in> <file> # attach
|
|
59
|
+
rusdc in_add_attachment <in> <file> # attach a file to an incident or problem
|
|
60
60
|
rusdc in_list_child_ins <in> # list all child-incidents of one incident
|
|
61
61
|
rusdc list_attachments_of_ci <ci_name> # list all attachments of a CI
|
|
62
62
|
rusdc list_attachments_of_co <co_name> # list all attachments of a changeorder
|
|
63
|
-
rusdc list_attachments_of_in <in> # list all attachments of an
|
|
63
|
+
rusdc list_attachments_of_in <in> # list all attachments of an incident or problem
|
|
64
64
|
rusdc nr_add_attachment <nr> <file> # attach the file to nr
|
|
65
65
|
rusdc nr_add_child <nr-name> <child-name> # add one child CI to another CI
|
|
66
|
+
rusdc nr_add_contact <nr> <cnt_email> # add contact to configuration-item
|
|
66
67
|
rusdc nr_add_org <nr> <org> # add an Organisation to a ConfigurationItem
|
|
67
68
|
rusdc nr_changes <nr> [inactive-too] # list all open changeorders of one CI
|
|
68
69
|
rusdc nr_childs <ci-name> # lists all childs CIs of a specific CI
|
|
@@ -112,3 +113,11 @@ foo2 foo TEST
|
|
|
112
113
|
```
|
|
113
114
|
|
|
114
115
|
more examples under [find examples-Wikipage](https://github.com/ogaida/usd/wiki/find-examples) or in the [change_log](https://github.com/ogaida/usd/blob/master/change_log.md)
|
|
116
|
+
|
|
117
|
+
# senarios
|
|
118
|
+
|
|
119
|
+
<img src="https://yuml.me/diagram/scruffy/class/[SDM%20REST-API{bg:red}]<->[usd-gem{bg:green}]<->[rusdc{bg:orange}],[ruby-script{bg:orange}]<->[usd-gem],[sinatra%20web-app{bg:orange}]<->[usd-gem],[bash commands]<->[rusdc],[shell-scripts]<->[rusdc],[import]->[ruby-script],[ruby-script]->[export],[reports]<-[sinatra%20web-app]<-[drop datafiles/emails/create objects]">
|
|
120
|
+
|
|
121
|
+
# feedback
|
|
122
|
+
|
|
123
|
+
Since I could only test this gem in a 14.1 environment, I would be interested to know whether it also works in a version 17 environment of CA Service Management. Any kind of feedback is very welcome.
|
data/bin/rusdc
CHANGED
|
@@ -232,11 +232,17 @@ class Rusdc < Thor
|
|
|
232
232
|
|
|
233
233
|
desc "get_attachment_of_co <co_name> <filename>", "download an attachment of a changeorder and print it out on stdout"
|
|
234
234
|
def get_attachment_of_co(coname, filename)
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
chg_id=loadcon.request("/caisd-rest/chg/COMMON_NAME-#{coname}")["chg"]["@id"]
|
|
236
|
+
att_nr = loadcon.search("lrel_attachments_changes",{'fields' => "attmnt","wc" => "chg = #{chg_id}"})
|
|
237
|
+
att_nr.each do |att|
|
|
238
|
+
attmnt = loadcon.request("/caisd-rest/attmnt/#{att["attmnt"]["@id"]}")["attmnt"]
|
|
239
|
+
if attmnt["orig_file_name"] == filename
|
|
240
|
+
puts loadcon.request("/caisd-rest/attmnt/#{attmnt["@id"]}/file-resource",{:unchanged => true})
|
|
241
|
+
end
|
|
242
|
+
end
|
|
237
243
|
end
|
|
238
244
|
|
|
239
|
-
desc "in_add_attachment <in> <file>", "attach
|
|
245
|
+
desc "in_add_attachment <in> <file>", "attach a file to an incident or problem"
|
|
240
246
|
def in_add_attachment(incident, file)
|
|
241
247
|
response = loadcon.upload_attachment(file)
|
|
242
248
|
puts response
|
|
@@ -287,7 +293,7 @@ class Rusdc < Thor
|
|
|
287
293
|
end
|
|
288
294
|
end
|
|
289
295
|
|
|
290
|
-
desc "list_attachments_of_in <in>", "list all attachments of an
|
|
296
|
+
desc "list_attachments_of_in <in>", "list all attachments of an incident or problem"
|
|
291
297
|
def list_attachments_of_in(incident)
|
|
292
298
|
att_in = loadcon.search("lrel_attachments_requests",{'fields' => "attmnt","wc" => "cr.ref_num = '#{incident}'"})
|
|
293
299
|
att_in.each do |att|
|
|
@@ -339,6 +345,28 @@ class Rusdc < Thor
|
|
|
339
345
|
puts loadcon.create({:type => "json", :data => json})
|
|
340
346
|
end
|
|
341
347
|
|
|
348
|
+
desc "nr_add_contact <nr> <cnt_email>", "add contact to configuration-item"
|
|
349
|
+
def nr_add_contact(nr, cnt_email)
|
|
350
|
+
template = ERB.new <<-EOF
|
|
351
|
+
{
|
|
352
|
+
"lrel_cenv_cntref": {
|
|
353
|
+
"nr": {
|
|
354
|
+
"@id": "<%= uid_nr %>"
|
|
355
|
+
},
|
|
356
|
+
"cnt": {
|
|
357
|
+
"@id": "<%= uid_cnt %>"
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
EOF
|
|
362
|
+
json = template.result_with_hash({
|
|
363
|
+
:uid_nr => loadcon.request("/caisd-rest/nr/COMMON_NAME-#{nr}")["nr"]["@id"],
|
|
364
|
+
:uid_cnt => loadcon.search("cnt",{'fields' => "@id","wc" => "email_address = '#{cnt_email}'"})[0]["@id"]
|
|
365
|
+
})
|
|
366
|
+
#puts "create relation to chg with json: #{json}"
|
|
367
|
+
puts loadcon.create({:type => "json", :data => json})
|
|
368
|
+
end
|
|
369
|
+
|
|
342
370
|
desc "nr_add_org <nr> <org>", "add an Organisation to a ConfigurationItem"
|
|
343
371
|
def nr_add_org(nr, org)
|
|
344
372
|
template = ERB.new <<-EOF
|
|
@@ -492,7 +520,7 @@ class Rusdc < Thor
|
|
|
492
520
|
})
|
|
493
521
|
data = loadcon.update({:type => "json", :data => json})
|
|
494
522
|
if data.class == RestClient::BadRequest
|
|
495
|
-
puts "
|
|
523
|
+
puts "Hint: Do not panic, I got a bad Request-Response from USD-API. Now I try again to update via IDs of COMMON_NAME arguments. Be aware to specify a ref_obj if it's not nr."
|
|
496
524
|
cn_id = loadcon.search(obj,{'fields' => "@id","wc" => "#{Usd::CN[obj]} = '#{cn}' and delete_flag = 0"})[0]["@id"]
|
|
497
525
|
value_id = loadcon.search(ref_obj,{'fields' => "@id","wc" => "#{Usd::CN[ref_obj]} = '#{v}' and delete_flag = 0"})[0]["@id"]
|
|
498
526
|
invoke "update_ref_attr_by_id", [obj, cn_id, k, value_id]
|
data/bin/set_env
CHANGED
|
File without changes
|
data/change_log.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# rusdc changelog
|
|
2
2
|
|
|
3
|
+
## 1.4.1
|
|
4
|
+
|
|
5
|
+
- changed some comments
|
|
6
|
+
|
|
7
|
+
## 1.4.0
|
|
8
|
+
|
|
9
|
+
- remove "warning: URI.escape is obsolete"
|
|
10
|
+
|
|
11
|
+
## 1.3.7
|
|
12
|
+
|
|
13
|
+
- Bugfix in rusdc-function `get_attachment_of_co`
|
|
14
|
+
|
|
15
|
+
## 1.3.6
|
|
16
|
+
|
|
17
|
+
- Bugfix : uploaded filename with special character will be renamed with `URI.escape`
|
|
18
|
+
|
|
19
|
+
## 1.3.5
|
|
20
|
+
|
|
21
|
+
- new function `nr_add_contact <nr> <email>` to assign a contact to a configuration-item
|
|
22
|
+
|
|
3
23
|
## 1.3.4.1
|
|
4
24
|
|
|
5
25
|
- fixed another error in Usd.search. which comes with 1.3.1 .
|
data/images/vcard.png
CHANGED
|
File without changes
|
data/lib/usd.rb
CHANGED
|
@@ -11,6 +11,7 @@ require 'tempfile'
|
|
|
11
11
|
class Usd
|
|
12
12
|
|
|
13
13
|
CN={
|
|
14
|
+
"grc" => "type",
|
|
14
15
|
"chg" => "chg_ref_num",
|
|
15
16
|
"cnt" => "combo_name",
|
|
16
17
|
"arcpur_rule" => "name",
|
|
@@ -160,10 +161,11 @@ class Usd
|
|
|
160
161
|
RestClient.log = STDOUT if @debug
|
|
161
162
|
hash = {:method => "get", :header => header(), :unchanged => false, :json => "", :base_url => @base_url}.update hash
|
|
162
163
|
puts "request - hash: #{JSON.pretty_generate(hash)}" if @debug
|
|
164
|
+
parser = URI::RFC2396_Parser.new
|
|
163
165
|
if (uri !~ /^http/)
|
|
164
|
-
url =
|
|
166
|
+
url = parser.escape("#{hash[:base_url]}#{uri}")
|
|
165
167
|
else
|
|
166
|
-
url =
|
|
168
|
+
url = parser.escape(uri)
|
|
167
169
|
end
|
|
168
170
|
begin
|
|
169
171
|
if hash[:method] == "get"
|
|
@@ -283,7 +285,9 @@ class Usd
|
|
|
283
285
|
baseurl =~ /^([^:]+):/
|
|
284
286
|
server = $1
|
|
285
287
|
filename = File.basename(file)
|
|
286
|
-
|
|
288
|
+
#filename_escaped = URI.escape(filename)
|
|
289
|
+
filename_escaped = filename.gsub(/[^0-9A-Za-z.\-]/, '_')
|
|
290
|
+
uri = "/caisd-rest/attmnt?repositoryId=1002&serverName=#{server}&mimeType=Text&description=#{filename_escaped}"
|
|
287
291
|
url = URI("#{baseurl}#{uri}")
|
|
288
292
|
http = Net::HTTP.new(url.host, url.port);
|
|
289
293
|
request = Net::HTTP::Post.new(url)
|
|
@@ -294,7 +298,7 @@ class Usd
|
|
|
294
298
|
fileObj = File.open(file, "rb")
|
|
295
299
|
fileContent = fileObj.read
|
|
296
300
|
fileObj.close
|
|
297
|
-
request.body = "--*****MessageBoundary*****\r\n \r\nContent-Disposition: form-data; name=\"payload\" \r\nContent-Type: application/xml; CHARACTERSET=UTF-8 \r\n\r\n \r\n<attmnt> \r\n<repository id=\"1002\"></repository> \r\n<orig_file_name>#{
|
|
301
|
+
request.body = "--*****MessageBoundary*****\r\n \r\nContent-Disposition: form-data; name=\"payload\" \r\nContent-Type: application/xml; CHARACTERSET=UTF-8 \r\n\r\n \r\n<attmnt> \r\n<repository id=\"1002\"></repository> \r\n<orig_file_name>#{filename_escaped}</orig_file_name> \r\n<attmnt_name>#{filename_escaped}</attmnt_name> \r\n<description>Uploaded with rusdc from rubygem usd</description> \r\n</attmnt> \r\n\r\n \r\n--*****MessageBoundary*****\r\n \r\nContent-Disposition: form-data; name=\"#{filename_escaped}\"; filename=\"#{filename_escaped}\" \r\nContent-Type: application/octet-stream \r\nContent-Transfer-Encoding: base64\r\n\r\n#{Base64.encode64(fileContent)}\r\n\r\n \r\n--*****MessageBoundary*****--\r\n"
|
|
298
302
|
response = http.request(request)
|
|
299
303
|
response.read_body
|
|
300
304
|
end
|
data/usd.gemspec
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Gem::Specification.new do |spec|
|
|
2
2
|
spec.name = 'usd'
|
|
3
|
-
spec.version = '1.
|
|
4
|
-
spec.date = '2020-
|
|
3
|
+
spec.version = '1.4.1'
|
|
4
|
+
spec.date = '2020-12-01'
|
|
5
5
|
spec.summary = "SDM REST-API-Calls"
|
|
6
6
|
spec.description = "a Ruby class and a commandlinetool for SDM REST-API-Calls"
|
|
7
7
|
spec.authors = ["Oliver Gaida"]
|
|
@@ -13,4 +13,5 @@ Gem::Specification.new do |spec|
|
|
|
13
13
|
spec.add_runtime_dependency 'thor', '~> 0.20', '>= 0.20.3'
|
|
14
14
|
spec.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.0'
|
|
15
15
|
spec.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0'
|
|
16
|
+
spec.license = 'MIT'
|
|
16
17
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: usd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Oliver Gaida
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-12-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -86,7 +86,8 @@ files:
|
|
|
86
86
|
- lib/usd.rb
|
|
87
87
|
- usd.gemspec
|
|
88
88
|
homepage: https://github.com/ogaida/usd
|
|
89
|
-
licenses:
|
|
89
|
+
licenses:
|
|
90
|
+
- MIT
|
|
90
91
|
metadata: {}
|
|
91
92
|
post_install_message:
|
|
92
93
|
rdoc_options: []
|
|
@@ -103,8 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
103
104
|
- !ruby/object:Gem::Version
|
|
104
105
|
version: '0'
|
|
105
106
|
requirements: []
|
|
106
|
-
|
|
107
|
-
rubygems_version: 2.7.6
|
|
107
|
+
rubygems_version: 3.1.2
|
|
108
108
|
signing_key:
|
|
109
109
|
specification_version: 4
|
|
110
110
|
summary: SDM REST-API-Calls
|