app42 0.5.10 → 0.6.0
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/RELEASE.md +7 -0
- data/lib/app42/base/constants.rb +3 -0
- data/lib/app42/base/help.rb +213 -2
- data/lib/app42/base/message.rb +4 -0
- data/lib/app42/base/shell.rb +10 -1
- data/lib/app42/base/util.rb +45 -1
- data/lib/app42/command/base.rb +182 -3
- data/lib/app42/command/client.rb +32 -2
- data/lib/app42/command/service.rb +3 -1
- data/lib/app42/command/setup.rb +13 -4
- data/lib/app42/command/wordpress.rb +105 -0
- data/lib/app42/version.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72b1cf90b1aa79d2f2c7d7e07d09f21ad6d50ad0
|
4
|
+
data.tar.gz: 71e15470863e0a4c288294307c7e812dc2e1cfab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f773373c427bd715180ffdbf4f3eca4b21256e150faee645df1f734eb2044b3f0bbf0f329e608eba93bac2a3fc85b2c08758e909512eaf02db34a5d88fc7f144
|
7
|
+
data.tar.gz: 91ba3ce9113eb87ed77a00bfbb387669c651fe168ca77211cf78efad251dc009b84214a750d40c2f836f6e77885953b2780a0f6aae908cc6b960aba7e4165199
|
data/RELEASE.md
CHANGED
@@ -15,4 +15,11 @@ Client library and command-line tool to deploy and manage apps on App42PaaS.
|
|
15
15
|
- Service Vertical scale and descale
|
16
16
|
- BPaaS setup upgrade
|
17
17
|
|
18
|
+
### 0.6.0 (08-01-2014)
|
19
|
+
|
20
|
+
- Node.js support
|
21
|
+
- WordPress support
|
22
|
+
- BPaaS setup downgrade
|
23
|
+
- WordPress setup donwgrade
|
24
|
+
|
18
25
|
|
data/lib/app42/base/constants.rb
CHANGED
@@ -22,6 +22,9 @@ module App42
|
|
22
22
|
# Scale type
|
23
23
|
SCALE_TYPE = ['Horizontal', 'Vertical']
|
24
24
|
|
25
|
+
# flavour type
|
26
|
+
FLAVOUR_TYPE = ['light', 'medium', 'heavy']
|
27
|
+
|
25
28
|
DATABASE_NAME_NOT_ALLOWED = %w(mysql couchdb mongodb postgresql database sql)
|
26
29
|
|
27
30
|
# regex for special character
|
data/lib/app42/base/help.rb
CHANGED
@@ -71,12 +71,23 @@ module App42
|
|
71
71
|
Setup
|
72
72
|
setupBPaaS # Setup App42 BPaaS by choosing required configuration
|
73
73
|
deleteSetup # Delete the setup
|
74
|
-
startBPaaS # Start the BPaaS
|
75
|
-
stopBPaaS # Stop the BPaaS
|
74
|
+
startBPaaS # Start the BPaaS setup
|
75
|
+
stopBPaaS # Stop the BPaaS setup
|
76
76
|
setupInfo # Show setup information
|
77
77
|
upgradeBPaas # Upgrade BPaaS by choosing required configuration
|
78
|
+
downgradeBPaas # Downgrade BPaaS by choosing required configuration
|
78
79
|
setups # List all the setups
|
79
80
|
|
81
|
+
WordPress
|
82
|
+
setupWordPress # Setup App42 WordPress by choosing required configuration
|
83
|
+
deleteWordPress # Delete the WordPress setup
|
84
|
+
startWordPress # Start the WordPress setup
|
85
|
+
stopWordPress # Stop the WordPress setup
|
86
|
+
upgradeWordPress # Upgrade WordPress by choosing required configuration
|
87
|
+
downgradeWordPress # Downgrade WordPress by choosing required configuration
|
88
|
+
wordPressInfo # Show WordPress setup information
|
89
|
+
wordPressSetups # List all the WordPress setups
|
90
|
+
|
80
91
|
Help
|
81
92
|
version # Show Ruby client gem version
|
82
93
|
help # List available commands and their description
|
@@ -1091,10 +1102,210 @@ Example:
|
|
1091
1102
|
Operation is in progress, Please wait...-
|
1092
1103
|
|
1093
1104
|
BPaaS setup demo upgraded successfully.
|
1105
|
+
DESC
|
1106
|
+
end
|
1107
|
+
|
1108
|
+
def downgradebpaas
|
1109
|
+
print <<-DESC
|
1110
|
+
Usage:
|
1111
|
+
app42 downgradeBPaaS
|
1112
|
+
|
1113
|
+
Downgrade BPaaS by choosing required configuration
|
1114
|
+
|
1115
|
+
Example:
|
1116
|
+
$app42 downgradeBPaaS
|
1117
|
+
Enter Setup Name: demo
|
1118
|
+
|
1119
|
+
1: Light
|
1120
|
+
2: Medium
|
1121
|
+
Select Flavour [Light]: 2
|
1122
|
+
|
1123
|
+
Downgrading Setup... OK
|
1124
|
+
|
1125
|
+
Operation is in progress, Please wait...-
|
1126
|
+
|
1127
|
+
BPaaS setup demo downgraded successfully.
|
1128
|
+
DESC
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
def setupwordpress
|
1132
|
+
print <<-DESC
|
1133
|
+
Usage:
|
1134
|
+
app42 setupWordPress
|
1135
|
+
|
1136
|
+
Setup App42 WordPress by choosing required configuration
|
1137
|
+
|
1138
|
+
Example:
|
1139
|
+
$app42 setupWordPress
|
1140
|
+
Enter WordPress Name: demo
|
1141
|
+
|
1142
|
+
Checking WordPress Name Availability... OK
|
1143
|
+
|
1144
|
+
1: Shared
|
1145
|
+
Select Instance Type [Shared]:
|
1146
|
+
|
1147
|
+
1: Amazon (Northern Virginia)
|
1148
|
+
Select IaaS Provider [Amazon (Northern Virginia)]:
|
1149
|
+
|
1150
|
+
1: Light
|
1151
|
+
2: Medium
|
1152
|
+
3: Heavy
|
1153
|
+
Select Flavour [Light]:
|
1154
|
+
|
1155
|
+
Setting up the infrastructure... OK
|
1156
|
+
|
1157
|
+
Operation is in progress, Please wait...-
|
1158
|
+
|
1159
|
+
Your WordPress setup has been completed successfully, For details, Login to AppHQ console.
|
1160
|
+
|
1161
|
+
DESC
|
1162
|
+
end
|
1163
|
+
|
1164
|
+
def startwordpress
|
1165
|
+
print <<-DESC
|
1166
|
+
Usage:
|
1167
|
+
app42 startWordPress
|
1168
|
+
|
1169
|
+
Start the WordPress setup
|
1170
|
+
|
1171
|
+
Example:
|
1172
|
+
$app42 startWordPress
|
1173
|
+
Enter Setup Name: demo
|
1174
|
+
Starting WordPress Setup demo... OK
|
1175
|
+
|
1176
|
+
Operation is in progress, Please wait...|
|
1177
|
+
Setup started successfully.
|
1094
1178
|
|
1095
1179
|
DESC
|
1096
1180
|
end
|
1097
1181
|
|
1182
|
+
def stopwordpress
|
1183
|
+
print <<-DESC
|
1184
|
+
Usage:
|
1185
|
+
app42 stopWordPress
|
1186
|
+
|
1187
|
+
Stop the WordPress setup
|
1188
|
+
|
1189
|
+
Example:
|
1190
|
+
$app42 stopWordPress
|
1191
|
+
Enter Setup Name: demo
|
1192
|
+
Stopping WordPress Setup demo... OK
|
1193
|
+
|
1194
|
+
Operation is in progress, Please wait...|
|
1195
|
+
Setup stopped successfully.
|
1196
|
+
|
1197
|
+
DESC
|
1198
|
+
end
|
1199
|
+
|
1200
|
+
def upgradewordpress
|
1201
|
+
print <<-DESC
|
1202
|
+
Usage:
|
1203
|
+
app42 upgradeWordpress
|
1204
|
+
|
1205
|
+
Upgrade WordPress by choosing required configuration
|
1206
|
+
|
1207
|
+
Example:
|
1208
|
+
$app42 upgradeWordPress
|
1209
|
+
Enter Setup Name: demo
|
1210
|
+
|
1211
|
+
1: Light
|
1212
|
+
2: Medium
|
1213
|
+
3: Heavy
|
1214
|
+
Select Flavour [Light]: 2
|
1215
|
+
|
1216
|
+
Upgrading Setup... OK
|
1217
|
+
|
1218
|
+
Operation is in progress, Please wait...-
|
1219
|
+
|
1220
|
+
WordPress setup demo upgraded successfully.
|
1221
|
+
DESC
|
1222
|
+
end
|
1223
|
+
|
1224
|
+
def downgradewordpress
|
1225
|
+
print <<-DESC
|
1226
|
+
Usage:
|
1227
|
+
app42 downgradeWordpress
|
1228
|
+
|
1229
|
+
Downgrade WordPress by choosing required configuration
|
1230
|
+
|
1231
|
+
Example:
|
1232
|
+
$app42 upgradeWordPress
|
1233
|
+
Enter Setup Name: demo
|
1234
|
+
|
1235
|
+
1: Light
|
1236
|
+
2: Medium
|
1237
|
+
Select Flavour [Light]: 2
|
1238
|
+
|
1239
|
+
Downgrading Setup... OK
|
1240
|
+
|
1241
|
+
Operation is in progress, Please wait...-
|
1242
|
+
|
1243
|
+
WordPress setup demo downgraded successfully.
|
1244
|
+
DESC
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
def deletewordpress
|
1248
|
+
print <<-DESC
|
1249
|
+
Usage:
|
1250
|
+
app42 deleteWordPress
|
1251
|
+
|
1252
|
+
Delete the WordPress setup
|
1253
|
+
|
1254
|
+
Example:
|
1255
|
+
$app42 deleteWordPress
|
1256
|
+
Enter Setup Name: demo
|
1257
|
+
Deleting Setup... OK
|
1258
|
+
|
1259
|
+
Operation is in progress, Please wait...-
|
1260
|
+
Setup deleted successfully.
|
1261
|
+
DESC
|
1262
|
+
end
|
1263
|
+
|
1264
|
+
def wordpressinfo
|
1265
|
+
print <<-DESC
|
1266
|
+
|
1267
|
+
Usage:
|
1268
|
+
app42 wordPressInfo
|
1269
|
+
|
1270
|
+
Show WordPress setup information
|
1271
|
+
|
1272
|
+
Options:
|
1273
|
+
[--setup SETUP] # Name of setup, you want to info
|
1274
|
+
|
1275
|
+
Example:
|
1276
|
+
$app42 wordPressInfo
|
1277
|
+
Enter Setup Name: demo
|
1278
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1279
|
+
| === demo Details === |
|
1280
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1281
|
+
| Created On | Api Server Url | Setup Name | Iaas Provider | Setup Type | Vm Type | Setup Flavour | Setup Status |
|
1282
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1283
|
+
| 2014-01-02 10:10:38.0 | http://demowordpress.iaa.app42paas.com | demo | Amazon (Northern Virginia) | WP | Shared | medium | RUNNING |
|
1284
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1285
|
+
|
1286
|
+
DESC
|
1287
|
+
end
|
1288
|
+
|
1289
|
+
def wordpresssetups
|
1290
|
+
print <<-DESC
|
1291
|
+
Usage:
|
1292
|
+
app42 wordPressSetups
|
1293
|
+
|
1294
|
+
List all the WordPress setups
|
1295
|
+
|
1296
|
+
Example:
|
1297
|
+
$app42 wordPressSetups
|
1298
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1299
|
+
| === Setups List === |
|
1300
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1301
|
+
| Created On | App Url | Setup Name | Iaas Provider | Setup Type | Vm Type | Setup Flavour | Setup Status |
|
1302
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1303
|
+
| 2014-01-02 10:10:38.0 | http://demowordpress.iaa.app42paas.com | demo | Amazon (Northern Virginia) | WP | Shared | medium | RUNNING |
|
1304
|
+
+-----------------------+----------------------------------------+------------+----------------------------+------------+---------+---------------+--------------+
|
1305
|
+
|
1306
|
+
DESC
|
1307
|
+
end
|
1308
|
+
|
1098
1309
|
def version
|
1099
1310
|
print <<-DESC
|
1100
1311
|
Usage:
|
data/lib/app42/base/message.rb
CHANGED
@@ -35,4 +35,8 @@ module Message
|
|
35
35
|
NW_CONNECTION_ERROR = "Please check your n/w connection."
|
36
36
|
TIME_OUT_ERROR = "Request Timed Out. Please try after some time."
|
37
37
|
BAD_RESPONSE_ERROR = "Received bad HTTP response from"
|
38
|
+
|
39
|
+
# BPaaS and WordPress
|
40
|
+
HIGHLY_CONF = "Sorry, You are already at highest configuration."
|
41
|
+
LOW_CONF = "Sorry, You are already at lowest configuration."
|
38
42
|
end
|
data/lib/app42/base/shell.rb
CHANGED
@@ -44,10 +44,19 @@ module App42
|
|
44
44
|
'setupbpaas',
|
45
45
|
'startbpaas',
|
46
46
|
'upgradebpaas',
|
47
|
+
'downgradebpaas',
|
47
48
|
'stopbpaas',
|
48
49
|
'deletesetup',
|
49
50
|
'setupinfo',
|
50
|
-
'setups'
|
51
|
+
'setups',
|
52
|
+
'setupwordpress',
|
53
|
+
'deletewordpress',
|
54
|
+
'upgradewordpress',
|
55
|
+
'downgradewordpress',
|
56
|
+
'startwordpress',
|
57
|
+
'stopwordpress',
|
58
|
+
'wordpresssetups',
|
59
|
+
'wordpressinfo'
|
51
60
|
]
|
52
61
|
|
53
62
|
end
|
data/lib/app42/base/util.rb
CHANGED
@@ -300,7 +300,7 @@ module App42
|
|
300
300
|
# Check whether +uploadbackup+ path is valid OR not
|
301
301
|
# predefined extension are allowed only like .sql, .zip, .dump etc
|
302
302
|
def validate_upload_backup_path path
|
303
|
-
if path.include?('.zip') || path.include?('.sql') || path.include?('.tar.gz') || path.include?('.gzip') || path.include?('.dump')
|
303
|
+
if path.include?('.zip') || path.include?('.sql') || path.include?('.tar.gz') || path.include?('.gzip') || path.include?('.dump') || path.include?('.rdb')
|
304
304
|
return path
|
305
305
|
else
|
306
306
|
message "Please provide valid file.", true, 'red'
|
@@ -405,6 +405,50 @@ module App42
|
|
405
405
|
end
|
406
406
|
end
|
407
407
|
|
408
|
+
# Get flavour for upgrade
|
409
|
+
def get_flavour_upgrade setup_name
|
410
|
+
flavour_hash = {}
|
411
|
+
flavour_type = App42::Command::Config.new.get_flavour_type_fm_server
|
412
|
+
flavour_type['flavours'].select {|each_flavour| flavour_hash["#{each_flavour['id']}"] = each_flavour['name']}
|
413
|
+
|
414
|
+
query_params = params
|
415
|
+
query_params.store('setupName', setup_name)
|
416
|
+
wordpress_info = build_get_request query_params, 'setup', "#{setup_name}"
|
417
|
+
|
418
|
+
flavour_hash.delete 'light' if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE.first
|
419
|
+
['light','medium'].each{|f| flavour_hash.delete f} if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE[1]
|
420
|
+
message "#{Message::HIGHLY_CONF}", true, 'red' if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE[2]
|
421
|
+
exit! if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE[2]
|
422
|
+
|
423
|
+
flavour = input "Select Flavour", flavour_hash.values, true
|
424
|
+
|
425
|
+
flavour_id = nil
|
426
|
+
flavour_hash.each_pair{|fl| flavour_id = fl[0] if fl[1] == flavour}
|
427
|
+
return flavour_id
|
428
|
+
end
|
429
|
+
|
430
|
+
# Get flavour for downgrade
|
431
|
+
def get_flavour_downgrade setup_name
|
432
|
+
flavour_hash = {}
|
433
|
+
flavour_type = App42::Command::Config.new.get_flavour_type_fm_server
|
434
|
+
flavour_type['flavours'].select {|each_flavour| flavour_hash["#{each_flavour['id']}"] = each_flavour['name']}
|
435
|
+
|
436
|
+
query_params = params
|
437
|
+
query_params.store('setupName', setup_name)
|
438
|
+
wordpress_info = build_get_request query_params, 'setup', "#{setup_name}"
|
439
|
+
|
440
|
+
message "#{Message::LOW_CONF}", true, 'red' if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE.first
|
441
|
+
exit! if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE.first
|
442
|
+
['heavy','medium'].each{|f| flavour_hash.delete f} if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE[1]
|
443
|
+
['heavy'].each{|f| flavour_hash.delete f} if wordpress_info['setupInfo']['setupFlavour'] == App42::FLAVOUR_TYPE[2]
|
444
|
+
|
445
|
+
flavour = input "Select Flavour", flavour_hash.values, true
|
446
|
+
|
447
|
+
flavour_id = nil
|
448
|
+
flavour_hash.each_pair{|fl| flavour_id = fl[0] if fl[1] == flavour}
|
449
|
+
return flavour_id
|
450
|
+
end
|
451
|
+
|
408
452
|
end
|
409
453
|
end
|
410
454
|
end
|
data/lib/app42/command/base.rb
CHANGED
@@ -44,6 +44,17 @@ module App42
|
|
44
44
|
setup_name = get_setup_name
|
45
45
|
available = setup_url_availability setup_name
|
46
46
|
return available if available
|
47
|
+
end
|
48
|
+
|
49
|
+
# collect wordpress name from user
|
50
|
+
# if wordpress name will not available
|
51
|
+
# User can try 3 more times with different wordpress name
|
52
|
+
def get_wordpress_name_and_check_wordpress_url_availability
|
53
|
+
@aa_retry ||= 1
|
54
|
+
exit! if (@aa_retry += 1 ) >= 5
|
55
|
+
wordpress_name = get_wordpress_name
|
56
|
+
available = wordpress_url_availability wordpress_name
|
57
|
+
return available if available
|
47
58
|
end
|
48
59
|
|
49
60
|
# get supported virtual machine type by app42paas
|
@@ -79,6 +90,14 @@ module App42
|
|
79
90
|
valid_app_name ? (return valid_app_name) : get_app_name
|
80
91
|
end
|
81
92
|
|
93
|
+
# Ask wordpress name from user and
|
94
|
+
# will wait for user response (user will enter wordpress name)
|
95
|
+
def get_wordpress_name
|
96
|
+
wordpress_name = input "Enter Wordpress Name", [], true
|
97
|
+
valid_wordpress_name = validate_app_and_service_name "Wordpress name", wordpress_name.strip
|
98
|
+
valid_wordpress_name ? (return valid_wordpress_name) : get_wordpress_name
|
99
|
+
end
|
100
|
+
|
82
101
|
# Ask setup name from user and
|
83
102
|
# will wait for user response (user will enter setup name)
|
84
103
|
def get_setup_name(prompt = Paint['Enter Setup Name', :cyan])
|
@@ -230,6 +249,25 @@ module App42
|
|
230
249
|
|
231
250
|
end
|
232
251
|
|
252
|
+
# check wordpress name availabilities
|
253
|
+
def wordpress_url_availability wordpress_name
|
254
|
+
query_params = params
|
255
|
+
query_params.store('setupName', wordpress_name)
|
256
|
+
|
257
|
+
response = with_progress(Paint["Checking WordPress Name Availability", :yellow]) do |s|
|
258
|
+
build_get_request query_params, 'wordpress', 'availability'
|
259
|
+
end
|
260
|
+
|
261
|
+
if response["success"]
|
262
|
+
print_new_line
|
263
|
+
return wordpress_name
|
264
|
+
else
|
265
|
+
message "#{response['description']}", true, 'red'
|
266
|
+
get_wordpress_name_and_check_wordpress_url_availability
|
267
|
+
end
|
268
|
+
|
269
|
+
end
|
270
|
+
|
233
271
|
# check service availabilities
|
234
272
|
def service_name_availability service_name
|
235
273
|
query_params = params
|
@@ -305,7 +343,7 @@ module App42
|
|
305
343
|
query_params = params
|
306
344
|
query_params.store('body', body)
|
307
345
|
|
308
|
-
response = with_progress(Paint["Setting up the infrastructure", :yellow]) do |s|
|
346
|
+
response = with_progress(Paint["Setting up the BPaaS infrastructure", :yellow]) do |s|
|
309
347
|
build_post_request body, query_params, 'setup', nil
|
310
348
|
end
|
311
349
|
|
@@ -331,6 +369,46 @@ module App42
|
|
331
369
|
end
|
332
370
|
end
|
333
371
|
|
372
|
+
# setup wordpress
|
373
|
+
def create_wordpress_setup wordpress_name, iaas, vm_type, flavour
|
374
|
+
begin
|
375
|
+
body = {'app42' => {"request"=> {
|
376
|
+
"setupName" => wordpress_name,
|
377
|
+
"iaas" => iaas,
|
378
|
+
"vmType" => vm_type,
|
379
|
+
"setupType" => "setupWordPress",
|
380
|
+
"flavour" => flavour
|
381
|
+
}}}.to_json
|
382
|
+
|
383
|
+
query_params = params
|
384
|
+
query_params.store('body', body)
|
385
|
+
|
386
|
+
response = with_progress(Paint["Setting up the wordpress infrastructure", :yellow]) do |s|
|
387
|
+
build_post_request body, query_params, 'wordpress', nil
|
388
|
+
end
|
389
|
+
|
390
|
+
if response["success"] == true && response["transactionId"]
|
391
|
+
transaction_success = check_transaction_status_of_setup response["transactionId"], previous_completed = 0, 'created'
|
392
|
+
end
|
393
|
+
|
394
|
+
if transaction_success
|
395
|
+
transaction_params = params
|
396
|
+
transaction_params.store('setupName', wordpress_name)
|
397
|
+
host_response = build_get_request transaction_params, "setup", "#{wordpress_name}"
|
398
|
+
end
|
399
|
+
|
400
|
+
if host_response['success']
|
401
|
+
puts Paint["Your wordpress setup has been completed successfully, For details, Login to AppHQ console.", :green]
|
402
|
+
return true
|
403
|
+
else
|
404
|
+
puts Paint["#{response['description']}", :red]
|
405
|
+
end
|
406
|
+
rescue Interrupt
|
407
|
+
puts Paint[" Command cancelled.", :red]
|
408
|
+
exit!
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
334
412
|
# upgrade setup cloud API, as a
|
335
413
|
#
|
336
414
|
# ==== Parameters
|
@@ -341,9 +419,9 @@ module App42
|
|
341
419
|
# true:: if cloud setup upgraded
|
342
420
|
# OR
|
343
421
|
# ERROR message in case failed
|
344
|
-
def
|
422
|
+
def upgrade_or_downgrade_clouldapi action, setup_name, flavour
|
345
423
|
begin
|
346
|
-
response = with_progress(Paint["Upgrading Setup", :yellow]) do |s|
|
424
|
+
response = with_progress(Paint[ action.to_s == "upgrade" ? "Upgrading Setup" : "Downgrading Setup", :yellow]) do |s|
|
347
425
|
query_params = params
|
348
426
|
body = {'app42' => {"request"=> {
|
349
427
|
"setupName" => setup_name,
|
@@ -361,6 +439,38 @@ module App42
|
|
361
439
|
rescue Exception => e
|
362
440
|
puts e
|
363
441
|
end
|
442
|
+
end
|
443
|
+
|
444
|
+
# upgrade Wordpress, as a
|
445
|
+
#
|
446
|
+
# ==== Parameters
|
447
|
+
# wordpress_name = wordpress_name provided by user
|
448
|
+
# flavour = flavour provided by user
|
449
|
+
#
|
450
|
+
# ==== return
|
451
|
+
# true:: if cloud setup upgraded
|
452
|
+
# OR
|
453
|
+
# ERROR message in case failed
|
454
|
+
def upgrade_or_downgrade_wordpress action, wordpress_name, flavour
|
455
|
+
begin
|
456
|
+
response = with_progress(Paint[ action.to_s == "upgrade" ? "Upgrading Wordpress" : "Downgrading Wordpress", :yellow]) do |s|
|
457
|
+
query_params = params
|
458
|
+
body = {'app42' => {"request"=> {
|
459
|
+
"setupName" => wordpress_name,
|
460
|
+
"flavour" => flavour
|
461
|
+
}}}.to_json
|
462
|
+
|
463
|
+
query_params.store('body', body)
|
464
|
+
build_put_request body, query_params, 'wordpress/upgrade', nil
|
465
|
+
end
|
466
|
+
transaction_success = check_transaction_status response["transactionId"], previous_completed = 0, 'deleted' if response["success"] == true && response["transactionId"]
|
467
|
+
response['success'] ? (return true) : (message "#{response['description']}", true, 'red')
|
468
|
+
rescue Interrupt
|
469
|
+
puts Paint[" Command cancelled.", :red]
|
470
|
+
exit!
|
471
|
+
rescue Exception => e
|
472
|
+
puts e
|
473
|
+
end
|
364
474
|
end
|
365
475
|
|
366
476
|
|
@@ -752,6 +862,34 @@ module App42
|
|
752
862
|
end
|
753
863
|
end
|
754
864
|
|
865
|
+
# delete wordpress setup, as a
|
866
|
+
#
|
867
|
+
# ==== Parameters
|
868
|
+
# wordpress_name = wordpress_name provided by user
|
869
|
+
#
|
870
|
+
# ==== return
|
871
|
+
# true:: if wordpress setup deleted
|
872
|
+
# OR
|
873
|
+
# ERROR message in case failed
|
874
|
+
def delete_wordpress wordpress_name
|
875
|
+
begin
|
876
|
+
response = with_progress(Paint["Deleting WordPress Setup", :yellow]) do |s|
|
877
|
+
query_params = params
|
878
|
+
query_params.store('setupName', wordpress_name)
|
879
|
+
build_delete_request query_params, "setup", "#{wordpress_name}"
|
880
|
+
end
|
881
|
+
|
882
|
+
transaction_success = check_transaction_status response["transactionId"], previous_completed = 0, 'deleted' if response["success"] == true && response["transactionId"]
|
883
|
+
|
884
|
+
response['success'] ? (return true) : (message "#{response['description']}", true, 'red')
|
885
|
+
rescue Interrupt
|
886
|
+
puts Paint[" Command cancelled.", :red]
|
887
|
+
exit!
|
888
|
+
rescue Exception => e
|
889
|
+
puts e
|
890
|
+
end
|
891
|
+
end
|
892
|
+
|
755
893
|
# All application operation will take placed like app start, stop etc.
|
756
894
|
# expect +what+ as operation and +setup_name+ as BPaaS name.
|
757
895
|
def clouldapi_operation what, setup_name
|
@@ -793,6 +931,47 @@ module App42
|
|
793
931
|
end
|
794
932
|
end
|
795
933
|
|
934
|
+
# All wordpress operation will take placed like app start, stop etc.
|
935
|
+
# expect +what+ as operation and +wordpress_name+ as wordpress name.
|
936
|
+
def wordpress_operation what, setup_name
|
937
|
+
begin
|
938
|
+
if what.to_s == 'stop'
|
939
|
+
response = with_progress(Paint[ "Stopping Wordpress Setup #{setup_name}", :yellow]) do |s|
|
940
|
+
body = {'app42' => {"request"=> {
|
941
|
+
"setupName" => setup_name
|
942
|
+
}}}.to_json
|
943
|
+
|
944
|
+
query_params = params
|
945
|
+
query_params.store('body', body)
|
946
|
+
build_put_request body, query_params, "setup", "#{what}" if what.to_s == 'stop'
|
947
|
+
end
|
948
|
+
else
|
949
|
+
response = with_progress(Paint["#{what.capitalize}ing Wordpress Setup #{setup_name}", :yellow]) do |s|
|
950
|
+
body = {'app42' => {"request"=> {
|
951
|
+
"setupName" => setup_name
|
952
|
+
}}}.to_json
|
953
|
+
|
954
|
+
query_params = params
|
955
|
+
query_params.store('body', body)
|
956
|
+
build_put_request body, query_params, "setup", "#{what}" if what.to_s == 'restart' || what.to_s == 'start'
|
957
|
+
end
|
958
|
+
end
|
959
|
+
|
960
|
+
if response["success"] == true && response["transactionId"]
|
961
|
+
if what.to_s == 'stop'
|
962
|
+
check_transaction_status response["transactionId"], previous_completed = 0, "#{what}ped"
|
963
|
+
else
|
964
|
+
check_transaction_status response["transactionId"], previous_completed = 0, "#{what}ed"
|
965
|
+
end
|
966
|
+
end
|
967
|
+
|
968
|
+
response['success'] ? (return true) : (message "#{response['description']}", true, 'red')
|
969
|
+
rescue Interrupt
|
970
|
+
puts Paint[" Command cancelled.", :red]
|
971
|
+
exit!
|
972
|
+
end
|
973
|
+
end
|
974
|
+
|
796
975
|
# reset service password and fetch service latest details
|
797
976
|
#
|
798
977
|
# ==== Parameters
|
data/lib/app42/command/client.rb
CHANGED
@@ -79,6 +79,9 @@ module App42
|
|
79
79
|
opts.on('--setup SETUP') { |setup| @options[:setup] = setup }
|
80
80
|
opts.on('-s SETUP') { |setup| @options[:setup] = setup }
|
81
81
|
|
82
|
+
opts.on('--wordpress WORDPRESS') { |setup| @options[:wordpress] = wordpress }
|
83
|
+
opts.on('-wp WORDPRESSNAME') { |setup| @options[:wordpress] = wordpress }
|
84
|
+
|
82
85
|
opts.on('-h', '--help') { puts "#{App42::Base::Help.usage(command)}\n"; exit! }
|
83
86
|
end
|
84
87
|
opts_parser.parse!(args)
|
@@ -247,7 +250,10 @@ module App42
|
|
247
250
|
set_cmd(:setup, :stop)
|
248
251
|
|
249
252
|
when 'upgradebpaas'
|
250
|
-
set_cmd(:setup, :
|
253
|
+
set_cmd(:setup, :upgrade)
|
254
|
+
|
255
|
+
when 'downgradebpaas'
|
256
|
+
set_cmd(:setup, :downgrade)
|
251
257
|
|
252
258
|
when 'deletesetup'
|
253
259
|
set_cmd(:setup, :delete_cloud_api)
|
@@ -256,7 +262,31 @@ module App42
|
|
256
262
|
set_cmd(:setup, :info)
|
257
263
|
|
258
264
|
when 'setups'
|
259
|
-
set_cmd(:setup, :setups)
|
265
|
+
set_cmd(:setup, :setups)
|
266
|
+
|
267
|
+
when 'setupwordpress'
|
268
|
+
set_cmd(:wordpress, :setup)
|
269
|
+
|
270
|
+
when 'deletewordpress'
|
271
|
+
set_cmd(:wordpress, :delete)
|
272
|
+
|
273
|
+
when 'upgradewordpress'
|
274
|
+
set_cmd(:wordpress, :upgrade)
|
275
|
+
|
276
|
+
when 'downgradewordpress'
|
277
|
+
set_cmd(:wordpress, :downgrade)
|
278
|
+
|
279
|
+
when 'startwordpress'
|
280
|
+
set_cmd(:wordpress, :start)
|
281
|
+
|
282
|
+
when 'stopwordpress'
|
283
|
+
set_cmd(:wordpress, :stop)
|
284
|
+
|
285
|
+
when 'wordpresssetups'
|
286
|
+
set_cmd(:wordpress, :wordpresssetups)
|
287
|
+
|
288
|
+
when 'wordpressinfo'
|
289
|
+
set_cmd(:wordpress, :info)
|
260
290
|
|
261
291
|
else
|
262
292
|
puts Paint["app42: Unknown command [#{action}]", :red]
|
data/lib/app42/command/setup.rb
CHANGED
@@ -39,11 +39,20 @@ module App42
|
|
39
39
|
end
|
40
40
|
|
41
41
|
# collect BPaaS setup name from user and proceed BPaaS upgrade request
|
42
|
-
def
|
42
|
+
def upgrade
|
43
43
|
@options[:setup] = get_setup_name if @options[:setup].nil?
|
44
44
|
print_new_line
|
45
|
-
flavour =
|
46
|
-
response =
|
45
|
+
flavour = get_flavour_upgrade @options[:setup]
|
46
|
+
response = upgrade_or_downgrade_clouldapi __method__, @options[:setup], flavour if is_setup_name_exist? @options[:setup]
|
47
|
+
exit! if response
|
48
|
+
end
|
49
|
+
|
50
|
+
# collect BPaaS setup name from user and proceed BPaaS downgrade request
|
51
|
+
def downgrade
|
52
|
+
@options[:setup] = get_setup_name if @options[:setup].nil?
|
53
|
+
print_new_line
|
54
|
+
flavour = get_flavour_downgrade @options[:setup]
|
55
|
+
response = upgrade_or_downgrade_clouldapi __method__, @options[:setup], flavour if is_setup_name_exist? @options[:setup]
|
47
56
|
exit! if response
|
48
57
|
end
|
49
58
|
|
@@ -58,7 +67,7 @@ module App42
|
|
58
67
|
|
59
68
|
# return flavour
|
60
69
|
def get_flavour
|
61
|
-
|
70
|
+
flavour_hash = {}
|
62
71
|
flavour_type = App42::Command::Config.new.get_flavour_type_fm_server
|
63
72
|
flavour_type['flavours'].select {|each_flavour| flavour_hash["#{each_flavour['id']}"] = each_flavour['name']}
|
64
73
|
flavour = input "Select Flavour", flavour_hash.values, true
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'app42/command/base'
|
2
|
+
require 'terminal-table'
|
3
|
+
|
4
|
+
module App42
|
5
|
+
module Command
|
6
|
+
class Wordpress < Base
|
7
|
+
|
8
|
+
# Collect all required attributes for new wordpress setup spawn
|
9
|
+
# required inputs are wordpress_name, vm_type, iaas, setup_type and flavour
|
10
|
+
def setup
|
11
|
+
wordpress_name = get_wordpress_name_and_check_wordpress_url_availability
|
12
|
+
vm_type = get_vm_types
|
13
|
+
iaas = get_iaas_providers
|
14
|
+
flavour = get_flavour
|
15
|
+
setup_cloud_api_res = App42::Command::Base.new.create_wordpress_setup wordpress_name, iaas, vm_type, flavour
|
16
|
+
exit! if setup_cloud_api_res
|
17
|
+
end
|
18
|
+
|
19
|
+
# Delete wordpress setup, return true or error code/message
|
20
|
+
def delete
|
21
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
22
|
+
response = delete_wordpress @options[:wordpress] if is_setup_name_exist? @options[:wordpress]
|
23
|
+
exit! if response
|
24
|
+
end
|
25
|
+
|
26
|
+
# collect wordpress setup name from user and proceed wordpress start request
|
27
|
+
def start
|
28
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
29
|
+
response = wordpress_operation __method__, @options[:wordpress] if is_setup_name_exist? @options[:wordpress]
|
30
|
+
exit! if response
|
31
|
+
end
|
32
|
+
|
33
|
+
# collect wordpress setup name from user and proceed wordpress stop request
|
34
|
+
def stop
|
35
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
36
|
+
response = wordpress_operation __method__, @options[:wordpress] if is_setup_name_exist? @options[:wordpress]
|
37
|
+
exit! if response
|
38
|
+
end
|
39
|
+
|
40
|
+
# collect Wordpress setup name from user and proceed Wordpress upgrade request
|
41
|
+
def upgrade
|
42
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
43
|
+
flavour = get_flavour_upgrade @options[:wordpress]
|
44
|
+
response = upgrade_or_downgrade_wordpress __method__, @options[:wordpress], flavour if is_setup_name_exist? @options[:wordpress]
|
45
|
+
exit! if response
|
46
|
+
end
|
47
|
+
|
48
|
+
# collect Wordpress setup name from user and proceed Wordpress downgrade request
|
49
|
+
def downgrade
|
50
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
51
|
+
flavour = get_flavour_downgrade @options[:wordpress]
|
52
|
+
response = upgrade_or_downgrade_wordpress __method__, @options[:wordpress], flavour if is_setup_name_exist? @options[:wordpress]
|
53
|
+
exit! if response
|
54
|
+
end
|
55
|
+
|
56
|
+
# return flavour
|
57
|
+
def get_flavour
|
58
|
+
flavour_hash = {}
|
59
|
+
flavour_type = App42::Command::Config.new.get_flavour_type_fm_server
|
60
|
+
flavour_type['flavours'].select {|each_flavour| flavour_hash["#{each_flavour['id']}"] = each_flavour['name']}
|
61
|
+
flavour = input "Select Flavour", flavour_hash.values, true
|
62
|
+
|
63
|
+
flavour_id = nil
|
64
|
+
flavour_hash.each_pair{|fl| flavour_id = fl[0] if fl[1] == flavour}
|
65
|
+
return flavour_id
|
66
|
+
end
|
67
|
+
|
68
|
+
# get details information of App42 Wordpress setup
|
69
|
+
def info
|
70
|
+
@options[:wordpress] = get_wordpress_name if @options[:wordpress].nil?
|
71
|
+
query_params = params
|
72
|
+
query_params.store('setupName', @options[:wordpress])
|
73
|
+
setup_info = build_get_request query_params, 'setup', "#{@options[:wordpress]}"
|
74
|
+
rows, rows_header_final, rows_header = [], [], nil
|
75
|
+
if setup_info && setup_info['setupInfo']
|
76
|
+
rows_header = setup_info['setupInfo'].keys
|
77
|
+
rows << setup_info['setupInfo'].values
|
78
|
+
|
79
|
+
rows_header.map { |e| rows_header_final << camel_case_to_whitespace(e) }
|
80
|
+
|
81
|
+
table = Terminal::Table.new :title => Paint["=== #{@options[:wordpress]} Details ===", :green], :headings => rows_header_final, :rows => rows
|
82
|
+
puts table
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# List all Wordpress setups
|
87
|
+
def wordpresssetups
|
88
|
+
query_params = params
|
89
|
+
setups = build_get_request query_params, 'wordpress', nil
|
90
|
+
rows, rows_header_final, rows_header = [], [], nil
|
91
|
+
if setups && setups['setups']
|
92
|
+
setups['setups'].each do |e|
|
93
|
+
rows_header = e.keys
|
94
|
+
rows << e.values
|
95
|
+
end
|
96
|
+
|
97
|
+
rows_header.map { |e| rows_header_final << camel_case_to_whitespace(e) }
|
98
|
+
|
99
|
+
table = Terminal::Table.new :title => Paint["=== Wordpress Setups List ===", :green], :headings => rows_header_final, :rows => rows
|
100
|
+
puts table
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
data/lib/app42/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app42
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ShepHertz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- lib/app42/command/setup.rb
|
214
214
|
- lib/app42/command/user.rb
|
215
215
|
- lib/app42/command/user_key.rb
|
216
|
+
- lib/app42/command/wordpress.rb
|
216
217
|
- lib/app42/version.rb
|
217
218
|
- spec/app42/base/constants_spec.rb
|
218
219
|
- spec/app42/command/app_spec.rb
|