morpheus-cli 3.6.31 → 3.6.32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/morpheus/api/api_client.rb +8 -0
- data/lib/morpheus/api/apps_interface.rb +15 -0
- data/lib/morpheus/api/clouds_interface.rb +15 -0
- data/lib/morpheus/api/environments_interface.rb +54 -0
- data/lib/morpheus/api/groups_interface.rb +15 -0
- data/lib/morpheus/api/instances_interface.rb +15 -0
- data/lib/morpheus/api/servers_interface.rb +14 -0
- data/lib/morpheus/api/wiki_interface.rb +54 -0
- data/lib/morpheus/cli.rb +2 -0
- data/lib/morpheus/cli/apps.rb +209 -21
- data/lib/morpheus/cli/clouds.rb +209 -1
- data/lib/morpheus/cli/environments_command.rb +406 -0
- data/lib/morpheus/cli/groups.rb +207 -0
- data/lib/morpheus/cli/hosts.rb +208 -0
- data/lib/morpheus/cli/instances.rb +350 -36
- data/lib/morpheus/cli/key_pairs.rb +3 -3
- data/lib/morpheus/cli/library_container_types_command.rb +10 -5
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +28 -3
- data/lib/morpheus/cli/networks_command.rb +12 -0
- data/lib/morpheus/cli/recent_activity_command.rb +9 -3
- data/lib/morpheus/cli/remote.rb +1 -1
- data/lib/morpheus/cli/reports_command.rb +60 -11
- data/lib/morpheus/cli/tenants_command.rb +43 -46
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli/wiki_command.rb +461 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f24803cc6c01bc67cf8ba06e90df80f379738febf629612dab84a29da085f81f
|
4
|
+
data.tar.gz: 596305e77aa0b2686b89861e161ff1db294cb7f7e7943167882db00becd7d15a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecfb02f85f8b2893051114407bacf6a78d11ecf3b16eeb01671d5b966e9f87fd60126ad00c763eac27c4d62a8f2e9ecf22c13b33d02c1e77da18abc86d7256bf
|
7
|
+
data.tar.gz: 92579b647b4b14b2841250dafdb8712157e5117ece943f54fa9ad24644513b593053555d4cc457a045bc60813ff3568561c686b947661610f73229dee93579d5
|
@@ -474,6 +474,14 @@ class Morpheus::APIClient
|
|
474
474
|
Morpheus::ReportsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
|
475
475
|
end
|
476
476
|
|
477
|
+
def environments
|
478
|
+
Morpheus::EnvironmentsInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
|
479
|
+
end
|
480
|
+
|
481
|
+
def wiki
|
482
|
+
Morpheus::WikiInterface.new(@access_token, @refresh_token, @expires_at, @base_url).setopts(@options)
|
483
|
+
end
|
484
|
+
|
477
485
|
# new interfaces get added here
|
478
486
|
|
479
487
|
end
|
@@ -127,4 +127,19 @@ class Morpheus::AppsInterface < Morpheus::APIClient
|
|
127
127
|
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
128
128
|
execute(opts)
|
129
129
|
end
|
130
|
+
|
131
|
+
def wiki(id, params)
|
132
|
+
url = "#{@base_url}/api/apps/#{id}/wiki"
|
133
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
134
|
+
opts = {method: :get, url: url, headers: headers}
|
135
|
+
execute(opts)
|
136
|
+
end
|
137
|
+
|
138
|
+
def update_wiki(id, payload)
|
139
|
+
url = "#{@base_url}/api/apps/#{id}/wiki"
|
140
|
+
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
141
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
142
|
+
execute(opts)
|
143
|
+
end
|
144
|
+
|
130
145
|
end
|
@@ -78,4 +78,19 @@ class Morpheus::CloudsInterface < Morpheus::APIClient
|
|
78
78
|
opts = {method: :post, url: url, headers: headers, payload: payload.to_json}
|
79
79
|
execute(opts)
|
80
80
|
end
|
81
|
+
|
82
|
+
def wiki(id, params)
|
83
|
+
url = "#{@base_url}/api/zones/#{id}/wiki"
|
84
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
85
|
+
opts = {method: :get, url: url, headers: headers}
|
86
|
+
execute(opts)
|
87
|
+
end
|
88
|
+
|
89
|
+
def update_wiki(id, payload)
|
90
|
+
url = "#{@base_url}/api/zones/#{id}/wiki"
|
91
|
+
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
92
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
93
|
+
execute(opts)
|
94
|
+
end
|
95
|
+
|
81
96
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::EnvironmentsInterface < 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/environments/#{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/environments"
|
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/environments"
|
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/environments/#{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, params={})
|
41
|
+
url = "#{@base_url}/api/environments/#{id}"
|
42
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
43
|
+
opts = {method: :delete, url: url, headers: headers}
|
44
|
+
execute(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
def toggle_active(id, params={})
|
48
|
+
url = "#{@base_url}/api/environments/#{id}/toggle-active"
|
49
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
50
|
+
opts = {method: :put, url: url, headers: headers}
|
51
|
+
execute(opts)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -54,4 +54,19 @@ class Morpheus::GroupsInterface < Morpheus::APIClient
|
|
54
54
|
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
55
55
|
execute(opts)
|
56
56
|
end
|
57
|
+
|
58
|
+
def wiki(id, params)
|
59
|
+
url = "#{@base_url}/api/groups/#{id}/wiki"
|
60
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
61
|
+
opts = {method: :get, url: url, headers: headers}
|
62
|
+
execute(opts)
|
63
|
+
end
|
64
|
+
|
65
|
+
def update_wiki(id, payload)
|
66
|
+
url = "#{@base_url}/api/groups/#{id}/wiki"
|
67
|
+
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
68
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
69
|
+
execute(opts)
|
57
70
|
end
|
71
|
+
|
72
|
+
end
|
@@ -259,6 +259,7 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
|
|
259
259
|
execute(opts)
|
260
260
|
end
|
261
261
|
|
262
|
+
# deprecated in 4.0
|
262
263
|
def update_notes(id, payload)
|
263
264
|
url = "#{@base_url}/api/instances/#{id}/notes"
|
264
265
|
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
@@ -287,4 +288,18 @@ class Morpheus::InstancesInterface < Morpheus::APIClient
|
|
287
288
|
execute(opts)
|
288
289
|
end
|
289
290
|
|
291
|
+
def wiki(id, params)
|
292
|
+
url = "#{@base_url}/api/instances/#{id}/wiki"
|
293
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
294
|
+
opts = {method: :get, url: url, headers: headers}
|
295
|
+
execute(opts)
|
296
|
+
end
|
297
|
+
|
298
|
+
def update_wiki(id, payload)
|
299
|
+
url = "#{@base_url}/api/instances/#{id}/wiki"
|
300
|
+
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
301
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
302
|
+
execute(opts)
|
303
|
+
end
|
304
|
+
|
290
305
|
end
|
@@ -136,4 +136,18 @@ class Morpheus::ServersInterface < Morpheus::APIClient
|
|
136
136
|
execute(opts)
|
137
137
|
end
|
138
138
|
|
139
|
+
def wiki(id, params)
|
140
|
+
url = "#{@base_url}/api/servers/#{id}/wiki"
|
141
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
142
|
+
opts = {method: :get, url: url, headers: headers}
|
143
|
+
execute(opts)
|
144
|
+
end
|
145
|
+
|
146
|
+
def update_wiki(id, payload)
|
147
|
+
url = "#{@base_url}/api/servers/#{id}/wiki"
|
148
|
+
headers = {authorization: "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
149
|
+
opts = {method: :put, url: url, headers: headers, payload: payload.to_json}
|
150
|
+
execute(opts)
|
151
|
+
end
|
152
|
+
|
139
153
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'morpheus/api/api_client'
|
2
|
+
|
3
|
+
class Morpheus::WikiInterface < 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 name!" if id.to_s == ''
|
13
|
+
url = "#{@base_url}/api/wiki/pages/#{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/wiki/pages"
|
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/wiki/pages"
|
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/wiki/pages/#{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, params={})
|
41
|
+
url = "#{@base_url}/api/wiki/pages/#{id}"
|
42
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
43
|
+
opts = {method: :delete, url: url, headers: headers}
|
44
|
+
execute(opts)
|
45
|
+
end
|
46
|
+
|
47
|
+
def categories(params={})
|
48
|
+
url = "#{@base_url}/api/wiki/categories"
|
49
|
+
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
50
|
+
opts = {method: :get, url: url, headers: headers}
|
51
|
+
execute(opts)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
data/lib/morpheus/cli.rb
CHANGED
@@ -143,6 +143,8 @@ module Morpheus
|
|
143
143
|
load 'morpheus/cli/processes_command.rb'
|
144
144
|
load 'morpheus/cli/packages_command.rb'
|
145
145
|
load 'morpheus/cli/reports_command.rb'
|
146
|
+
load 'morpheus/cli/environments_command.rb'
|
147
|
+
load 'morpheus/cli/wiki_command.rb'
|
146
148
|
|
147
149
|
# Your new commands go here...
|
148
150
|
|
data/lib/morpheus/cli/apps.rb
CHANGED
@@ -15,8 +15,10 @@ class Morpheus::Cli::Apps
|
|
15
15
|
include Morpheus::Cli::ProcessesHelper
|
16
16
|
set_command_name :apps
|
17
17
|
set_command_description "View and manage apps."
|
18
|
-
register_subcommands :list, :count, :get, :add, :update, :remove, :add_instance, :remove_instance, :logs, :
|
18
|
+
register_subcommands :list, :count, :get, :add, :update, :remove, :add_instance, :remove_instance, :logs, :security_groups, :apply_security_groups, :history
|
19
19
|
register_subcommands :stop, :start, :restart
|
20
|
+
register_subcommands :wiki, :update_wiki
|
21
|
+
#register_subcommands :firewall_disable, :firewall_enable
|
20
22
|
#register_subcommands :validate # add --validate instead
|
21
23
|
alias_subcommand :details, :get
|
22
24
|
set_default_subcommand :list
|
@@ -1487,6 +1489,205 @@ class Morpheus::Cli::Apps
|
|
1487
1489
|
end
|
1488
1490
|
end
|
1489
1491
|
|
1492
|
+
def wiki(args)
|
1493
|
+
options = {}
|
1494
|
+
params = {}
|
1495
|
+
open_wiki_link = false
|
1496
|
+
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1497
|
+
opts.banner = subcommand_usage("[app]")
|
1498
|
+
opts.on('--view', '--view', "View wiki page in web browser.") do
|
1499
|
+
open_wiki_link = true
|
1500
|
+
end
|
1501
|
+
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1502
|
+
opts.footer = "View wiki page details for an app." + "\n" +
|
1503
|
+
"[app] is required. This is the name or id of an app."
|
1504
|
+
end
|
1505
|
+
optparse.parse!(args)
|
1506
|
+
if args.count != 1
|
1507
|
+
puts_error "#{Morpheus::Terminal.angry_prompt}wrong number of arguments. Expected 1 and received #{args.count} #{args.inspect}\n#{optparse}"
|
1508
|
+
return 1
|
1509
|
+
end
|
1510
|
+
connect(options)
|
1511
|
+
|
1512
|
+
begin
|
1513
|
+
app = find_app_by_name_or_id(args[0])
|
1514
|
+
return 1 if app.nil?
|
1515
|
+
|
1516
|
+
|
1517
|
+
@apps_interface.setopts(options)
|
1518
|
+
if options[:dry_run]
|
1519
|
+
print_dry_run @apps_interface.dry.wiki(app["id"], params)
|
1520
|
+
return
|
1521
|
+
end
|
1522
|
+
json_response = @apps_interface.wiki(app["id"], params)
|
1523
|
+
page = json_response['page']
|
1524
|
+
|
1525
|
+
render_result = render_with_format(json_response, options, 'page')
|
1526
|
+
return 0 if render_result
|
1527
|
+
|
1528
|
+
if page
|
1529
|
+
|
1530
|
+
# my_terminal.exec("wiki get #{page['id']}")
|
1531
|
+
|
1532
|
+
print_h1 "App Wiki Page: #{app['name']}"
|
1533
|
+
# print_h1 "Wiki Page Details"
|
1534
|
+
print cyan
|
1535
|
+
|
1536
|
+
print_description_list({
|
1537
|
+
"Page ID" => 'id',
|
1538
|
+
"Name" => 'name',
|
1539
|
+
#"Category" => 'category',
|
1540
|
+
#"Ref Type" => 'refType',
|
1541
|
+
#"Ref ID" => 'refId',
|
1542
|
+
#"Owner" => lambda {|it| it['account'] ? it['account']['name'] : '' },
|
1543
|
+
"Created" => lambda {|it| format_local_dt(it['dateCreated']) },
|
1544
|
+
"Created By" => lambda {|it| it['createdBy'] ? it['createdBy']['username'] : '' },
|
1545
|
+
"Updated" => lambda {|it| format_local_dt(it['lastUpdated']) },
|
1546
|
+
"Updated By" => lambda {|it| it['updatedBy'] ? it['updatedBy']['username'] : '' }
|
1547
|
+
}, page)
|
1548
|
+
print reset,"\n"
|
1549
|
+
|
1550
|
+
print_h2 "Page Content"
|
1551
|
+
print cyan, page['content'], reset, "\n"
|
1552
|
+
|
1553
|
+
else
|
1554
|
+
print "\n"
|
1555
|
+
print cyan, "No wiki page found.", reset, "\n"
|
1556
|
+
end
|
1557
|
+
print reset,"\n"
|
1558
|
+
|
1559
|
+
if open_wiki_link
|
1560
|
+
return view_wiki([args[0]])
|
1561
|
+
end
|
1562
|
+
|
1563
|
+
return 0
|
1564
|
+
rescue RestClient::Exception => e
|
1565
|
+
print_rest_exception(e, options)
|
1566
|
+
exit 1
|
1567
|
+
end
|
1568
|
+
end
|
1569
|
+
|
1570
|
+
def view_wiki(args)
|
1571
|
+
params = {}
|
1572
|
+
options = {}
|
1573
|
+
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1574
|
+
opts.banner = subcommand_usage("[id]")
|
1575
|
+
build_common_options(opts, options, [:dry_run, :remote])
|
1576
|
+
opts.footer = "View app wiki page in a web browser" + "\n" +
|
1577
|
+
"[app] is required. This is the name or id of an app."
|
1578
|
+
end
|
1579
|
+
optparse.parse!(args)
|
1580
|
+
if args.count != 1
|
1581
|
+
raise_command_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args.join(' ')}\n#{optparse}"
|
1582
|
+
end
|
1583
|
+
connect(options)
|
1584
|
+
begin
|
1585
|
+
app = find_app_by_name_or_id(args[0])
|
1586
|
+
return 1 if app.nil?
|
1587
|
+
|
1588
|
+
link = "#{@appliance_url}/login/oauth-redirect?access_token=#{@access_token}\\&redirectUri=/provisioning/apps/#{app['id']}#!wiki"
|
1589
|
+
|
1590
|
+
open_command = nil
|
1591
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
1592
|
+
open_command = "start #{link}"
|
1593
|
+
elsif RbConfig::CONFIG['host_os'] =~ /darwin/
|
1594
|
+
open_command = "open #{link}"
|
1595
|
+
elsif RbConfig::CONFIG['host_os'] =~ /linux|bsd/
|
1596
|
+
open_command = "xdg-open #{link}"
|
1597
|
+
end
|
1598
|
+
|
1599
|
+
if options[:dry_run]
|
1600
|
+
puts "system: #{open_command}"
|
1601
|
+
return 0
|
1602
|
+
end
|
1603
|
+
|
1604
|
+
system(open_command)
|
1605
|
+
|
1606
|
+
return 0
|
1607
|
+
rescue RestClient::Exception => e
|
1608
|
+
print_rest_exception(e, options)
|
1609
|
+
exit 1
|
1610
|
+
end
|
1611
|
+
end
|
1612
|
+
|
1613
|
+
def update_wiki(args)
|
1614
|
+
options = {}
|
1615
|
+
params = {}
|
1616
|
+
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1617
|
+
opts.banner = subcommand_usage("[app] [options]")
|
1618
|
+
build_option_type_options(opts, options, update_wiki_page_option_types)
|
1619
|
+
opts.on('--file FILE', "File containing the wiki content. This can be used instead of --content") do |filename|
|
1620
|
+
full_filename = File.expand_path(filename)
|
1621
|
+
if File.exists?(full_filename)
|
1622
|
+
params['content'] = File.read(full_filename)
|
1623
|
+
else
|
1624
|
+
print_red_alert "File not found: #{full_filename}"
|
1625
|
+
return 1
|
1626
|
+
end
|
1627
|
+
# use the filename as the name by default.
|
1628
|
+
if !params['name']
|
1629
|
+
params['name'] = File.basename(full_filename)
|
1630
|
+
end
|
1631
|
+
end
|
1632
|
+
opts.on(nil, '--clear', "Clear current page content") do |val|
|
1633
|
+
params['content'] = ""
|
1634
|
+
end
|
1635
|
+
build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote])
|
1636
|
+
end
|
1637
|
+
optparse.parse!(args)
|
1638
|
+
if args.count != 1
|
1639
|
+
puts_error "#{Morpheus::Terminal.angry_prompt}wrong number of arguments. Expected 1 and received #{args.count} #{args.inspect}\n#{optparse}"
|
1640
|
+
return 1
|
1641
|
+
end
|
1642
|
+
connect(options)
|
1643
|
+
|
1644
|
+
begin
|
1645
|
+
app = find_app_by_name_or_id(args[0])
|
1646
|
+
return 1 if app.nil?
|
1647
|
+
# construct payload
|
1648
|
+
passed_options = options[:options] ? options[:options].reject {|k,v| k.is_a?(Symbol) } : {}
|
1649
|
+
payload = nil
|
1650
|
+
if options[:payload]
|
1651
|
+
payload = options[:payload]
|
1652
|
+
payload.deep_merge!({'page' => passed_options}) unless passed_options.empty?
|
1653
|
+
else
|
1654
|
+
payload = {
|
1655
|
+
'page' => {
|
1656
|
+
}
|
1657
|
+
}
|
1658
|
+
# allow arbitrary -O options
|
1659
|
+
payload.deep_merge!({'page' => passed_options}) unless passed_options.empty?
|
1660
|
+
# prompt for options
|
1661
|
+
#params = Morpheus::Cli::OptionTypes.prompt(update_wiki_page_option_types, options[:options], @api_client, options[:params])
|
1662
|
+
#params = passed_options
|
1663
|
+
params.deep_merge!(passed_options)
|
1664
|
+
|
1665
|
+
if params.empty?
|
1666
|
+
raise_command_error "Specify at least one option to update.\n#{optparse}"
|
1667
|
+
end
|
1668
|
+
|
1669
|
+
payload.deep_merge!({'page' => params}) unless params.empty?
|
1670
|
+
end
|
1671
|
+
@apps_interface.setopts(options)
|
1672
|
+
if options[:dry_run]
|
1673
|
+
print_dry_run @apps_interface.dry.update_wiki(app["id"], payload)
|
1674
|
+
return
|
1675
|
+
end
|
1676
|
+
json_response = @apps_interface.update_wiki(app["id"], payload)
|
1677
|
+
|
1678
|
+
if options[:json]
|
1679
|
+
puts as_json(json_response, options)
|
1680
|
+
else
|
1681
|
+
print_green_success "Updated wiki page for app #{app['name']}"
|
1682
|
+
wiki([app['id']])
|
1683
|
+
end
|
1684
|
+
return 0
|
1685
|
+
rescue RestClient::Exception => e
|
1686
|
+
print_rest_exception(e, options)
|
1687
|
+
exit 1
|
1688
|
+
end
|
1689
|
+
end
|
1690
|
+
|
1490
1691
|
private
|
1491
1692
|
|
1492
1693
|
def extract_app_tiers(app)
|
@@ -1721,7 +1922,6 @@ class Morpheus::Cli::Apps
|
|
1721
1922
|
|
1722
1923
|
# lookup scoped instance config in a blueprint
|
1723
1924
|
# this only finds one right now
|
1724
|
-
# def tmplCfg = getConfigMap(appTemplateConfig?.tiers?.getAt(tierName)?.instances?.getAt(index), opts.environment, opts.group, instanceOpts.instance.cloud?: opts?.defaultCloud?.name)
|
1725
1925
|
def get_scoped_instance_config(instance_config, env_name, group_name, cloud_name)
|
1726
1926
|
config = instance_config.clone
|
1727
1927
|
if env_name.to_s != '' && config['environments'] && config['environments'][env_name]
|
@@ -1741,23 +1941,11 @@ class Morpheus::Cli::Apps
|
|
1741
1941
|
return config
|
1742
1942
|
end
|
1743
1943
|
|
1744
|
-
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1748
|
-
|
1749
|
-
|
1750
|
-
|
1751
|
-
# if (group instanceof String) {
|
1752
|
-
# configMap = configMap?.groups?.getAt(group) ?: configMap
|
1753
|
-
# }
|
1754
|
-
# else {
|
1755
|
-
# configMap = configMap?.groups?.getAt(group?.name) ?: configMap
|
1756
|
-
# }
|
1757
|
-
# }
|
1758
|
-
# if(cloud && configMap?.clouds) {
|
1759
|
-
# return configMap?.clouds?.getAt(cloud) ?: configMap
|
1760
|
-
# }
|
1761
|
-
# return configMap
|
1762
|
-
# }
|
1944
|
+
def update_wiki_page_option_types
|
1945
|
+
[
|
1946
|
+
{'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => false, 'displayOrder' => 1, 'description' => 'The name of the wiki page for this instance. Default is the instance name.'},
|
1947
|
+
#{'fieldName' => 'category', 'fieldLabel' => 'Category', 'type' => 'text', 'required' => false, 'displayOrder' => 2},
|
1948
|
+
{'fieldName' => 'content', 'fieldLabel' => 'Content', 'type' => 'textarea', 'required' => false, 'displayOrder' => 3, 'description' => 'The content (markdown) of the wiki page.'}
|
1949
|
+
]
|
1950
|
+
end
|
1763
1951
|
end
|