usd 0.2.4.1 → 1.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.
Files changed (7) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -6
  3. data/bin/rusdc +35 -8
  4. data/change_log.md +99 -0
  5. data/lib/usd.rb +70 -0
  6. data/usd.gemspec +2 -2
  7. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13c57a8b5a92e0b256e188f927a641bba10a04b0a0c15d570e129922c5420f03
4
- data.tar.gz: 1ba480177e62fe2641ae626806a09205a457d24bf23d10c96f491a9c804a38c6
3
+ metadata.gz: 34c19bfe569d436235dd61b312a9f7edcb191c3598daf05f77c94664efda6a5a
4
+ data.tar.gz: 1e84341f1befdb3eb2dab78e2a0516f7b21b55413e6635da588deefd889d3ce8
5
5
  SHA512:
6
- metadata.gz: 3729de4008529124375de72ad3c81d0fdb4bc500c6569ed768e803759984dc6905e8c6e531a86e69960d7188639da6208fdc5da3cb48a2dfbed91a8f11f1db7e
7
- data.tar.gz: 851d6e77c77eb6385bf84b50689f5975c171b8bb9642ec3b76fca8bf40719b103372570514b2d218af81d8087f9fdcc004257fcbbc7e9e62831299f146e90db4
6
+ metadata.gz: 80fa09424ea66980cee551c30dcdc337237c25c125ea66105a43f1672e5da297d9fc64730f4d1e2650ecf2c3692408c22566a447cd3d729a018c2f065276afff
7
+ data.tar.gz: 19172f70b81b7ede21f11639c6469a3f5d85137499e4611b065a3a6042529b3a1aa213d943114dc7ad86024fb2644b5557c9610b6363c6347c0e90505c845df3
data/README.md CHANGED
@@ -21,6 +21,15 @@ yum group install "Development Tools"
21
21
  yum install ruby-devel
22
22
  ```
23
23
 
24
+ # documentation
25
+
26
+ - see [https://github.com/ogaida/usd/wiki](https://github.com/ogaida/usd/wiki)
27
+ - if you are looking for dependencies in between the objects, objectnames or relational objects, then have a look at [techdocs.broadcom.com](https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/business-management/ca-service-management/14-1/reference/ca-service-desk-manager-reference-commands/objects-and-attributes.html)
28
+
29
+ ## bash-completion
30
+
31
+ see [https://github.com/ogaida/usd/wiki/bash-completion](https://github.com/ogaida/usd/wiki/bash-completion)
32
+
24
33
  # external tools
25
34
 
26
35
  If you use the `rusdc find` command with `--format mlr` option then you need `mlr`.
@@ -38,24 +47,25 @@ rusdc create # p
38
47
  rusdc field_names <object-type> [wc] # list all fields of an object including its format
39
48
  rusdc find <object-type> [where-clause] [fields, comma separated] [options] # finds each object which meets the wc-condition
40
49
  rusdc get <object-type> <common_name|id> # shows one object by name or id
41
- rusdc get_all_attachments_of_co <co_name> # get all attachments of a changeorder and save all these to current folder
42
- rusdc get_attachment_of_ci <ci_name> <filename> # download an attachment of a CI and print it out on stdout
43
- rusdc get_attachment_of_co <co_name> <filename> # download an attachment of a changeorder and print it out on stdout
50
+ rusdc get_all_attachments_of_co <co_name> # get all attachments of a changeorder and save all th...
51
+ rusdc get_attachment_of_ci <ci_name> <filename> # download an attachment of a CI and print it out on s...
52
+ rusdc get_attachment_of_co <co_name> <filename> # download an attachment of a changeorder and print it...
44
53
  rusdc help [COMMAND] # Describe available commands or one specific command
45
54
  rusdc in_add_2_chg <changeorder> <incident> # add incident to changeorder
46
55
  rusdc in_list_child_ins <in> # list all child-incidents of one incident
47
56
  rusdc list_attachments_of_ci <ci_name> # list all attachments of a CI
48
57
  rusdc list_attachments_of_co <co_name> # list all attachments of a changeorder
49
58
  rusdc nr_add_child <nr-name> <child-name> # add one child CI to another CI
59
+ rusdc nr_add_org <nr> <org> # add an Organisation to a ConfigurationItem
50
60
  rusdc nr_changes <nr> [inactive-too] # list all open changeorders of one CI
51
61
  rusdc nr_childs <ci-name> # lists all childs CIs of a specific CI
52
62
  rusdc nr_incidents <nr> [inactive-too] # lists all incident of a specific CI
53
63
  rusdc nr_parents <ci-name> # lists all parent CIs of a specific CI
54
64
  rusdc update # pipe json-data to update object
55
- rusdc update_attr <obj> <common_name|wc> <key> <value> # updates a direct (not referenced) attribute of one or more objects.
56
- rusdc update_attr_by_id <obj> <id> <key> <value> # updates a plain attribute of one object by id, does not work
65
+ rusdc update_attr <obj> <common_name|wc> <key> <value> # updates a direct (not referenced) attribute of one o...
66
+ rusdc update_attr_by_id <obj> <id> <key> <value> # updates a plain attribute of one object by id, does ...
57
67
  rusdc update_ref_attr <obj> <common_name> <key> <value> # updates a referenced attribute of one object.
58
- rusdc update_ref_attr_by_id <obj> <id> <key> <value_id> # updates a referenced attribute of one object_id by value-id
68
+ rusdc update_ref_attr_by_id <obj> <id> <key> <value_id> # updates a referenced attribute of one object_id by v...
59
69
  ```
60
70
 
61
71
  # environment-variables
data/bin/rusdc CHANGED
@@ -107,7 +107,7 @@ class Rusdc < Thor
107
107
  elem.keys.each do |elem_key|
108
108
  if options[:nice_time]
109
109
  if elem_key =~ /(date|last_mod|warranty_start|warranty_end|time_stamp)$/
110
- elem[elem_key]=Time.at(elem[elem_key]).to_s
110
+ elem[elem_key]=Time.at(elem[elem_key]).to_s if elem[elem_key] != "" # not empty
111
111
  end
112
112
  end
113
113
  if fields_array.include?(elem_key)
@@ -127,6 +127,7 @@ class Rusdc < Thor
127
127
  case options[:format]
128
128
  when "json"
129
129
  puts mlr
130
+ e
130
131
  exit exitcode
131
132
  when "yaml"
132
133
  # keys not sorted, maybe a todo
@@ -186,7 +187,7 @@ class Rusdc < Thor
186
187
  def get_attachment_of_ci(ciname, filename)
187
188
  att_nr = loadcon.search("lrel_attachments_nr",{'fields' => "attmnt","wc" => "nr.name = '#{ciname}'"})
188
189
  att_nr.each do |att|
189
- attmnt = loadcon.request("/caisd-rest/attmnt/COMMON_NAME-#{att["attmnt"]["@id"]}")["attmnt"]
190
+ attmnt = loadcon.request("/caisd-rest/attmnt/#{att["attmnt"]["@id"]}")["attmnt"]
190
191
  if attmnt["orig_file_name"] == filename
191
192
  puts loadcon.request("/caisd-rest/attmnt/#{attmnt["@id"]}/file-resource",{:unchanged => true})
192
193
  end
@@ -198,7 +199,7 @@ class Rusdc < Thor
198
199
  chg_id=loadcon.request("/caisd-rest/chg/COMMON_NAME-#{coname}")["chg"]["@id"]
199
200
  att_nr = loadcon.search("lrel_attachments_changes",{'fields' => "attmnt","wc" => "chg = #{chg_id}"})
200
201
  att_nr.each do |att|
201
- attmnt = loadcon.request("/caisd-rest/attmnt/COMMON_NAME-#{att["attmnt"]["@COMMON_NAME"]}")["attmnt"]
202
+ attmnt = loadcon.request("/caisd-rest/attmnt/#{att["attmnt"]["@id"]}")["attmnt"]
202
203
  if attmnt["orig_file_name"] == filename
203
204
  puts loadcon.request("/caisd-rest/attmnt/#{attmnt["@id"]}/file-resource",{:unchanged => true})
204
205
  end
@@ -219,7 +220,7 @@ class Rusdc < Thor
219
220
  def list_attachments_of_ci(ciname)
220
221
  att_nr = loadcon.search("lrel_attachments_nr",{'fields' => "attmnt","wc" => "nr.name = '#{ciname}'"})
221
222
  att_nr.each do |att|
222
- puts loadcon.request("/caisd-rest/attmnt/COMMON_NAME-#{att["attmnt"]["@COMMON_NAME"]}")["attmnt"]["orig_file_name"]
223
+ puts loadcon.request("/caisd-rest/attmnt/#{att["attmnt"]["@id"]}")["attmnt"]["orig_file_name"]
223
224
  end
224
225
  end
225
226
 
@@ -228,7 +229,7 @@ class Rusdc < Thor
228
229
  chg_id=loadcon.request("/caisd-rest/chg/COMMON_NAME-#{coname}")["chg"]["@id"]
229
230
  att_nr = loadcon.search("lrel_attachments_changes",{'fields' => "attmnt","wc" => "chg = #{chg_id}"})
230
231
  att_nr.each do |att|
231
- puts loadcon.request("/caisd-rest/attmnt/COMMON_NAME-#{att["attmnt"]["@COMMON_NAME"]}")["attmnt"]["orig_file_name"]
232
+ puts loadcon.request("/caisd-rest/attmnt/#{att["attmnt"]["@id"]}")["attmnt"]["orig_file_name"]
232
233
  end
233
234
  end
234
235
 
@@ -250,6 +251,24 @@ class Rusdc < Thor
250
251
  puts loadcon.create({:type => "json", :data => json})
251
252
  end
252
253
 
254
+ desc "nr_add_org <nr> <org>", "add an Organisation to a ConfigurationItem"
255
+ def nr_add_org(nr, org)
256
+ template = ERB.new <<-EOF
257
+ {
258
+ "lrel_oenv_orgref": {
259
+ "nr": {
260
+ "@id": "<%= uid_nr %>"
261
+ },
262
+ "org": {
263
+ "@id": "<%= uid_org %>"
264
+ }
265
+ }
266
+ }
267
+ EOF
268
+ json = template.result_with_hash(:uid_org => loadcon.request("/caisd-rest/org/COMMON_NAME-#{org}")["org"]["@id"], :uid_nr => loadcon.request("/caisd-rest/nr/COMMON_NAME-#{nr}")["nr"]["@id"])
269
+ puts loadcon.create({:type => "json", :data => json})
270
+ end
271
+
253
272
  desc "nr_changes <nr> [inactive-too]", "list all open changeorders of one CI"
254
273
  option :inactive_too, :type => :boolean, :default => false
255
274
  def nr_changes(nr)
@@ -365,8 +384,8 @@ class Rusdc < Thor
365
384
  puts loadcon.update({:type => "json", :data => json})
366
385
  end
367
386
 
368
- desc "update_ref_attr <obj> <common_name> <key> <value>", "updates a referenced attribute of one object."
369
- def update_ref_attr(obj, cn, k, v)
387
+ desc "update_ref_attr <obj> <common_name> <key> <value> [ref_obj=nr]", "updates a referenced attribute of one object."
388
+ def update_ref_attr(obj, cn, k, v, ref_obj = "nr")
370
389
  template = ERB.new <<-EOF
371
390
  {
372
391
  "<%= obj %>": {
@@ -383,7 +402,15 @@ class Rusdc < Thor
383
402
  :k => k,
384
403
  :v => v
385
404
  })
386
- puts loadcon.update({:type => "json", :data => json})
405
+ data = loadcon.update({:type => "json", :data => json})
406
+ if data.class == RestClient::BadRequest
407
+ puts "BadRequest-Response from USD-API, try to update via IDs. be aware to specify a ref_obj if it's not nr."
408
+ cn_id = loadcon.search(obj,{'fields' => "@id","wc" => "#{Usd::CN[obj]} = '#{cn}' and delete_flag = 0"})[0]["@id"]
409
+ value_id = loadcon.search(ref_obj,{'fields' => "@id","wc" => "#{Usd::CN[obj]} = '#{v}' and delete_flag = 0"})[0]["@id"]
410
+ invoke "update_ref_attr_by_id", [obj, cn_id, k, value_id]
411
+ else
412
+ puts data
413
+ end
387
414
  end
388
415
 
389
416
  desc "update_ref_attr_by_id <obj> <id> <key> <value_id>", "updates a referenced attribute of one object_id by value-id"
@@ -1,5 +1,104 @@
1
1
  # rusdc changelog
2
2
 
3
+ ## 1.0
4
+
5
+ - `update_ref_attr` rusdc-function fetches the IDs to update the object by itself.
6
+
7
+ ## 0.3
8
+
9
+ - some common_name resolution
10
+
11
+ ```ruby
12
+ class Usd
13
+ CN={
14
+ "chg" => "chg_ref_num",
15
+ "cnt" => "combo_name",
16
+ "arcpur_rule" => "name",
17
+ "ca_tou" => "name",
18
+ "cost_cntr" => "name",
19
+ "country" => "name",
20
+ "dept" => "name",
21
+ "gl_code" => "name",
22
+ "job_func" => "name",
23
+ "loc" => "name",
24
+ "nr" => "name",
25
+ "opsys" => "name",
26
+ "org" => "name",
27
+ "tab" => "name",
28
+ "auto_close" => "sym",
29
+ "aty" => "sym",
30
+ "act_type_assoc" => "sym",
31
+ "ca_cmpny" => "sym",
32
+ "closure_code" => "sym",
33
+ "cmth" => "sym",
34
+ "symptom_code" => "sym",
35
+ "state" => "sym",
36
+ "crt" => "sym",
37
+ "ctab" => "sym",
38
+ "ctp" => "sym",
39
+ "dcon_typ" => "sym",
40
+ "dlgsrvr" => "sym",
41
+ "dmn" => "sym",
42
+ "doc_rep" => "sym",
43
+ "fmgrp" => "sym",
44
+ "ical_alarm" => "sym",
45
+ "ical_event_template" => "sym",
46
+ "imp" => "sym",
47
+ "intfc" => "sym",
48
+ "kwrd" => "sym",
49
+ "mfrmod" => "sym",
50
+ "mgsstat" => "sym",
51
+ "nrf" => "sym",
52
+ "options" => "sym",
53
+ "outage_type" => "sym",
54
+ "perscnt" => "sym",
55
+ "position" => "sym",
56
+ "pr_trans" => "sym",
57
+ "prod" => "sym",
58
+ "quick_tpl_types" => "sym",
59
+ "rc" => "sym",
60
+ "resocode" => "sym",
61
+ "resomethod" => "sym",
62
+ "response" => "sym",
63
+ "rrf" => "sym",
64
+ "rss" => "sym",
65
+ "seq" => "sym",
66
+ "sev" => "sym",
67
+ "site" => "sym",
68
+ "slatpl" => "sym",
69
+ "special_handling" => "sym",
70
+ "svc_contract" => "sym",
71
+ "typecnt" => "sym",
72
+ "tz" => "sym",
73
+ "tspan" => "sym",
74
+ "transition_type" => "sym",
75
+ "urg" => "sym",
76
+ "vpt" => "sym",
77
+ "wrkshft" => "sym",
78
+ "cr" => "ref_num",
79
+ "in" => "ref_num",
80
+ "pr" => "ref_num"
81
+ }
82
+ end
83
+ ```
84
+
85
+ ## 0.2.5.3
86
+
87
+ - neu function : `rusdc nr_add_org <nr> <org> # add an Organisation to a ConfigurationItem`
88
+
89
+ #### fixes:
90
+
91
+ - rusdc - line 110: more robust when querying date fields
92
+
93
+ ## 0.2.4.2
94
+
95
+ the same fixes as in 0.2.4.1 for:
96
+
97
+ ```
98
+ rusdc list_attachments_of_ci <ci_name>
99
+ rusdc list_attachments_of_co <co_name>
100
+ ```
101
+
3
102
  ## 0.2.4.1
4
103
 
5
104
  ### fixes
data/lib/usd.rb CHANGED
@@ -10,6 +10,76 @@ require 'tempfile'
10
10
 
11
11
  class Usd
12
12
 
13
+ CN={
14
+ "chg" => "chg_ref_num",
15
+ "cnt" => "combo_name",
16
+ "arcpur_rule" => "name",
17
+ "ca_tou" => "name",
18
+ "cost_cntr" => "name",
19
+ "country" => "name",
20
+ "dept" => "name",
21
+ "gl_code" => "name",
22
+ "job_func" => "name",
23
+ "loc" => "name",
24
+ "nr" => "name",
25
+ "opsys" => "name",
26
+ "org" => "name",
27
+ "tab" => "name",
28
+ "auto_close" => "sym",
29
+ "aty" => "sym",
30
+ "act_type_assoc" => "sym",
31
+ "ca_cmpny" => "sym",
32
+ "closure_code" => "sym",
33
+ "cmth" => "sym",
34
+ "symptom_code" => "sym",
35
+ "state" => "sym",
36
+ "crt" => "sym",
37
+ "ctab" => "sym",
38
+ "ctp" => "sym",
39
+ "dcon_typ" => "sym",
40
+ "dlgsrvr" => "sym",
41
+ "dmn" => "sym",
42
+ "doc_rep" => "sym",
43
+ "fmgrp" => "sym",
44
+ "ical_alarm" => "sym",
45
+ "ical_event_template" => "sym",
46
+ "imp" => "sym",
47
+ "intfc" => "sym",
48
+ "kwrd" => "sym",
49
+ "mfrmod" => "sym",
50
+ "mgsstat" => "sym",
51
+ "nrf" => "sym",
52
+ "options" => "sym",
53
+ "outage_type" => "sym",
54
+ "perscnt" => "sym",
55
+ "position" => "sym",
56
+ "pr_trans" => "sym",
57
+ "prod" => "sym",
58
+ "quick_tpl_types" => "sym",
59
+ "rc" => "sym",
60
+ "resocode" => "sym",
61
+ "resomethod" => "sym",
62
+ "response" => "sym",
63
+ "rrf" => "sym",
64
+ "rss" => "sym",
65
+ "seq" => "sym",
66
+ "sev" => "sym",
67
+ "site" => "sym",
68
+ "slatpl" => "sym",
69
+ "special_handling" => "sym",
70
+ "svc_contract" => "sym",
71
+ "typecnt" => "sym",
72
+ "tz" => "sym",
73
+ "tspan" => "sym",
74
+ "transition_type" => "sym",
75
+ "urg" => "sym",
76
+ "vpt" => "sym",
77
+ "wrkshft" => "sym",
78
+ "cr" => "ref_num",
79
+ "in" => "ref_num",
80
+ "pr" => "ref_num"
81
+ }
82
+
13
83
  RestClient.proxy = ""
14
84
 
15
85
  attr_reader :base_url, :user, :access_key, :expiration_date, :debug
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'usd'
3
- spec.version = '0.2.4.1'
4
- spec.date = '2020-01-28'
3
+ spec.version = '1.1'
4
+ spec.date = '2020-08-31'
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"]
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: 0.2.4.1
4
+ version: '1.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-01-28 00:00:00.000000000 Z
11
+ date: 2020-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor