GUACAMOLE-317: Add "failover_only" column to database schema for Guacamole connections.
Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/3c553b96 Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/3c553b96 Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/3c553b96 Branch: refs/heads/master Commit: 3c553b965c1d089feb91eb192090418ac6165b24 Parents: eb087ae Author: Michael Jumper <mjum...@apache.org> Authored: Tue Jun 6 13:29:22 2017 -0700 Committer: Michael Jumper <mjum...@apache.org> Committed: Tue Jun 6 17:32:38 2017 -0700 ---------------------------------------------------------------------- .../auth/jdbc/connection/ConnectionModel.java | 33 ++++++++++++++++++++ .../schema/001-create-schema.sql | 4 +-- .../schema/upgrade/upgrade-pre-0.9.14.sql | 7 +++++ .../auth/jdbc/connection/ConnectionMapper.xml | 17 +++++++--- .../schema/001-create-schema.sql | 1 + .../schema/upgrade/upgrade-pre-0.9.14.sql | 7 +++++ .../auth/jdbc/connection/ConnectionMapper.xml | 19 +++++++---- 7 files changed, 75 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionModel.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionModel.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionModel.java index 78cc885..788daa1 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionModel.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ConnectionModel.java @@ -62,6 +62,13 @@ public class ConnectionModel extends ChildObjectModel { private Integer connectionWeight; /** + * Whether this connection should be reserved for failover. Failover-only + * connections within a balancing group are only used when all non-failover + * connections are unavailable. + */ + private boolean failoverOnly; + + /** * The identifiers of all readable sharing profiles associated with this * connection. */ @@ -197,6 +204,32 @@ public class ConnectionModel extends ChildObjectModel { } /** + * Returns whether this connection should be reserved for failover. + * Failover-only connections within a balancing group are only used when + * all non-failover connections are unavailable. + * + * @return + * true if this connection should be reserved for failover, false + * otherwise. + */ + public boolean isFailoverOnly() { + return failoverOnly; + } + + /** + * Sets whether this connection should be reserved for failover. + * Failover-only connections within a balancing group are only used when + * all non-failover connections are unavailable. + * + * @param failoverOnly + * true if this connection should be reserved for failover, false + * otherwise. + */ + public void setFailoverOnly(boolean failoverOnly) { + this.failoverOnly = failoverOnly; + } + + /** * Sets the maximum number of connections that can be established to this * connection concurrently by any one user. * http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql index 2f0aa73..515ea72 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/001-create-schema.sql @@ -65,9 +65,9 @@ CREATE TABLE `guacamole_connection` ( `max_connections` int(11), `max_connections_per_user` int(11), - -- Connection weight + -- Load-balancing behavior `connection_weight` int(11), - + `failover_only` boolean NOT NULL DEFAULT 0, PRIMARY KEY (`connection_id`), UNIQUE KEY `connection_name_parent` (`connection_name`, `parent_id`), http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.14.sql ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.14.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.14.sql index 2b14e27..14a016b 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.14.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/schema/upgrade/upgrade-pre-0.9.14.sql @@ -23,3 +23,10 @@ ALTER TABLE guacamole_connection ADD COLUMN connection_weight int(11); + +-- +-- Add failover-only flag +-- + +ALTER TABLE guacamole_connection + ADD COLUMN failover_only BOOLEAN NOT NULL DEFAULT 0; http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml index 2f778fa..03ffa43 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml @@ -38,6 +38,7 @@ <result column="proxy_encryption_method" property="proxyEncryptionMethod" jdbcType="VARCHAR" javaType="org.apache.guacamole.net.auth.GuacamoleProxyConfiguration$EncryptionMethod"/> <result column="connection_weight" property="connectionWeight" jdbcType="INTEGER"/> + <result column="failover_only" property="failoverOnly" jdbcType="BOOLEAN"/> <!-- Associated sharing profiles --> <collection property="sharingProfileIdentifiers" resultSet="sharingProfiles" ofType="java.lang.String" @@ -97,7 +98,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection WHERE connection_id IN <foreach collection="identifiers" item="identifier" @@ -129,7 +131,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection JOIN guacamole_connection_permission ON guacamole_connection_permission.connection_id = guacamole_connection.connection_id WHERE guacamole_connection.connection_id IN @@ -166,7 +169,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection WHERE <if test="parentIdentifier != null">parent_id = #{parentIdentifier,jdbcType=VARCHAR}</if> @@ -194,7 +198,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only ) VALUES ( #{object.name,jdbcType=VARCHAR}, @@ -205,7 +210,8 @@ #{object.proxyHostname,jdbcType=VARCHAR}, #{object.proxyPort,jdbcType=INTEGER}, #{object.proxyEncryptionMethod,jdbcType=VARCHAR}, - #{object.connectionWeight,jdbcType=INTEGER} + #{object.connectionWeight,jdbcType=INTEGER}, + #{object.failoverOnly,jdbcType=BOOLEAN} ) </insert> @@ -222,6 +228,7 @@ proxy_port = #{object.proxyPort,jdbcType=INTEGER}, proxy_encryption_method = #{object.proxyEncryptionMethod,jdbcType=VARCHAR}, connection_weight = #{object.connectionWeight,jdbcType=INTEGER} + failover_only = #{object.failoverOnly,jdbcType=BOOLEAN} WHERE connection_id = #{object.objectID,jdbcType=INTEGER} </update> http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql index 7b9081e..d1b5bf5 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/001-create-schema.sql @@ -108,6 +108,7 @@ CREATE TABLE guacamole_connection ( -- Connection Weight connection_weight integer, + failover_only boolean NOT NULL DEFAULT FALSE, -- Guacamole proxy (guacd) overrides proxy_port integer, http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.14.sql ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.14.sql b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.14.sql index 6388b44..20882ed 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.14.sql +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/schema/upgrade/upgrade-pre-0.9.14.sql @@ -23,3 +23,10 @@ ALTER TABLE guacamole_connection ADD COLUMN connection_weight int; + +-- +-- Add failover-only flag +-- + +ALTER TABLE guacamole_connection + ADD COLUMN failover_only BOOLEAN NOT NULL DEFAULT FALSE; http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/3c553b96/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml index f53e439..dd9265d 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/resources/org/apache/guacamole/auth/jdbc/connection/ConnectionMapper.xml @@ -38,6 +38,7 @@ <result column="proxy_encryption_method" property="proxyEncryptionMethod" jdbcType="VARCHAR" javaType="org.apache.guacamole.net.auth.GuacamoleProxyConfiguration$EncryptionMethod"/> <result column="connection_weight" property="connectionWeight" jdbcType="INTEGER"/> + <result column="failover_only" property="failoverOnly" jdbcType="BOOLEAN"/> <!-- Associated sharing profiles --> <collection property="sharingProfileIdentifiers" resultSet="sharingProfiles" ofType="java.lang.String" @@ -97,7 +98,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection WHERE connection_id IN <foreach collection="identifiers" item="identifier" @@ -129,7 +131,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection JOIN guacamole_connection_permission ON guacamole_connection_permission.connection_id = guacamole_connection.connection_id WHERE guacamole_connection.connection_id IN @@ -166,7 +169,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only FROM guacamole_connection WHERE <if test="parentIdentifier != null">parent_id = #{parentIdentifier,jdbcType=INTEGER}::integer</if> @@ -194,7 +198,8 @@ proxy_hostname, proxy_port, proxy_encryption_method, - connection_weight + connection_weight, + failover_only ) VALUES ( #{object.name,jdbcType=VARCHAR}, @@ -205,7 +210,8 @@ #{object.proxyHostname,jdbcType=VARCHAR}, #{object.proxyPort,jdbcType=INTEGER}, #{object.proxyEncryptionMethod,jdbcType=VARCHAR}::guacamole_proxy_encryption_method, - #{object.connectionWeight,jdbcType=INTEGER} + #{object.connectionWeight,jdbcType=INTEGER}, + #{object.failoverOnly,jdbcType=BOOLEAN} ) </insert> @@ -221,7 +227,8 @@ proxy_hostname = #{object.proxyHostname,jdbcType=VARCHAR}, proxy_port = #{object.proxyPort,jdbcType=INTEGER}, proxy_encryption_method = #{object.proxyEncryptionMethod,jdbcType=VARCHAR}::guacamole_proxy_encryption_method, - connection_weight = #{object.connectionWeight,jdbcType=INTEGER} + connection_weight = #{object.connectionWeight,jdbcType=INTEGER}, + failover_only = #{object.failoverOnly,jdbcType=BOOLEAN} WHERE connection_id = #{object.objectID,jdbcType=INTEGER}::integer </update>