morpheus-cli 2.10.3 → 2.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/morpheus +5 -96
- data/lib/morpheus/api/api_client.rb +23 -1
- data/lib/morpheus/api/checks_interface.rb +106 -0
- data/lib/morpheus/api/incidents_interface.rb +102 -0
- data/lib/morpheus/api/monitoring_apps_interface.rb +47 -0
- data/lib/morpheus/api/monitoring_contacts_interface.rb +47 -0
- data/lib/morpheus/api/monitoring_groups_interface.rb +47 -0
- data/lib/morpheus/api/monitoring_interface.rb +36 -0
- data/lib/morpheus/api/option_type_lists_interface.rb +47 -0
- data/lib/morpheus/api/option_types_interface.rb +47 -0
- data/lib/morpheus/api/roles_interface.rb +0 -1
- data/lib/morpheus/api/setup_interface.rb +19 -9
- data/lib/morpheus/cli.rb +20 -1
- data/lib/morpheus/cli/accounts.rb +8 -3
- data/lib/morpheus/cli/app_templates.rb +19 -11
- data/lib/morpheus/cli/apps.rb +52 -37
- data/lib/morpheus/cli/cli_command.rb +229 -53
- data/lib/morpheus/cli/cli_registry.rb +48 -40
- data/lib/morpheus/cli/clouds.rb +55 -26
- data/lib/morpheus/cli/command_error.rb +12 -0
- data/lib/morpheus/cli/credentials.rb +68 -26
- data/lib/morpheus/cli/curl_command.rb +98 -0
- data/lib/morpheus/cli/dashboard_command.rb +2 -7
- data/lib/morpheus/cli/deployments.rb +4 -4
- data/lib/morpheus/cli/deploys.rb +1 -2
- data/lib/morpheus/cli/dot_file.rb +5 -8
- data/lib/morpheus/cli/error_handler.rb +179 -15
- data/lib/morpheus/cli/groups.rb +21 -13
- data/lib/morpheus/cli/hosts.rb +220 -110
- data/lib/morpheus/cli/instance_types.rb +2 -2
- data/lib/morpheus/cli/instances.rb +257 -167
- data/lib/morpheus/cli/key_pairs.rb +15 -9
- data/lib/morpheus/cli/library.rb +673 -27
- data/lib/morpheus/cli/license.rb +2 -2
- data/lib/morpheus/cli/load_balancers.rb +4 -4
- data/lib/morpheus/cli/log_level_command.rb +6 -4
- data/lib/morpheus/cli/login.rb +17 -3
- data/lib/morpheus/cli/logout.rb +25 -11
- data/lib/morpheus/cli/man_command.rb +388 -0
- data/lib/morpheus/cli/mixins/accounts_helper.rb +1 -1
- data/lib/morpheus/cli/mixins/monitoring_helper.rb +434 -0
- data/lib/morpheus/cli/mixins/print_helper.rb +620 -112
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +1 -1
- data/lib/morpheus/cli/monitoring_apps_command.rb +29 -0
- data/lib/morpheus/cli/monitoring_checks_command.rb +427 -0
- data/lib/morpheus/cli/monitoring_contacts_command.rb +373 -0
- data/lib/morpheus/cli/monitoring_groups_command.rb +29 -0
- data/lib/morpheus/cli/monitoring_incidents_command.rb +711 -0
- data/lib/morpheus/cli/option_types.rb +10 -1
- data/lib/morpheus/cli/recent_activity_command.rb +2 -5
- data/lib/morpheus/cli/remote.rb +874 -134
- data/lib/morpheus/cli/roles.rb +54 -27
- data/lib/morpheus/cli/security_group_rules.rb +2 -2
- data/lib/morpheus/cli/security_groups.rb +23 -19
- data/lib/morpheus/cli/set_prompt_command.rb +50 -0
- data/lib/morpheus/cli/shell.rb +222 -157
- data/lib/morpheus/cli/tasks.rb +19 -15
- data/lib/morpheus/cli/users.rb +27 -17
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli/virtual_images.rb +28 -13
- data/lib/morpheus/cli/whoami.rb +131 -52
- data/lib/morpheus/cli/workflows.rb +24 -9
- data/lib/morpheus/formatters.rb +195 -3
- data/lib/morpheus/logging.rb +86 -0
- data/lib/morpheus/terminal.rb +371 -0
- data/scripts/generate_morpheus_commands_help.morpheus +60 -0
- metadata +21 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 943b71ed0cd1182919d30c80a340e4dddd348469
|
4
|
+
data.tar.gz: 5240605a00d07cfae6f73cc53789ad456ba99713
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03b911517a40f1254ebb91e14d69d840038c80df028966b0cd23035b0fbc54eff8e22aa6bfa75cbc70584b26c858290c2e905b8115a1b7312066a3431fb56305
|
7
|
+
data.tar.gz: 93de8368cae2dd82312741584dc4d688fc9dc5a6defadccdcede1f58254a92765f65739d43d82e300c72547fb0dfb630eda587bac858537262c6a0e7ce90b783
|
data/bin/morpheus
CHANGED
@@ -1,98 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require '
|
3
|
-
require 'optparse'
|
4
|
-
require 'morpheus/cli'
|
5
|
-
require 'morpheus/rest_client'
|
6
|
-
require 'morpheus/cli/cli_registry'
|
7
|
-
require 'morpheus/cli/dot_file'
|
8
|
-
require 'morpheus/cli/error_handler'
|
2
|
+
require 'morpheus/terminal'
|
9
3
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
Term::ANSIColor::coloring = STDOUT.isatty
|
15
|
-
# include Term::ANSIColor # tempting
|
16
|
-
|
17
|
-
# short circuit version switch
|
18
|
-
if ARGV[0] == '-v' || ARGV[0] == '--version'
|
19
|
-
version = Morpheus::Cli::VERSION
|
20
|
-
puts version
|
21
|
-
exit 0
|
22
|
-
end
|
23
|
-
|
24
|
-
args = ARGV.dup
|
25
|
-
|
26
|
-
# global options
|
27
|
-
|
28
|
-
# raise log level right away
|
29
|
-
if args.find {|it| it == '-V' || it == '--debug'}
|
30
|
-
Morpheus::Logging.set_log_level(Morpheus::Logging::Logger::DEBUG)
|
31
|
-
end
|
32
|
-
|
33
|
-
# execute startup script .morpheus_profile unless --noprofile is passed
|
34
|
-
noprofile = false
|
35
|
-
if args.find {|it| it == '--noprofile' }
|
36
|
-
noprofile = true
|
37
|
-
args.delete_if {|it| it == '--noprofile' }
|
38
|
-
end
|
39
|
-
if !noprofile && File.exists?(Morpheus::Cli::DotFile.morpheus_profile_filename)
|
40
|
-
Morpheus::Cli::DotFile.new(Morpheus::Cli::DotFile.morpheus_profile_filename).execute()
|
41
|
-
end
|
42
|
-
|
43
|
-
# all commands should be registered commands or aliases
|
44
|
-
if (args.count == 0) || !(Morpheus::Cli::CliRegistry.has_command?(args[0]) || Morpheus::Cli::CliRegistry.has_alias?(args[0]))
|
45
|
-
# just for printing help. todo: start using this. maybe in class Cli::MainCommand
|
46
|
-
optparse = Morpheus::Cli::OptionParser.new do|opts|
|
47
|
-
opts.banner = "Options:" # hack alert
|
48
|
-
opts.on('-v','--version', "Print the version.") do
|
49
|
-
puts Morpheus::Cli::VERSION
|
50
|
-
exit
|
51
|
-
end
|
52
|
-
opts.on('--noprofile','--noprofile', "Do not read and execute the personal initialization script .morpheus_profile") do
|
53
|
-
@noprofile = true
|
54
|
-
end
|
55
|
-
opts.on('-C','--nocolor', "Disable ANSI coloring") do
|
56
|
-
Term::ANSIColor::coloring = false
|
57
|
-
end
|
58
|
-
opts.on('-V','--debug', "Print extra output for debugging. ") do |json|
|
59
|
-
Morpheus::Logging.set_log_level(Morpheus::Logging::Logger::DEBUG)
|
60
|
-
::RestClient.log = Morpheus::Logging.debug? ? STDOUT : nil
|
61
|
-
end
|
62
|
-
opts.on( '-h', '--help', "Prints this help" ) do
|
63
|
-
puts opts
|
64
|
-
exit
|
65
|
-
end
|
66
|
-
end
|
67
|
-
out = "Usage: morpheus [command] [options]\n"
|
68
|
-
out << "Commands:\n"
|
69
|
-
Morpheus::Cli::CliRegistry.all.keys.sort.each {|cmd|
|
70
|
-
out << "\t#{cmd.to_s}\n"
|
71
|
-
}
|
72
|
-
# out << "Options:\n"
|
73
|
-
out << optparse.to_s
|
74
|
-
out << "\n"
|
75
|
-
out << "For more information, see https://github.com/gomorpheus/morpheus-cli/wiki"
|
76
|
-
out << "\n"
|
77
|
-
puts out
|
78
|
-
optparse.to_s
|
79
|
-
exit 127
|
80
|
-
end
|
81
|
-
|
82
|
-
# ok, execute the command (or alias)
|
83
|
-
begin
|
84
|
-
# shell is a Singleton command class
|
85
|
-
if args[0] == "shell"
|
86
|
-
cmd_result = Morpheus::Cli::Shell.instance.handle(args[1..-1])
|
87
|
-
else
|
88
|
-
cmd_result = Morpheus::Cli::CliRegistry.exec(args[0], args[1..-1])
|
89
|
-
end
|
90
|
-
if cmd_result == false
|
91
|
-
exit 1
|
92
|
-
else
|
93
|
-
exit 0
|
94
|
-
end
|
95
|
-
rescue => e
|
96
|
-
Morpheus::Cli::ErrorHandler.new.handle_error(e)
|
97
|
-
exit 1
|
98
|
-
end
|
4
|
+
terminal = Morpheus::Terminal.new
|
5
|
+
exit_code, err = terminal.execute(ARGV)
|
6
|
+
# raise err unless err.nil?
|
7
|
+
exit exit_code
|
@@ -26,7 +26,7 @@ class Morpheus::APIClient
|
|
26
26
|
# JD: could return a Request object instead...
|
27
27
|
return opts
|
28
28
|
end
|
29
|
-
# puts "
|
29
|
+
# Morpheus::Logging::DarkPrinter.puts "Morpheus::RestClient.execute(#{opts})" if Morpheus::Logging.debug?
|
30
30
|
# instead, using ::RestClient.log = STDOUT
|
31
31
|
response = Morpheus::RestClient.execute(opts)
|
32
32
|
if parse_json
|
@@ -140,6 +140,14 @@ class Morpheus::APIClient
|
|
140
140
|
Morpheus::CustomInstanceTypesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
141
141
|
end
|
142
142
|
|
143
|
+
def option_types
|
144
|
+
Morpheus::OptionTypesInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
145
|
+
end
|
146
|
+
|
147
|
+
def option_type_lists
|
148
|
+
Morpheus::OptionTypeListsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
149
|
+
end
|
150
|
+
|
143
151
|
def dashboard
|
144
152
|
Morpheus::DashboardInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
145
153
|
end
|
@@ -148,4 +156,18 @@ class Morpheus::APIClient
|
|
148
156
|
Morpheus::SetupInterface.new(@base_url)
|
149
157
|
end
|
150
158
|
|
159
|
+
def monitoring
|
160
|
+
Morpheus::MonitoringInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
161
|
+
end
|
162
|
+
|
163
|
+
# def checks
|
164
|
+
# # Morpheus::ChecksInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
165
|
+
# monitoring.checks
|
166
|
+
# end
|
167
|
+
|
168
|
+
# def incidents
|
169
|
+
# # Morpheus::IncidentsInterface.new(@access_token, @refresh_token, @expires_at, @base_url)
|
170
|
+
# monitoring.incidents
|
171
|
+
# end
|
172
|
+
|
151
173
|
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::ChecksInterface < Morpheus::APIClient
|
4
|
+
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
5
|
+
@access_token = access_token
|
6
|
+
@refresh_token = refresh_token
|
7
|
+
@base_url = base_url
|
8
|
+
@expires_at = expires_at
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(id)
|
12
|
+
raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
|
13
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}"
|
14
|
+
headers = { params: {}, authorization: "Bearer #{@access_token}" }
|
15
|
+
opts = {method: :get, url: url, headers: headers}
|
16
|
+
execute(opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def list(options={})
|
20
|
+
url = "#{@base_url}/api/monitoring/checks"
|
21
|
+
headers = { params: options, authorization: "Bearer #{@access_token}" }
|
22
|
+
opts = {method: :get, url: url, headers: headers}
|
23
|
+
execute(opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
# eh? maye use for rendering form
|
27
|
+
# def create(options)
|
28
|
+
# url = "#{@base_url}/api/monitoring/checks/create"
|
29
|
+
# headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
30
|
+
# payload = options
|
31
|
+
# opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
32
|
+
# execute(opts)
|
33
|
+
# end
|
34
|
+
|
35
|
+
def update(id, options)
|
36
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}"
|
37
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
38
|
+
payload = options
|
39
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
40
|
+
execute(opts)
|
41
|
+
end
|
42
|
+
|
43
|
+
def destroy(id)
|
44
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}"
|
45
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
46
|
+
opts = {method: :delete, url: url, headers: headers}
|
47
|
+
execute(opts)
|
48
|
+
end
|
49
|
+
|
50
|
+
def quarantine(id, options={})
|
51
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}/quarantine"
|
52
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
53
|
+
payload = options
|
54
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
55
|
+
execute(opts)
|
56
|
+
end
|
57
|
+
|
58
|
+
def mute(id, payload={})
|
59
|
+
quarantine(id, payload)
|
60
|
+
end
|
61
|
+
|
62
|
+
def history(id, params={})
|
63
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}/history"
|
64
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
65
|
+
opts = {method: :get, url: url, headers: headers}
|
66
|
+
execute(opts)
|
67
|
+
end
|
68
|
+
|
69
|
+
# def notifications(id)
|
70
|
+
# url = "#{@base_url}/api/monitoring/checks/#{id}/notifications"
|
71
|
+
# headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
72
|
+
# opts = {method: :get, url: url, headers: headers}
|
73
|
+
# execute(opts)
|
74
|
+
# end
|
75
|
+
|
76
|
+
def statistics(id)
|
77
|
+
url = "#{@base_url}/api/monitoring/checks/#{id}/statistics"
|
78
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
79
|
+
opts = {method: :get, url: url, headers: headers}
|
80
|
+
execute(opts)
|
81
|
+
end
|
82
|
+
|
83
|
+
def list_check_types(options={})
|
84
|
+
url = "#{@base_url}/api/monitoring/check-types"
|
85
|
+
headers = { :params => options, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
86
|
+
opts = {method: :get, url: url, headers: headers}
|
87
|
+
execute(opts)
|
88
|
+
end
|
89
|
+
|
90
|
+
def get_check_type(check_type_id)
|
91
|
+
url = "#{@base_url}/api/monitoring/check-types/#{check_type_id}"
|
92
|
+
headers = { :params => {}, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
93
|
+
opts = {method: :get, url: url, headers: headers}
|
94
|
+
execute(opts)
|
95
|
+
end
|
96
|
+
|
97
|
+
# def events(id, params={})
|
98
|
+
# # JD: maybe switch to this instead /api/monitoring/checks/#{id}/events instead?
|
99
|
+
# # url = "#{@base_url}/api/monitoring/checks/#{id}/events"
|
100
|
+
# url = "#{@base_url}/api/monitoring/checks/#{id}/events"
|
101
|
+
# headers = { :params => params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
102
|
+
# opts = {method: :get, url: url, headers: headers}
|
103
|
+
# execute(opts)
|
104
|
+
# end
|
105
|
+
|
106
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::IncidentsInterface < Morpheus::APIClient
|
4
|
+
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
5
|
+
@access_token = access_token
|
6
|
+
@refresh_token = refresh_token
|
7
|
+
@base_url = base_url
|
8
|
+
@expires_at = expires_at
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(id, params={})
|
12
|
+
raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
|
13
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}"
|
14
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
15
|
+
opts = {method: :get, url: url, headers: headers}
|
16
|
+
execute(opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def list(params={})
|
20
|
+
url = "#{@base_url}/api/monitoring/incidents"
|
21
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
22
|
+
opts = {method: :get, url: url, headers: headers}
|
23
|
+
execute(opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def stats(params={})
|
27
|
+
url = "#{@base_url}/api/monitoring/incidents/stats"
|
28
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
29
|
+
opts = {method: :get, url: url, headers: headers}
|
30
|
+
execute(opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
def create(options)
|
34
|
+
url = "#{@base_url}/api/monitoring/incidents"
|
35
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
36
|
+
payload = options
|
37
|
+
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
38
|
+
execute(opts)
|
39
|
+
end
|
40
|
+
|
41
|
+
def update(id, options)
|
42
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}"
|
43
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
44
|
+
payload = options
|
45
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
46
|
+
execute(opts)
|
47
|
+
end
|
48
|
+
|
49
|
+
def destroy(id)
|
50
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}"
|
51
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
52
|
+
opts = {method: :delete, url: url, headers: headers}
|
53
|
+
execute(opts)
|
54
|
+
end
|
55
|
+
|
56
|
+
def close(id)
|
57
|
+
destroy(id)
|
58
|
+
end
|
59
|
+
|
60
|
+
def reopen(id, options={})
|
61
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}/reopen"
|
62
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
63
|
+
opts = {method: :put, url: url, headers: headers, payload: options.to_json}
|
64
|
+
execute(opts)
|
65
|
+
end
|
66
|
+
|
67
|
+
def quarantine(id, options={})
|
68
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}/quarantine"
|
69
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
70
|
+
payload = options
|
71
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
72
|
+
execute(opts)
|
73
|
+
end
|
74
|
+
|
75
|
+
def mute(id, payload={})
|
76
|
+
quarantine(id, payload)
|
77
|
+
end
|
78
|
+
|
79
|
+
def history(id, params={})
|
80
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}/history"
|
81
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
82
|
+
opts = {method: :get, url: url, headers: headers}
|
83
|
+
execute(opts)
|
84
|
+
end
|
85
|
+
|
86
|
+
def notifications(id, params={})
|
87
|
+
url = "#{@base_url}/api/monitoring/incidents/#{id}/notifications"
|
88
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
89
|
+
opts = {method: :get, url: url, headers: headers}
|
90
|
+
execute(opts)
|
91
|
+
end
|
92
|
+
|
93
|
+
def events(id)
|
94
|
+
# JD: maybe switch to this instead /api/monitoring/incidents/#{id}/events instead?
|
95
|
+
# url = "#{@base_url}/api/monitoring/incidents/#{id}/events"
|
96
|
+
url = "#{@base_url}/api/monitoring/incident-events/#{id}"
|
97
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
98
|
+
opts = {method: :get, url: url, headers: headers}
|
99
|
+
execute(opts)
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::MonitoringAppsInterface < Morpheus::APIClient
|
4
|
+
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
5
|
+
@access_token = access_token
|
6
|
+
@refresh_token = refresh_token
|
7
|
+
@base_url = base_url
|
8
|
+
@expires_at = expires_at
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(id, params={})
|
12
|
+
raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
|
13
|
+
url = "#{@base_url}/api/monitoring/apps/#{id}"
|
14
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
15
|
+
opts = {method: :get, url: url, headers: headers}
|
16
|
+
execute(opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def list(params={})
|
20
|
+
url = "#{@base_url}/api/monitoring/apps"
|
21
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
22
|
+
opts = {method: :get, url: url, headers: headers}
|
23
|
+
execute(opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create(payload)
|
27
|
+
url = "#{@base_url}/api/monitoring/apps"
|
28
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
29
|
+
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
30
|
+
execute(opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
def update(id, payload)
|
34
|
+
url = "#{@base_url}/api/monitoring/apps/#{id}"
|
35
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
36
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
37
|
+
execute(opts)
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy(id)
|
41
|
+
url = "#{@base_url}/api/monitoring/apps/#{id}"
|
42
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
43
|
+
opts = {method: :delete, url: url, headers: headers}
|
44
|
+
execute(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::MonitoringContactsInterface < Morpheus::APIClient
|
4
|
+
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
5
|
+
@access_token = access_token
|
6
|
+
@refresh_token = refresh_token
|
7
|
+
@base_url = base_url
|
8
|
+
@expires_at = expires_at
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(id, params={})
|
12
|
+
raise "#{self.class}.get() passed a blank id!" if id.to_s == ''
|
13
|
+
url = "#{@base_url}/api/monitoring/contacts/#{id}"
|
14
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
15
|
+
opts = {method: :get, url: url, headers: headers}
|
16
|
+
execute(opts)
|
17
|
+
end
|
18
|
+
|
19
|
+
def list(params={})
|
20
|
+
url = "#{@base_url}/api/monitoring/contacts"
|
21
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
22
|
+
opts = {method: :get, url: url, headers: headers}
|
23
|
+
execute(opts)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create(payload)
|
27
|
+
url = "#{@base_url}/api/monitoring/contacts"
|
28
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
29
|
+
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
30
|
+
execute(opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
def update(id, payload)
|
34
|
+
url = "#{@base_url}/api/monitoring/contacts/#{id}"
|
35
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
36
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
37
|
+
execute(opts)
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy(id)
|
41
|
+
url = "#{@base_url}/api/monitoring/contacts/#{id}"
|
42
|
+
headers = { :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
43
|
+
opts = {method: :delete, url: url, headers: headers}
|
44
|
+
execute(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|