Clean imports in code

This patch set modifies lines which are importing objects
instead of modules. As per openstack import guide lines, user should
import modules in a file not objects.

http://docs.openstack.org/developer/hacking/#imports

Change-Id: I62e9a6d895685c07ec87a5cc910c5036e05b4906
This commit is contained in:
Cao Xuan Hoang 2016-09-06 14:10:03 +07:00
parent 1da4d4f45c
commit 22a7eaaf2d
13 changed files with 152 additions and 136 deletions

View File

@ -19,8 +19,7 @@ import os
import netaddr import netaddr
import netifaces import netifaces
from fuelmenu.common.errors import BadIPException from fuelmenu.common import errors
from fuelmenu.common.errors import NetworkException
from fuelmenu.common.utils import execute from fuelmenu.common.utils import execute
log = logging.getLogger('fuelmenu.common.network') log = logging.getLogger('fuelmenu.common.network')
@ -111,8 +110,8 @@ def list_host_ip_addresses(interfaces="all"):
# Skip if interface has no IP # Skip if interface has no IP
continue continue
except ValueError: except ValueError:
raise NetworkException("Invalid specified interface: " raise errors.NetworkException("Invalid specified interface: "
"{0}".format(iface)) "{0}".format(iface))
return ips return ips
@ -121,7 +120,7 @@ def range(startip, endip):
try: try:
return list(netaddr.iter_iprange(startip, endip)) return list(netaddr.iter_iprange(startip, endip))
except netaddr.AddrFormatError: except netaddr.AddrFormatError:
raise BadIPException("Invalid IP address(es) specified.") raise errors.BadIPException("Invalid IP address(es) specified.")
def intersects(range1, range2): def intersects(range1, range2):
@ -186,13 +185,14 @@ def search_external_dhcp(iface, timeout):
log.debug('Unable to parse JSON.') log.debug('Unable to parse JSON.')
return [] return []
except OSError: except OSError:
raise NetworkException('Unable to check DHCP.') raise errors.NetworkException('Unable to check DHCP.')
def upIface(iface): def upIface(iface):
code, _, _ = execute(["ifconfig", iface, "up"]) code, _, _ = execute(["ifconfig", iface, "up"])
if code != 0: if code != 0:
raise NetworkException("Failed to up interface {0}".format(iface)) raise errors.NetworkException(
"Failed to up interface {0}".format(iface))
def get_iface_info(iface, address_family=netifaces.AF_INET): def get_iface_info(iface, address_family=netifaces.AF_INET):

View File

@ -32,7 +32,7 @@ from fuelmenu import modules
from fuelmenu import settings as settings_module from fuelmenu import settings as settings_module
from optparse import OptionParser import optparse
import os import os
import signal import signal
import sys import sys
@ -356,7 +356,7 @@ def main(*args, **kwargs):
default_iface = nic default_iface = nic
break break
parser = OptionParser() parser = optparse.OptionParser()
parser.add_option("-s", "--save-only", dest="save_only", parser.add_option("-s", "--save-only", dest="save_only",
action="store_true", action="store_true",
help="Save default values and exit.") help="Save default values and exit.")

View File

@ -23,9 +23,7 @@ import urwid
import urwid.raw_display import urwid.raw_display
import urwid.web_display import urwid.web_display
from fuelmenu.common.modulehelper import BLANK_KEY from fuelmenu.common import modulehelper
from fuelmenu.common.modulehelper import ModuleHelper
from fuelmenu.common.modulehelper import WidgetType
from fuelmenu.common import utils from fuelmenu.common import utils
log = logging.getLogger('fuelmenu.mirrors') log = logging.getLogger('fuelmenu.mirrors')
@ -52,15 +50,15 @@ class BootstrapImage(urwid.WidgetWrap):
self.header_content = ["Bootstrap image configuration"] self.header_content = ["Bootstrap image configuration"]
self._common_fields = ( self._common_fields = (
BLANK_KEY, modulehelper.BLANK_KEY,
BOOTSTRAP_SKIP_BUILD_KEY, BOOTSTRAP_SKIP_BUILD_KEY,
) )
self._repo_related_fields = ( self._repo_related_fields = (
BLANK_KEY, modulehelper.BLANK_KEY,
BOOTSTRAP_HTTP_PROXY_KEY, BOOTSTRAP_HTTP_PROXY_KEY,
BOOTSTRAP_HTTPS_PROXY_KEY, BOOTSTRAP_HTTPS_PROXY_KEY,
BLANK_KEY, modulehelper.BLANK_KEY,
BOOTSTRAP_REPOS_KEY, BOOTSTRAP_REPOS_KEY,
ADD_REPO_BUTTON_KEY ADD_REPO_BUTTON_KEY
) )
@ -71,18 +69,18 @@ class BootstrapImage(urwid.WidgetWrap):
self.repo_value_scheme = { self.repo_value_scheme = {
"name": { "name": {
"type": WidgetType.TEXT_FIELD, "type": modulehelper.WidgetType.TEXT_FIELD,
"label": "Name", "label": "Name",
"tooltip": "Repository name" "tooltip": "Repository name"
}, },
"uri": { "uri": {
"type": WidgetType.TEXT_FIELD, "type": modulehelper.WidgetType.TEXT_FIELD,
"label": "Deb repo", "label": "Deb repo",
"tooltip": "Repo in format: " "tooltip": "Repo in format: "
"deb uri distribution [component1] [...]" "deb uri distribution [component1] [...]"
}, },
"priority": { "priority": {
"type": WidgetType.TEXT_FIELD, "type": modulehelper.WidgetType.TEXT_FIELD,
"label": "Priority", "label": "Priority",
"tooltip": "Repository priority" "tooltip": "Repository priority"
} }
@ -92,7 +90,7 @@ class BootstrapImage(urwid.WidgetWrap):
BOOTSTRAP_SKIP_BUILD_KEY: { BOOTSTRAP_SKIP_BUILD_KEY: {
"label": "Skip building bootstrap image", "label": "Skip building bootstrap image",
"tooltip": "", "tooltip": "",
"type": WidgetType.CHECKBOX, "type": modulehelper.WidgetType.CHECKBOX,
"callback": self.skip_build_callback}, "callback": self.skip_build_callback},
BOOTSTRAP_HTTP_PROXY_KEY: { BOOTSTRAP_HTTP_PROXY_KEY: {
"label": "HTTP proxy", "label": "HTTP proxy",
@ -104,13 +102,13 @@ class BootstrapImage(urwid.WidgetWrap):
"value": ""}, "value": ""},
BOOTSTRAP_REPOS_KEY: { BOOTSTRAP_REPOS_KEY: {
"label": "List of repositories", "label": "List of repositories",
"type": WidgetType.LIST, "type": modulehelper.WidgetType.LIST,
"value_scheme": self.repo_value_scheme, "value_scheme": self.repo_value_scheme,
"value": self.repo_list "value": self.repo_list
}, },
ADD_REPO_BUTTON_KEY: { ADD_REPO_BUTTON_KEY: {
"label": "Add repository", "label": "Add repository",
"type": WidgetType.BUTTON, "type": modulehelper.WidgetType.BUTTON,
"callback": self.add_repo "callback": self.add_repo
} }
} }
@ -121,7 +119,8 @@ class BootstrapImage(urwid.WidgetWrap):
def responses(self): def responses(self):
ret = dict() ret = dict()
for index, fieldname in enumerate(self.fields): for index, fieldname in enumerate(self.fields):
if fieldname == BLANK_KEY or 'button' in fieldname.lower(): if (fieldname == modulehelper.BLANK_KEY or
'button' in fieldname.lower()):
pass pass
elif fieldname == BOOTSTRAP_REPOS_KEY: elif fieldname == BOOTSTRAP_REPOS_KEY:
ret[fieldname] = \ ret[fieldname] = \
@ -147,7 +146,7 @@ class BootstrapImage(urwid.WidgetWrap):
if errors: if errors:
log.error("Errors: %s", errors) log.error("Errors: %s", errors)
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
else: else:
self.parent.footer.set_text("No errors found.") self.parent.footer.set_text("No errors found.")
@ -202,7 +201,7 @@ class BootstrapImage(urwid.WidgetWrap):
return True return True
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def _get_repo_list_response(self, list_box): def _get_repo_list_response(self, list_box):
# Here we assumed that we get object of WalkerStoredListBox # Here we assumed that we get object of WalkerStoredListBox
@ -315,7 +314,8 @@ class BootstrapImage(urwid.WidgetWrap):
def _update_defaults(self, defaults, new_settings): def _update_defaults(self, defaults, new_settings):
for setting in defaults: for setting in defaults:
try: try:
new_value = ModuleHelper.get_setting(new_settings, setting) new_value = modulehelper.ModuleHelper.get_setting(
new_settings, setting)
if BOOTSTRAP_REPOS_KEY == setting: if BOOTSTRAP_REPOS_KEY == setting:
defaults[setting]["value"] = \ defaults[setting]["value"] = \
self._parse_config_repo_list(new_value) self._parse_config_repo_list(new_value)
@ -329,13 +329,14 @@ class BootstrapImage(urwid.WidgetWrap):
def load(self): def load(self):
settings = self.parent.settings settings = self.parent.settings
ModuleHelper.load_to_defaults(settings, self.defaults) modulehelper.ModuleHelper.load_to_defaults(settings, self.defaults)
self._update_defaults(self.defaults, settings) self._update_defaults(self.defaults, settings)
self._select_fields_to_show(self.defaults) self._select_fields_to_show(self.defaults)
def save(self, responses): def save(self, responses):
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
self.parent.settings.merge(newsettings) self.parent.settings.merge(newsettings)
# Update self.defaults # Update self.defaults
@ -369,15 +370,16 @@ class BootstrapImage(urwid.WidgetWrap):
pass pass
def _generate_screen_by_defaults(self, defaults): def _generate_screen_by_defaults(self, defaults):
screen = ModuleHelper.screenUI(self, self.header_content, self.fields, screen = modulehelper.ModuleHelper.screenUI(self, self.header_content,
defaults) self.fields, defaults)
return screen return screen
def _get_fresh_defaults(self): def _get_fresh_defaults(self):
defaults = copy.copy(self.defaults) defaults = copy.copy(self.defaults)
self._update_defaults(defaults, self._update_defaults(
ModuleHelper.make_settings_from_responses( defaults,
self.responses)) modulehelper.ModuleHelper.make_settings_from_responses(
self.responses))
return defaults return defaults
def _redraw_screen(self, defaults=None, focus_position=None): def _redraw_screen(self, defaults=None, focus_position=None):

View File

@ -17,7 +17,7 @@ import logging
import os import os
from fuelclient.cli import error from fuelclient.cli import error
from fuelclient.objects import NetworkGroup from fuelclient import objects
import netaddr import netaddr
import urwid import urwid
import urwid.raw_display import urwid.raw_display
@ -25,9 +25,8 @@ import urwid.web_display
import yaml import yaml
from fuelmenu.common import dialog from fuelmenu.common import dialog
from fuelmenu.common.errors import BadIPException from fuelmenu.common import errors as f_errors
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
from fuelmenu.common.modulehelper import WidgetType
from fuelmenu.common import network from fuelmenu.common import network
from fuelmenu.common import puppet from fuelmenu.common import puppet
import fuelmenu.common.urwidwrapper as widget import fuelmenu.common.urwidwrapper as widget
@ -80,7 +79,7 @@ to advertise via DHCP to nodes",
"value": "10.0.0.2"}, "value": "10.0.0.2"},
"dynamic_label": {"label": "DHCP pool for node discovery:", "dynamic_label": {"label": "DHCP pool for node discovery:",
"tooltip": "", "tooltip": "",
"type": WidgetType.LABEL}, "type": modulehelper.WidgetType.LABEL},
} }
self.load() self.load()
@ -182,9 +181,10 @@ interface first.")
dhcp_start = netaddr.IPAddress( dhcp_start = netaddr.IPAddress(
responses["ADMIN_NETWORK/dhcp_pool_start"]) responses["ADMIN_NETWORK/dhcp_pool_start"])
if not dhcp_start: if not dhcp_start:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException(
"Not a valid IP address")
else: else:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException("Not a valid IP address")
except Exception: except Exception:
errors.append("Invalid IP address for DHCP Pool Start") errors.append("Invalid IP address for DHCP Pool Start")
try: try:
@ -193,9 +193,11 @@ interface first.")
dhcp_gateway = netaddr.IPAddress( dhcp_gateway = netaddr.IPAddress(
responses["ADMIN_NETWORK/dhcp_gateway"]) responses["ADMIN_NETWORK/dhcp_gateway"])
if not dhcp_gateway: if not dhcp_gateway:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException(
"Not a valid IP address")
else: else:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException(
"Not a valid IP address")
except Exception: except Exception:
errors.append("Invalid IP address for DHCP Gateway") errors.append("Invalid IP address for DHCP Gateway")
@ -205,9 +207,11 @@ interface first.")
dhcp_end = netaddr.IPAddress( dhcp_end = netaddr.IPAddress(
responses["ADMIN_NETWORK/dhcp_pool_end"]) responses["ADMIN_NETWORK/dhcp_pool_end"])
if not dhcp_end: if not dhcp_end:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException(
"Not a valid IP address")
else: else:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException(
"Not a valid IP address")
except Exception: except Exception:
errors.append("Invalid IP address for DHCP Pool end") errors.append("Invalid IP address for DHCP Pool end")
@ -276,7 +280,7 @@ interface first.")
if len(errors) > 0: if len(errors) > 0:
log.error("Errors: %s %s" % (len(errors), errors)) log.error("Errors: %s %s" % (len(errors), errors))
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
else: else:
self.parent.footer.set_text("No errors found.") self.parent.footer.set_text("No errors found.")
@ -302,7 +306,7 @@ interface first.")
else: else:
result = self._update_dnsmasq(settings) result = self._update_dnsmasq(settings)
if not result: if not result:
ModuleHelper.display_dialog( modulehelper.ModuleHelper.display_dialog(
self, error_msg=self.apply_dialog_message["message"], self, error_msg=self.apply_dialog_message["message"],
title=self.apply_dialog_message["title"]) title=self.apply_dialog_message["title"])
return False return False
@ -310,7 +314,7 @@ interface first.")
code, out, err = utils.execute(cobbler_sync) code, out, err = utils.execute(cobbler_sync)
if code != 0: if code != 0:
log.error(err) log.error(err)
ModuleHelper.display_dialog( modulehelper.ModuleHelper.display_dialog(
self, error_msg=self.apply_dialog_message["message"], self, error_msg=self.apply_dialog_message["message"],
title=self.apply_dialog_message["title"]) title=self.apply_dialog_message["title"])
return False return False
@ -326,7 +330,7 @@ interface first.")
# groups). Need to combine this calls # groups). Need to combine this calls
result, msg = puppet.puppetApplyManifest(consts.PUPPET_NAILGUN) result, msg = puppet.puppetApplyManifest(consts.PUPPET_NAILGUN)
if not result: if not result:
ModuleHelper.display_dialog( modulehelper.ModuleHelper.display_dialog(
self, error_msg=self.apply_dialog_message["message"], self, error_msg=self.apply_dialog_message["message"],
title=self.apply_dialog_message["title"]) title=self.apply_dialog_message["title"])
return False return False
@ -338,10 +342,10 @@ interface first.")
] ]
} }
try: try:
NetworkGroup(consts.ADMIN_NETWORK_ID).set(data) objects.NetworkGroup(consts.ADMIN_NETWORK_ID).set(data)
except error.HTTPError as e: except error.HTTPError as e:
log.error(e.message) log.error(e.message)
ModuleHelper.display_dialog( modulehelper.ModuleHelper.display_dialog(
self, error_msg=self.apply_dialog_message["message"], self, error_msg=self.apply_dialog_message["message"],
title=self.apply_dialog_message["title"]) title=self.apply_dialog_message["title"])
return False return False
@ -393,19 +397,20 @@ interface first.")
return puppet.puppetApply(puppet_classes) return puppet.puppetApply(puppet_classes)
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
self.setNetworkDetails() self.setNetworkDetails()
def load(self): def load(self):
settings = self.parent.settings settings = self.parent.settings
ModuleHelper.load_to_defaults(settings, self.defaults) modulehelper.ModuleHelper.load_to_defaults(settings, self.defaults)
iface = settings.get("ADMIN_NETWORK", {}).get("interface") iface = settings.get("ADMIN_NETWORK", {}).get("interface")
if iface in self.netsettings.keys(): if iface in self.netsettings.keys():
self.activeiface = iface self.activeiface = iface
def save(self, responses): def save(self, responses):
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
# Need to calculate and netmask # Need to calculate and netmask
newsettings['ADMIN_NETWORK']['netmask'] = \ newsettings['ADMIN_NETWORK']['netmask'] = \
@ -421,13 +426,13 @@ interface first.")
self.parent.footer.set_text("Changes saved successfully.") self.parent.footer.set_text("Changes saved successfully.")
def getNetwork(self): def getNetwork(self):
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
def getDHCP(self, iface): def getDHCP(self, iface):
return ModuleHelper.getDHCP(iface) return modulehelper.ModuleHelper.getDHCP(iface)
def get_default_gateway_linux(self): def get_default_gateway_linux(self):
return ModuleHelper.get_default_gateway_linux() return modulehelper.ModuleHelper.get_default_gateway_linux()
def radioSelect(self, current, state, user_data=None): def radioSelect(self, current, state, user_data=None):
"""Update network details and display information.""" """Update network details and display information."""
@ -519,5 +524,5 @@ interface first.")
self.setNetworkDetails() self.setNetworkDetails()
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults) self.fields, self.defaults)

View File

@ -15,7 +15,7 @@
from ctypes import cdll from ctypes import cdll
from fuelmenu.common import dialog from fuelmenu.common import dialog
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
from fuelmenu.common import network from fuelmenu.common import network
from fuelmenu.common import replace from fuelmenu.common import replace
import fuelmenu.common.urwidwrapper as widget import fuelmenu.common.urwidwrapper as widget
@ -198,7 +198,7 @@ is accessible"}
if len(errors) > 0: if len(errors) > 0:
log.error("Errors: %s %s" % (len(errors), errors)) log.error("Errors: %s %s" % (len(errors), errors))
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
else: else:
self.parent.footer.set_text("No errors found.") self.parent.footer.set_text("No errors found.")
@ -284,7 +284,7 @@ is accessible"}
return True return True
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def resolv_conf_settings(self): def resolv_conf_settings(self):
# Parse /etc/resolv.conf if it contains data # Parse /etc/resolv.conf if it contains data
@ -316,9 +316,9 @@ is accessible"}
if not self.parent.save_only: if not self.parent.save_only:
oldsettings.update(self.resolv_conf_settings()) oldsettings.update(self.resolv_conf_settings())
ModuleHelper.load_to_defaults(oldsettings, modulehelper.ModuleHelper.load_to_defaults(oldsettings,
self.defaults, self.defaults,
ignoredparams=['TEST_DNS']) ignoredparams=['TEST_DNS'])
def getDNS(self, resolver="/etc/resolv.conf"): def getDNS(self, resolver="/etc/resolv.conf"):
nameservers = [] nameservers = []
@ -347,7 +347,8 @@ is accessible"}
return searches, domain, ",".join(nameservers) return searches, domain, ",".join(nameservers)
def save(self, responses): def save(self, responses):
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
self.parent.settings.merge(newsettings) self.parent.settings.merge(newsettings)
# Update self.defaults # Update self.defaults
@ -365,13 +366,13 @@ is accessible"}
return code == 0 return code == 0
def getNetwork(self): def getNetwork(self):
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
def getDHCP(self, iface): def getDHCP(self, iface):
return ModuleHelper.getDHCP(iface) return modulehelper.ModuleHelper.getDHCP(iface)
def get_default_gateway_linux(self): def get_default_gateway_linux(self):
return ModuleHelper.get_default_gateway_linux() return modulehelper.ModuleHelper.get_default_gateway_linux()
def refresh(self): def refresh(self):
if self.parent.dns_might_have_changed: if self.parent.dns_might_have_changed:
@ -382,5 +383,6 @@ is accessible"}
self.parent.dns_might_have_changed = False self.parent.dns_might_have_changed = False
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults, show_all_buttons=True) self.fields, self.defaults,
show_all_buttons=True)

View File

@ -17,8 +17,7 @@ import logging
import urwid import urwid
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
from fuelmenu.common.modulehelper import WidgetType
from fuelmenu.common import puppet from fuelmenu.common import puppet
from fuelmenu.common import utils from fuelmenu.common import utils
from fuelmenu import consts from fuelmenu import consts
@ -47,12 +46,12 @@ class FeatureGroups(urwid.WidgetWrap):
"FEATURE_GROUPS/experimental": { "FEATURE_GROUPS/experimental": {
"label": "Experimental features", "label": "Experimental features",
"tooltip": "(not thoroughly tested)", "tooltip": "(not thoroughly tested)",
"type": WidgetType.CHECKBOX, "type": modulehelper.WidgetType.CHECKBOX,
}, },
"FEATURE_GROUPS/advanced": { "FEATURE_GROUPS/advanced": {
"label": "Advanced features", "label": "Advanced features",
"tooltip": "", "tooltip": "",
"type": WidgetType.CHECKBOX, "type": modulehelper.WidgetType.CHECKBOX,
} }
} }
self.load() self.load()
@ -125,11 +124,12 @@ class FeatureGroups(urwid.WidgetWrap):
return newsettings return newsettings
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def refresh(self): def refresh(self):
pass pass
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults, show_all_buttons=True) self.fields, self.defaults,
show_all_buttons=True)

View File

@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
import logging import logging
import re import re
import urwid import urwid
@ -110,7 +110,7 @@ class FuelUser(urwid.WidgetWrap):
if len(errors) > 0: if len(errors) > 0:
log.error("Errors: %s %s" % (len(errors), errors)) log.error("Errors: %s %s" % (len(errors), errors))
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
if len(warnings) > 0: if len(warnings) > 0:
@ -134,7 +134,8 @@ class FuelUser(urwid.WidgetWrap):
return True return True
def save(self, responses): def save(self, responses):
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
self.parent.settings.merge(newsettings) self.parent.settings.merge(newsettings)
self.parent.footer.set_text("Changes applied successfully.") self.parent.footer.set_text("Changes applied successfully.")
@ -142,17 +143,17 @@ class FuelUser(urwid.WidgetWrap):
self.cancel(None) self.cancel(None)
def load(self): def load(self):
ModuleHelper.load_to_defaults( modulehelper.ModuleHelper.load_to_defaults(
self.parent.settings, self.parent.settings,
self.defaults, self.defaults,
ignoredparams=['CONFIRM_PASSWORD']) ignoredparams=['CONFIRM_PASSWORD'])
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def refresh(self): def refresh(self):
pass pass
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults) self.fields, self.defaults)

View File

@ -20,10 +20,8 @@ import six
import socket import socket
import urwid import urwid
from fuelmenu.common.errors import BadIPException from fuelmenu.common import errors as f_errors
from fuelmenu.common.errors import NetworkException from fuelmenu.common import modulehelper
from fuelmenu.common.modulehelper import ModuleHelper
from fuelmenu.common.modulehelper import WidgetType
from fuelmenu.common import network from fuelmenu.common import network
from fuelmenu.common import puppet from fuelmenu.common import puppet
from fuelmenu.common import replace from fuelmenu.common import replace
@ -68,11 +66,11 @@ class Interfaces(urwid.WidgetWrap):
"value": "locked"}, "value": "locked"},
"onboot": {"label": "Enable interface:", "onboot": {"label": "Enable interface:",
"tooltip": "", "tooltip": "",
"type": WidgetType.RADIO, "type": modulehelper.WidgetType.RADIO,
"callback": self.radioSelect}, "callback": self.radioSelect},
"bootproto": {"label": "Configuration via DHCP:", "bootproto": {"label": "Configuration via DHCP:",
"tooltip": "", "tooltip": "",
"type": WidgetType.RADIO, "type": modulehelper.WidgetType.RADIO,
"choices": ["Static", "DHCP"], "choices": ["Static", "DHCP"],
"callback": self.radioSelect}, "callback": self.radioSelect},
"ipaddr": {"label": "IP address:", "ipaddr": {"label": "IP address:",
@ -175,40 +173,42 @@ class Interfaces(urwid.WidgetWrap):
try: try:
if netaddr.valid_ipv4(responses["ipaddr"]): if netaddr.valid_ipv4(responses["ipaddr"]):
if not netaddr.IPAddress(responses["ipaddr"]): if not netaddr.IPAddress(responses["ipaddr"]):
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException("Not a valid IP address")
else: else:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException("Not a valid IP address")
except (BadIPException, Exception): except (f_errors.BadIPException, Exception):
errors.append("Not a valid IP address: %s" % errors.append("Not a valid IP address: %s" %
responses["ipaddr"]) responses["ipaddr"])
try: try:
if netaddr.valid_ipv4(responses["netmask"]): if netaddr.valid_ipv4(responses["netmask"]):
netmask = netaddr.IPAddress(responses["netmask"]) netmask = netaddr.IPAddress(responses["netmask"])
if netmask.is_netmask is False: if netmask.is_netmask is False:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException("Not a valid IP address")
else: else:
raise BadIPException("Not a valid IP address") raise f_errors.BadIPException("Not a valid IP address")
except (BadIPException, Exception): except (f_errors.BadIPException, Exception):
errors.append("Not a valid netmask: %s" % responses["netmask"]) errors.append("Not a valid netmask: %s" % responses["netmask"])
try: try:
if len(responses["gateway"]) > 0: if len(responses["gateway"]) > 0:
# Check if gateway is valid # Check if gateway is valid
if netaddr.valid_ipv4(responses["gateway"]) is False: if netaddr.valid_ipv4(responses["gateway"]) is False:
raise BadIPException("Gateway IP address is not valid") raise f_errors.BadIPException(
"Gateway IP address is not valid")
# Check if gateway is in same subnet # Check if gateway is in same subnet
if network.inSameSubnet(responses["ipaddr"], if network.inSameSubnet(responses["ipaddr"],
responses["gateway"], responses["gateway"],
responses["netmask"]) is False: responses["netmask"]) is False:
raise BadIPException("Gateway IP is not in same " raise f_errors.BadIPException(
"subnet as IP address") "Gateway IP is not in same "
except (BadIPException, Exception) as e: "subnet as IP address")
except (f_errors.BadIPException, Exception) as e:
errors.append(e) errors.append(e)
self.parent.footer.set_text("Scanning for duplicate IP address..") self.parent.footer.set_text("Scanning for duplicate IP address..")
if len(responses["ipaddr"]) > 0: if len(responses["ipaddr"]) > 0:
if self.netsettings[self.activeiface]['link'].upper() != "UP": if self.netsettings[self.activeiface]['link'].upper() != "UP":
try: try:
network.upIface(self.activeiface) network.upIface(self.activeiface)
except NetworkException as e: except f_errors.NetworkException as e:
errors.append("Cannot activate {0} to check for " errors.append("Cannot activate {0} to check for "
"duplicate IP.".format(self.activeiface)) "duplicate IP.".format(self.activeiface))
@ -223,7 +223,7 @@ class Interfaces(urwid.WidgetWrap):
responses["ipaddr"])) responses["ipaddr"]))
if len(errors) > 0: if len(errors) > 0:
self.log.error("Errors: %s %s" % (len(errors), errors)) self.log.error("Errors: %s %s" % (len(errors), errors))
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
else: else:
self.parent.footer.set_text("No errors found.") self.parent.footer.set_text("No errors found.")
@ -308,7 +308,7 @@ class Interfaces(urwid.WidgetWrap):
result = puppet.puppetApply(puppetclasses) result = puppet.puppetApply(puppetclasses)
if not result: if not result:
raise Exception("Puppet apply failed") raise Exception("Puppet apply failed")
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
gateway = self.get_default_gateway_linux() gateway = self.get_default_gateway_linux()
if gateway is None: if gateway is None:
gateway = "" gateway = ""
@ -320,23 +320,23 @@ class Interfaces(urwid.WidgetWrap):
self.log.error(e) self.log.error(e)
self.parent.footer.set_text("Error applying changes. Check logs " self.parent.footer.set_text("Error applying changes. Check logs "
"for details.") "for details.")
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
self.setNetworkDetails() self.setNetworkDetails()
return False return False
self.parent.footer.set_text("Changes successfully applied.") self.parent.footer.set_text("Changes successfully applied.")
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
self.setNetworkDetails() self.setNetworkDetails()
return True return True
def getNetwork(self): def getNetwork(self):
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
def getDHCP(self, iface): def getDHCP(self, iface):
return ModuleHelper.getDHCP(iface) return modulehelper.ModuleHelper.getDHCP(iface)
def get_default_gateway_linux(self): def get_default_gateway_linux(self):
return ModuleHelper.get_default_gateway_linux() return modulehelper.ModuleHelper.get_default_gateway_linux()
def radioSelectIface(self, current, state, user_data=None): def radioSelectIface(self, current, state, user_data=None):
"""Update network details and display information.""" """Update network details and display information."""
@ -350,7 +350,7 @@ class Interfaces(urwid.WidgetWrap):
if rb.base_widget.state is True: if rb.base_widget.state is True:
self.activeiface = rb.base_widget.get_label() self.activeiface = rb.base_widget.get_label()
break break
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
self.setNetworkDetails() self.setNetworkDetails()
def radioSelect(self, current, state, user_data=None): def radioSelect(self, current, state, user_data=None):
@ -424,13 +424,15 @@ class Interfaces(urwid.WidgetWrap):
self.edits[index].set_edit_text("") self.edits[index].set_edit_text("")
def refresh(self): def refresh(self):
ModuleHelper.getNetwork(self) modulehelper.ModuleHelper.getNetwork(self)
self.setNetworkDetails() self.setNetworkDetails()
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
self.setNetworkDetails() self.setNetworkDetails()
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults, show_all_buttons=True) self.fields,
self.defaults,
show_all_buttons=True)

View File

@ -14,8 +14,7 @@
# under the License. # under the License.
from fuelmenu.common import dialog from fuelmenu.common import dialog
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
from fuelmenu.common.modulehelper import WidgetType
import fuelmenu.common.urwidwrapper as widget import fuelmenu.common.urwidwrapper as widget
from fuelmenu.common import utils from fuelmenu.common import utils
import logging import logging
@ -45,7 +44,7 @@ class NtpSetup(urwid.WidgetWrap):
{ {
"ntpenabled": {"label": "Enable NTP:", "ntpenabled": {"label": "Enable NTP:",
"tooltip": "", "tooltip": "",
"type": WidgetType.RADIO, "type": modulehelper.WidgetType.RADIO,
"callback": self.radioSelect}, "callback": self.radioSelect},
"NTP1": {"label": "NTP Server 1:", "NTP1": {"label": "NTP Server 1:",
"tooltip": "NTP Server for time synchronization", "tooltip": "NTP Server for time synchronization",
@ -124,7 +123,7 @@ class NtpSetup(urwid.WidgetWrap):
% self.defaults[ntpfield]['label']) % self.defaults[ntpfield]['label'])
if len(errors) > 0: if len(errors) > 0:
log.error("Errors: %s %s" % (len(errors), errors)) log.error("Errors: %s %s" % (len(errors), errors))
ModuleHelper.display_failed_check_dialog(self, errors) modulehelper.ModuleHelper.display_failed_check_dialog(self, errors)
return False return False
else: else:
if len(warnings) > 0: if len(warnings) > 0:
@ -160,18 +159,19 @@ class NtpSetup(urwid.WidgetWrap):
return True return True
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def get_default_gateway_linux(self): def get_default_gateway_linux(self):
return ModuleHelper.get_default_gateway_linux() return modulehelper.ModuleHelper.get_default_gateway_linux()
def load(self): def load(self):
ModuleHelper.load_to_defaults( modulehelper.ModuleHelper.load_to_defaults(
self.parent.settings, self.defaults, ignoredparams=['ntpenabled']) self.parent.settings, self.defaults, ignoredparams=['ntpenabled'])
def save(self, responses): def save(self, responses):
settings = self.parent.settings settings = self.parent.settings
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
settings.merge(newsettings) settings.merge(newsettings)
# Update defaults # Update defaults
@ -210,5 +210,5 @@ class NtpSetup(urwid.WidgetWrap):
break break
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults) self.fields, self.defaults)

View File

@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
import fuelmenu.common.urwidwrapper as widget import fuelmenu.common.urwidwrapper as widget
import time import time
import urwid import urwid
@ -66,5 +66,6 @@ class SaveAndQuit(object):
pass pass
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults, buttons_visible=False) self.fields, self.defaults,
buttons_visible=False)

View File

@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
from fuelmenu.common import pwgen from fuelmenu.common import pwgen
import logging import logging
import urwid import urwid
@ -142,10 +142,12 @@ class ServicePasswords(urwid.WidgetWrap):
self.save(responses) self.save(responses)
def load(self): def load(self):
ModuleHelper.load_to_defaults(self.parent.settings, self.defaults) modulehelper.ModuleHelper.load_to_defaults(self.parent.settings,
self.defaults)
def save(self, responses): def save(self, responses):
newsettings = ModuleHelper.make_settings_from_responses(responses) newsettings = modulehelper.ModuleHelper.make_settings_from_responses(
responses)
self.parent.settings.merge(newsettings) self.parent.settings.merge(newsettings)
log.debug('done saving servicepws') log.debug('done saving servicepws')
@ -155,11 +157,11 @@ class ServicePasswords(urwid.WidgetWrap):
self.defaults[fieldname]['value'] = newsettings[fieldname] self.defaults[fieldname]['value'] = newsettings[fieldname]
def cancel(self, button): def cancel(self, button):
ModuleHelper.cancel(self, button) modulehelper.ModuleHelper.cancel(self, button)
def refresh(self): def refresh(self):
pass pass
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults) self.fields, self.defaults)

View File

@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from fuelmenu.common.modulehelper import ModuleHelper from fuelmenu.common import modulehelper
import fuelmenu.common.urwidwrapper as widget import fuelmenu.common.urwidwrapper as widget
import subprocess import subprocess
import urwid import urwid
@ -53,5 +53,6 @@ class Shell(object):
pass pass
def screenUI(self): def screenUI(self):
return ModuleHelper.screenUI(self, self.header_content, self.fields, return modulehelper.ModuleHelper.screenUI(self, self.header_content,
self.defaults, buttons_visible=False) self.fields, self.defaults,
buttons_visible=False)

View File

@ -15,7 +15,7 @@
import collections import collections
import copy import copy
import logging import logging
from string import Template import string
try: try:
from collections import OrderedDict from collections import OrderedDict
@ -130,7 +130,7 @@ class Settings(OrderedDict):
""" """
try: try:
with open(settings_file) as infile: with open(settings_file) as infile:
settings = yaml.load(Template( settings = yaml.load(string.Template(
infile.read()).safe_substitute(template_kwargs or {})) infile.read()).safe_substitute(template_kwargs or {}))
self.merge(settings) self.merge(settings)