astroboa-cli 0.4.2 → 0.4.3
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.
- data/astroboa-cli.gemspec +1 -0
- data/lib/astroboa-cli/command/model.rb +2 -2
- data/lib/astroboa-cli/command/repository.rb +48 -17
- data/lib/astroboa-cli/command/server.rb +53 -14
- data/lib/astroboa-cli/util.rb +47 -63
- data/lib/astroboa-cli/version.rb +1 -1
- metadata +18 -2
data/astroboa-cli.gemspec
CHANGED
@@ -161,7 +161,7 @@ class AstroboaCLI::Command::Model < AstroboaCLI::Command::Base
|
|
161
161
|
#
|
162
162
|
# -d, --models_dir MODELS_DIR # The directory (absolute path) where your models are stored. # The generated XML Schema file will be written inside '{MODELS_DIR}/xsd/' # If directory {MODELS_DIR}/xsd does not exist, it will be created.
|
163
163
|
# -n, --namespace NAMESPACE # The namespace to be used for your new object type # (i.e. the corresponding entity tag will be namespaced with the provided namespace) # If not specified, the default namespace 'http://astroboa/schema/{NAME}' will be used (NAME is the name of your object type).
|
164
|
-
# -l, --localized_labels OBJECT_TYPE_LABELS # Provide friendly object type names for different languages # By default the 'NAME' of the object type will be used as the english label # Example: -l en:Movie,fr:Film,es:Filme
|
164
|
+
# -l, --localized_labels OBJECT_TYPE_LABELS # Provide friendly object type names for different languages # The format is "locale1:localized_string1,locale2:localized_string2" # YOU SHOULD SURROUND THE LABELS WITH SINGLE OR DOUBLE QUOTES # By default the 'NAME' of the object type will be used as the english label # Example: -l "en:Movie,fr:Film,es:Filme"
|
165
165
|
#
|
166
166
|
def create_object_type
|
167
167
|
if object_type = args.shift
|
@@ -221,7 +221,7 @@ class AstroboaCLI::Command::Model < AstroboaCLI::Command::Base
|
|
221
221
|
# -x, --max_values MAX_NUM_OF_VALUES # The maximum number of values that are permitted for this property. # Specify '1' if you want to store only one value. # Specify 'unbounded' if you want to store a list of values without an upper limit in list size. # Default is '1'.
|
222
222
|
# -n, --min_values MIN_NUM_VALUES # The minimum number of values that are permitted for this property. # Specify '0' to designate a non mandatory field. # Specify '1' to designate a mandatory field. # Default is '0'.
|
223
223
|
# -p, --parent PROPERTY_NAME # The name of an EXISTING property that will contain this property. # The parent property should always be of type 'complex'. # Properties of type 'complex' act as a grouping container for their child properties. # Imagine them as named fieldsets of a form # E.g. The 'complex' property 'address' is the parent (container) of the properties 'street', 'city', 'zipcode', 'country'. # You may arbitrarily nest 'complex' properties inside other 'complex' properties to create property trees.
|
224
|
-
# -l, --localized_labels PROPERTY_NAME_LABELS # Provide friendly names for the property in different languages # By default the 'PROPERTY_NAME' will be used as the english label # Example: -l en:First Name,fr:Prénom,es:Primer Nombre
|
224
|
+
# -l, --localized_labels PROPERTY_NAME_LABELS # Provide friendly names for the property in different languages # The format is "locale1:localized_string1,locale2:localized_string2" # YOU SHOULD SURROUND THE LABELS WITH SINGLE OR DOUBLE QUOTES # By default the 'PROPERTY_NAME' will be used as the english label # Example: -l "en:First Name,fr:Prénom,es:Primer Nombre"
|
225
225
|
# -u, --update # Use this option to specify whether you want to update an EXISTING property. # If the property with 'PROPERTY_NAME' exists and you do not use this option then NO UPDATE will be performed. # The default values for property attributes are not used during a property update. # ONLY the property attributes that are expicitly specified with the options will be updated. # E.g. if you give 'astroboa-cli model:add_property age person -t integer --update' # and the property 'age' exists then only its 'type' will be changed. # The 'minValues', 'maxValues', 'localized_labels' will keep their existing values.
|
226
226
|
#
|
227
227
|
def add_property
|
@@ -19,7 +19,7 @@ class AstroboaCLI::Command::Repository < AstroboaCLI::Command::Base
|
|
19
19
|
# A database will also be created to store repository data (except blobs).
|
20
20
|
# The database server, db user and db password that have been configured during astroboa server setup will be used.
|
21
21
|
#
|
22
|
-
# -l, --localized_labels REPO_LABELS # Provide friendly labels for different languages # By default the 'REPOSITORY_NAME' will be used as the english label # Example: -l en:Dali Paintings,fr:Dali Peintures,es:Dali Pinturas
|
22
|
+
# -l, --localized_labels REPO_LABELS # Provide friendly labels for different languages # The format is "locale1:localized_string1,locale2:localized_string2" # YOU SHOULD SURROUND THE LABELS WITH SINGLE OR DOUBLE QUOTES # By default the 'REPOSITORY_NAME' will be used as the english label # Example: -l "en:Dali Paintings,fr:Dali Peintures,es:Dali Pinturas"
|
23
23
|
# -d, --domain_name REPO_DOMAIN_NAME # Specify the fully qualified domain name and port under which all the repository resources will be exposed by the REST API # The default is 'localhost:8080' # If you specify other than the default (e.g. www.mydomain.com) you need to appropriately setup a reverse proxy in front of astroboa
|
24
24
|
# -p, --api_base_path REST_API_BASE_PATH # Specify the base_path of the REST API URLs # The default is '/resource-api' # If you provide other than the default you should appropriately setup a reverse proxy in front of astroboa
|
25
25
|
# -n, --db_name DATABASE_NAME # Specify the name of the database to create # Default is REPOSITORY_NAME (i.e. the name of the new repository)
|
@@ -33,10 +33,9 @@ class AstroboaCLI::Command::Repository < AstroboaCLI::Command::Base
|
|
33
33
|
#
|
34
34
|
# Specify i18n labels for the repository name.
|
35
35
|
# Expose the repo resources under http://www.art.com/art-api/dali_paintings
|
36
|
-
# $ astroboa-cli repository:create dali_paintings -l en:Dali Paintings,fr:Dali Peintures,es:Dali Pinturas -d www.art.com -p art-api
|
36
|
+
# $ astroboa-cli repository:create dali_paintings -l "en:Dali Paintings,fr:Dali Peintures,es:Dali Pinturas" -d www.art.com -p art-api
|
37
37
|
#
|
38
38
|
def create
|
39
|
-
|
40
39
|
if repository_name = args.shift
|
41
40
|
repository_name = repository_name.strip
|
42
41
|
else
|
@@ -65,11 +64,6 @@ class AstroboaCLI::Command::Repository < AstroboaCLI::Command::Base
|
|
65
64
|
schema_dir = File.join(repo_dir, "astroboa_schemata")
|
66
65
|
FileUtils.mkdir(schema_dir)
|
67
66
|
display %(Create dir '#{schema_dir}': OK)
|
68
|
-
|
69
|
-
# This is not required any more TO BE DELETED
|
70
|
-
#internal_repo_dir = File.join(repo_dir, "repository")
|
71
|
-
#FileUtils.mkdir(internal_repo_dir)
|
72
|
-
#display %(Create dir '#{internal_repo_dir}': OK)
|
73
67
|
|
74
68
|
# create postgres database
|
75
69
|
unless server_configuration['database'] == 'derby'
|
@@ -89,6 +83,29 @@ class AstroboaCLI::Command::Repository < AstroboaCLI::Command::Base
|
|
89
83
|
|
90
84
|
# save repo configuration into astroboa server config file
|
91
85
|
add_repo_conf_to_server_conf(server_configuration, repository_name)
|
86
|
+
|
87
|
+
# change ownership of repo dir
|
88
|
+
# In mac os x astroboa is installed and run under the ownership of the user that runs the installation command.
|
89
|
+
# So if the same user that did the install runs the repo creation command ownership is ok.
|
90
|
+
# if however repo creation is done by another user (using sudo) then we need to change the ownership of repo dir
|
91
|
+
# to the user that installed and thus owns astroboa.
|
92
|
+
if mac_os_x?
|
93
|
+
astroboa_owner_uid = File.stat(astroboa_dir).uid
|
94
|
+
astroboa_owner = Etc.getpwuid(astroboa_owner_uid).name
|
95
|
+
process_uid = Process.uid
|
96
|
+
if astroboa_owner_uid != process_uid
|
97
|
+
FileUtils.chown_R(astroboa_owner, nil, repo_dir)
|
98
|
+
display "Change (recursively) user owner of #{repo_dir} to #{astroboa_owner}: OK"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# In linux a special user 'astroboa' and group 'astroboa' is created for owning a running astroboa.
|
103
|
+
# So we need to change the ownership of the installation dir and the repositories dir to
|
104
|
+
# belong to user 'astroboa' and group 'astroboa'
|
105
|
+
if linux?
|
106
|
+
FileUtils.chown_R('astroboa', 'astroboa', repo_dir)
|
107
|
+
display "Change (recursively) user and group owner of #{repo_dir} to 'astroboa': OK"
|
108
|
+
end
|
92
109
|
|
93
110
|
rescue => e
|
94
111
|
display %(An error has occured \n The error is: '#{e.to_s}' \n The error trace is: \n #{e.backtrace.join("\n")})
|
@@ -147,19 +164,31 @@ class AstroboaCLI::Command::Repository < AstroboaCLI::Command::Base
|
|
147
164
|
FileUtils.rm_r repo_dir, :secure=>true
|
148
165
|
display "Remove #{repo_dir} : OK"
|
149
166
|
|
167
|
+
# get the name of the repo database before we remove the server configuration
|
168
|
+
database_name = server_configuration['repositories'][repository_name]['database']
|
169
|
+
|
150
170
|
# remove repo conf from astroboa server configuration
|
151
171
|
delete_repo_conf_from_server_conf(server_configuration, repository_name)
|
152
172
|
|
153
173
|
# remove the repo database, we leave it last so that everything else has been removed in the case something goes wrong
|
154
174
|
# with db removal
|
155
|
-
|
156
|
-
drop_postgresql_db(server_configuration, database_name) if server_configuration['database'] =~ /postgres/
|
157
|
-
rescue
|
158
|
-
display %(The repository has been disabled and all configuration and related directories have been removed except the database.)
|
159
|
-
display %(It is safe to manually remove the database)
|
160
|
-
end
|
175
|
+
if server_configuration['database'] =~ /postgres/
|
161
176
|
|
162
|
-
|
177
|
+
error <<-MSG.gsub(/^ {6}/, '') unless database_name
|
178
|
+
It is not possible to remove the database because the database name for this repository
|
179
|
+
was not found in the server configuration file.
|
180
|
+
However the repository has been disabled and all configuration and related directories have been removed except the database.
|
181
|
+
So it is safe to manually remove the database.
|
182
|
+
MSG
|
183
|
+
|
184
|
+
begin
|
185
|
+
drop_postgresql_db(server_configuration, database_name)
|
186
|
+
rescue => e
|
187
|
+
display %(An error has occured while deleting the database. The error is #{e.message}.)
|
188
|
+
display %(The repository has been disabled and all configuration and related directories have been removed except the database.)
|
189
|
+
display %(It is safe to manually remove the database)
|
190
|
+
end
|
191
|
+
end
|
163
192
|
end
|
164
193
|
|
165
194
|
|
@@ -333,11 +362,11 @@ private
|
|
333
362
|
if conf_exists
|
334
363
|
current_date = DateTime.now().strftime('%Y-%m-%dT%H.%M')
|
335
364
|
FileUtils.cp astroboa_repos_config, "#{astroboa_repos_config}.#{current_date}"
|
336
|
-
display %(Save previous repositories configuration file to #{astroboa_repos_config}.#{current_date} : OK)
|
365
|
+
display %(Save previous repositories configuration file to '#{astroboa_repos_config}.#{current_date}' : OK)
|
337
366
|
end
|
338
367
|
|
339
368
|
FileUtils.mv new_astroboa_repos_config, astroboa_repos_config
|
340
|
-
display %(
|
369
|
+
display %(Create new repositories configuration file '#{astroboa_repos_config}' : OK)
|
341
370
|
end
|
342
371
|
|
343
372
|
|
@@ -380,6 +409,7 @@ private
|
|
380
409
|
repo_domain_name = options[:domain_name] ||= 'localhost:8080'
|
381
410
|
api_base_path = options[:api_base_path] ||= '/resource-api'
|
382
411
|
localized_labels = options[:localized_labels] ||= "en:#{repository_name}"
|
412
|
+
database_name = options[:db_name] ||= repository_name
|
383
413
|
|
384
414
|
server_configuration['repositories'] ||= {}
|
385
415
|
repository = {}
|
@@ -388,6 +418,7 @@ private
|
|
388
418
|
repository['serverAliasURL'] = "http://#{repo_domain_name}"
|
389
419
|
repository['restfulApiBasePath'] = api_base_path
|
390
420
|
repository['localized_labels'] = localized_labels
|
421
|
+
repository['database'] = database_name
|
391
422
|
server_configuration['repositories'][repository_name] = repository
|
392
423
|
save_server_configuration(server_configuration)
|
393
424
|
display "Add repository configuration to server configuration file '#{get_server_conf_file}' : OK"
|
@@ -21,14 +21,25 @@ class AstroboaCLI::Command::Server < AstroboaCLI::Command::Base
|
|
21
21
|
# + You should have already installed java 1.6 and ruby 1.9.x
|
22
22
|
# + You are running this command from ruby version 1.9.x or later
|
23
23
|
# + You should have the unzip command. It is required for unzipping the downloaded packages
|
24
|
-
# + If you choose a database other than derby then the database should be already installed and running and you should know the db admin
|
24
|
+
# + If you choose a database other than derby then the database should be already installed and running and you should know the db admin user and password
|
25
25
|
#
|
26
26
|
# -i, --install_dir INSTALLATION_DIRECTORY # The full path to the directory into which to install astroboa # Default is '/opt/astroboa' in linux and '$HOME/astroboa' in mac os x and windows
|
27
27
|
# -r, --repo_dir REPOSITORIES_DIRECTORY # The full path of the directory that will contain the repositories configuration and data # Default is $installation_dir/repositories
|
28
28
|
# -d, --database DATABASE_VENDOR # Select which database to use for data persistense # Supported databases are: derby, postgres-8.2, postgres-8.3, postgres-8.4, postgres-9.0, postgres-9.1 # Default is derby
|
29
29
|
# -s, --database_server DATABASE_SERVER_IP # Specify the database server ip or FQDN (e.g 192.168.1.100 or postgres.localdomain.vpn) # Default is localhost # Not required if db is derby (it will be ignored)
|
30
|
-
# -u, --database_admin DB_ADMIN_USER # The user name of the database administrator # If not specified it will default to 'postgres' for postgresql db # Not required if db is derby (it will be ignored)
|
31
|
-
#
|
30
|
+
# -u, --database_admin DB_ADMIN_USER # The user name of the database administrator # If not specified it will default to 'postgres' for postgresql db # Not required if db is derby (it will be ignored)
|
31
|
+
#
|
32
|
+
# For security reasons (to avoid leaving the password in command history) there is no command option
|
33
|
+
# for specifing the password of the database administrator.
|
34
|
+
# But do not worry, the password will be asked from you during the installation process
|
35
|
+
# A db password is required only if you choose postgres as your database.
|
36
|
+
# If you require to do an unattended, non-interactive installation (e.g. run astroboa-cli from chef or puppet)
|
37
|
+
# then you can call astroboa-cli like this:
|
38
|
+
# $ echo "postgres_admin_password" | astroboa-cli server:install -d postgres-9.1
|
39
|
+
# Take care that the db password is saved for later use (repositories creation / deletion)
|
40
|
+
# in astroboa server config (~/.astoboa-conf.yml in mac and /etc/astroboa/astroboa-conf.yml in linux).
|
41
|
+
# This file is created to be readable / writable only by root in linux
|
42
|
+
# and only by the user that does the installation in mac os x.
|
32
43
|
#
|
33
44
|
def install
|
34
45
|
@torquebox_download_url = 'http://www.astroboa.org/releases/astroboa/latest/torquebox-dist-2.0.3-bin.zip'
|
@@ -70,7 +81,7 @@ class AstroboaCLI::Command::Server < AstroboaCLI::Command::Base
|
|
70
81
|
|
71
82
|
if @database.split("-").first == "postgres"
|
72
83
|
@database_admin = options[:database_admin] ||= "postgres"
|
73
|
-
@database_admin_password =
|
84
|
+
@database_admin_password = get_password("Please enter the password for postgresql admin user '#{@database_admin}': ")
|
74
85
|
else
|
75
86
|
@database_admin = "sa"
|
76
87
|
@database_admin_password = ""
|
@@ -237,14 +248,38 @@ private
|
|
237
248
|
# check if unzip command is available
|
238
249
|
check_if_unzip_is_installed
|
239
250
|
|
240
|
-
#
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
251
|
+
#if repositories will be backed by postgres
|
252
|
+
if @database.split("-").first == "postgres"
|
253
|
+
|
254
|
+
# check if 'pg' gem is installed
|
255
|
+
if gem_available?('pg')
|
256
|
+
display "Checking if 'pg' gem is installed (required for creating postgres db): OK"
|
257
|
+
else
|
258
|
+
error <<-MSG.gsub(/^ {4}/, '')
|
259
|
+
You should manually install the 'pg' gem if you want to create repositories backed by postgres
|
260
|
+
astroboa-cli gem does not automatically install 'pg' gem since in some environments (e.g. MAC OS X) this might require
|
261
|
+
to have a local postgres already installed, which in turn is too much if you do not care about postgres.
|
262
|
+
In *Ubuntu Linux* run first 'sudo apt-get install libpq-dev' and then run 'gem install pg'.
|
263
|
+
For MAC OS x read http://deveiate.org/code/pg/README-OS_X_rdoc.html to learn how to install the 'pg' gem.
|
264
|
+
MSG
|
265
|
+
end
|
266
|
+
|
267
|
+
# check if we can connect to postgres with the specified db admin account
|
268
|
+
if postgres_connectivity?(@database_server, @database_admin, @database_admin_password)
|
269
|
+
display "Checking if we can connect to postgres with the specified db admin account: OK"
|
270
|
+
else
|
271
|
+
error <<-MSG.gsub(/^ {4}/, '')
|
272
|
+
Could not connect to the postgres db server (@database_server)
|
273
|
+
with the db admin user (@database_admin) and the password you have specified.
|
274
|
+
Please check that the db admin user and the password are correct.
|
275
|
+
Also check that the postgres server ip or fqdn is correct and that postgres
|
276
|
+
has been properly setup to accept connections from this machine (check where postgres listens in postgres.conf
|
277
|
+
and also check ip/user restrictions in pg_hba.conf).
|
278
|
+
Finally check that there are no firewall rules in this machine or in the machine
|
279
|
+
that postgres runs that prevent the connection (postgres runs by default on port 5432)
|
280
|
+
MSG
|
281
|
+
end
|
282
|
+
end
|
248
283
|
end
|
249
284
|
|
250
285
|
|
@@ -584,13 +619,17 @@ SETTINGS
|
|
584
619
|
f.write(YAML.dump(server_config))
|
585
620
|
end
|
586
621
|
display "The server configuration have been added to configuration file '#{config_file}'"
|
622
|
+
|
623
|
+
# config file has sensitive info like the db admin password
|
624
|
+
# let's protect it from reading by others
|
625
|
+
FileUtils.chmod 0600, config_file
|
587
626
|
end
|
588
627
|
|
589
628
|
|
590
629
|
def create_central_identity_repository
|
591
630
|
repo_name = 'identities'
|
592
631
|
repo_config = {
|
593
|
-
|
632
|
+
localized_labels: 'en:User and App Identities,el:Ταυτότητες Χρηστών και Εφαρμογών'
|
594
633
|
}
|
595
634
|
AstroboaCLI::Command::Repository.new([repo_name], repo_config).create
|
596
635
|
display "Create Central 'Identities and Apps' Repository with name 'identities' : OK"
|
@@ -598,7 +637,7 @@ SETTINGS
|
|
598
637
|
|
599
638
|
def set_astroboa_owner
|
600
639
|
# In mac os x astroboa is installed and run under the ownership of the user that runs the installation command.
|
601
|
-
# If installation is done with sudo then we need to change the ownership of astroboa installation to the current user.
|
640
|
+
# If installation is done with sudo (i.e. when installation dir is not in users home) then we need to change the ownership of astroboa installation to the current user.
|
602
641
|
if mac_os_x? && running_with_sudo?
|
603
642
|
user = ENV['USER']
|
604
643
|
FileUtils.chown_R(user, nil, @install_dir)
|
data/lib/astroboa-cli/util.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'zip/zip'
|
5
5
|
require 'nokogiri'
|
6
|
+
require 'colorize'
|
6
7
|
|
7
8
|
module AstroboaCLI
|
8
9
|
module Util
|
@@ -463,23 +464,43 @@ module AstroboaCLI
|
|
463
464
|
end
|
464
465
|
|
465
466
|
|
466
|
-
def load_pg_library
|
467
|
+
def load_pg_library
|
467
468
|
# try to load the 'pg' library if repository is backed by postgres
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
MSG
|
469
|
+
error <<-MSG unless gem_available?('pg')
|
470
|
+
You should manually install the 'pg' gem if you want to create repositories backed by postgres
|
471
|
+
astroboa-cli gem does not automatically install 'pg' gem since in some environments (e.g. MAC OS X) this might require
|
472
|
+
to have a local postgres already installed, which in turn is too much if you do not care about postgres.
|
473
|
+
In *Ubuntu Linux* run first 'sudo apt-get install libpq-dev' and then run 'gem install pg'.
|
474
|
+
For MAC OS x read http://deveiate.org/code/pg/README-OS_X_rdoc.html to learn how to install the 'pg' gem.
|
475
|
+
MSG
|
476
476
|
|
477
|
-
|
478
|
-
|
477
|
+
require 'pg'
|
478
|
+
end
|
479
|
+
|
480
|
+
|
481
|
+
def postgres_connectivity?(database_server, database_user, database_user_password)
|
482
|
+
load_pg_library
|
483
|
+
|
484
|
+
begin
|
485
|
+
conn = PG.connect(
|
486
|
+
host: database_server,
|
487
|
+
port: '5432',
|
488
|
+
dbname: 'postgres',
|
489
|
+
user: database_user,
|
490
|
+
password: database_user_password)
|
491
|
+
conn != nil ? true : false
|
492
|
+
rescue PG::Error => e
|
493
|
+
display %(An error has occured while trying to establish a connection to postgres database)
|
494
|
+
display %(The error is: "#{e.message}")
|
495
|
+
false
|
496
|
+
ensure
|
497
|
+
conn.finish if conn && !conn.finished?
|
498
|
+
end
|
479
499
|
end
|
480
500
|
|
501
|
+
|
481
502
|
def create_postgresql_db(server_configuration, database_name)
|
482
|
-
load_pg_library
|
503
|
+
load_pg_library
|
483
504
|
|
484
505
|
database_admin, database_admin_password, database_server = get_postgresql_config(server_configuration)
|
485
506
|
|
@@ -519,7 +540,7 @@ module AstroboaCLI
|
|
519
540
|
|
520
541
|
|
521
542
|
def drop_postgresql_db(server_configuration, database_name)
|
522
|
-
load_pg_library
|
543
|
+
load_pg_library
|
523
544
|
|
524
545
|
database_admin, database_admin_password, database_server = get_postgresql_config(server_configuration)
|
525
546
|
|
@@ -533,12 +554,12 @@ module AstroboaCLI
|
|
533
554
|
|
534
555
|
# check if db exists
|
535
556
|
res = conn.exec("SELECT COUNT(*) FROM pg_database WHERE datname=$1",[database_name])
|
536
|
-
|
557
|
+
if res.entries[0]['count'] == 0
|
537
558
|
display "Cannot remove database #{database_name} because it does not exist"
|
538
559
|
raise
|
539
560
|
end
|
540
561
|
|
541
|
-
res = conn.exec("DROP DATABASE
|
562
|
+
res = conn.exec("DROP DATABASE #{database_name}")
|
542
563
|
if res.result_status == PG::Result::PGRES_COMMAND_OK
|
543
564
|
display %(Delete Postges database "#{database_name}" : OK)
|
544
565
|
else
|
@@ -578,55 +599,18 @@ module AstroboaCLI
|
|
578
599
|
end
|
579
600
|
|
580
601
|
|
581
|
-
|
582
|
-
|
583
|
-
|
602
|
+
def get_password(msg)
|
603
|
+
password = ""
|
604
|
+
print msg.blue.underline
|
584
605
|
begin
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
ActiveRecord::Base.connection.disconnect!
|
594
|
-
ActiveRecord::Base.remove_connection
|
595
|
-
|
596
|
-
display %(Create Postges database "#{database_name}" : OK)
|
597
|
-
rescue ActiveRecord::StatementInvalid => e
|
598
|
-
if e.message =~ /database "#{database_name}" already exists/
|
599
|
-
display "Database #{database_name} exists. You may run the command with --db_name repo_db_name to specify a different database name"
|
600
|
-
else
|
601
|
-
display %(An error has occured during the creation of postgres database "#{database_name}")
|
602
|
-
display %(The error trace is \n #{e.backtrace.join("\n")})
|
603
|
-
end
|
604
|
-
|
605
|
-
raise
|
606
|
-
end
|
607
|
-
end
|
608
|
-
|
609
|
-
|
610
|
-
# Not used because only works in jruby, TO BE REMOVED
|
611
|
-
def drop_postgresql_db_with_jdbc(server_configuration, database_name)
|
612
|
-
database_admin, database_admin_password, database_server = get_postgresql_config(server_configuration)
|
613
|
-
begin
|
614
|
-
ActiveRecord::Base.establish_connection(
|
615
|
-
:adapter => 'jdbcpostgresql',
|
616
|
-
:database => "postgres",
|
617
|
-
:username => database_admin,
|
618
|
-
:password => database_admin_password,
|
619
|
-
:host => database_server,
|
620
|
-
:port => 5432)
|
621
|
-
ActiveRecord::Base.connection.drop_database database_name
|
622
|
-
ActiveRecord::Base.connection.disconnect!
|
623
|
-
ActiveRecord::Base.remove_connection
|
624
|
-
|
625
|
-
display %(Delete Postges database "#{database_name}" : OK)
|
626
|
-
rescue ActiveRecord::StatementInvalid => e
|
627
|
-
display %(An error has occured during the deletion of postgres database "#{database_name}")
|
628
|
-
display %(The error trace is \n #{e.backtrace.join("\n")})
|
629
|
-
raise
|
606
|
+
system "stty -echo 2>/dev/null"
|
607
|
+
password = STDIN.gets.chomp
|
608
|
+
system "stty echo 2>/dev/null"
|
609
|
+
puts
|
610
|
+
password
|
611
|
+
rescue => e
|
612
|
+
system "stty echo"
|
613
|
+
error "An error occurred. The error is: #{e.message}"
|
630
614
|
end
|
631
615
|
end
|
632
616
|
|
data/lib/astroboa-cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: astroboa-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-11-
|
13
|
+
date: 2012-11-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: progressbar
|
@@ -76,6 +76,22 @@ dependencies:
|
|
76
76
|
- - ! '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: 1.5.5
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: colorize
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :runtime
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
79
95
|
description: astroboa-cli provides commands for installing astroboa platform, creating
|
80
96
|
repositories, taking backups, deploying applications to astroboa, etc.
|
81
97
|
email:
|