lmcadm 0.16.2 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 63b0185b4a3704220282ed6b280a11aa6c0f49dff2c55a338cfbbbde6c293907
4
- data.tar.gz: ccf161a096edf045d834ee2499a969ce9558b72865b36c121451fc7750828164
3
+ metadata.gz: 38c8fafe1ca6ada1a72b6d9e77d3c356c2ebfe59951494ce39df0264551493d9
4
+ data.tar.gz: 25c529b60448aabcab330df1b6827179a914cbf51e23e91dbdd70c8df6221413
5
5
  SHA512:
6
- metadata.gz: 56509284ac20bcca673af8f859ed899b0326e47df49a474360e8ade103ee9301286a7384cd62658f9d0179490d194593162395c7aa22ad894aad2ea8c1efe413
7
- data.tar.gz: ae3da55d02222591973f88ef6113bc788281b7bd93d280137d4fbe177499704c3cbff7b38457e6dcdab48ef31e10bbcd70b0902061f4b267f41036de6e492467
6
+ metadata.gz: df4eeae40e1204dcb9cf34974db6f5ee96ea39929a4bb6f0a8991f968d937def265ce304a6398ed78b007594726cf60307304d0098e7ca0ac3d6c1d98793cef3
7
+ data.tar.gz: 5ac6a4adc086263d8d06fe8e76c7c200b5c4ca65a53df89d003bfca74d74ddf53f94806e7590ba789a1625bd86158f3aec989f7c2120104a4b5179808d941777
@@ -1,8 +1,13 @@
1
1
  name: build-win
2
2
  on:
3
- push:
4
- tags:
5
- - 'v*.*.*'
3
+ release:
4
+ types:
5
+ - published
6
+
7
+ # push:
8
+ # tags:
9
+ # - 'v*.*.*'
10
+
6
11
  jobs:
7
12
  build:
8
13
  runs-on: windows-latest
data/README.md CHANGED
@@ -20,6 +20,11 @@ Lmcadm works with https://rubyinstaller.org/downloads/, use the recommended vers
20
20
  Installation can continue with rubygems.
21
21
 
22
22
  #### Known issues
23
+ *Installing lmcadm fails with `ERROR: Failed to build gem native extension.`*
24
+
25
+ Ruby headers and some tools to build software (C compiler, make) are needed.
26
+ On Ubuntu for example, the packages `ruby-dev` and `build-essential` should be enough.
27
+ apt install ruby-dev build-essential
23
28
 
24
29
  *Unable to load the EventMachine C extension ; To use the pure-ruby reactor, require 'em/pure_ruby'*
25
30
 
@@ -59,3 +64,35 @@ The sentence above is patently wrong currently.
59
64
  ## License
60
65
 
61
66
  The gem is available as open source under the terms of the BSD 3-Clause License.
67
+
68
+ # Advanced usage or experimental features
69
+
70
+ ## Using lmcadm to query monitoring data
71
+
72
+ Example use:
73
+
74
+ lmcadm monitor -A "ExampleProject" raw device_info cloud_rtt 42adf60b-0fe7-4187-af4f-9ee97669bfb0
75
+
76
+ ### --type scalar (default)
77
+
78
+ When specifying a period longer than MINUTE1, the name must be suffixed with a dot, followed by an aggregation type.
79
+ Available types are
80
+ * .min
81
+ * .max
82
+ * .avg
83
+
84
+
85
+ lmcadm monitor -A "ExampleProject" raw --type scalar --period MINUTE10 \
86
+ device_info cloud_rtt.max 3e19ada7-86fa-4809-a14e-7174b018603d
87
+
88
+
89
+ ### --type json
90
+
91
+ This dumps the raw values response as json.
92
+ To further extract data, use something that can parse json, like `jq`[1].
93
+
94
+ lmcadm monitor -A "SDN-DEMO (LANCOM Visitor)" raw --type json --period MINUTE1 \
95
+ wan_info_json interfaces a6871a81-84f3-4c57-a20e-c3410b47e895 | jq ' .[]["DSL-CH-1"].rxRate'
96
+
97
+ # Footnotes
98
+ [1] https://stedolan.github.io/jq/manual/
@@ -86,6 +86,7 @@ module LMCAdm
86
86
  accounts = args.map { |a|
87
87
  LMC::Account.get_by_uuid_or_name a
88
88
  }
89
+ puts LMC::Cloud.instance.session_token if accounts.empty?
89
90
  accounts.each { |a|
90
91
  a.cloud.auth_for_account a
91
92
  puts a.cloud.session_token
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'chronic'
2
3
 
3
4
  module LMCAdm #:nodoc:
4
5
  desc 'Retrieve montoring data'
@@ -15,7 +16,7 @@ module LMCAdm #:nodoc:
15
16
  monitor_device.action do |_g, options, args|
16
17
  record_name = args.shift
17
18
  account = LMC::Account.get_by_uuid_or_name options[GLI::Command::PARENT][:account]
18
- device = account.devices.find {|d| d.name == options[:device]}
19
+ device = account.devices.find { |d| d.name == options[:device] }
19
20
  record = device.record record_name
20
21
 
21
22
  options[:scalar].each do |datapoint|
@@ -48,5 +49,50 @@ module LMCAdm #:nodoc:
48
49
  end
49
50
  end
50
51
  end
52
+
53
+ monitor.desc 'Make raw monitoring requests'
54
+ monitor.arg_name '<record> <name> <id>'
55
+ monitor.command :raw do |raw|
56
+ raw.flag :t, :type, default_value: 'scalar'
57
+ raw.flag :g, :group, default_value: 'DEVICE'
58
+ raw.flag :p, :period, default_value: 'MINUTE1'
59
+ raw.desc 'Start time'
60
+ raw.flag :start, default_value: 'one hour ago'
61
+ raw.flag :end, default_value: 'now'
62
+ raw.action do |_g, options, args|
63
+ record = args.shift
64
+ name = args.shift
65
+ groupId = args.shift
66
+ account = LMC::Account.get_by_uuid_or_name options[GLI::Command::PARENT][:account]
67
+ account.cloud.auth_for_account account
68
+
69
+ startTime = Chronic.parse(options[:start])
70
+ puts "Start time: #{startTime}" if _g[:verbose]
71
+ endTime = Chronic.parse(options[:end])
72
+ puts "End time: #{endTime}" if _g[:verbose]
73
+
74
+ # https://cloud.lancom.de/cloud-service-monitoring/accounts/399bc33a-7f53-4757-a6bd-cac3cbb6ebdd/records/wlan_info_json?type=scalar&name=stations&group=ACCOUNT&groupId=399bc33a-7f53-4757-a6bd-cac3cbb6ebdd&period=MINUTE1&start=1623417748&end=1623421348
75
+ # https://cloud.lancom.de/cloud-service-monitoring/accounts/399bc33a-7f53-4757-a6bd-cac3cbb6ebdd/records/device_info?type=scalar&name=cloud_rtt&group=DEVICE&groupId=efec12e1-ac4d-459d-bb5d-a9b6c1410eb5&period=MINUTE1&start=1623419874&end=1623423474
76
+ # https://cloud.lancom.de/cloud-service-monitoring/accounts/399bc33a-7f53-4757-a6bd-cac3cbb6ebdd/records/device_info?type=scalar&name=cloud_rtt&group=DEVICE&group_id=efec12e1-ac4d-459d-bb5d-a9b6c1410eb5&period=MINUTE1&start=1623419874&end=1623423474
77
+ result = account.cloud.get ['cloud-service-monitoring', 'accounts', account.id, 'records', record], {
78
+ type: options[:type],
79
+ name: name,
80
+ group: options[:group],
81
+ groupId: groupId,
82
+ period: options[:period],
83
+ start: startTime.to_i,
84
+ end: endTime.to_i,
85
+ }
86
+ monitordata = result.body.items[name]
87
+ puts result.body.inspect if _g[:debug]
88
+ if options[:type] == "scalar"
89
+ puts monitordata.values
90
+ elsif options[:type] == "json"
91
+ puts JSON.pretty_generate monitordata.to_h[:values]
92
+ end
93
+ end
94
+
95
+ end
96
+
51
97
  end
52
98
  end
@@ -1,3 +1,3 @@
1
1
  module LMCAdm
2
- VERSION = '0.16.2'
2
+ VERSION = '0.17.0'
3
3
  end
data/lmcadm.gemspec CHANGED
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'table_print', '~> 1.5'
30
30
  spec.add_runtime_dependency 'colorize', '~> 0.8'
31
31
  spec.add_runtime_dependency 'websocket-eventmachine-client', '~> 1.3.0'
32
+ spec.add_runtime_dependency 'chronic', '~> 0.10.2'
32
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lmcadm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - erpel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-10 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.3.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: chronic
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.10.2
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.10.2
139
153
  description:
140
154
  email:
141
155
  - philipp@copythat.de
@@ -145,7 +159,6 @@ extensions: []
145
159
  extra_rdoc_files: []
146
160
  files:
147
161
  - ".github/workflows/build-win.yaml"
148
- - ".github/workflows/gem-push.yml"
149
162
  - ".gitignore"
150
163
  - ".idea/encodings.xml"
151
164
  - ".idea/inspectionProfiles/Project_Default.xml"
@@ -1,45 +0,0 @@
1
- name: Ruby Gem
2
-
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: [ master ]
8
-
9
- jobs:
10
- build:
11
- name: Build + Publish
12
- runs-on: ubuntu-latest
13
- permissions:
14
- contents: read
15
- packages: write
16
-
17
- steps:
18
- - uses: actions/checkout@v2
19
- - name: Set up Ruby 2.6
20
- uses: actions/setup-ruby@v1
21
- with:
22
- ruby-version: 2.6.x
23
-
24
- - name: Publish to GPR
25
- run: |
26
- mkdir -p $HOME/.gem
27
- touch $HOME/.gem/credentials
28
- chmod 0600 $HOME/.gem/credentials
29
- printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
30
- gem build *.gemspec
31
- gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
32
- env:
33
- GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
34
- OWNER: ${{ github.repository_owner }}
35
-
36
- - name: Publish to RubyGems
37
- run: |
38
- mkdir -p $HOME/.gem
39
- touch $HOME/.gem/credentials
40
- chmod 0600 $HOME/.gem/credentials
41
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
42
- gem build *.gemspec
43
- gem push *.gem
44
- env:
45
- GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"