# $SnapHashLicense:
#
# SnapLogic - Open source data services
#
# Copyright (C) 2008 - 2009, SnapLogic, Inc. All rights reserved.
#
# See http://www.snaplogic.org for more information about
# the SnapLogic project.
#
# This program is free software, distributed under the terms of
# the GNU General Public License Version 2. See the LEGAL file
# at the top of the source tree.
#
# "SnapLogic" is a trademark of SnapLogic, Inc.
#
#
# $
# $Id: ConnectionSQLServer.py 10330 2009-12-24 22:13:38Z grisha $
"""
SQL Server Connection component
"""
from snaplogic.common import version_info
from snaplogic.components.DBConnection import DBConnection
import snaplogic.cc.prop as prop
from snaplogic.snapi_base import keys
class ConnectionSQLServer(DBConnection):
"""
This class implements the SQL Server Connection component.
"""
api_version = '1.0'
component_version = '1.4'
component_description = "This component specifies SQL Server connection information."
component_label = "DB Connection - SQL Server"
component_doc_uri = "https://www.snaplogic.org/trac/wiki/Documentation/%s/ComponentRef/ConnectionSQLServer" % \
version_info.doc_uri_version
def create_resource_template(self):
self.set_property_def('db_host',
prop.SimpleProp('Host',
"string",
"Hostname of SQL Server",
None,
True))
self.set_property_def('db_user',
prop.SimpleProp('DB Username',
"string",
"Username",
None,
True))
self.set_property_def('db_password',
prop.SimpleProp('DB Password',
"string",
"Password",
{keys.CONSTRAINT_OBFUSCATE : 0}))
self.set_property_def('db_database',
prop.SimpleProp('Database',
"string",
"Database to connect to",
None,
True))
self._add_port_prop()
self._set_cats()
def _add_port_prop(self):
self.set_property_def('db_port',
prop.SimpleProp('DB Port',
"number",
"Port",
None,
True))
self.set_property_value('db_port', 1433)
def upgrade_1_0_to_1_1(self):
"""
Upgrade resource from version 1.0 to version 1.1:
1. Remove superfluous 'dsn' property (see #1653)
2. Add port property
"""
dsn = self.get_property_value("db_dsn")
self.del_property_def("db_dsn")
self._add_port_prop()
host = self.get_property_value('db_host')
if host and ':' in host:
(host, port) = host.split(':')
self.set_property_value('db_host', host)
try:
port = int(port)
except:
# Someone had a bad host, with invalid (non-numeric) port.
# In this case, leave the default port.
pass
else:
self.set_property_value('db_port', port)
def upgrade_1_1_to_1_2(self):
"""
Upgrade resource from version 1.1 to version 1.2:
password property no longer required
"""
saved_password = self.get_property_value('db_password')
self.set_property_def('db_password',
prop.SimpleProp('DB Password',
"string",
"Password",
{keys.CONSTRAINT_OBFUSCATE : 0}))
self.set_property_value('db_password', saved_password)
def upgrade_1_2_to_1_3(self):
self._set_cats()
def upgrade_1_3_to_1_4(self):
"""
No-op upgrade only to change component doc URI during the upgrade
which will be by cc_info before calling this method.
"""
pass
|