summaryrefslogtreecommitdiffstats
path: root/dcae-cli/dcae_cli/util
diff options
context:
space:
mode:
authorMichael Hwang <mhwang@research.att.com>2017-09-18 13:25:28 -0400
committerMichael Hwang <mhwang@research.att.com>2017-09-19 09:42:33 -0400
commit249fa95e2bea21f840f3ee5c8311a0bfe13a1b3c (patch)
treea6f48400fe4bb7ecfc314639f24e355e97872aef /dcae-cli/dcae_cli/util
parent4188380fb7b806640103f557afec344455787a34 (diff)
Make dcae-cli more tolerant aka configurable
* Seeding configuration is no longer a fatal issue * Setup database connection * Seeding profiles is no longer a fatal issue Change-Id: Ica2150a1ca52bb422e4bf6d1213c6eacfb0ba128 Issue-Id: DCAEGEN2-110 Signed-off-by: Michael Hwang <mhwang@research.att.com>
Diffstat (limited to 'dcae-cli/dcae_cli/util')
-rw-r--r--dcae-cli/dcae_cli/util/config.py32
-rw-r--r--dcae-cli/dcae_cli/util/profiles.py12
2 files changed, 33 insertions, 11 deletions
diff --git a/dcae-cli/dcae_cli/util/config.py b/dcae-cli/dcae_cli/util/config.py
index 6a53de4..d3d9f16 100644
--- a/dcae-cli/dcae_cli/util/config.py
+++ b/dcae-cli/dcae_cli/util/config.py
@@ -51,28 +51,44 @@ def _init_config_user():
click.echo("Invalid user id. Please try again.")
def _init_config_server_url():
- return click.prompt('Please enter the remote server url', type=str).strip()
+ return click.prompt("Please enter the remote server url", type=str).strip()
+
+def _init_config_db_url():
+ click.echo("Now we need to set up access to the onboarding catalog")
+ hostname = click.prompt("Please enter the onboarding catalog hostname").strip()
+ user = click.prompt("Please enter the onboarding catalog user").strip()
+ password = click.prompt("Please enter the onboarding catalog password").strip()
+ return "postgresql://{user}:{password}@{hostname}:5432/dcae_onboarding_db".format(
+ hostname=hostname, user=user, password=password)
def _init_config():
'''Returns an initial dict for populating the config'''
# Grab the remote config and merge it in
+ new_config = {}
+
try:
server_url = _init_config_server_url()
new_config = util.fetch_file_from_web(server_url, "/dcae-cli/config.json")
new_config["server_url"] = server_url
except:
- # REVIEW: Should we allow users to manually setup their config if not
- # able to pull from remote server?
- raise ConfigurationInitError("Could not download configuration from remote server")
+ # Failing to pull seed configuration from remote server is not considered
+ # a problem. Just continue and give user the option to set it up
+ # themselves.
+ if not click.confirm("Could not download initial configuration from remote server. Attempt manually setting up?"):
+ raise ConfigurationInitError("Could not setup dcae-cli configuration")
new_config["user"] = _init_config_user()
new_config["cli_version"] = _version.__version__
if "db_url" not in new_config or not new_config["db_url"]:
- # Really you should never get to this point because the remote config
- # should have a postgres db url.
- fallback = ''.join(('sqlite:///', os.path.join(get_app_dir(), 'dcae_cli.db')))
- new_config["db_url"] = fallback
+ # The seed configuration was not provided so manually set up the db
+ # connection
+ new_config["db_url"] = _init_config_db_url()
+
+ if "active_profile" not in new_config:
+ # The seed configuration was not provided which means the profiles will
+ # be the same. The profile will be hardcoded to a an empty default.
+ new_config["active_profile"] = "default"
return new_config
diff --git a/dcae-cli/dcae_cli/util/profiles.py b/dcae-cli/dcae_cli/util/profiles.py
index 83a7ca9..34580d6 100644
--- a/dcae-cli/dcae_cli/util/profiles.py
+++ b/dcae-cli/dcae_cli/util/profiles.py
@@ -27,6 +27,7 @@ import os
from collections import namedtuple
import six
+import click
from dcae_cli import util
from dcae_cli.util import get_app_dir, get_pref, write_pref
@@ -98,9 +99,14 @@ def reinit_profiles():
server_url = config.get_server_url()
new_profiles = util.fetch_file_from_web(server_url, "/dcae-cli/profiles.json")
except:
- # REVIEW: Should we allow users to manually setup their config if not
- # able to pull from remote server?
- raise ProfilesInitError("Could not download profiles from remote server")
+ # Failing to pull seed profiles from remote server is not considered
+ # a problem. Just continue and give user the option to use an empty
+ # default.
+ if click.confirm("Could not download initial profiles from remote server. Set empty default?"):
+ new_profiles = {"default": { "consul_host": "", "config_binding_service": "",
+ "cdap_broker": "", "docker_host": ""}}
+ else:
+ raise ProfilesInitError("Could not setup dcae-cli profiles")
profiles_path = get_profiles_path()