Adds option to truncate host name to Netbios len

In some scenarios it is necessary to limit the length
of the host name to the maximum length allowed by Netbios.

The "netbios_host_name_compatibility" option can be used to
control this behaviour.
This commit is contained in:
Alessandro Pilotti 2014-02-05 23:25:27 +02:00
parent 9752b11b85
commit 889a5f8e8c

View File

@ -14,12 +14,24 @@
# License for the specific language governing permissions and limitations
# under the License.
from cloudbaseinit.openstack.common import cfg
from cloudbaseinit.openstack.common import log as logging
from cloudbaseinit.osutils import factory as osutils_factory
from cloudbaseinit.plugins import base
from cloudbaseinit.openstack.common import log as logging
opts = [
cfg.BoolOpt('netbios_host_name_compatibility', default=True,
help='Truncates the hostname to 15 characters for Netbios '
'compatibility'),
]
CONF = cfg.CONF
CONF.register_opts(opts)
LOG = logging.getLogger(__name__)
NETBIOS_HOST_NAME_MAX_LEN = 15
class SetHostNamePlugin(base.BasePlugin):
def execute(self, service, shared_data):
@ -30,7 +42,19 @@ class SetHostNamePlugin(base.BasePlugin):
osutils = osutils_factory.OSUtilsFactory().get_os_utils()
new_host_name = meta_data['hostname'].split('.', 1)[0]
metadata_host_name = meta_data['hostname'].split('.', 1)[0]
if (len(metadata_host_name) > NETBIOS_HOST_NAME_MAX_LEN and
CONF.netbios_host_name_compatibility):
new_host_name = metadata_host_name[:NETBIOS_HOST_NAME_MAX_LEN]
LOG.warn('Truncating host name for Netbios compatibility. '
'Old name: %(metadata_host_name)s, new name: '
'%(new_host_name)s' %
{'metadata_host_name': metadata_host_name,
'new_host_name': new_host_name})
else:
new_host_name = metadata_host_name
reboot_required = osutils.set_host_name(new_host_name)
return (base.PLUGIN_EXECUTION_DONE, reboot_required)