Skip to content

Instantly share code, notes, and snippets.

@gabrielhurley
Created November 28, 2011 22:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gabrielhurley/1402492 to your computer and use it in GitHub Desktop.
Save gabrielhurley/1402492 to your computer and use it in GitHub Desktop.
Sample API for programmatic table generation
from horizon import api
from horizon.dashboards.nova.keypairs import forms as keypair_forms
from nebula_dashboard.utils import tables
def DeleteKeyPairs(tables.TableAction):
name = "delete"
def handle(self, data_table, request, object_ids):
failures = 0
for obj in objects:
try:
api.nova.keypair_delete(obj.id)
except Exception, e:
falures += 1
messages.error(request, _("Error deleting keypair: %s") % e)
LOG.exception("Error deleting keypair.")
if failures:
return False
return True
def ImportKeyPair(tables.TableAction):
name = "import"
form = keypair_forms.ImportKeypair
handles_multiple = False # Optional, same as only having a "single" method
def single(self, data_table, request, object_id):
keypair, handled = self.form.maybe_handle(request)
if handled:
return keypair
return False
class KeyPairTable(tables.DataTable):
name = tables.Column("name", sortable=True)
fingerprint = tables.Column("fingerprint")
class Meta:
name = "KeyPairs"
resource = api.nova.KeyPair # Optional, for potential introspection
columns = ('name', 'fingerprint') # Optional, for ordering/exclusion
table_actions = (DeleteKeyPairs, ImportKeyPair)
row_actions = (DeleteKeyPairs,)
# Usage
table = KeyPairTable(api.nova.keypair_list(request))
# Template
{{ table.render }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment