
The LOG.warn method is deprecated[1] and the LOG.warning method should be used instead. [1] https://docs.python.org/3/library/logging.html#logging.warning Change-Id: I9037d4dfc680586ec5aa14d6f57e12dbdc4a4b91
76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
# Copyright 2012 Cloudbase Solutions Srl
|
|
#
|
|
# Licensed 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.
|
|
|
|
from oslo_log import log as oslo_logging
|
|
|
|
from cloudbaseinit import conf as cloudbaseinit_conf
|
|
from cloudbaseinit.utils import classloader
|
|
|
|
|
|
CONF = cloudbaseinit_conf.CONF
|
|
LOG = oslo_logging.getLogger(__name__)
|
|
|
|
# Some plugins were moved to plugins.common, in order to
|
|
# better reflect the fact that they are not platform specific.
|
|
# Unfortunately, there are a lot of users out there with old
|
|
# config files which are using the old plugin names.
|
|
# So in order not to crash cloudbaseinit for their cases,
|
|
# we provide this explicit mapping. This will be removed
|
|
# when we'll reach 1.0 though.
|
|
|
|
OLD_PLUGINS = {
|
|
'cloudbaseinit.plugins.windows.mtu.MTUPlugin':
|
|
'cloudbaseinit.plugins.common.mtu.MTUPlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.sethostname.SetHostNamePlugin':
|
|
'cloudbaseinit.plugins.common.sethostname.SetHostNamePlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.networkconfig.NetworkConfigPlugin':
|
|
'cloudbaseinit.plugins.common.networkconfig.NetworkConfigPlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.sshpublickeys.SetUserSSHPublicKeysPlugin':
|
|
'cloudbaseinit.plugins.common.sshpublickeys.SetUserSSHPublicKeysPlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.userdata.UserDataPlugin':
|
|
'cloudbaseinit.plugins.common.userdata.UserDataPlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.setuserpassword.SetUserPasswordPlugin':
|
|
'cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin',
|
|
|
|
'cloudbaseinit.plugins.windows.localscripts.LocalScriptsPlugin':
|
|
'cloudbaseinit.plugins.common.localscripts.LocalScriptsPlugin',
|
|
}
|
|
|
|
|
|
def load_plugins(stage):
|
|
plugins = []
|
|
cl = classloader.ClassLoader()
|
|
for class_path in CONF.plugins:
|
|
if class_path in OLD_PLUGINS:
|
|
new_class_path = OLD_PLUGINS[class_path]
|
|
LOG.warning("Old plugin module %r was found. The new name is %r. "
|
|
"The old name will not be supported starting with "
|
|
"cloudbaseinit 1.0", class_path, new_class_path)
|
|
class_path = new_class_path
|
|
|
|
try:
|
|
plugin_cls = cl.load_class(class_path)
|
|
if not stage or plugin_cls.execution_stage == stage:
|
|
plugin = plugin_cls()
|
|
plugins.append(plugin)
|
|
except ImportError:
|
|
LOG.error("Could not import plugin module %r", class_path)
|
|
continue
|
|
return plugins
|