You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2013/08/23 23:53:35 UTC
git commit: AMBARI-3020. Running ambari-server setup more than once
to reconfigure postgres settings fails. (Artem Baranchuk via swagle)
Updated Branches:
refs/heads/trunk 1f90b35c3 -> d8f71bbe2
AMBARI-3020. Running ambari-server setup more than once to reconfigure postgres settings fails. (Artem Baranchuk via swagle)
Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/d8f71bbe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/d8f71bbe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/d8f71bbe
Branch: refs/heads/trunk
Commit: d8f71bbe2f7f9a6789c24107b10d2dbeef4e4217
Parents: 1f90b35
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Fri Aug 23 14:53:08 2013 -0700
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Fri Aug 23 14:53:16 2013 -0700
----------------------------------------------------------------------
.../server/configuration/Configuration.java | 6 +-
.../server/controller/ControllerModule.java | 2 +-
ambari-server/src/main/python/ambari-server.py | 58 +++--
.../resources/Ambari-DDL-Postgres-CREATE.sql | 229 +++++++++----------
.../main/resources/Ambari-DDL-Postgres-DROP.sql | 4 +-
.../Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql | 2 +-
.../Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql | 2 +-
.../ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql | 2 +-
.../dml/Ambari-DML-Postgres-UPGRADE_STACK.sql | 2 +-
.../server/configuration/ConfigurationTest.java | 8 +
.../src/test/python/TestAmbaryServer.py | 54 ++++-
11 files changed, 215 insertions(+), 154 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index f3e2b25..18bbe19 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -146,7 +146,7 @@ public class Configuration {
public static final String JDBC_UNIT_NAME = "ambari-server";
- public static final String JDBC_LOCAL_URL = "jdbc:postgresql://localhost/ambari";
+ public static final String JDBC_LOCAL_URL = "jdbc:postgresql://localhost/";
public static final String JDBC_LOCAL_DRIVER = "org.postgresql.Driver";
public static final String JDBC_IN_MEMORY_URL = "jdbc:derby:memory:myDB/ambari;create=true";
@@ -571,6 +571,10 @@ public class Configuration {
return properties.getProperty(SERVER_JDBC_URL_KEY);
}
+ public String getLocalDatabaseUrl() {
+ return JDBC_LOCAL_URL + properties.getProperty(SERVER_DB_NAME_KEY);
+ }
+
public String getDatabaseUser() {
return properties.getProperty(SERVER_JDBC_USER_NAME_KEY, SERVER_JDBC_USER_NAME_DEFAULT);
}
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index 5f325b5..7479cc9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -114,7 +114,7 @@ public class ControllerModule extends AbstractModule {
properties.put("javax.persistence.jdbc.driver", configuration.getDatabaseDriver());
break;
case LOCAL:
- properties.put("javax.persistence.jdbc.url", Configuration.JDBC_LOCAL_URL);
+ properties.put("javax.persistence.jdbc.url", configuration.getLocalDatabaseUrl());
properties.put("javax.persistence.jdbc.driver", Configuration.JDBC_LOCAL_DRIVER);
break;
}
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/python/ambari-server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari-server.py b/ambari-server/src/main/python/ambari-server.py
index 4a8af1b..8c34cfa 100755
--- a/ambari-server/src/main/python/ambari-server.py
+++ b/ambari-server/src/main/python/ambari-server.py
@@ -215,9 +215,9 @@ AMBARI_PROPERTIES_RPMSAVE_FILE="ambari.properties.rpmsave"
RESOURCES_DIR_PROPERTY="resources.dir"
SETUP_DB_CMD = ['su', '-', 'postgres',
- '--command=psql -f {0} -v username=\'"{1}"\' -v password="\'{2}\'"']
+ '--command=psql -f {0} -v username=\'"{1}"\' -v password="\'{2}\'" -v dbname="{3}"']
UPGRADE_STACK_CMD = ['su', 'postgres',
- '--command=psql -f {0} -v stack_name="\'{1}\'" -v stack_version="\'{2}\'"']
+ '--command=psql -f {0} -v stack_name="\'{1}\'" -v stack_version="\'{2}\'" -v dbname="{3}']
UPDATE_METAINFO_CMD = 'curl -X PUT "http://{0}:{1}/api/v1/stacks2" -u "{2}":"{3}"'
PG_ST_CMD = "/sbin/service postgresql status"
PG_INITDB_CMD = "/sbin/service postgresql initdb"
@@ -872,8 +872,11 @@ def setup_db(args):
scriptFile = args.init_script_file
username = args.database_username
password = args.database_password
+
+ #setup DB
command = SETUP_DB_CMD[:]
- command[-1] = command[-1].format(scriptFile, username, password)
+ command[-1] = command[-1].format(scriptFile, username, password, dbname)
+
retcode, outdata, errdata = run_os_command(command)
if not retcode == 0:
print errdata
@@ -914,7 +917,7 @@ def execute_db_script(args, file):
username = args.database_username
password = args.database_password
command = SETUP_DB_CMD[:]
- command[-1] = command[-1].format(file, username, password)
+ command[-1] = command[-1].format(file, username, password, dbname)
retcode, outdata, errdata = run_os_command(command)
if not retcode == 0:
print errdata
@@ -928,7 +931,7 @@ def check_db_consistency(args, file):
username = args.database_username
password = args.database_password
command = SETUP_DB_CMD[:]
- command[-1] = command[-1].format(file, username, password)
+ command[-1] = command[-1].format(file, username, password, dbname)
retcode, outdata, errdata = run_os_command(command)
if not retcode == 0:
print errdata
@@ -1329,6 +1332,25 @@ def configure_database_username_password(args):
else:
print_error_msg("Connection properties not set in config file.")
+# Check if jdbc user is changed
+def is_jdbc_user_changed(args):
+ properties = get_ambari_properties()
+ if properties == -1:
+ print_error_msg ("Error getting ambari properties")
+ return None
+
+ previos_user = properties[JDBC_USER_NAME_PROPERTY]
+ new_user = args.database_username
+
+ if previos_user and new_user:
+ if previos_user != new_user:
+ return True
+ else:
+ print_error_msg("Connection properties not set in config file.")
+ return None
+
+ return False
+
# Store local database connection properties
def store_local_properties(args):
properties = get_ambari_properties()
@@ -1340,15 +1362,14 @@ def store_local_properties(args):
properties.removeOldProp(JDBC_SCHEMA_PROPERTY)
properties.removeOldProp(JDBC_HOSTNAME_PROPERTY)
- properties.removeOldProp(JDBC_DATABASE_PROPERTY)
properties.removeOldProp(JDBC_RCA_DRIVER_PROPERTY)
properties.removeOldProp(JDBC_RCA_URL_PROPERTY)
properties.removeOldProp(JDBC_PORT_PROPERTY)
- properties.removeOldProp(JDBC_PORT_PROPERTY)
properties.removeOldProp(JDBC_DRIVER_PROPERTY)
properties.removeOldProp(JDBC_URL_PROPERTY)
- properties.removeOldProp(JDBC_DATABASE_PROPERTY)
+ #properties.removeOldProp(JDBC_DATABASE_PROPERTY)
properties.process_pair(PERSISTENCE_TYPE_PROPERTY, "local")
+ properties.process_pair(JDBC_DATABASE_PROPERTY, args.database_name)
properties.process_pair(JDBC_USER_NAME_PROPERTY, args.database_username)
properties.process_pair(JDBC_PASSWORD_PROPERTY,
store_password_file(args.database_password, JDBC_PASSWORD_FILENAME))
@@ -1408,7 +1429,7 @@ def parse_properties_file(args):
pass
args.database_username = properties[JDBC_USER_NAME_PROPERTY]
-
+ args.database_name = properties[JDBC_DATABASE_PROPERTY]
args.database_password_file = properties[JDBC_PASSWORD_PROPERTY]
if args.database_password_file:
if not is_alias_string(args.database_password_file):
@@ -1727,9 +1748,6 @@ def install_jdk(dest_file):
raise FatalException(retcode, err)
return out, ok
-
-
-
#
# Configures the OS settings in ambari properties.
#
@@ -1799,8 +1817,7 @@ def find_jdk():
def is_local_database(options):
if options.database == DATABASE_NAMES[0] \
and options.database_host == "localhost" \
- and options.database_port == DATABASE_PORTS[0] \
- and options.database_name == "ambari":
+ and options.database_port == DATABASE_PORTS[0]:
return True
return False
@@ -1948,6 +1965,9 @@ def setup(args):
#DB setup should be done last after doing any setup.
if is_local_database(args):
+ #check if jdbc user is changed
+ is_user_changed = is_jdbc_user_changed(args)
+
print 'Default properties detected. Using built-in database.'
store_local_properties(args)
@@ -1963,6 +1983,10 @@ def setup(args):
err = 'Running database init script was failed. Exiting.'
raise FatalException(retcode, err)
+ if is_user_changed:
+ #remove backup for pg_hba in order to reconfigure postgres
+ remove_file(PG_HBA_CONF_FILE_BACKUP)
+
print 'Configuring PostgreSQL...'
retcode = configure_postgres()
if not retcode == 0:
@@ -1988,8 +2012,6 @@ def setup(args):
raise FatalException(retcode, err)
check_jdbc_drivers(args)
-
-
#
# Resets the Ambari Server.
#
@@ -2070,7 +2092,7 @@ def reset(args):
username = args.database_username
password = args.database_password
command = SETUP_DB_CMD[:]
- command[-1] = command[-1].format(filename, username, password)
+ command[-1] = command[-1].format(filename, username, password, dbname)
retcode, outdata, errdata = run_os_command(command)
if not retcode == 0:
raise FatalException(1, errdata)
@@ -2238,7 +2260,7 @@ def upgrade_stack(args, stack_id):
file = args.upgrade_stack_script_file
stack_name, stack_version = stack_id.split(STACK_NAME_VER_SEP)
command = UPGRADE_STACK_CMD[:]
- command[-1] = command[-1].format(file, stack_name, stack_version)
+ command[-1] = command[-1].format(file, stack_name, stack_version, dbname)
retcode, outdata, errdata = run_os_command(command)
if not retcode == 0:
raise FatalException(retcode, errdata)
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
index 471e385..551827f 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
@@ -15,90 +15,74 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-CREATE DATABASE ambari;
-
-\connect ambari;
-
-ALTER USER :username WITH ENCRYPTED PASSWORD :password;
+CREATE DATABASE :dbname;
+\connect :dbname;
+ALTER ROLE :username LOGIN ENCRYPTED PASSWORD :password;
CREATE ROLE :username LOGIN ENCRYPTED PASSWORD :password;
-CREATE SCHEMA ambari
- AUTHORIZATION :username;
+GRANT ALL PRIVILEGES ON DATABASE :dbname TO :username;
-ALTER ROLE :username SET search_path to 'ambari';
+CREATE SCHEMA ambari AUTHORIZATION :username;
+ALTER SCHEMA ambari OWNER TO :username;
+ALTER ROLE :username SET search_path TO 'ambari';
+------create tables ang grant privileges to db user---------
CREATE TABLE ambari.clusters (cluster_id BIGINT NOT NULL, cluster_info VARCHAR(255) NOT NULL, cluster_name VARCHAR(100) NOT NULL UNIQUE, desired_cluster_state VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id));
-
GRANT ALL PRIVILEGES ON TABLE ambari.clusters TO :username;
CREATE TABLE ambari.clusterconfig (version_tag VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, config_data VARCHAR(32000) NOT NULL, create_timestamp BIGINT NOT NULL, PRIMARY KEY (cluster_id, type_name, version_tag));
-
GRANT ALL PRIVILEGES ON TABLE ambari.clusterconfig TO :username;
-CREATE TABLE ambari.clusterconfigmapping (cluster_id bigint NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, type_name, create_timestamp));
-
+CREATE TABLE ambari.clusterconfigmapping (cluster_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, type_name, create_timestamp));
GRANT ALL PRIVILEGES ON TABLE ambari.clusterconfigmapping TO :username;
CREATE TABLE ambari.clusterservices (service_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, PRIMARY KEY (service_name, cluster_id));
-
GRANT ALL PRIVILEGES ON TABLE ambari.clusterservices TO :username;
CREATE TABLE ambari.clusterstate (cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, current_stack_version VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id));
-
GRANT ALL PRIVILEGES ON TABLE ambari.clusterstate TO :username;
CREATE TABLE ambari.componentconfigmapping (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, config_type VARCHAR(255) NOT NULL, timestamp BIGINT NOT NULL, config_tag VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, component_name, service_name, config_type));
-
GRANT ALL PRIVILEGES ON TABLE ambari.componentconfigmapping TO :username;
CREATE TABLE ambari.hostcomponentconfigmapping (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, host_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, config_type VARCHAR(255) NOT NULL, timestamp BIGINT NOT NULL, config_tag VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, component_name, host_name, service_name, config_type));
-
GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentconfigmapping TO :username;
CREATE TABLE ambari.hcdesiredconfigmapping (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, host_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, config_type VARCHAR(255) NOT NULL, timestamp BIGINT NOT NULL, config_tag VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, component_name, host_name, service_name, config_type));
-
GRANT ALL PRIVILEGES ON TABLE ambari.hcdesiredconfigmapping TO :username;
CREATE TABLE ambari.hostcomponentdesiredstate (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, component_name, host_name, service_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentdesiredstate TO :username;
CREATE TABLE ambari.hostcomponentstate (cluster_id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, current_stack_version VARCHAR(255) NOT NULL, current_state VARCHAR(255) NOT NULL, host_name VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, component_name, host_name, service_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentstate TO :username;
CREATE TABLE ambari.hosts (host_name VARCHAR(255) NOT NULL, cpu_count INTEGER NOT NULL, ph_cpu_count INTEGER, cpu_info VARCHAR(255) NOT NULL, discovery_status VARCHAR(2000) NOT NULL, disks_info VARCHAR(10000) NOT NULL, host_attributes VARCHAR(20000) NOT NULL, ipv4 VARCHAR(255), ipv6 VARCHAR(255), public_host_name VARCHAR(255), last_registration_time BIGINT NOT NULL, os_arch VARCHAR(255) NOT NULL, os_info VARCHAR(1000) NOT NULL, os_type VARCHAR(255) NOT NULL, rack_info VARCHAR(255) NOT NULL, total_mem BIGINT NOT NULL, PRIMARY KEY (host_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.hosts TO :username;
-CREATE TABLE ambari.hoststate (agent_version VARCHAR(255) NOT NULL, available_mem BIGINT NOT NULL, current_state VARCHAR(255) NOT NULL, health_status VARCHAR(255), host_name VARCHAR(255) NOT NULL, time_in_state BIGINT NOT NULL, PRIMARY KEY (host_name));
-
+CREATE TABLE ambari.hoststate (agent_version VARCHAR(255) NOT NULL, available_mem BIGINT NOT NULL, current_state VARCHAR(255) NOT NULL, health_status VARCHAR(255), host_name VARCHAR(255) NOT NULL, time_in_state BIGINT NOT NULL, PRIMARY KEY (host_name));
GRANT ALL PRIVILEGES ON TABLE ambari.hoststate TO :username;
CREATE TABLE ambari.servicecomponentdesiredstate (component_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, PRIMARY KEY (component_name, cluster_id, service_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.servicecomponentdesiredstate TO :username;
CREATE TABLE ambari.serviceconfigmapping (cluster_id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, config_type VARCHAR(255) NOT NULL, timestamp BIGINT NOT NULL, config_tag VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, service_name, config_type));
-
GRANT ALL PRIVILEGES ON TABLE ambari.serviceconfigmapping TO :username;
CREATE TABLE ambari.servicedesiredstate (cluster_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_stack_version VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, service_name VARCHAR(255) NOT NULL, PRIMARY KEY (cluster_id, service_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.servicedesiredstate TO :username;
CREATE TABLE ambari.roles (role_name VARCHAR(255) NOT NULL, PRIMARY KEY (role_name));
-
GRANT ALL PRIVILEGES ON TABLE ambari.roles TO :username;
CREATE TABLE ambari.users (user_id INTEGER, ldap_user INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL, create_time TIMESTAMP DEFAULT NOW(), user_password VARCHAR(255), PRIMARY KEY (user_id), UNIQUE (ldap_user, user_name));
GRANT ALL PRIVILEGES ON TABLE ambari.users TO :username;
-CREATE TABLE ambari.execution_command (command bytea, task_id BIGINT NOT NULL, PRIMARY KEY (task_id));
+CREATE TABLE ambari.execution_command (command BYTEA, task_id BIGINT NOT NULL, PRIMARY KEY (task_id));
GRANT ALL PRIVILEGES ON TABLE ambari.execution_command TO :username;
-CREATE TABLE ambari.host_role_command (task_id BIGINT NOT NULL, attempt_count SMALLINT NOT NULL, event VARCHAR(32000) NOT NULL, exitcode INTEGER NOT NULL, host_name VARCHAR(255) NOT NULL, last_attempt_time BIGINT NOT NULL, request_id BIGINT NOT NULL, role VARCHAR(255), stage_id BIGINT NOT NULL, start_time BIGINT NOT NULL, status VARCHAR(255), std_error bytea, std_out bytea, role_command VARCHAR(255), PRIMARY KEY (task_id));
+CREATE TABLE ambari.host_role_command (task_id BIGINT NOT NULL, attempt_count SMALLINT NOT NULL, event VARCHAR(32000) NOT NULL, exitcode INTEGER NOT NULL, host_name VARCHAR(255) NOT NULL, last_attempt_time BIGINT NOT NULL, request_id BIGINT NOT NULL, role VARCHAR(255), stage_id BIGINT NOT NULL, start_time BIGINT NOT NULL, status VARCHAR(255), std_error BYTEA, std_out BYTEA, role_command VARCHAR(255), PRIMARY KEY (task_id));
GRANT ALL PRIVILEGES ON TABLE ambari.host_role_command TO :username;
CREATE TABLE ambari.role_success_criteria (role VARCHAR(255) NOT NULL, request_id BIGINT NOT NULL, stage_id BIGINT NOT NULL, success_factor FLOAT NOT NULL, PRIMARY KEY (role, request_id, stage_id));
@@ -113,20 +97,19 @@ GRANT ALL PRIVILEGES ON TABLE ambari.ClusterHostMapping TO :username;
CREATE TABLE ambari.user_roles (role_name VARCHAR(255) NOT NULL, user_id INTEGER NOT NULL, PRIMARY KEY (role_name, user_id));
GRANT ALL PRIVILEGES ON TABLE ambari.user_roles TO :username;
-CREATE TABLE ambari.key_value_store ("key" VARCHAR(255), "value" VARCHAR, PRIMARY KEY("key"));
+CREATE TABLE ambari.key_value_store ("key" VARCHAR(255), "value" VARCHAR, PRIMARY KEY ("key"));
GRANT ALL PRIVILEGES ON TABLE ambari.key_value_store TO :username;
-CREATE TABLE ambari.hostconfigmapping (cluster_id bigint NOT NULL, host_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, service_name VARCHAR(255), create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, host_name, type_name, create_timestamp));
-
+CREATE TABLE ambari.hostconfigmapping (cluster_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, service_name VARCHAR(255), create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', PRIMARY KEY (cluster_id, host_name, type_name, create_timestamp));
GRANT ALL PRIVILEGES ON TABLE ambari.hostconfigmapping TO :username;
-CREATE TABLE ambari.metainfo ("metainfo_key" VARCHAR(255), "metainfo_value" VARCHAR, PRIMARY KEY("metainfo_key"));
+CREATE TABLE ambari.metainfo ("metainfo_key" VARCHAR(255), "metainfo_value" VARCHAR, PRIMARY KEY ("metainfo_key"));
GRANT ALL PRIVILEGES ON TABLE ambari.metainfo TO :username;
CREATE TABLE ambari.ambari_sequences (sequence_name VARCHAR(255) PRIMARY KEY, "value" BIGINT NOT NULL);
GRANT ALL PRIVILEGES ON TABLE ambari.ambari_sequences TO :username;
-
+--------altering tables by creating foreign keys----------
ALTER TABLE ambari.clusterconfig ADD CONSTRAINT FK_clusterconfig_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters (cluster_id);
ALTER TABLE ambari.clusterservices ADD CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters (cluster_id);
ALTER TABLE ambari.clusterconfigmapping ADD CONSTRAINT FK_clusterconfigmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters (cluster_id);
@@ -158,141 +141,135 @@ ALTER TABLE ambari.user_roles ADD CONSTRAINT FK_user_roles_role_name FOREIGN KEY
ALTER TABLE ambari.hostconfigmapping ADD CONSTRAINT FK_hostconfigmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES ambari.clusters (cluster_id);
ALTER TABLE ambari.hostconfigmapping ADD CONSTRAINT FK_hostconfigmapping_host_name FOREIGN KEY (host_name) REFERENCES ambari.hosts (host_name);
+---------inserting some data-----------
BEGIN;
-
-insert into ambari.ambari_sequences(sequence_name, "value")
-select 'cluster_id_seq', 1
-union all
-select 'user_id_seq', 2
-union all
-select 'host_role_command_id_seq', 1;
-
-insert into ambari.Roles(role_name)
-select 'admin'
-union all
-select 'user';
-
-insert into ambari.Users(user_id, user_name, user_password)
-select 1,'admin','538916f8943ec225d97a9a86a2c6ec0818c1cd400e09e03b660fdaaec4af29ddbb6f2b1033b81b00';
-
-insert into ambari.user_roles(role_name, user_id)
-select 'admin',1;
-
-insert into ambari.metainfo(metainfo_key, metainfo_value)
-select 'version','${ambariVersion}';
-
+ INSERT INTO ambari.ambari_sequences (sequence_name, "value")
+ SELECT 'cluster_id_seq', 1
+ UNION ALL
+ SELECT 'user_id_seq', 2
+ UNION ALL
+ SELECT 'host_role_command_id_seq', 1;
+
+ INSERT INTO ambari.Roles (role_name)
+ SELECT 'admin'
+ UNION ALL
+ SELECT 'user';
+
+ INSERT INTO ambari.Users (user_id, user_name, user_password)
+ SELECT 1, 'admin', '538916f8943ec225d97a9a86a2c6ec0818c1cd400e09e03b660fdaaec4af29ddbb6f2b1033b81b00';
+
+ INSERT INTO ambari.user_roles (role_name, user_id)
+ SELECT 'admin', 1;
+
+ INSERT INTO ambari.metainfo (metainfo_key, metainfo_value)
+ SELECT 'version', '${ambariVersion}';
COMMIT;
+
-- ambari log4j DDL
+--------------------------------------------------
+----------initialisation of mapred db-------------
+--------------------------------------------------
CREATE DATABASE ambarirca;
-
\connect ambarirca;
+--CREATE ROLE "mapred" LOGIN ENCRYPTED PASSWORD 'mapred';
CREATE USER "mapred" WITH PASSWORD 'mapred';
-
GRANT ALL PRIVILEGES ON DATABASE ambarirca TO "mapred";
+------create tables ang grant privileges to db user---------
CREATE TABLE workflow (
- workflowId TEXT, workflowName TEXT,
- parentWorkflowId TEXT,
- workflowContext TEXT, userName TEXT,
- startTime BIGINT, lastUpdateTime BIGINT,
- numJobsTotal INTEGER, numJobsCompleted INTEGER,
- inputBytes BIGINT, outputBytes BIGINT,
- duration BIGINT, workflowTags TEXT,
+ workflowId TEXT, workflowName TEXT,
+ parentWorkflowId TEXT,
+ workflowContext TEXT, userName TEXT,
+ startTime BIGINT, lastUpdateTime BIGINT,
+ numJobsTotal INTEGER, numJobsCompleted INTEGER,
+ inputBytes BIGINT, outputBytes BIGINT,
+ duration BIGINT, workflowTags TEXT,
PRIMARY KEY (workflowId),
- FOREIGN KEY (parentWorkflowId) REFERENCES workflow(workflowId)
+ FOREIGN KEY (parentWorkflowId) REFERENCES workflow (workflowId)
);
-
GRANT ALL PRIVILEGES ON TABLE workflow TO "mapred";
CREATE TABLE application (
- appId TEXT,
- workflowId TEXT,
- appName TEXT,
+ appId TEXT,
+ workflowId TEXT,
+ appName TEXT,
workflowEntityName TEXT,
- userName TEXT, queue TEXT,
- submitTime BIGINT, launchTime BIGINT, finishTime BIGINT,
- appType TEXT,
- status TEXT,
- appInfo TEXT,
- PRIMARY KEY(appId), FOREIGN KEY(workflowId) REFERENCES workflow(workflowId)
+ userName TEXT, queue TEXT,
+ submitTime BIGINT, launchTime BIGINT, finishTime BIGINT,
+ appType TEXT,
+ status TEXT,
+ appInfo TEXT,
+ PRIMARY KEY (appId), FOREIGN KEY (workflowId) REFERENCES workflow (workflowId)
);
-
GRANT ALL PRIVILEGES ON TABLE application TO "mapred";
CREATE TABLE job (
- jobId TEXT, workflowId TEXT, jobName TEXT, workflowEntityName TEXT,
- userName TEXT, queue TEXT, acls TEXT, confPath TEXT,
- submitTime BIGINT, launchTime BIGINT, finishTime BIGINT,
- maps INTEGER, reduces INTEGER, status TEXT, priority TEXT,
- finishedMaps INTEGER, finishedReduces INTEGER,
- failedMaps INTEGER, failedReduces INTEGER,
- mapsRuntime BIGINT, reducesRuntime BIGINT,
- mapCounters TEXT, reduceCounters TEXT, jobCounters TEXT,
- inputBytes BIGINT, outputBytes BIGINT,
- PRIMARY KEY(jobId),
- FOREIGN KEY(workflowId) REFERENCES workflow(workflowId)
+ jobId TEXT, workflowId TEXT, jobName TEXT, workflowEntityName TEXT,
+ userName TEXT, queue TEXT, acls TEXT, confPath TEXT,
+ submitTime BIGINT, launchTime BIGINT, finishTime BIGINT,
+ maps INTEGER, reduces INTEGER, status TEXT, priority TEXT,
+ finishedMaps INTEGER, finishedReduces INTEGER,
+ failedMaps INTEGER, failedReduces INTEGER,
+ mapsRuntime BIGINT, reducesRuntime BIGINT,
+ mapCounters TEXT, reduceCounters TEXT, jobCounters TEXT,
+ inputBytes BIGINT, outputBytes BIGINT,
+ PRIMARY KEY (jobId),
+ FOREIGN KEY (workflowId) REFERENCES workflow (workflowId)
);
-
GRANT ALL PRIVILEGES ON TABLE job TO "mapred";
CREATE TABLE task (
- taskId TEXT, jobId TEXT, taskType TEXT, splits TEXT,
- startTime BIGINT, finishTime BIGINT, status TEXT, error TEXT, counters TEXT,
- failedAttempt TEXT,
- PRIMARY KEY(taskId),
- FOREIGN KEY(jobId) REFERENCES job(jobId)
+ taskId TEXT, jobId TEXT, taskType TEXT, splits TEXT,
+ startTime BIGINT, finishTime BIGINT, status TEXT, error TEXT, counters TEXT,
+ failedAttempt TEXT,
+ PRIMARY KEY (taskId),
+ FOREIGN KEY (jobId) REFERENCES job (jobId)
);
-
GRANT ALL PRIVILEGES ON TABLE task TO "mapred";
CREATE TABLE taskAttempt (
- taskAttemptId TEXT, taskId TEXT, jobId TEXT, taskType TEXT, taskTracker TEXT,
- startTime BIGINT, finishTime BIGINT,
- mapFinishTime BIGINT, shuffleFinishTime BIGINT, sortFinishTime BIGINT,
- locality TEXT, avataar TEXT,
- status TEXT, error TEXT, counters TEXT,
- inputBytes BIGINT, outputBytes BIGINT,
- PRIMARY KEY(taskAttemptId),
- FOREIGN KEY(jobId) REFERENCES job(jobId),
- FOREIGN KEY(taskId) REFERENCES task(taskId)
-);
-
+ taskAttemptId TEXT, taskId TEXT, jobId TEXT, taskType TEXT, taskTracker TEXT,
+ startTime BIGINT, finishTime BIGINT,
+ mapFinishTime BIGINT, shuffleFinishTime BIGINT, sortFinishTime BIGINT,
+ locality TEXT, avataar TEXT,
+ status TEXT, error TEXT, counters TEXT,
+ inputBytes BIGINT, outputBytes BIGINT,
+ PRIMARY KEY (taskAttemptId),
+ FOREIGN KEY (jobId) REFERENCES job (jobId),
+ FOREIGN KEY (taskId) REFERENCES task (taskId)
+);
GRANT ALL PRIVILEGES ON TABLE taskAttempt TO "mapred";
CREATE TABLE hdfsEvent (
- timestamp BIGINT,
- userName TEXT,
- clientIP TEXT,
- operation TEXT,
- srcPath TEXT,
- dstPath TEXT,
+ timestamp BIGINT,
+ userName TEXT,
+ clientIP TEXT,
+ operation TEXT,
+ srcPath TEXT,
+ dstPath TEXT,
permissions TEXT
);
-
GRANT ALL PRIVILEGES ON TABLE hdfsEvent TO "mapred";
CREATE TABLE mapreduceEvent (
- timestamp BIGINT,
- userName TEXT,
- clientIP TEXT,
- operation TEXT,
- target TEXT,
- result TEXT,
+ timestamp BIGINT,
+ userName TEXT,
+ clientIP TEXT,
+ operation TEXT,
+ target TEXT,
+ result TEXT,
description TEXT,
permissions TEXT
);
-
GRANT ALL PRIVILEGES ON TABLE mapreduceEvent TO "mapred";
CREATE TABLE clusterEvent (
- timestamp BIGINT,
- service TEXT, status TEXT,
- error TEXT, data TEXT ,
- host TEXT, rack TEXT
+ timestamp BIGINT,
+ service TEXT, status TEXT,
+ error TEXT, data TEXT,
+ host TEXT, rack TEXT
);
-
-GRANT ALL PRIVILEGES ON TABLE clusterEvent TO "mapred";
-
+GRANT ALL PRIVILEGES ON TABLE clusterEvent TO "mapred";
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/Ambari-DDL-Postgres-DROP.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-DROP.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-DROP.sql
index da7ed92..ffd942a 100644
--- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-DROP.sql
+++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-DROP.sql
@@ -15,5 +15,5 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-drop database ambari;
-drop database ambarirca;
+DROP DATABASE IF EXISTS :dbname;
+DROP DATABASE IF EXISTS ambarirca;
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql
index 185810a..4065f01 100644
--- a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql
+++ b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Check.sql
@@ -15,6 +15,6 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-\connect ambari;
+\connect :dbname;
COPY (SELECT count(*) FROM ambari.serviceconfigmapping WHERE service_name = 'MAPREDUCE') TO STDOUT WITH CSV;
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql
index 61677b2..6d4d4e6 100644
--- a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql
+++ b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.Fix.sql
@@ -15,7 +15,7 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-\connect ambari;
+\connect :dbname;
INSERT INTO ambari.serviceconfigmapping (cluster_id, service_name, config_type, config_tag, timestamp)
SELECT cluster_id, 'MAPREDUCE', type_name, version_tag, create_timestamp from ambari.clusterconfig
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
index 431a6a3..9d1277c 100644
--- a/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
+++ b/ambari-server/src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.3.0.sql
@@ -15,7 +15,7 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-\connect ambari;
+\connect :dbname;
-- Upgrade from 1.2.0
ALTER TABLE ambari.hosts
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/main/resources/upgrade/dml/Ambari-DML-Postgres-UPGRADE_STACK.sql
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/upgrade/dml/Ambari-DML-Postgres-UPGRADE_STACK.sql b/ambari-server/src/main/resources/upgrade/dml/Ambari-DML-Postgres-UPGRADE_STACK.sql
index 5e00413..ce131c8 100644
--- a/ambari-server/src/main/resources/upgrade/dml/Ambari-DML-Postgres-UPGRADE_STACK.sql
+++ b/ambari-server/src/main/resources/upgrade/dml/Ambari-DML-Postgres-UPGRADE_STACK.sql
@@ -15,7 +15,7 @@
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-\connect ambari;
+\connect :dbname;
PREPARE clusters (text, text) AS
UPDATE ambari.clusters
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
index e5d5bfb..a46ec25 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/configuration/ConfigurationTest.java
@@ -184,4 +184,12 @@ public class ConfigurationTest {
Assert.assertEquals("mapred", conf.getRcaDatabasePassword());
}
+ @Test
+ public void testGetLocalDatabaseUrl() {
+ Properties ambariProperties = new Properties();
+ ambariProperties.setProperty("server.jdbc.database", "ambaritestdatabase");
+ Configuration conf = new Configuration(ambariProperties);
+ Assert.assertEquals(conf.getLocalDatabaseUrl(), Configuration.JDBC_LOCAL_URL.concat("ambaritestdatabase"));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/d8f71bbe/ambari-server/src/test/python/TestAmbaryServer.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestAmbaryServer.py b/ambari-server/src/test/python/TestAmbaryServer.py
index f20f878..ef897c5 100644
--- a/ambari-server/src/test/python/TestAmbaryServer.py
+++ b/ambari-server/src/test/python/TestAmbaryServer.py
@@ -1803,6 +1803,8 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
self.assertNotEqual(None, result)
@patch("os.path.exists")
+ @patch.object(ambari_server, "remove_file")
+ @patch.object(ambari_server, "is_jdbc_user_changed")
@patch.object(ambari_server, 'verify_setup_allowed')
@patch.object(ambari_server, "get_YN_input")
@patch.object(ambari_server, "configure_os_settings")
@@ -1823,13 +1825,16 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
setup_remote_db_mock, check_selinux_mock, check_jdbc_drivers_mock, check_ambari_user_mock,
check_iptables_mock, check_postgre_up_mock, setup_db_mock, configure_postgres_mock,
download_jdk_mock, configure_os_settings_mock,get_YN_input,
- verify_setup_allowed_method, exists_mock):
+ verify_setup_allowed_method, is_jdbc_user_changed_mock, remove_file_mock, exists_mock):
args = MagicMock()
failed = False
get_YN_input.return_value = False
verify_setup_allowed_method.return_value = 0
exists_mock.return_value = False
+ remove_file_mock.return_value = 0
+
def reset_mocks():
+ is_jdbc_user_changed_mock.reset_mock()
is_root_mock.reset_mock()
store_local_properties_mock.reset_mock()
store_remote_properties_mock.reset_mock()
@@ -1842,7 +1847,6 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
check_postgre_up_mock.reset_mock()
setup_db_mock.reset_mock()
configure_postgres_mock.reset_mock()
- download_jdk_mock.reset_mock()
configure_os_settings_mock.reset_mock()
pass
@@ -1885,6 +1889,7 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
#Local case
reset_mocks()
is_local_database_mock.return_value = True
+ is_jdbc_user_changed_mock.return_value = False
try:
result = ambari_server.setup(args)
@@ -1893,6 +1898,23 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
self.assertEqual(None, result)
self.assertEquals(True, store_local_properties_mock.called)
self.assertEquals(False, store_remote_properties_mock.called)
+ self.assertEquals(True, is_jdbc_user_changed_mock.called)
+ self.assertEquals(False, remove_file_mock.called)
+
+ #if DB user name was changed
+ reset_mocks()
+ is_local_database_mock.return_value = True
+ is_jdbc_user_changed_mock.return_value = True
+
+ try:
+ result = ambari_server.setup(args)
+ except FatalException:
+ self.fail("Setup should be successful")
+ self.assertEqual(None, result)
+ self.assertEquals(True, store_local_properties_mock.called)
+ self.assertEquals(False, store_remote_properties_mock.called)
+ self.assertEquals(True, is_jdbc_user_changed_mock.called)
+ self.assertEquals(True, remove_file_mock.called)
#negative case
reset_mocks()
@@ -3892,3 +3914,31 @@ MIIFHjCCAwYCCQDpHKOBI+Lt0zANBgkqhkiG9w0BAQUFADBRMQswCQYDVQQGEwJV
testdir = os.path.dirname(__file__)
return os.path.dirname(testdir) + os.sep + "resources" + os.sep \
+ 'TestAmbaryServer.samples/' + sample
+
+
+ @patch.object(ambari_server, "get_ambari_properties")
+ def test_is_jdbc_user_changed(self, get_ambari_properties_mock):
+ previous_user = "previous_user"
+ new_user = "new_user"
+ get_ambari_properties_mock.return_value = {ambari_server.JDBC_USER_NAME_PROPERTY : previous_user}
+
+ args = MagicMock()
+
+ #check if users are different
+ args.database_username = new_user
+ result = ambari_server.is_jdbc_user_changed(args)
+ self.assertEqual(args.database_username, new_user)
+ self.assertTrue(result)
+
+ #check if users are equal
+ args.database_username = previous_user
+ result = ambari_server.is_jdbc_user_changed(args)
+ self.assertEqual(args.database_username, previous_user)
+ self.assertFalse(result)
+
+ #check if one of users is None
+ args.database_username = None
+ result = ambari_server.is_jdbc_user_changed(args)
+ self.assertEqual(None, args.database_username)
+ self.assertEqual(None, result)
+