diff --git a/tox.ini b/tox.ini index bf8e8ec3f..6df75e019 100644 --- a/tox.ini +++ b/tox.ini @@ -32,10 +32,9 @@ downloadcache = ~/cache/pip [flake8] builtins = _ 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 import *' used; unable to detect undefined names # F999 syntax error in doctest # H4xx docstrings # H701 empty localization string # H702 Formatting operation should be outside of localization method call -ignore = E128,F403,F999,H4,H701,H702 +ignore = F403,F999,H4,H701,H702 diff --git a/tuskar_ui/api.py b/tuskar_ui/api.py index 0f553e322..c52fb89a6 100644 --- a/tuskar_ui/api.py +++ b/tuskar_ui/api.py @@ -47,11 +47,13 @@ def tuskarclient(request): def baremetalclient(request): def create_remote_nova_client_baremetal(): - nc = nova.nova_client.Client(REMOTE_NOVA_BAREMETAL_CREDS['user'], - REMOTE_NOVA_BAREMETAL_CREDS['password'], - REMOTE_NOVA_BAREMETAL_CREDS['tenant'], - auth_url=REMOTE_NOVA_BAREMETAL_CREDS['auth_url'], - bypass_url=REMOTE_NOVA_BAREMETAL_CREDS['bypass_url']) + nc = nova.nova_client.Client( + REMOTE_NOVA_BAREMETAL_CREDS['user'], + REMOTE_NOVA_BAREMETAL_CREDS['password'], + REMOTE_NOVA_BAREMETAL_CREDS['tenant'], + auth_url=REMOTE_NOVA_BAREMETAL_CREDS['auth_url'], + bypass_url=REMOTE_NOVA_BAREMETAL_CREDS['bypass_url'], + ) return nc def create_nova_client_baremetal(): @@ -205,7 +207,7 @@ class BaremetalNode(StringIdAPIResourceWrapper): node.ip_address_other = (", " .join([addr['addr'] for addr in addresses])) node.status = (nova_instance._apiresource. - _info['OS-EXT-STS:vm_state']) + _info['OS-EXT-STS:vm_state']) node.power_management = "" if node.pm_user: node.power_management = node.pm_user + "/********" @@ -452,7 +454,7 @@ class Rack(StringIdAPIResourceWrapper): def list_baremetal_nodes(self): if not hasattr(self, '_baremetal_nodes'): self._baremetal_nodes = [node.nova_baremetal_node - for node in self.list_nodes] + for node in self.list_nodes] return self._baremetal_nodes @property @@ -739,8 +741,9 @@ class ResourceClass(StringIdAPIResourceWrapper): def aggregated_alerts(self): # FIXME: for now return only list of racks (particular alerts are not # used) - return [rack for rack in self.list_racks if (rack.alerts + - rack.aggregated_alerts)] + return [rack + for rack in self.list_racks + if rack.alerts + rack.aggregated_alerts] @property def has_provisioned_rack(self): diff --git a/tuskar_ui/infrastructure/overview/urls.py b/tuskar_ui/infrastructure/overview/urls.py index 09f80b3df..c4f3fdeb1 100644 --- a/tuskar_ui/infrastructure/overview/urls.py +++ b/tuskar_ui/infrastructure/overview/urls.py @@ -17,6 +17,7 @@ from django.conf.urls import defaults from tuskar_ui.infrastructure.overview import views -urlpatterns = defaults.patterns('', +urlpatterns = defaults.patterns( + '', defaults.url(r'^$', views.IndexView.as_view(), name='index'), ) diff --git a/tuskar_ui/infrastructure/resource_management/flavors/forms.py b/tuskar_ui/infrastructure/resource_management/flavors/forms.py index 158659b61..92065723b 100644 --- a/tuskar_ui/infrastructure/resource_management/flavors/forms.py +++ b/tuskar_ui/infrastructure/resource_management/flavors/forms.py @@ -36,7 +36,8 @@ class FlavorForm(forms.Form): name = forms.RegexField(label=_("Name"), max_length=25, regex=r'^[\w\.\- ]+$', - error_messages={'invalid': _('Name may only ' + error_messages={'invalid': _( + 'Name may only ' 'contain letters, numbers, underscores, ' 'periods and hyphens.')}, widget=forms.TextInput(attrs={ diff --git a/tuskar_ui/infrastructure/resource_management/flavors/tests.py b/tuskar_ui/infrastructure/resource_management/flavors/tests.py index 8e37cb46f..13af7bdb2 100644 --- a/tuskar_ui/infrastructure/resource_management/flavors/tests.py +++ b/tuskar_ui/infrastructure/resource_management/flavors/tests.py @@ -63,6 +63,7 @@ class FlavorsTests(test.BaseAdminViewTests): args=[resource_class.id, flavor.id]) res = self.client.get(url) - self.assertRedirectsNoFollow(res, + self.assertRedirectsNoFollow( + res, urlresolvers.reverse('horizon:infrastructure:resource_management:' 'index')) diff --git a/tuskar_ui/infrastructure/resource_management/flavors/urls.py b/tuskar_ui/infrastructure/resource_management/flavors/urls.py index 60e5767b7..18bd85fda 100644 --- a/tuskar_ui/infrastructure/resource_management/flavors/urls.py +++ b/tuskar_ui/infrastructure/resource_management/flavors/urls.py @@ -21,7 +21,8 @@ from tuskar_ui.infrastructure.resource_management.flavors import views VIEW_MOD = 'tuskar_ui.infrastructure.' \ 'resource_management.flavors.views' -urlpatterns = defaults.patterns(VIEW_MOD, +urlpatterns = defaults.patterns( + VIEW_MOD, defaults.url(r'^(?P[^/]+)/$', views.DetailView.as_view(), name='detail') diff --git a/tuskar_ui/infrastructure/resource_management/nodes/forms.py b/tuskar_ui/infrastructure/resource_management/nodes/forms.py index 2d64c67d9..68b5566e7 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/forms.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/forms.py @@ -19,27 +19,33 @@ import tuskar_ui.forms class NodeForm(django.forms.Form): - id = django.forms.IntegerField(required=False, + id = django.forms.IntegerField( + required=False, 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'}), 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'}), required=True) # 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={ 'class': 'input number_input_slim', })) - memory_mb = django.forms.IntegerField(label=_("Memory"), - required=True, min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={ + memory_mb = django.forms.IntegerField( + label=_("Memory"), required=True, min_value=1, + widget=tuskar_ui.forms.NumberInput(attrs={ 'class': 'input number_input_slim', })) - local_gb = django.forms.IntegerField(label=_("Local Disk (GB)"), - min_value=1, widget=tuskar_ui.forms.NumberInput(attrs={ + local_gb = django.forms.IntegerField( + label=_("Local Disk (GB)"), min_value=1, + widget=tuskar_ui.forms.NumberInput(attrs={ 'class': 'input number_input_slim', }), required=True) @@ -47,15 +53,19 @@ class NodeForm(django.forms.Form): pm_address = django.forms.GenericIPAddressField( widget=django.forms.TextInput(attrs={'class': 'input input-mini'}), 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'}), required=False) - pm_password = django.forms.CharField(label=_("Power Management Password"), - required=False, widget=django.forms.PasswordInput(render_value=False, + pm_password = django.forms.CharField( + label=_("Power Management Password"), + required=False, widget=django.forms.PasswordInput( + render_value=False, attrs={'class': 'input input-mini'})) # 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, widget=tuskar_ui.forms.NumberInput(attrs={ 'class': 'input number_input_slim', @@ -84,5 +94,5 @@ class BaseNodeFormSet(django.forms.formsets.BaseFormSet): values[field][value] = form -NodeFormset = django.forms.formsets.formset_factory(NodeForm, extra=1, - can_delete=True, formset=BaseNodeFormSet) +NodeFormset = django.forms.formsets.formset_factory( + NodeForm, extra=1, can_delete=True, formset=BaseNodeFormSet) diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tables.py b/tuskar_ui/infrastructure/resource_management/nodes/tables.py index b3b45a15d..992ea23ec 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tables.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tables.py @@ -32,8 +32,8 @@ class DeleteNodes(tables.DeleteAction): node = tuskar.Node.get(request, obj_id) rack = node.rack nodes = [{'id': node_id} - for node_id in rack.node_ids - if node_id != obj_id] + for node_id in rack.node_ids + if node_id != obj_id] tuskar.Rack.update(request, rack.id, {'nodes': nodes}) except Exception: exceptions.handle(request, _("Error deleting node.")) @@ -54,7 +54,7 @@ class NodesTable(tables.DataTable): link=("horizon:infrastructure:resource_management:nodes:detail")) mac_address = tables.Column("mac_address", verbose_name=_("MAC Address")) pm_address = tables.Column("pm_address", - verbose_name=_("Management Address")) + verbose_name=_("Management Address")) status = tables.Column("status", verbose_name=_("Status")) usage = tables.Column("usage", verbose_name=_("Usage")) @@ -87,13 +87,13 @@ class NodesFormsetTable(tuskar_ui.tables.FormsetDataTable): local_gb = tables.Column('local_gb', verbose_name=_("Local Disk (GB)")) pm_address = tables.Column('pm_address', - verbose_name=_("Power Management IP")) + verbose_name=_("Power Management IP")) pm_user = tables.Column('pm_user', verbose_name=_("Power Management User")) pm_password = tables.Column('pm_password', - verbose_name=_("Power Management Password")) + verbose_name=_("Power Management Password")) terminal_port = tables.Column('terminal_port', - verbose_name=_("Terminal Port")) + verbose_name=_("Terminal Port")) # This is needed for the formset with can_delete=True DELETE = tables.Column('DELETE', verbose_name=_("Delete")) diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tabs.py b/tuskar_ui/infrastructure/resource_management/nodes/tabs.py index 5db0be8ff..55de72907 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tabs.py @@ -32,7 +32,8 @@ class OverviewTab(tabs.Tab): running_instances = len(node.running_virtual_machines) except requests.exceptions.ConnectionError: running_instances = _("Unknown") - messages.warning(request, + messages.warning( + request, _("Can't retrieve the running instances from the overcloud.")) return { 'node': node, diff --git a/tuskar_ui/infrastructure/resource_management/nodes/tests.py b/tuskar_ui/infrastructure/resource_management/nodes/tests.py index 433031d6e..b34a1b222 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/tests.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/tests.py @@ -34,8 +34,9 @@ class NodeViewTests(test.BaseAdminViewTests): self.mox.ReplayAll() res = self.client.get(self.unracked_page) - self.assertTemplateUsed(res, - 'infrastructure/resource_management/nodes/unracked.html') + self.assertTemplateUsed( + res, + 'infrastructure/resource_management/nodes/unracked.html') unracked_nodes_table = res.context['unracked_nodes_table'].data self.assertItemsEqual(unracked_nodes_table, unracked_nodes) @@ -86,6 +87,7 @@ class NodeViewTests(test.BaseAdminViewTests): args=[node.id]) res = self.client.get(url) - self.assertRedirectsNoFollow(res, + self.assertRedirectsNoFollow( + res, urlresolvers.reverse('horizon:infrastructure:resource_management:' 'index')) diff --git a/tuskar_ui/infrastructure/resource_management/nodes/urls.py b/tuskar_ui/infrastructure/resource_management/nodes/urls.py index 96f6f48b2..c714773f0 100644 --- a/tuskar_ui/infrastructure/resource_management/nodes/urls.py +++ b/tuskar_ui/infrastructure/resource_management/nodes/urls.py @@ -21,7 +21,8 @@ NODES = r'^(?P[^/]+)/%s$' 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(r'^unracked/$', views.UnrackedView.as_view(), diff --git a/tuskar_ui/infrastructure/resource_management/racks/forms.py b/tuskar_ui/infrastructure/resource_management/racks/forms.py index 0ad8e0bab..cc25e3fe5 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/forms.py +++ b/tuskar_ui/infrastructure/resource_management/racks/forms.py @@ -77,7 +77,7 @@ class UploadRack(forms.SelfHandlingForm): racks = CSVRack.from_str(base64.b64decode(racks_str)) # get the resource class ids by resource class names rclass_ids = dict((rc.name, rc.id) for rc in - tuskar.ResourceClass.list(request)) + tuskar.ResourceClass.list(request)) for rack in racks: try: tuskar.Rack.create( diff --git a/tuskar_ui/infrastructure/resource_management/racks/tests.py b/tuskar_ui/infrastructure/resource_management/racks/tests.py index 9c514d438..899c49db7 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/tests.py +++ b/tuskar_ui/infrastructure/resource_management/racks/tests.py @@ -117,7 +117,7 @@ class RackViewTests(test.BaseAdminViewTests): self.mox.ReplayAll() url = urlresolvers.reverse('horizon:infrastructure:' - 'resource_management:racks:edit', args=[1]) + 'resource_management:racks:edit', args=[1]) res = self.client.get(url) self.assertEqual(res.status_code, 200) self.assertTemplateUsed(res, 'infrastructure/_workflow_base.html') @@ -232,12 +232,12 @@ class RackViewTests(test.BaseAdminViewTests): rack = self.client.get(url) self.assertEqual(rack.status_code, 200) - self.assertTemplateUsed(rack, - 'infrastructure/resource_management/racks/upload.html') + self.assertTemplateUsed( + rack, 'infrastructure/resource_management/racks/upload.html') def test_upload_rack_upload(self): csv_data = ('Rack1,rclass1,192.168.111.0/24,regionX,f0:dd:f1:da:f9:b5 ' - 'f2:de:f1:da:f9:66 f2:de:ff:da:f9:67') + 'f2:de:f1:da:f9:66 f2:de:ff:da:f9:67') temp_file = tempfile.TemporaryFile() temp_file.write(csv_data) temp_file.flush() @@ -247,37 +247,37 @@ class RackViewTests(test.BaseAdminViewTests): url = urlresolvers.reverse('horizon:infrastructure:' 'resource_management:racks:upload') resp = self.client.post(url, data) - self.assertTemplateUsed(resp, - 'infrastructure/resource_management/racks/upload.html') + self.assertTemplateUsed( + resp, 'infrastructure/resource_management/racks/upload.html') self.assertNoFormErrors(resp) self.assertEqual(resp.context['form']['uploaded_data'].value(), - base64.b64encode(csv_data)) + base64.b64encode(csv_data)) def test_upload_rack_upload_with_error(self): data = {'upload': '1'} url = urlresolvers.reverse('horizon:infrastructure:' 'resource_management:racks:upload') resp = self.client.post(url, data) - self.assertTemplateUsed(resp, - 'infrastructure/resource_management/racks/upload.html') + self.assertTemplateUsed( + resp, 'infrastructure/resource_management/racks/upload.html') self.assertFormErrors(resp, 1) self.assertEqual(resp.context['form']['uploaded_data'].value(), - None) + None) @test.create_stubs({tuskar.Rack: ('create',), tuskar.ResourceClass: ('list',)}) def test_upload_rack_create(self): tuskar.Rack.create(mox.IsA(http.HttpRequest), - name='Rack1', - resource_class_id='1', - location='regionX', - subnet='192.168.111.0/24').AndReturn(None) + name='Rack1', + resource_class_id='1', + location='regionX', + subnet='192.168.111.0/24').AndReturn(None) tuskar.ResourceClass.list( mox.IsA(http.HttpRequest)).AndReturn( self.tuskar_resource_classes.list()) self.mox.ReplayAll() csv_data = ('Rack1,rclass1,192.168.111.0/24,regionX,f0:dd:f1:da:f9:b5 ' - 'f2:de:f1:da:f9:66 f2:de:ff:da:f9:67') + 'f2:de:f1:da:f9:66 f2:de:ff:da:f9:67') data = {'uploaded_data': base64.b64encode(csv_data), 'add_racks': '1'} url = urlresolvers.reverse('horizon:infrastructure:' @@ -369,7 +369,7 @@ class RackViewTests(test.BaseAdminViewTests): @test.create_stubs({ tuskar.Rack: ('get', 'list_nodes', 'list_flavors', 'update', - 'node_ids'), + 'node_ids'), tuskar.ResourceClass: ('get',), tuskar.Node: ('get',), tuskar.BaremetalNode: ('get',), @@ -387,12 +387,13 @@ class RackViewTests(test.BaseAdminViewTests): tuskar.Rack.get(mox.IsA(http.HttpRequest), rack.id).AndReturn(rack) tuskar.Node.get(mox.IsA(http.HttpRequest), - baremetal_node.id).AndReturn(tuskar_node) + baremetal_node.id).AndReturn(tuskar_node) tuskar.Rack.get(None, rack.id).AndReturn(rack) # called by node.rack tuskar.Rack.update(mox.IsA(http.HttpRequest), rack.id, - {'nodes': [{'id': node_id} - for node_id in tuskar.Rack.node_ids - if node_id != baremetal_node.id]}).AndReturn(rack) + {'nodes': [{'id': node_id} + for node_id in tuskar.Rack.node_ids + if node_id != baremetal_node.id]} + ).AndReturn(rack) self.mox.ReplayAll() url = urlresolvers.reverse( diff --git a/tuskar_ui/infrastructure/resource_management/racks/urls.py b/tuskar_ui/infrastructure/resource_management/racks/urls.py index 21be7bf42..58a1cf58e 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/urls.py +++ b/tuskar_ui/infrastructure/resource_management/racks/urls.py @@ -20,7 +20,8 @@ RACKS = r'^(?P[^/]+)/%s$' 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'^upload/$', views.UploadView.as_view(), name='upload'), urls.url(r'^usage_data$', diff --git a/tuskar_ui/infrastructure/resource_management/racks/workflows.py b/tuskar_ui/infrastructure/resource_management/racks/workflows.py index 9dc3b05ff..19c51f90f 100644 --- a/tuskar_ui/infrastructure/resource_management/racks/workflows.py +++ b/tuskar_ui/infrastructure/resource_management/racks/workflows.py @@ -33,7 +33,8 @@ class RackCreateInfoAction(workflows.Action): name = forms.RegexField(label=_("Name"), max_length=25, regex=r'^[\w\.\- ]+$', - error_messages={'invalid': _('Name may only ' + error_messages={'invalid': _( + 'Name may only ' 'contain letters, numbers, underscores, ' 'periods and hyphens.')}) location = forms.CharField(label=_("Location")) @@ -50,7 +51,7 @@ class RackCreateInfoAction(workflows.Action): except Exception: racks = [] exceptions.check_message(['Connection', 'refused'], - _("Unable to retrieve rack list.")) + _("Unable to retrieve rack list.")) raise # Validations: detect duplicates @@ -213,7 +214,8 @@ class CreateRack(workflows.Workflow): node_ids.append({'id': node_id}) try: # 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'], location=data['location'], subnet=data['subnet'], nodes=node_ids) @@ -239,7 +241,7 @@ class EditRack(CreateRack): def handle(self, request, data): node_ids = [{'id': self.create_or_update_node(node_data)} - for node_data in data['nodes']] + for node_data in data['nodes']] try: rack_id = self.context['rack_id'] data['nodes'] = node_ids diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/tables.py b/tuskar_ui/infrastructure/resource_management/resource_classes/tables.py index c8eecef97..9075fd3b9 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/tables.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/tables.py @@ -70,14 +70,15 @@ class ResourcesClassFilterAction(tables.FilterAction): class ResourceClassesTable(tables.DataTable): - name = tables.Column("name", link=("horizon:infrastructure:" - "resource_management:resource_classes:detail"), + name = tables.Column( + "name", link=("horizon:infrastructure:" + "resource_management:resource_classes:detail"), verbose_name=_("Class Name")) service_type = tables.Column("service_type", verbose_name=_("Class Type")) racks_count = tables.Column("racks_count", verbose_name=_("Racks"), - empty_value="0") + empty_value="0") nodes_count = tables.Column("nodes_count", verbose_name=_("Nodes"), - empty_value="0") + empty_value="0") class Meta: name = "resource_classes" @@ -130,7 +131,7 @@ class UpdateRacksClass(tables.LinkAction): def get_link_url(self, datum=None): url = ("horizon:infrastructure:resource_management:resource_classes:" - "update_racks") + "update_racks") return "%s?step=%s" % ( urlresolvers.reverse( url, @@ -145,7 +146,7 @@ class UpdateFlavorsClass(tables.LinkAction): def get_link_url(self, datum=None): url = ("horizon:infrastructure:resource_management:resource_classes:" - "update_flavors") + "update_flavors") resource_class_id = self.table.kwargs.get('resource_class_id') return "%s?step=%s" % ( urlresolvers.reverse(url, args=(resource_class_id,)), @@ -200,7 +201,7 @@ class FlavorsTable(tables.DataTable): class FlavorsFormsetTable(tuskar_ui.tables.FormsetDataTableMixin, - FlavorsTable): + FlavorsTable): name = tables.Column( 'name', diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/tabs.py b/tuskar_ui/infrastructure/resource_management/resource_classes/tabs.py index f17931595..fcdbbf5a1 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/tabs.py @@ -56,7 +56,7 @@ class FlavorsTab(tabs.TableTab): name = _("Flavors") slug = "flavors" template_name = ("infrastructure/resource_management/resource_classes/" - "_detail_flavors.html") + "_detail_flavors.html") def get_flavors_table_data(self): try: diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py b/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py index e73723627..aa4415885 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/tests.py @@ -149,7 +149,8 @@ class ResourceClassViewTests(test.BaseAdminViewTests): 'racks-MAX_NUM_FORMS': 1000, } res = self.client.post(url, form_data) - self.assertRedirectsNoFollow(res, + self.assertRedirectsNoFollow( + res, ("%s?tab=resource_management_tabs__resource_classes_tab" % urlresolvers. 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['racks_table_table'].data, racks) self.assertEqual(res.status_code, 200) - self.assertTemplateUsed(res, + self.assertTemplateUsed( + res, 'infrastructure/resource_management/resource_classes/detail.html') @test.create_stubs({ diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/views.py b/tuskar_ui/infrastructure/resource_management/resource_classes/views.py index de451676e..df5d3a352 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/views.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/views.py @@ -63,7 +63,7 @@ class UpdateView(tuskar_workflows.WorkflowView): resource_class_id) except Exception: redirect = urlresolvers.reverse('horizon:infrastructure:' - 'resource_management:index') + 'resource_management:index') msg = _('Unable to retrieve resource class details.') exceptions.handle(self.request, msg, redirect=redirect) diff --git a/tuskar_ui/infrastructure/resource_management/resource_classes/workflows.py b/tuskar_ui/infrastructure/resource_management/resource_classes/workflows.py index 66d6f04a2..8df5e4cbb 100644 --- a/tuskar_ui/infrastructure/resource_management/resource_classes/workflows.py +++ b/tuskar_ui/infrastructure/resource_management/resource_classes/workflows.py @@ -65,7 +65,7 @@ class ResourceClassInfoAction(workflows.Action): images, more = glance.image_list_detailed(self.request) except Exception: exceptions.handle(self.request, - _('Unable to retrieve image list.')) + _('Unable to retrieve image list.')) else: self.fields['image_id'].choices = [ (image.id, image.name) for image in images] @@ -141,7 +141,7 @@ class CreateResourceClassFlavors(tuskar_ui.workflows.TableStep): except Exception: flavors = [] exceptions.handle(self.workflow.request, - _('Unable to retrieve resource flavors list.')) + _('Unable to retrieve resource flavors list.')) return flavors diff --git a/tuskar_ui/infrastructure/resource_management/tabs.py b/tuskar_ui/infrastructure/resource_management/tabs.py index c5d5b9277..106096b58 100644 --- a/tuskar_ui/infrastructure/resource_management/tabs.py +++ b/tuskar_ui/infrastructure/resource_management/tabs.py @@ -71,7 +71,7 @@ class RacksTab(ProvisioningInfoMixin, tabs.TableTab): name = _("Racks") slug = "racks_tab" template_name = ("infrastructure/resource_management/" - "racks/_index_table.html") + "racks/_index_table.html") def get_racks_data(self): try: @@ -98,7 +98,7 @@ class ResourceClassesTab(ProvisioningInfoMixin, tabs.TableTab): name = _("Classes") slug = "resource_classes_tab" template_name = ("infrastructure/resource_management/" - "resource_classes/_index_table.html") + "resource_classes/_index_table.html") #preload = False buggy, checkboxes doesn't work wit table actions def get_resource_classes_data(self): diff --git a/tuskar_ui/infrastructure/resource_management/urls.py b/tuskar_ui/infrastructure/resource_management/urls.py index 18e585d93..9a5c76211 100644 --- a/tuskar_ui/infrastructure/resource_management/urls.py +++ b/tuskar_ui/infrastructure/resource_management/urls.py @@ -25,7 +25,8 @@ from tuskar_ui.infrastructure.resource_management import views 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'^provision$', views.ProvisionView.as_view(), name='provision'), @@ -39,5 +40,6 @@ urlpatterns = defaults.patterns('', ) if conf.settings.DEBUG: - urlpatterns += defaults.patterns('', defaults.url(r'^qunit$', - defaults.include(test_urls, namespace='tests'))) + urlpatterns += defaults.patterns( + '', defaults.url(r'^qunit$', + defaults.include(test_urls, namespace='tests'))) diff --git a/tuskar_ui/infrastructure/service_management/urls.py b/tuskar_ui/infrastructure/service_management/urls.py index 89edf3290..23dcbd5f3 100644 --- a/tuskar_ui/infrastructure/service_management/urls.py +++ b/tuskar_ui/infrastructure/service_management/urls.py @@ -17,6 +17,7 @@ from django.conf.urls import defaults from tuskar_ui.infrastructure.service_management import views -urlpatterns = defaults.patterns('', +urlpatterns = defaults.patterns( + '', defaults.url(r'^$', views.IndexView.as_view(), name='index'), ) diff --git a/tuskar_ui/tables.py b/tuskar_ui/tables.py index 7b129c989..5788791f3 100644 --- a/tuskar_ui/tables.py +++ b/tuskar_ui/tables.py @@ -110,8 +110,8 @@ class FormsetCell(BaseCell): self.field = None else: if self.field.errors: - self.attrs['class'] = (self.attrs.get('class', '') + - ' error control-group') + self.attrs['class'] = ( + '%s error control-group' % self.attrs.get('class', '')) self.attrs['title'] = ' '.join( unicode(error) for error in self.field.errors) @@ -137,7 +137,7 @@ class FormsetRow(BaseRow): def render(self): return loader.render_to_string(self.template_path, - {"row": self, "form": self.form}) + {"row": self, "form": self.form}) class FormsetDataTableMixin(object): diff --git a/tuskar_ui/test/api_tests/tuskar_tests.py b/tuskar_ui/test/api_tests/tuskar_tests.py index 792b38fc2..de3b89255 100644 --- a/tuskar_ui/test/api_tests/tuskar_tests.py +++ b/tuskar_ui/test/api_tests/tuskar_tests.py @@ -58,7 +58,8 @@ class TuskarApiTests(test.APITestCase): node = self.baremetalclient_nodes.first() 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) self.mox.ReplayAll() diff --git a/tuskar_ui/test/formset_table_tests.py b/tuskar_ui/test/formset_table_tests.py index 8f2dea786..b0a57a0f8 100644 --- a/tuskar_ui/test/formset_table_tests.py +++ b/tuskar_ui/test/formset_table_tests.py @@ -37,7 +37,7 @@ class FormsetTableTests(test.TestCase): value = django.forms.IntegerField() TableFormset = django.forms.formsets.formset_factory(TableForm, - extra=0) + extra=0) class Table(tuskar_ui.tables.FormsetDataTable): formset_class = TableFormset diff --git a/tuskar_ui/test/urls.py b/tuskar_ui/test/urls.py index a68c63f03..2b94e24b5 100644 --- a/tuskar_ui/test/urls.py +++ b/tuskar_ui/test/urls.py @@ -16,6 +16,7 @@ from django.conf.urls import defaults 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"), name='qunit_tests'))