diff --git a/distributedcloud/dcdbsync/api/app.py b/distributedcloud/dcdbsync/api/app.py index 1d9ba27b6..c993099df 100644 --- a/distributedcloud/dcdbsync/api/app.py +++ b/distributedcloud/dcdbsync/api/app.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -45,9 +45,9 @@ def setup_app(*args, **kwargs): 'errors': { 400: '/error', '__force_dict__': True - } } } + } pecan_config = pecan.configuration.conf_from_dict(config) diff --git a/distributedcloud/dcdbsync/api/controllers/root.py b/distributedcloud/dcdbsync/api/controllers/root.py index 001dd7a23..f292a1155 100644 --- a/distributedcloud/dcdbsync/api/controllers/root.py +++ b/distributedcloud/dcdbsync/api/controllers/root.py @@ -13,12 +13,11 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # - import pecan from dcdbsync.api.controllers.v1 import root as v1_root @@ -45,13 +44,13 @@ class RootController(object): { "rel": "self", "href": pecan.request.application_url + "/v1.0/" - } - ], + } + ], "id": "v1.0", "updated": "2018-11-20" - } - ] - } + } + ] + } @index.when(method='POST') @index.when(method='PUT') diff --git a/distributedcloud/dcdbsync/api/controllers/v1/identity/identity.py b/distributedcloud/dcdbsync/api/controllers/v1/identity/identity.py index 94bc5d2e7..ce17fdda0 100644 --- a/distributedcloud/dcdbsync/api/controllers/v1/identity/identity.py +++ b/distributedcloud/dcdbsync/api/controllers/v1/identity/identity.py @@ -13,14 +13,15 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019-2021 Wind River Systems, Inc. +# Copyright (c) 2019-2021, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +import json + from oslo_config import cfg from oslo_log import log as logging - import pecan from pecan import expose from pecan import request @@ -31,8 +32,6 @@ from dcdbsync.common import exceptions from dcdbsync.common.i18n import _ from dcdbsync.db.identity import api as db_api -import json - CONF = cfg.CONF LOG = logging.getLogger(__name__) @@ -97,7 +96,7 @@ class UsersController(object): # Insert the user into DB tables user_ref = db_api.user_create(context, payload) response.status = 201 - return (user_ref) + return user_ref except Exception as e: LOG.exception(e) @@ -193,7 +192,7 @@ class GroupsController(object): # Insert the group into DB tables group_ref = db_api.group_create(context, payload) response.status = 201 - return (group_ref) + return group_ref except Exception as e: LOG.exception(e) diff --git a/distributedcloud/dcdbsync/api/controllers/v1/identity/project.py b/distributedcloud/dcdbsync/api/controllers/v1/identity/project.py index 4ac5eb6f5..0a2697f68 100644 --- a/distributedcloud/dcdbsync/api/controllers/v1/identity/project.py +++ b/distributedcloud/dcdbsync/api/controllers/v1/identity/project.py @@ -13,14 +13,15 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +import json + from oslo_config import cfg from oslo_log import log as logging - import pecan from pecan import expose from pecan import request @@ -31,8 +32,6 @@ from dcdbsync.common import exceptions from dcdbsync.common.i18n import _ from dcdbsync.db.identity import api as db_api -import json - CONF = cfg.CONF LOG = logging.getLogger(__name__) diff --git a/distributedcloud/dcdbsync/api/controllers/v1/identity/role.py b/distributedcloud/dcdbsync/api/controllers/v1/identity/role.py index 39691fb54..f8eb85510 100644 --- a/distributedcloud/dcdbsync/api/controllers/v1/identity/role.py +++ b/distributedcloud/dcdbsync/api/controllers/v1/identity/role.py @@ -13,14 +13,15 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +import json + from oslo_config import cfg from oslo_log import log as logging - import pecan from pecan import expose from pecan import request @@ -31,8 +32,6 @@ from dcdbsync.common import exceptions from dcdbsync.common.i18n import _ from dcdbsync.db.identity import api as db_api -import json - CONF = cfg.CONF LOG = logging.getLogger(__name__) diff --git a/distributedcloud/dcdbsync/api/controllers/v1/identity/token_revoke_event.py b/distributedcloud/dcdbsync/api/controllers/v1/identity/token_revoke_event.py index 3bb291dcb..99ae183a3 100644 --- a/distributedcloud/dcdbsync/api/controllers/v1/identity/token_revoke_event.py +++ b/distributedcloud/dcdbsync/api/controllers/v1/identity/token_revoke_event.py @@ -13,15 +13,16 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +import base64 +import json + from oslo_config import cfg from oslo_log import log as logging - -import base64 import pecan from pecan import expose from pecan import request @@ -32,8 +33,6 @@ from dcdbsync.common import exceptions from dcdbsync.common.i18n import _ from dcdbsync.db.identity import api as db_api -import json - CONF = cfg.CONF LOG = logging.getLogger(__name__) diff --git a/distributedcloud/dcdbsync/api/controllers/v1/root.py b/distributedcloud/dcdbsync/api/controllers/v1/root.py index 351812b0a..3e9af7b9d 100644 --- a/distributedcloud/dcdbsync/api/controllers/v1/root.py +++ b/distributedcloud/dcdbsync/api/controllers/v1/root.py @@ -13,16 +13,15 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +import pecan from dcdbsync.api.controllers.v1.identity import root -import pecan - class Controller(object): diff --git a/distributedcloud/dcdbsync/api/policy.py b/distributedcloud/dcdbsync/api/policy.py index 6f3a942c9..e3c22128f 100644 --- a/distributedcloud/dcdbsync/api/policy.py +++ b/distributedcloud/dcdbsync/api/policy.py @@ -13,17 +13,18 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2022 Wind River Systems, Inc. +# Copyright (c) 2022, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # + """Policy Engine For DC.""" -from dcdbsync.api import policies as controller_policies from oslo_config import cfg from oslo_policy import policy from webob import exc +from dcdbsync.api import policies as controller_policies CONF = cfg.CONF _ENFORCER = None diff --git a/distributedcloud/dcdbsync/cmd/api.py b/distributedcloud/dcdbsync/cmd/api.py index b01738f95..e395739c2 100644 --- a/distributedcloud/dcdbsync/cmd/api.py +++ b/distributedcloud/dcdbsync/cmd/api.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -22,23 +22,23 @@ # see http://git.openstack.org/cgit/openstack/ironic/tree/ironic/cmd/api.py +import logging as std_logging import sys import eventlet eventlet.monkey_patch(os=False) -from oslo_config import cfg -from oslo_log import log as logging -from oslo_service import systemd -from oslo_service import wsgi +# pylint: disable=wrong-import-position +from oslo_config import cfg # noqa: E402 +from oslo_log import log as logging # noqa: E402 +from oslo_service import systemd # noqa: E402 +from oslo_service import wsgi # noqa: E402 -import logging as std_logging - -from dcdbsync.api import api_config -from dcdbsync.api import app - -from dcdbsync.common import config -from dcdbsync.common import messaging +from dcdbsync.api import api_config # noqa: E402 +from dcdbsync.api import app # noqa: E402 +from dcdbsync.common import config # noqa: E402 +from dcdbsync.common import messaging # noqa: E402 +# pylint: enable=wrong-import-position CONF = cfg.CONF config.register_options() diff --git a/distributedcloud/dcdbsync/common/exceptions.py b/distributedcloud/dcdbsync/common/exceptions.py index d27b4d5b6..bc3756359 100644 --- a/distributedcloud/dcdbsync/common/exceptions.py +++ b/distributedcloud/dcdbsync/common/exceptions.py @@ -14,7 +14,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019-2021 Wind River Systems, Inc. +# Copyright (c) 2019-2021, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -42,14 +42,14 @@ class DBsyncException(Exception): def __init__(self, **kwargs): try: - super(DBsyncException, self).__init__(self.message % kwargs) # pylint: disable=exception-message-attribute - self.msg = self.message % kwargs # pylint: disable=exception-message-attribute + super(DBsyncException, self).__init__(self.message % kwargs) + self.msg = self.message % kwargs except Exception: with excutils.save_and_reraise_exception() as ctxt: if not self.use_fatal_exceptions(): ctxt.reraise = False # at least get the core message out if something happened - super(DBsyncException, self).__init__(self.message) # pylint: disable=exception-message-attribute + super(DBsyncException, self).__init__(self.message) if six.PY2: def __unicode__(self): diff --git a/distributedcloud/dcdbsync/db/identity/sqlalchemy/api.py b/distributedcloud/dcdbsync/db/identity/sqlalchemy/api.py index 7033c6ad2..6c0f08211 100644 --- a/distributedcloud/dcdbsync/db/identity/sqlalchemy/api.py +++ b/distributedcloud/dcdbsync/db/identity/sqlalchemy/api.py @@ -13,7 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# Copyright (c) 2019-2022 Wind River Systems, Inc. +# Copyright (c) 2019-2022, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -26,7 +26,6 @@ import sys from oslo_db.sqlalchemy import enginefacade from oslo_log import log as logging - from sqlalchemy import Table, MetaData from sqlalchemy.sql import select @@ -73,6 +72,7 @@ class TableRegistry(object): ) return table + registry = TableRegistry() @@ -345,7 +345,8 @@ def user_update(context, user_id, payload): user_group_membership = {'user_id': new_user_id} update(conn, 'assignment', 'actor_id', user_id, assignment) update(conn, 'system_assignment', 'actor_id', user_id, assignment) - update(conn, 'user_group_membership', 'user_id', user_id, user_group_membership) + update(conn, 'user_group_membership', 'user_id', + user_id, user_group_membership) return user_get(context, new_user_id) @@ -393,12 +394,15 @@ def group_get(context, group_id): result['group'] = group[0] # user_group_membership table - user_group_memberships = query(conn, 'user_group_membership', 'group_id', group_id) + user_group_memberships = query(conn, 'user_group_membership', + 'group_id', group_id) for user_group_membership in user_group_memberships: - local_user = query(conn, 'local_user', 'user_id', user_group_membership.get('user_id')) + local_user = query(conn, 'local_user', 'user_id', + user_group_membership.get('user_id')) if not local_user: - raise exception.UserNotFound(user_id=user_group_membership.get('user_id')) + raise exception.UserNotFound(user_id=user_group_membership.get( + 'user_id')) local_user_id_list.append(local_user[0]['user_id']) result['local_user_ids'] = local_user_id_list @@ -415,7 +419,8 @@ def group_create(context, payload): insert(conn, 'group', group) for local_user_id in local_user_ids: - user_group_membership = {'user_id': local_user_id, 'group_id': group['id']} + user_group_membership = {'user_id': local_user_id, + 'group_id': group['id']} insert(conn, 'user_group_membership', user_group_membership) return group_get(context, payload['group']['id']) @@ -433,16 +438,19 @@ def group_update(context, group_id, payload): local_user_id_list = payload['local_user_ids'] user_group_memberships = query(conn, 'user_group_membership', 'group_id', group_id) - existing_user_list = [user_group_membership['user_id'] for user_group_membership - in user_group_memberships] + existing_user_list = [ + user_group_membership['user_id'] for user_group_membership in + user_group_memberships + ] existing_user_list.sort() deleted = False - if (group_id != new_group_id) or (local_user_id_list != existing_user_list): - # Foreign key constraint exists on 'group_id' of user_group_membership table - # and 'id' of group table. So delete user group membership records before - # updating group if groups IDs are different - # Alternatively, if there is a discrepency in the user group memberships, - # delete and re-create them + # Foreign key constraint exists on 'group_id' of user_group_membership + # table and 'id' of group table. So delete user group membership records + # before updating group if groups IDs are different. + # Alternatively, if there is a discrepency in the user group memberships, + # delete and re-create them + if (group_id != new_group_id) or ( + local_user_id_list != existing_user_list): delete(conn, 'user_group_membership', 'group_id', group_id) deleted = True # Update group table diff --git a/distributedcloud/dcdbsync/dbsyncclient/base.py b/distributedcloud/dcdbsync/dbsyncclient/base.py index c1afbf7d7..d2ab7dec4 100644 --- a/distributedcloud/dcdbsync/dbsyncclient/base.py +++ b/distributedcloud/dcdbsync/dbsyncclient/base.py @@ -12,14 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # -from bs4 import BeautifulSoup import json +from bs4 import BeautifulSoup + from dcdbsync.dbsyncclient import exceptions diff --git a/distributedcloud/dcdbsync/dbsyncclient/httpclient.py b/distributedcloud/dcdbsync/dbsyncclient/httpclient.py index e16cd5da1..0a0a4ca5d 100644 --- a/distributedcloud/dcdbsync/dbsyncclient/httpclient.py +++ b/distributedcloud/dcdbsync/dbsyncclient/httpclient.py @@ -14,20 +14,20 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Copyright (c) 2019 Wind River Systems, Inc. +# Copyright (c) 2019, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # import copy +import logging import os - import requests -import logging +from oslo_utils import importutils from dcdbsync.dbsyncclient import exceptions -from oslo_utils import importutils + osprofiler_web = importutils.try_import("osprofiler.web") LOG = logging.getLogger(__name__) diff --git a/distributedcloud/dcdbsync/dbsyncclient/v1/client.py b/distributedcloud/dcdbsync/dbsyncclient/v1/client.py index 88a2ace76..dce7b940c 100644 --- a/distributedcloud/dcdbsync/dbsyncclient/v1/client.py +++ b/distributedcloud/dcdbsync/dbsyncclient/v1/client.py @@ -14,13 +14,15 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Copyright (c) 2019-2021 Wind River Systems, Inc. +# Copyright (c) 2019-2021, 2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # import keystoneauth1.identity.generic as auth_plugin from keystoneauth1 import session as ks_session +from oslo_utils import importutils +import six from dcdbsync.dbsyncclient import httpclient from dcdbsync.dbsyncclient.v1.identity import identity_group_manager as igm @@ -30,12 +32,8 @@ from dcdbsync.dbsyncclient.v1.identity import role_manager as rm from dcdbsync.dbsyncclient.v1.identity \ import token_revoke_event_manager as trem -from oslo_utils import importutils osprofiler_profiler = importutils.try_import("osprofiler.profiler") -import six - - _DEFAULT_DBSYNC_AGENT_URL = "http://localhost:8219/v1.0" # default HTTP request timeout in seconds _DEFAULT_REQUEST_TIMEOUT = 15 @@ -150,7 +148,7 @@ def authenticate(dbsync_agent_url=None, username=None, project_name=project_name, project_domain_name=project_domain_name, project_domain_id=project_domain_id, - ) + ) elif api_key and (username or user_id): auth = auth_plugin.Password(