blob: 5762f22a53c382a67c45c8bc490d20993f6be94e [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import logging
import configparser
from transport.settings import UserProfileClientSettings
from transport import utils
from airavata.api.error.ttypes import TException
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# create console handler with a higher log level
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
# create formatter and add it to the handler
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# add the handler to the logger
logger.addHandler(handler)
class UserProfileClient(object):
def __init__(self, configuration_file_location=None):
self.user_profile_client_settings = UserProfileClientSettings(configuration_file_location)
self._load_settings(configuration_file_location)
self.user_profile_client_pool = utils.initialize_user_profile_client(
self.user_profile_client_settings.PROFILE_SERVICE_HOST,
self.user_profile_client_settings.PROFILE_SERVICE_PORT,
self.user_profile_client_settings.PROFILE_SERVICE_SECURE)
def get_api_version(self):
try:
return self.user_profile_client_pool.getAPIVersion()
except TException:
logger.exception("Error occurred in get_api_version, ", TException)
raise
def initialize_user_profile(self, authz_token):
"""
Create an initial UserProfile based on information in the IAM service for this user.
Parameters:
- authzToken
"""
try:
return self.user_profile_client_pool.initializeUserProfile(authz_token)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def add_user_profile(self, authz_token, user_profile):
"""
Parameters:
- authzToken
- userProfile
"""
try:
return self.user_profile_client_pool.addUserProfile(authz_token, user_profile)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def update_user_profile(self, authz_token, user_profile):
"""
Parameters:
- authzToken
- userProfile
"""
try:
return self.user_profile_client_pool.updateUserProfile(authz_token, user_profile)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def get_user_profile_by_id(self, authz_token, user_id, gateway_id):
"""
Parameters:
- authzToken
- userId
- gatewayId
"""
try:
return self.user_profile_client_pool.getUserProfileById(authz_token, user_id, gateway_id)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def delete_user_profile(self, authz_token, user_id, gateway_id):
"""
Parameters:
- authzToken
- userId
- gatewayId
"""
try:
return self.user_profile_client_pool.deleteUserProfile(authz_token, user_id, gateway_id)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def get_all_user_profiles_in_gateway(self, authz_token, gateway_id, offset, limit):
"""
Parameters:
- authzToken
- gatewayId
- offset
- limit
"""
try:
return self.user_profile_client_pool.getAllUserProfilesInGateway(authz_token, gateway_id, offset, limit)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def does_user_exist(self, authz_token, user_id, gateway_id):
"""
Parameters:
- authzToken
- userId
- gatewayId
"""
try:
return self.user_profile_client_pool.doesUserExist(authz_token, user_id, gateway_id)
except TException:
logger.exception("Error occurred in add_gateway, ", TException)
raise
def _load_settings(self, configuration_file_location):
if configuration_file_location is not None:
config = configparser.ConfigParser()
config.read(configuration_file_location)
self.user_profile_client_settings.PROFILE_SERVICE_HOST = config.get('ProfileServer', 'PROFILE_SERVICE_HOST')
self.user_profile_client_settings.PROFILE_SERVICE_PORT = config.getint('ProfileServer', 'PROFILE_SERVICE_PORT')
self.user_profile_client_settings.PROFILE_SERVICE_SECURE = config.getboolean('ProfileServer', 'PROFILE_SERVICE_SECURE')