6c6ef0e11a
This package adds a central place where all the config options of cloudbase-init can be easily maintained. Change-Id: Idfc1aea2d637a0124be17c90bcf98450769bc76f
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.warn("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
|