Enable E128 check for line indentation

E127/E128 checks helps us to keep code more readable, so these rules
should be allowed, when pep8 runs.
Enabled check E128 - continuation line under-indented for visual indent.

Change-Id: Ic17a7ba47d555183ff26a5dc5f6ec27c0461725a
This commit is contained in:
Victor Sergeyev 2013-10-28 10:43:02 +02:00
parent 772aafbce6
commit e85b19e619
27 changed files with 123 additions and 91 deletions

View File

@ -32,10 +32,9 @@ downloadcache = ~/cache/pip
[flake8] [flake8]
builtins = _ builtins = _
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,panel_template,dash_template,local_settings.py
# E128 continuation line under-indented for visual indent
# F403 'from <smth> import *' used; unable to detect undefined names # F403 'from <smth> import *' used; unable to detect undefined names
# F999 syntax error in doctest # F999 syntax error in doctest
# H4xx docstrings # H4xx docstrings
# H701 empty localization string # H701 empty localization string
# H702 Formatting operation should be outside of localization method call # H702 Formatting operation should be outside of localization method call
ignore = E128,F403,F999,H4,H701,H702 ignore = F403,F999,H4,H701,H702

View File

@ -47,11 +47,13 @@ def tuskarclient(request):
def baremetalclient(request): def baremetalclient(request):
def create_remote_nova_client_baremetal(): def create_remote_nova_client_baremetal():
nc = nova.nova_client.Client(REMOTE_NOVA_BAREMETAL_CREDS['user'], nc = nova.nova_client.Client(
REMOTE_NOVA_BAREMETAL_CREDS['user'],
REMOTE_NOVA_BAREMETAL_CREDS['password'], REMOTE_NOVA_BAREMETAL_CREDS['password'],
REMOTE_NOVA_BAREMETAL_CREDS['tenant'], REMOTE_NOVA_BAREMETAL_CREDS['tenant'],
auth_url=REMOTE_NOVA_BAREMETAL_CREDS['auth_url'], auth_url=REMOTE_NOVA_BAREMETAL_CREDS['auth_url'],
bypass_url=REMOTE_NOVA_BAREMETAL_CREDS['bypass_url']) bypass_url=REMOTE_NOVA_BAREMETAL_CREDS['bypass_url'],
)
return nc return nc
def create_nova_client_baremetal(): def create_nova_client_baremetal():
@ -739,8 +741,9 @@ class ResourceClass(StringIdAPIResourceWrapper):
def aggregated_alerts(self): def aggregated_alerts(self):
# FIXME: for now return only list of racks (particular alerts are not # FIXME: for now return only list of racks (particular alerts are not
# used) # used)
return [rack for rack in self.list_racks if (rack.alerts + return [rack
rack.aggregated_alerts)] for rack in self.list_racks
if rack.alerts + rack.aggregated_alerts]
@property @property
def has_provisioned_rack(self): def has_provisioned_rack(self):

View File

@ -17,6 +17,7 @@ from django.conf.urls import defaults
from tuskar_ui.infrastructure.overview import views from tuskar_ui.infrastructure.overview import views
urlpatterns = defaults.patterns('', urlpatterns = defaults.patterns(
'',
defaults.url(r'^$', views.IndexView.as_view(), name='index'), defaults.url(r'^$', views.IndexView.as_view(), name='index'),
) )

View File

@ -36,7 +36,8 @@ class FlavorForm(forms.Form):
name = forms.RegexField(label=_("Name"), name = forms.RegexField(label=_("Name"),
max_length=25, max_length=25,
regex=r'^[\w\.\- ]+$', regex=r'^[\w\.\- ]+$',
error_messages={'invalid': _('Name may only ' error_messages={'invalid': _(
'Name may only '
'contain letters, numbers, underscores, ' 'contain letters, numbers, underscores, '
'periods and hyphens.')}, 'periods and hyphens.')},
widget=forms.TextInput(attrs={ widget=forms.TextInput(attrs={

View File

@ -63,6 +63,7 @@ class FlavorsTests(test.BaseAdminViewTests):
args=[resource_class.id, flavor.id]) args=[resource_class.id, flavor.id])
res = self.client.get(url) res = self.client.get(url)
self.assertRedirectsNoFollow(res, self.assertRedirectsNoFollow(
res,
urlresolvers.reverse('horizon:infrastructure:resource_management:' urlresolvers.reverse('horizon:infrastructure:resource_management:'
'index')) 'index'))

View File

@ -21,7 +21,8 @@ from tuskar_ui.infrastructure.resource_management.flavors import views
VIEW_MOD = 'tuskar_ui.infrastructure.' \ VIEW_MOD = 'tuskar_ui.infrastructure.' \
'resource_management.flavors.views' 'resource_management.flavors.views'
urlpatterns = defaults.patterns(VIEW_MOD, urlpatterns = defaults.patterns(
VIEW_MOD,
defaults.url(r'^(?P<flavor_id>[^/]+)/$', defaults.url(r'^(?P<flavor_id>[^/]+)/$',
views.DetailView.as_view(), views.DetailView.as_view(),
name='detail') name='detail')

View File

@ -19,27 +19,33 @@ import tuskar_ui.forms
class NodeForm(django.forms.Form): class NodeForm(django.forms.Form):
id = django.forms.IntegerField(required=False, id = django.forms.IntegerField(
required=False,
widget=django.forms.HiddenInput()) widget=django.forms.HiddenInput())
service_host = django.forms.CharField(label=_("Service Host"), service_host = django.forms.CharField(
label=_("Service Host"),
widget=django.forms.TextInput(attrs={'class': 'input input-mini'}), widget=django.forms.TextInput(attrs={'class': 'input input-mini'}),
required=True) required=True)
mac_address = tuskar_ui.forms.MACField(label=_("MAC Address"), mac_address = tuskar_ui.forms.MACField(
label=_("MAC Address"),
widget=django.forms.TextInput(attrs={'class': 'input input-mini'}), widget=django.forms.TextInput(attrs={'class': 'input input-mini'}),
required=True) required=True)
# Hardware Specifications # Hardware Specifications
cpus = django.forms.IntegerField(label=_("CPUs"), required=True, cpus = django.forms.IntegerField(
label=_("CPUs"), required=True,
min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={ min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={
'class': 'input number_input_slim', 'class': 'input number_input_slim',
})) }))
memory_mb = django.forms.IntegerField(label=_("Memory"), memory_mb = django.forms.IntegerField(
required=True, min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={ label=_("Memory"), required=True, min_value=1,
widget=tuskar_ui.forms.NumberInput(attrs={
'class': 'input number_input_slim', 'class': 'input number_input_slim',
})) }))
local_gb = django.forms.IntegerField(label=_("Local Disk (GB)"), local_gb = django.forms.IntegerField(
min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={ label=_("Local Disk (GB)"), min_value=1,
widget=tuskar_ui.forms.NumberInput(attrs={
'class': 'input number_input_slim', 'class': 'input number_input_slim',
}), required=True) }), required=True)
@ -47,15 +53,19 @@ class NodeForm(django.forms.Form):
pm_address = django.forms.GenericIPAddressField( pm_address = django.forms.GenericIPAddressField(
widget=django.forms.TextInput(attrs={'class': 'input input-mini'}), widget=django.forms.TextInput(attrs={'class': 'input input-mini'}),
label=_("Power Management IP"), required=False) label=_("Power Management IP"), required=False)
pm_user = django.forms.CharField(label=_("Power Management User"), pm_user = django.forms.CharField(
label=_("Power Management User"),
widget=django.forms.TextInput(attrs={'class': 'input input-mini'}), widget=django.forms.TextInput(attrs={'class': 'input input-mini'}),
required=False) required=False)
pm_password = django.forms.CharField(label=_("Power Management Password"), pm_password = django.forms.CharField(
required=False, widget=django.forms.PasswordInput(render_value=False, label=_("Power Management Password"),
required=False, widget=django.forms.PasswordInput(
render_value=False,
attrs={'class': 'input input-mini'})) attrs={'class': 'input input-mini'}))
# Access # Access
terminal_port = django.forms.IntegerField(label=_("Terminal Port"), terminal_port = django.forms.IntegerField(
label=_("Terminal Port"),
required=False, min_value=0, max_value=1024, required=False, min_value=0, max_value=1024,
widget=tuskar_ui.forms.NumberInput(attrs={ widget=tuskar_ui.forms.NumberInput(attrs={
'class': 'input number_input_slim', 'class': 'input number_input_slim',
@ -84,5 +94,5 @@ class BaseNodeFormSet(django.forms.formsets.BaseFormSet):
values[field][value] = form values[field][value] = form
NodeFormset = django.forms.formsets.formset_factory(NodeForm, extra=1, NodeFormset = django.forms.formsets.formset_factory(
can_delete=True, formset=BaseNodeFormSet) NodeForm, extra=1, can_delete=True, formset=BaseNodeFormSet)

View File

@ -32,7 +32,8 @@ class OverviewTab(tabs.Tab):
running_instances = len(node.running_virtual_machines) running_instances = len(node.running_virtual_machines)
except requests.exceptions.ConnectionError: except requests.exceptions.ConnectionError:
running_instances = _("Unknown") running_instances = _("Unknown")
messages.warning(request, messages.warning(
request,
_("Can't retrieve the running instances from the overcloud.")) _("Can't retrieve the running instances from the overcloud."))
return { return {
'node': node, 'node': node,

View File

@ -34,7 +34,8 @@ class NodeViewTests(test.BaseAdminViewTests):
self.mox.ReplayAll() self.mox.ReplayAll()
res = self.client.get(self.unracked_page) res = self.client.get(self.unracked_page)
self.assertTemplateUsed(res, self.assertTemplateUsed(
res,
'infrastructure/resource_management/nodes/unracked.html') 'infrastructure/resource_management/nodes/unracked.html')
unracked_nodes_table = res.context['unracked_nodes_table'].data unracked_nodes_table = res.context['unracked_nodes_table'].data
@ -86,6 +87,7 @@ class NodeViewTests(test.BaseAdminViewTests):
args=[node.id]) args=[node.id])
res = self.client.get(url) res = self.client.get(url)
self.assertRedirectsNoFollow(res, self.assertRedirectsNoFollow(
res,
urlresolvers.reverse('horizon:infrastructure:resource_management:' urlresolvers.reverse('horizon:infrastructure:resource_management:'
'index')) 'index'))

View File

@ -21,7 +21,8 @@ NODES = r'^(?P<node_id>[^/]+)/%s$'
VIEW_MOD = 'tuskar_ui.infrastructure.resource_management.nodes.views' VIEW_MOD = 'tuskar_ui.infrastructure.resource_management.nodes.views'
urlpatterns = defaults.patterns(VIEW_MOD, urlpatterns = defaults.patterns(
VIEW_MOD,
defaults.url(NODES % 'detail', views.DetailView.as_view(), name='detail'), defaults.url(NODES % 'detail', views.DetailView.as_view(), name='detail'),
defaults.url(r'^unracked/$', defaults.url(r'^unracked/$',
views.UnrackedView.as_view(), views.UnrackedView.as_view(),

View File

@ -232,8 +232,8 @@ class RackViewTests(test.BaseAdminViewTests):
rack = self.client.get(url) rack = self.client.get(url)
self.assertEqual(rack.status_code, 200) self.assertEqual(rack.status_code, 200)
self.assertTemplateUsed(rack, self.assertTemplateUsed(
'infrastructure/resource_management/racks/upload.html') rack, 'infrastructure/resource_management/racks/upload.html')
def test_upload_rack_upload(self): def test_upload_rack_upload(self):
csv_data = ('Rack1,rclass1,192.168.111.0/24,regionX,f0:dd:f1:da:f9:b5 ' csv_data = ('Rack1,rclass1,192.168.111.0/24,regionX,f0:dd:f1:da:f9:b5 '
@ -247,8 +247,8 @@ class RackViewTests(test.BaseAdminViewTests):
url = urlresolvers.reverse('horizon:infrastructure:' url = urlresolvers.reverse('horizon:infrastructure:'
'resource_management:racks:upload') 'resource_management:racks:upload')
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertTemplateUsed(resp, self.assertTemplateUsed(
'infrastructure/resource_management/racks/upload.html') resp, 'infrastructure/resource_management/racks/upload.html')
self.assertNoFormErrors(resp) self.assertNoFormErrors(resp)
self.assertEqual(resp.context['form']['uploaded_data'].value(), self.assertEqual(resp.context['form']['uploaded_data'].value(),
base64.b64encode(csv_data)) base64.b64encode(csv_data))
@ -258,8 +258,8 @@ class RackViewTests(test.BaseAdminViewTests):
url = urlresolvers.reverse('horizon:infrastructure:' url = urlresolvers.reverse('horizon:infrastructure:'
'resource_management:racks:upload') 'resource_management:racks:upload')
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertTemplateUsed(resp, self.assertTemplateUsed(
'infrastructure/resource_management/racks/upload.html') resp, 'infrastructure/resource_management/racks/upload.html')
self.assertFormErrors(resp, 1) self.assertFormErrors(resp, 1)
self.assertEqual(resp.context['form']['uploaded_data'].value(), self.assertEqual(resp.context['form']['uploaded_data'].value(),
None) None)
@ -392,7 +392,8 @@ class RackViewTests(test.BaseAdminViewTests):
tuskar.Rack.update(mox.IsA(http.HttpRequest), rack.id, tuskar.Rack.update(mox.IsA(http.HttpRequest), rack.id,
{'nodes': [{'id': node_id} {'nodes': [{'id': node_id}
for node_id in tuskar.Rack.node_ids for node_id in tuskar.Rack.node_ids
if node_id != baremetal_node.id]}).AndReturn(rack) if node_id != baremetal_node.id]}
).AndReturn(rack)
self.mox.ReplayAll() self.mox.ReplayAll()
url = urlresolvers.reverse( url = urlresolvers.reverse(

View File

@ -20,7 +20,8 @@ RACKS = r'^(?P<rack_id>[^/]+)/%s$'
VIEW_MOD = 'tuskar_ui.infrastructure.resource_management.racks.views' VIEW_MOD = 'tuskar_ui.infrastructure.resource_management.racks.views'
urlpatterns = urls.patterns(VIEW_MOD, urlpatterns = urls.patterns(
VIEW_MOD,
urls.url(r'^create/$', views.CreateView.as_view(), name='create'), urls.url(r'^create/$', views.CreateView.as_view(), name='create'),
urls.url(r'^upload/$', views.UploadView.as_view(), name='upload'), urls.url(r'^upload/$', views.UploadView.as_view(), name='upload'),
urls.url(r'^usage_data$', urls.url(r'^usage_data$',

View File

@ -33,7 +33,8 @@ class RackCreateInfoAction(workflows.Action):
name = forms.RegexField(label=_("Name"), name = forms.RegexField(label=_("Name"),
max_length=25, max_length=25,
regex=r'^[\w\.\- ]+$', regex=r'^[\w\.\- ]+$',
error_messages={'invalid': _('Name may only ' error_messages={'invalid': _(
'Name may only '
'contain letters, numbers, underscores, ' 'contain letters, numbers, underscores, '
'periods and hyphens.')}) 'periods and hyphens.')})
location = forms.CharField(label=_("Location")) location = forms.CharField(label=_("Location"))
@ -213,7 +214,8 @@ class CreateRack(workflows.Workflow):
node_ids.append({'id': node_id}) node_ids.append({'id': node_id})
try: try:
# Then, register the Rack, including the nodes # Then, register the Rack, including the nodes
tuskar.Rack.create(request, name=data['name'], tuskar.Rack.create(
request, name=data['name'],
resource_class_id=data['resource_class_id'], resource_class_id=data['resource_class_id'],
location=data['location'], subnet=data['subnet'], location=data['location'], subnet=data['subnet'],
nodes=node_ids) nodes=node_ids)

View File

@ -70,7 +70,8 @@ class ResourcesClassFilterAction(tables.FilterAction):
class ResourceClassesTable(tables.DataTable): class ResourceClassesTable(tables.DataTable):
name = tables.Column("name", link=("horizon:infrastructure:" name = tables.Column(
"name", link=("horizon:infrastructure:"
"resource_management:resource_classes:detail"), "resource_management:resource_classes:detail"),
verbose_name=_("Class Name")) verbose_name=_("Class Name"))
service_type = tables.Column("service_type", verbose_name=_("Class Type")) service_type = tables.Column("service_type", verbose_name=_("Class Type"))

View File

@ -149,7 +149,8 @@ class ResourceClassViewTests(test.BaseAdminViewTests):
'racks-MAX_NUM_FORMS': 1000, 'racks-MAX_NUM_FORMS': 1000,
} }
res = self.client.post(url, form_data) res = self.client.post(url, form_data)
self.assertRedirectsNoFollow(res, self.assertRedirectsNoFollow(
res,
("%s?tab=resource_management_tabs__resource_classes_tab" % ("%s?tab=resource_management_tabs__resource_classes_tab" %
urlresolvers. urlresolvers.
reverse("horizon:infrastructure:resource_management:index"))) reverse("horizon:infrastructure:resource_management:index")))
@ -354,7 +355,8 @@ class ResourceClassViewTests(test.BaseAdminViewTests):
self.assertItemsEqual(res.context['flavors_table_table'].data, flavors) self.assertItemsEqual(res.context['flavors_table_table'].data, flavors)
self.assertItemsEqual(res.context['racks_table_table'].data, racks) self.assertItemsEqual(res.context['racks_table_table'].data, racks)
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, self.assertTemplateUsed(
res,
'infrastructure/resource_management/resource_classes/detail.html') 'infrastructure/resource_management/resource_classes/detail.html')
@test.create_stubs({ @test.create_stubs({

View File

@ -25,7 +25,8 @@ from tuskar_ui.infrastructure.resource_management import views
from tuskar_ui.test import urls as test_urls from tuskar_ui.test import urls as test_urls
urlpatterns = defaults.patterns('', urlpatterns = defaults.patterns(
'',
defaults.url(r'^$', views.IndexView.as_view(), name='index'), defaults.url(r'^$', views.IndexView.as_view(), name='index'),
defaults.url(r'^provision$', views.ProvisionView.as_view(), defaults.url(r'^provision$', views.ProvisionView.as_view(),
name='provision'), name='provision'),
@ -39,5 +40,6 @@ urlpatterns = defaults.patterns('',
) )
if conf.settings.DEBUG: if conf.settings.DEBUG:
urlpatterns += defaults.patterns('', defaults.url(r'^qunit$', urlpatterns += defaults.patterns(
'', defaults.url(r'^qunit$',
defaults.include(test_urls, namespace='tests'))) defaults.include(test_urls, namespace='tests')))

View File

@ -17,6 +17,7 @@ from django.conf.urls import defaults
from tuskar_ui.infrastructure.service_management import views from tuskar_ui.infrastructure.service_management import views
urlpatterns = defaults.patterns('', urlpatterns = defaults.patterns(
'',
defaults.url(r'^$', views.IndexView.as_view(), name='index'), defaults.url(r'^$', views.IndexView.as_view(), name='index'),
) )

View File

@ -110,8 +110,8 @@ class FormsetCell(BaseCell):
self.field = None self.field = None
else: else:
if self.field.errors: if self.field.errors:
self.attrs['class'] = (self.attrs.get('class', '') + self.attrs['class'] = (
' error control-group') '%s error control-group' % self.attrs.get('class', ''))
self.attrs['title'] = ' '.join( self.attrs['title'] = ' '.join(
unicode(error) for error in self.field.errors) unicode(error) for error in self.field.errors)

View File

@ -58,7 +58,8 @@ class TuskarApiTests(test.APITestCase):
node = self.baremetalclient_nodes.first() node = self.baremetalclient_nodes.first()
self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'create') self.mox.StubOutWithMock(baremetal.BareMetalNodeManager, 'create')
baremetal.BareMetalNodeManager.create('node', 1, 1024, 10, baremetal.BareMetalNodeManager.create(
'node', 1, 1024, 10,
'aa:bb:cc:dd:ee', None, None, '', None).AndReturn(node) 'aa:bb:cc:dd:ee', None, None, '', None).AndReturn(node)
self.mox.ReplayAll() self.mox.ReplayAll()

View File

@ -16,6 +16,7 @@ from django.conf.urls import defaults
from django.views import generic from django.views import generic
urlpatterns = defaults.patterns('', defaults.url(r'^$', urlpatterns = defaults.patterns('', defaults.url(
r'^$',
generic.TemplateView.as_view(template_name="infrastructure/qunit.html"), generic.TemplateView.as_view(template_name="infrastructure/qunit.html"),
name='qunit_tests')) name='qunit_tests'))