in tools/doms-data-tools/update_values_type.py [0:0]
def main():
domsconfig = configparser.ConfigParser()
domsconfig.read(DomsInitializer._get_config_files('domsconfig.ini'))
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--cassandra-username',
dest='username', help='The username used to connect to Cassandra.',
required=True, metavar='USERNAME')
parser.add_argument('-p', '--cassandra-password',
dest='password', help='The password used to connect to Cassandra.',
required=True, metavar='PASSWORD')
parser.add_argument('--cassandra', help='The hostname(s) or IP(s) of the Cassandra server(s).',
required=False,
default=domsconfig.get("cassandra", "host"),
dest='hosts',
nargs='+',
metavar=('localhost', '127.0.0.101'))
parser.add_argument('--cassandraPort',
help='The port used to connect to Cassandra.',
dest='port',
required=False,
default=domsconfig.get("cassandra", "port"))
args = parser.parse_args()
cassHost = args.hosts
cassPort = args.port
cassUsername = args.username
cassPassword = args.password
cassKeyspace = domsconfig.get("cassandra", "keyspace")
cassDatacenter = domsconfig.get("cassandra", "local_datacenter")
cassVersion = int(domsconfig.get("cassandra", "protocol_version"))
cassPolicy = domsconfig.get("cassandra", "dc_policy")
log.info("Cassandra Host(s): %s" % (cassHost))
log.info("Cassandra Keyspace: %s" % (cassKeyspace))
log.info("Cassandra Datacenter: %s" % (cassDatacenter))
log.info("Cassandra Protocol Version: %s" % (cassVersion))
log.info("Cassandra DC Policy: %s" % (cassPolicy))
log.info("Cassandra Auth: %s : %s" % (cassUsername, cassPassword))
if cassPolicy == 'DCAwareRoundRobinPolicy':
dc_policy = DCAwareRoundRobinPolicy(cassDatacenter)
token_policy = TokenAwarePolicy(dc_policy)
elif cassPolicy == 'WhiteListRoundRobinPolicy':
token_policy = WhiteListRoundRobinPolicy([cassHost])
else:
raise ValueError(cassPolicy)
if cassUsername and cassPassword:
auth_provider = PlainTextAuthProvider(username=cassUsername, password=cassPassword)
else:
auth_provider = None
try:
with Cluster([host for host in cassHost.split(',')],
port=int(cassPort),
execution_profiles={
EXEC_PROFILE_DEFAULT: ExecutionProfile(load_balancing_policy=token_policy)
},
protocol_version=cassVersion,
auth_provider=auth_provider) as cluster:
session = cluster.connect(cassKeyspace)
cql = """
alter table doms_data
add measurement_values_json text;
"""
log.info('Creating measurement_values_json column')
try:
session.execute(cql)
except:
log.warning('measurement_values_json column creation failed; perhaps it already exists')
cql = """
alter table doms_data
add file_url text;
"""
log.info('Creating file_url column')
try:
session.execute(cql)
except:
log.warning('file_url column creation failed; perhaps it already exists')
for i in range(5):
if not move_data(session):
if i < 4:
log.warning('Some move attempts failed; retrying')
else:
log.critical('Some move attempts failed; max retries exceeded')
exit(1)
else:
break
cql = """
alter table doms_data
drop measurement_values;
"""
log.info('Dropping old measurement_values column')
session.execute(cql)
except NoHostAvailable as e:
log.error("Unable to connect to Cassandra, Nexus will not be able to access local data ", e)
except Exception as e:
log.critical('An uncaught exception occurred')
log.exception(e)
exit(2)