diff --git a/netbox/extras/constants.py b/netbox/extras/constants.py index 7ca48f1d7..9707d9121 100644 --- a/netbox/extras/constants.py +++ b/netbox/extras/constants.py @@ -53,6 +53,7 @@ EXPORTTEMPLATE_MODELS = [ 'site', 'region', 'rack', 'rackgroup', 'manufacturer', 'devicetype', 'device', # DCIM 'consoleport', 'powerport', 'interfaceconnection', 'virtualchassis', # DCIM 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'service', # IPAM + 'secret', # Secrets 'tenant', # Tenancy 'cluster', 'virtualmachine', # Virtualization ] diff --git a/netbox/secrets/models.py b/netbox/secrets/models.py index 9cb2b3892..464129975 100644 --- a/netbox/secrets/models.py +++ b/netbox/secrets/models.py @@ -376,6 +376,14 @@ class Secret(ChangeLoggedModel, CustomFieldModel): def get_absolute_url(self): return reverse('secrets:secret', args=[self.pk]) + def to_csv(self): + return ( + self.device, + self.role, + self.name, + self.plaintext or '', + ) + def _pad(self, s): """ Prepend the length of the plaintext (2B) and pad with garbage to a multiple of 16B (minimum of 64B). diff --git a/netbox/templates/secrets/secret_list.html b/netbox/templates/secrets/secret_list.html index 0a70e1087..a41c0b4ee 100644 --- a/netbox/templates/secrets/secret_list.html +++ b/netbox/templates/secrets/secret_list.html @@ -6,6 +6,7 @@ {% if perms.secrets.add_secret %} {% import_button 'secrets:secret_import' %} {% endif %} + {% export_button content_type %}