From 43834250608d0250966c02c39453694a824a941d Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 9 Jul 2021 10:57:07 -0400 Subject: [PATCH 1/4] Delete pre-2.11.0 migrations --- netbox/circuits/migrations/0001_initial.py | 62 --- .../migrations/0002_auto_20160622_1821.py | 41 -- .../0003_provider_32bit_asn_support.py | 19 - .../migrations/0004_circuit_add_tenant.py | 20 - .../0005_circuit_add_upstream_speed.py | 18 - .../circuits/migrations/0006_terminations.py | 97 ---- .../0007_circuit_add_description.py | 18 - ...termination_interface_protect_on_delete.py | 19 - .../migrations/0009_unicode_literals.py | 79 ---- .../migrations/0010_circuit_status.py | 18 - netbox/circuits/migrations/0011_tags.py | 25 -- .../migrations/0012_change_logging.py | 43 -- netbox/circuits/migrations/0013_cables.py | 89 ---- .../0014_circuittermination_description.py | 18 - .../migrations/0015_custom_tag_models.py | 25 -- .../migrations/0016_3569_circuit_fields.py | 39 -- .../0017_circuittype_description.py | 18 - .../0018_standardize_description.py | 28 -- .../0019_nullbooleanfield_to_booleanfield.py | 18 - .../migrations/0020_custom_field_data.py | 22 - .../migrations/0021_cache_cable_peer.py | 49 -- netbox/circuits/migrations/0022_cablepath.py | 26 -- ..._circuittermination_port_speed_optional.py | 18 - .../0024_standardize_name_length.py | 38 -- .../migrations/0025_standardize_models.py | 47 -- .../migrations/0026_mark_connected.py | 16 - .../migrations/0027_providernetwork.py | 65 --- .../0028_cache_circuit_terminations.py | 37 -- .../migrations/0029_circuit_tracing.py | 32 -- netbox/dcim/migrations/0001_initial.py | 296 ------------ .../migrations/0002_auto_20160622_1821.py | 112 ----- .../migrations/0003_auto_20160628_1721.py | 23 - .../migrations/0004_auto_20160701_2049.py | 54 --- .../migrations/0005_auto_20160706_1722.py | 24 - .../0006_add_device_primary_ip4_ip6.py | 25 -- .../migrations/0007_device_copy_primary_ip.py | 39 -- .../0008_device_remove_primary_ip.py | 17 - .../migrations/0009_site_32bit_asn_support.py | 19 - ...010_devicebay_installed_device_set_null.py | 19 - .../migrations/0011_devicetype_part_number.py | 18 - .../0012_site_rack_device_add_tenant.py | 30 -- .../0013_add_interface_form_factors.py | 23 - .../migrations/0014_rack_add_type_width.py | 23 - .../0015_rack_add_u_height_validator.py | 19 - .../0016_module_add_manufacturer.py | 19 - netbox/dcim/migrations/0017_rack_add_role.py | 31 -- .../migrations/0018_device_add_asset_tag.py | 19 - .../migrations/0019_new_iface_form_factors.py | 23 - .../dcim/migrations/0020_rack_desc_units.py | 18 - .../dcim/migrations/0021_add_ff_flexstack.py | 29 -- .../migrations/0022_color_names_to_rgb.py | 55 --- .../migrations/0023_devicetype_comments.py | 18 - .../0024_site_add_contact_fields.py | 28 -- .../0025_devicetype_add_interface_ordering.py | 18 - .../migrations/0026_add_rack_reservations.py | 31 -- .../dcim/migrations/0027_device_add_site.py | 19 - .../0028_device_copy_rack_to_site.py | 21 - .../migrations/0029_allow_rackless_devices.py | 24 - .../dcim/migrations/0030_interface_add_lag.py | 29 -- netbox/dcim/migrations/0031_regions.py | 36 -- .../0032_device_increase_name_length.py | 19 - .../0033_rackreservation_rack_editable.py | 19 - .../0034_rename_module_to_inventoryitem.py | 33 -- .../0035_device_expand_status_choices.py | 25 -- .../migrations/0036_add_ff_juniper_vcp.py | 23 - .../dcim/migrations/0037_unicode_literals.py | 207 --------- .../migrations/0038_wireless_interfaces.py | 23 - .../0039_interface_add_enabled_mtu.py | 23 - ...inventoryitem_add_asset_tag_description.py | 24 - .../migrations/0041_napalm_integration.py | 38 -- .../migrations/0042_interface_ff_10ge_cx4.py | 23 - .../0043_device_component_name_lengths.py | 68 --- netbox/dcim/migrations/0044_virtualization.py | 30 -- .../migrations/0045_devicerole_vm_role.py | 18 - .../0046_rack_lengthen_facility_id.py | 19 - .../0047_more_100ge_form_factors.py | 23 - netbox/dcim/migrations/0048_rack_serial.py | 18 - .../0049_rackreservation_change_user.py | 20 - .../migrations/0050_interface_vlan_tagging.py | 30 -- .../migrations/0051_rackreservation_tenant.py | 20 - .../dcim/migrations/0052_virtual_chassis.py | 42 -- .../migrations/0053_platform_manufacturer.py | 24 - .../0054_site_status_timezone_description.py | 29 -- .../0055_virtualchassis_ordering.py | 23 - netbox/dcim/migrations/0056_django2.py | 24 - netbox/dcim/migrations/0057_tags.py | 75 ---- .../0058_relax_rack_naming_constraints.py | 21 - .../0059_site_latitude_longitude.py | 23 - netbox/dcim/migrations/0060_change_logging.py | 133 ------ .../migrations/0061_platform_napalm_args.py | 19 - netbox/dcim/migrations/0062_interface_mtu.py | 29 -- .../0063_device_local_context_data.py | 19 - .../0064_remove_platform_rpc_client.py | 17 - .../dcim/migrations/0065_front_rear_ports.py | 131 ------ netbox/dcim/migrations/0066_cables.py | 322 ------------- .../0067_device_type_remove_qualifiers.py | 29 -- .../dcim/migrations/0068_rack_new_fields.py | 38 -- .../0069_deprecate_nullablecharfield.py | 38 -- .../dcim/migrations/0070_custom_tag_models.py | 85 ---- .../0071_device_components_add_description.py | 38 -- netbox/dcim/migrations/0072_powerfeeds.py | 134 ------ .../0073_interface_form_factor_to_type.py | 23 - ...ncrease_field_length_platform_name_slug.py | 23 - netbox/dcim/migrations/0075_cable_devices.py | 60 --- .../migrations/0076_console_port_types.py | 33 -- netbox/dcim/migrations/0077_power_types.py | 33 -- .../dcim/migrations/0078_3569_site_fields.py | 35 -- .../dcim/migrations/0079_3569_rack_fields.py | 92 ---- .../migrations/0080_3569_devicetype_fields.py | 39 -- .../migrations/0081_3569_device_fields.py | 65 --- .../migrations/0082_3569_interface_fields.py | 147 ------ .../dcim/migrations/0082_3569_port_fields.py | 93 ---- .../dcim/migrations/0083_3569_cable_fields.py | 106 ----- .../migrations/0084_3569_powerfeed_fields.py | 100 ----- .../0085_3569_poweroutlet_fields.py | 62 --- .../migrations/0086_device_name_nonunique.py | 23 - .../dcim/migrations/0087_role_descriptions.py | 23 - .../0088_powerfeed_available_power.py | 18 - .../migrations/0089_deterministic_ordering.py | 21 - .../0090_cable_termination_models.py | 24 - .../migrations/0091_interface_type_other.py | 20 - .../migrations/0092_fix_rack_outer_unit.py | 26 -- .../0093_device_component_ordering.py | 147 ------ ...0094_device_component_template_ordering.py | 138 ------ .../migrations/0095_primary_model_ordering.py | 70 --- .../migrations/0096_interface_ordering.py | 53 --- .../0097_interfacetemplate_type_other.py | 20 - .../dcim/migrations/0098_devicetype_images.py | 23 - .../0099_powerfeed_negative_voltage.py | 19 - .../migrations/0100_mptt_remove_indexes.py | 28 -- .../dcim/migrations/0101_nested_rackgroups.py | 43 -- .../0102_nested_rackgroups_rebuild.py | 21 - .../0103_standardize_description.py | 98 ---- .../0104_correct_infiniband_types.py | 34 -- .../0105_interface_name_collation.py | 18 - .../migrations/0106_role_default_color.py | 24 - .../dcim/migrations/0107_component_labels.py | 96 ---- netbox/dcim/migrations/0108_add_tags.py | 30 -- .../migrations/0109_interface_remove_vm.py | 24 - .../migrations/0110_virtualchassis_name.py | 46 -- .../0111_component_template_description.py | 53 --- .../migrations/0112_standardize_components.py | 120 ----- .../0113_nullbooleanfield_to_booleanfield.py | 43 -- .../dcim/migrations/0114_update_jsonfield.py | 23 - .../migrations/0115_rackreservation_order.py | 17 - .../migrations/0116_rearport_max_positions.py | 34 -- .../dcim/migrations/0117_custom_field_data.py | 60 --- .../migrations/0118_inventoryitem_mptt.py | 44 -- .../0119_inventoryitem_mptt_rebuild.py | 26 -- .../dcim/migrations/0120_cache_cable_peer.py | 141 ------ netbox/dcim/migrations/0121_cablepath.py | 108 ----- .../0122_standardize_name_length.py | 98 ---- .../migrations/0123_standardize_models.py | 422 ------------------ netbox/dcim/migrations/0124_mark_connected.py | 51 --- .../migrations/0125_console_port_speed.py | 21 - .../0126_rename_rackgroup_location.py | 39 -- .../dcim/migrations/0127_device_location.py | 17 - .../0128_device_location_populate.py | 24 - .../dcim/migrations/0129_interface_parent.py | 17 - netbox/dcim/migrations/0130_sitegroup.py | 39 -- netbox/extras/migrations/0001_initial.py | 80 ---- .../extras/migrations/0002_custom_fields.py | 66 --- .../0003_exporttemplate_add_description.py | 23 - ...4_topologymap_change_comma_to_semicolon.py | 18 - .../0005_useraction_add_bulk_create.py | 18 - .../migrations/0006_add_imageattachments.py | 32 -- .../migrations/0007_unicode_literals.py | 89 ---- netbox/extras/migrations/0008_reports.py | 52 --- .../migrations/0009_topologymap_type.py | 18 - .../0010_customfield_filter_logic.py | 47 -- netbox/extras/migrations/0011_django2.py | 29 -- netbox/extras/migrations/0012_webhooks.py | 34 -- netbox/extras/migrations/0013_objectchange.py | 38 -- .../extras/migrations/0014_configcontexts.py | 52 --- .../migrations/0015_remove_useraction.py | 24 - .../0016_exporttemplate_add_cable.py | 19 - .../0017_exporttemplate_mime_type_length.py | 18 - .../0018_exporttemplate_add_jinja2.py | 27 -- .../extras/migrations/0019_tag_taggeditem.py | 43 -- netbox/extras/migrations/0020_tag_data.py | 64 --- ...021_add_color_comments_changelog_to_tag.py | 34 -- netbox/extras/migrations/0022_custom_links.py | 48 -- .../migrations/0023_fix_tag_sequences.py | 14 - netbox/extras/migrations/0024_scripts.py | 22 - .../0025_objectchange_time_index.py | 18 - .../migrations/0026_webhook_ca_file_path.py | 18 - .../0027_webhook_additional_headers.py | 19 - .../migrations/0028_remove_topology_maps.py | 16 - .../0029_3569_customfield_fields.py | 69 --- .../0030_3569_objectchange_fields.py | 36 -- .../0031_3569_exporttemplate_fields.py | 35 -- .../migrations/0032_3569_webhook_fields.py | 35 -- .../0033_graph_type_template_language.py | 59 --- .../migrations/0034_configcontext_tags.py | 18 - .../migrations/0035_deterministic_ordering.py | 29 -- .../0036_contenttype_filters_to_q_objects.py | 39 -- .../0037_configcontexts_clusters.py | 24 - .../0038_webhook_template_support.py | 48 -- .../0039_update_features_content_types.py | 40 -- .../0040_standardize_description.py | 23 - .../extras/migrations/0041_tag_description.py | 23 - .../migrations/0042_customfield_manager.py | 20 - netbox/extras/migrations/0043_report.py | 22 - netbox/extras/migrations/0044_jobresult.py | 75 ---- .../0045_configcontext_changelog.py | 23 - .../migrations/0046_update_jsonfield.py | 28 -- netbox/extras/migrations/0047_tag_ordering.py | 17 - ...exporttemplate_remove_template_language.py | 17 - netbox/extras/migrations/0049_remove_graph.py | 16 - .../migrations/0050_customfield_changes.py | 65 --- .../migrations/0051_migrate_customfields.py | 109 ----- .../migrations/0052_customfield_cleanup.py | 26 -- .../0053_rename_webhook_obj_type.py | 18 - .../migrations/0054_standardize_models.py | 61 --- .../migrations/0055_objectchange_data.py | 28 -- .../migrations/0056_extend_configcontext.py | 22 - .../0057_customlink_rename_fields.py | 28 -- netbox/extras/migrations/0058_journalentry.py | 32 -- .../0059_exporttemplate_as_attachment.py | 16 - netbox/ipam/migrations/0001_initial.py | 156 ------- .../migrations/0002_vrf_add_enforce_unique.py | 18 - .../migrations/0003_ipam_add_vlangroups.py | 36 -- .../0004_ipam_vlangroup_uniqueness.py | 25 -- .../migrations/0005_auto_20160725_1842.py | 23 - .../migrations/0006_vrf_vlan_add_tenant.py | 25 -- .../0007_prefix_ipaddress_add_tenant.py | 25 -- .../migrations/0008_prefix_change_order.py | 17 - .../migrations/0009_ipaddress_add_status.py | 18 - .../migrations/0010_ipaddress_help_texts.py | 25 -- .../migrations/0011_rir_add_is_private.py | 18 - netbox/ipam/migrations/0012_services.py | 37 -- .../migrations/0013_prefix_add_is_pool.py | 35 -- .../0014_ipaddress_status_add_deprecated.py | 18 - netbox/ipam/migrations/0015_global_vlans.py | 24 - .../ipam/migrations/0016_unicode_literals.py | 131 ------ .../ipam/migrations/0017_ipaddress_roles.py | 23 - ...18_remove_service_uniqueness_constraint.py | 17 - netbox/ipam/migrations/0019_virtualization.py | 29 -- .../0020_ipaddress_add_role_carp.py | 18 - netbox/ipam/migrations/0021_vrf_ordering.py | 17 - netbox/ipam/migrations/0022_tags.py | 45 -- netbox/ipam/migrations/0023_change_logging.py | 103 ----- .../ipam/migrations/0024_vrf_allow_null_rd.py | 18 - .../ipam/migrations/0025_custom_tag_models.py | 45 -- .../0026_prefix_ordering_vrf_nulls_first.py | 18 - .../migrations/0027_ipaddress_add_dns_name.py | 19 - .../migrations/0028_3569_prefix_fields.py | 37 -- .../migrations/0029_3569_ipaddress_fields.py | 69 --- .../ipam/migrations/0030_3569_vlan_fields.py | 36 -- .../migrations/0031_3569_service_fields.py | 35 -- .../ipam/migrations/0032_role_description.py | 18 - .../migrations/0033_deterministic_ordering.py | 42 -- .../0034_fix_ipaddress_status_dhcp.py | 20 - netbox/ipam/migrations/0035_drop_ip_family.py | 38 -- .../0036_standardize_description.py | 58 --- .../migrations/0037_ipaddress_assignment.py | 40 -- .../ipam/migrations/0038_custom_field_data.py | 42 -- .../migrations/0039_service_ports_array.py | 43 -- .../ipam/migrations/0040_service_drop_port.py | 15 - netbox/ipam/migrations/0041_routetarget.py | 44 -- .../0042_standardize_name_length.py | 53 --- .../0043_add_tenancy_to_aggregates.py | 20 - .../migrations/0044_standardize_models.py | 77 ---- .../ipam/migrations/0045_vlangroup_scope.py | 36 -- .../0046_set_vlangroup_scope_types.py | 27 -- netbox/tenancy/migrations/0001_initial.py | 46 -- .../migrations/0002_tenant_group_optional.py | 19 - .../migrations/0003_unicode_literals.py | 18 - netbox/tenancy/migrations/0004_tags.py | 20 - .../tenancy/migrations/0005_change_logging.py | 33 -- .../migrations/0006_custom_tag_models.py | 20 - .../migrations/0007_nested_tenantgroups.py | 43 -- .../0008_nested_tenantgroups_rebuild.py | 21 - .../0009_standardize_description.py | 23 - .../migrations/0010_custom_field_data.py | 17 - .../0011_standardize_name_length.py | 33 -- .../migrations/0012_standardize_models.py | 27 -- netbox/users/migrations/0001_api_tokens.py | 33 -- .../users/migrations/0002_unicode_literals.py | 18 - .../migrations/0003_token_permissions.py | 17 - .../0004_standardize_description.py | 18 - netbox/users/migrations/0005_userconfig.py | 28 -- .../migrations/0006_create_userconfigs.py | 27 -- .../users/migrations/0007_proxy_group_user.py | 46 -- .../users/migrations/0008_objectpermission.py | 35 -- .../migrations/0009_replicate_permissions.py | 54 --- .../users/migrations/0010_update_jsonfield.py | 23 - .../migrations/0011_standardize_models.py | 21 - .../migrations/0001_virtualization.py | 84 ---- .../0002_virtualmachine_add_status.py | 18 - .../migrations/0003_cluster_add_site.py | 20 - .../0004_virtualmachine_add_role.py | 20 - .../virtualization/migrations/0005_django2.py | 19 - netbox/virtualization/migrations/0006_tags.py | 25 -- .../migrations/0007_change_logging.py | 53 --- .../0008_virtualmachine_local_context_data.py | 19 - .../migrations/0009_custom_tag_models.py | 25 -- .../migrations/0010_cluster_add_tenant.py | 18 - .../0011_3569_virtualmachine_fields.py | 36 -- .../migrations/0012_vm_name_nonunique.py | 23 - .../migrations/0013_deterministic_ordering.py | 17 - .../0014_standardize_description.py | 23 - .../migrations/0015_vminterface.py | 44 -- .../migrations/0016_replicate_interfaces.py | 95 ---- .../migrations/0017_update_jsonfield.py | 18 - .../migrations/0018_custom_field_data.py | 22 - .../0019_standardize_name_length.py | 33 -- .../migrations/0020_standardize_models.py | 68 --- .../0021_virtualmachine_vcpus_decimal.py | 17 - .../migrations/0022_vminterface_parent.py | 17 - 310 files changed, 12762 deletions(-) delete mode 100644 netbox/circuits/migrations/0001_initial.py delete mode 100644 netbox/circuits/migrations/0002_auto_20160622_1821.py delete mode 100644 netbox/circuits/migrations/0003_provider_32bit_asn_support.py delete mode 100644 netbox/circuits/migrations/0004_circuit_add_tenant.py delete mode 100644 netbox/circuits/migrations/0005_circuit_add_upstream_speed.py delete mode 100644 netbox/circuits/migrations/0006_terminations.py delete mode 100644 netbox/circuits/migrations/0007_circuit_add_description.py delete mode 100644 netbox/circuits/migrations/0008_circuittermination_interface_protect_on_delete.py delete mode 100644 netbox/circuits/migrations/0009_unicode_literals.py delete mode 100644 netbox/circuits/migrations/0010_circuit_status.py delete mode 100644 netbox/circuits/migrations/0011_tags.py delete mode 100644 netbox/circuits/migrations/0012_change_logging.py delete mode 100644 netbox/circuits/migrations/0013_cables.py delete mode 100644 netbox/circuits/migrations/0014_circuittermination_description.py delete mode 100644 netbox/circuits/migrations/0015_custom_tag_models.py delete mode 100644 netbox/circuits/migrations/0016_3569_circuit_fields.py delete mode 100644 netbox/circuits/migrations/0017_circuittype_description.py delete mode 100644 netbox/circuits/migrations/0018_standardize_description.py delete mode 100644 netbox/circuits/migrations/0019_nullbooleanfield_to_booleanfield.py delete mode 100644 netbox/circuits/migrations/0020_custom_field_data.py delete mode 100644 netbox/circuits/migrations/0021_cache_cable_peer.py delete mode 100644 netbox/circuits/migrations/0022_cablepath.py delete mode 100644 netbox/circuits/migrations/0023_circuittermination_port_speed_optional.py delete mode 100644 netbox/circuits/migrations/0024_standardize_name_length.py delete mode 100644 netbox/circuits/migrations/0025_standardize_models.py delete mode 100644 netbox/circuits/migrations/0026_mark_connected.py delete mode 100644 netbox/circuits/migrations/0027_providernetwork.py delete mode 100644 netbox/circuits/migrations/0028_cache_circuit_terminations.py delete mode 100644 netbox/circuits/migrations/0029_circuit_tracing.py delete mode 100644 netbox/dcim/migrations/0001_initial.py delete mode 100644 netbox/dcim/migrations/0002_auto_20160622_1821.py delete mode 100644 netbox/dcim/migrations/0003_auto_20160628_1721.py delete mode 100644 netbox/dcim/migrations/0004_auto_20160701_2049.py delete mode 100644 netbox/dcim/migrations/0005_auto_20160706_1722.py delete mode 100644 netbox/dcim/migrations/0006_add_device_primary_ip4_ip6.py delete mode 100644 netbox/dcim/migrations/0007_device_copy_primary_ip.py delete mode 100644 netbox/dcim/migrations/0008_device_remove_primary_ip.py delete mode 100644 netbox/dcim/migrations/0009_site_32bit_asn_support.py delete mode 100644 netbox/dcim/migrations/0010_devicebay_installed_device_set_null.py delete mode 100644 netbox/dcim/migrations/0011_devicetype_part_number.py delete mode 100644 netbox/dcim/migrations/0012_site_rack_device_add_tenant.py delete mode 100644 netbox/dcim/migrations/0013_add_interface_form_factors.py delete mode 100644 netbox/dcim/migrations/0014_rack_add_type_width.py delete mode 100644 netbox/dcim/migrations/0015_rack_add_u_height_validator.py delete mode 100644 netbox/dcim/migrations/0016_module_add_manufacturer.py delete mode 100644 netbox/dcim/migrations/0017_rack_add_role.py delete mode 100644 netbox/dcim/migrations/0018_device_add_asset_tag.py delete mode 100644 netbox/dcim/migrations/0019_new_iface_form_factors.py delete mode 100644 netbox/dcim/migrations/0020_rack_desc_units.py delete mode 100644 netbox/dcim/migrations/0021_add_ff_flexstack.py delete mode 100644 netbox/dcim/migrations/0022_color_names_to_rgb.py delete mode 100644 netbox/dcim/migrations/0023_devicetype_comments.py delete mode 100644 netbox/dcim/migrations/0024_site_add_contact_fields.py delete mode 100644 netbox/dcim/migrations/0025_devicetype_add_interface_ordering.py delete mode 100644 netbox/dcim/migrations/0026_add_rack_reservations.py delete mode 100644 netbox/dcim/migrations/0027_device_add_site.py delete mode 100644 netbox/dcim/migrations/0028_device_copy_rack_to_site.py delete mode 100644 netbox/dcim/migrations/0029_allow_rackless_devices.py delete mode 100644 netbox/dcim/migrations/0030_interface_add_lag.py delete mode 100644 netbox/dcim/migrations/0031_regions.py delete mode 100644 netbox/dcim/migrations/0032_device_increase_name_length.py delete mode 100644 netbox/dcim/migrations/0033_rackreservation_rack_editable.py delete mode 100644 netbox/dcim/migrations/0034_rename_module_to_inventoryitem.py delete mode 100644 netbox/dcim/migrations/0035_device_expand_status_choices.py delete mode 100644 netbox/dcim/migrations/0036_add_ff_juniper_vcp.py delete mode 100644 netbox/dcim/migrations/0037_unicode_literals.py delete mode 100644 netbox/dcim/migrations/0038_wireless_interfaces.py delete mode 100644 netbox/dcim/migrations/0039_interface_add_enabled_mtu.py delete mode 100644 netbox/dcim/migrations/0040_inventoryitem_add_asset_tag_description.py delete mode 100644 netbox/dcim/migrations/0041_napalm_integration.py delete mode 100644 netbox/dcim/migrations/0042_interface_ff_10ge_cx4.py delete mode 100644 netbox/dcim/migrations/0043_device_component_name_lengths.py delete mode 100644 netbox/dcim/migrations/0044_virtualization.py delete mode 100644 netbox/dcim/migrations/0045_devicerole_vm_role.py delete mode 100644 netbox/dcim/migrations/0046_rack_lengthen_facility_id.py delete mode 100644 netbox/dcim/migrations/0047_more_100ge_form_factors.py delete mode 100644 netbox/dcim/migrations/0048_rack_serial.py delete mode 100644 netbox/dcim/migrations/0049_rackreservation_change_user.py delete mode 100644 netbox/dcim/migrations/0050_interface_vlan_tagging.py delete mode 100644 netbox/dcim/migrations/0051_rackreservation_tenant.py delete mode 100644 netbox/dcim/migrations/0052_virtual_chassis.py delete mode 100644 netbox/dcim/migrations/0053_platform_manufacturer.py delete mode 100644 netbox/dcim/migrations/0054_site_status_timezone_description.py delete mode 100644 netbox/dcim/migrations/0055_virtualchassis_ordering.py delete mode 100644 netbox/dcim/migrations/0056_django2.py delete mode 100644 netbox/dcim/migrations/0057_tags.py delete mode 100644 netbox/dcim/migrations/0058_relax_rack_naming_constraints.py delete mode 100644 netbox/dcim/migrations/0059_site_latitude_longitude.py delete mode 100644 netbox/dcim/migrations/0060_change_logging.py delete mode 100644 netbox/dcim/migrations/0061_platform_napalm_args.py delete mode 100644 netbox/dcim/migrations/0062_interface_mtu.py delete mode 100644 netbox/dcim/migrations/0063_device_local_context_data.py delete mode 100644 netbox/dcim/migrations/0064_remove_platform_rpc_client.py delete mode 100644 netbox/dcim/migrations/0065_front_rear_ports.py delete mode 100644 netbox/dcim/migrations/0066_cables.py delete mode 100644 netbox/dcim/migrations/0067_device_type_remove_qualifiers.py delete mode 100644 netbox/dcim/migrations/0068_rack_new_fields.py delete mode 100644 netbox/dcim/migrations/0069_deprecate_nullablecharfield.py delete mode 100644 netbox/dcim/migrations/0070_custom_tag_models.py delete mode 100644 netbox/dcim/migrations/0071_device_components_add_description.py delete mode 100644 netbox/dcim/migrations/0072_powerfeeds.py delete mode 100644 netbox/dcim/migrations/0073_interface_form_factor_to_type.py delete mode 100644 netbox/dcim/migrations/0074_increase_field_length_platform_name_slug.py delete mode 100644 netbox/dcim/migrations/0075_cable_devices.py delete mode 100644 netbox/dcim/migrations/0076_console_port_types.py delete mode 100644 netbox/dcim/migrations/0077_power_types.py delete mode 100644 netbox/dcim/migrations/0078_3569_site_fields.py delete mode 100644 netbox/dcim/migrations/0079_3569_rack_fields.py delete mode 100644 netbox/dcim/migrations/0080_3569_devicetype_fields.py delete mode 100644 netbox/dcim/migrations/0081_3569_device_fields.py delete mode 100644 netbox/dcim/migrations/0082_3569_interface_fields.py delete mode 100644 netbox/dcim/migrations/0082_3569_port_fields.py delete mode 100644 netbox/dcim/migrations/0083_3569_cable_fields.py delete mode 100644 netbox/dcim/migrations/0084_3569_powerfeed_fields.py delete mode 100644 netbox/dcim/migrations/0085_3569_poweroutlet_fields.py delete mode 100644 netbox/dcim/migrations/0086_device_name_nonunique.py delete mode 100644 netbox/dcim/migrations/0087_role_descriptions.py delete mode 100644 netbox/dcim/migrations/0088_powerfeed_available_power.py delete mode 100644 netbox/dcim/migrations/0089_deterministic_ordering.py delete mode 100644 netbox/dcim/migrations/0090_cable_termination_models.py delete mode 100644 netbox/dcim/migrations/0091_interface_type_other.py delete mode 100644 netbox/dcim/migrations/0092_fix_rack_outer_unit.py delete mode 100644 netbox/dcim/migrations/0093_device_component_ordering.py delete mode 100644 netbox/dcim/migrations/0094_device_component_template_ordering.py delete mode 100644 netbox/dcim/migrations/0095_primary_model_ordering.py delete mode 100644 netbox/dcim/migrations/0096_interface_ordering.py delete mode 100644 netbox/dcim/migrations/0097_interfacetemplate_type_other.py delete mode 100644 netbox/dcim/migrations/0098_devicetype_images.py delete mode 100644 netbox/dcim/migrations/0099_powerfeed_negative_voltage.py delete mode 100644 netbox/dcim/migrations/0100_mptt_remove_indexes.py delete mode 100644 netbox/dcim/migrations/0101_nested_rackgroups.py delete mode 100644 netbox/dcim/migrations/0102_nested_rackgroups_rebuild.py delete mode 100644 netbox/dcim/migrations/0103_standardize_description.py delete mode 100644 netbox/dcim/migrations/0104_correct_infiniband_types.py delete mode 100644 netbox/dcim/migrations/0105_interface_name_collation.py delete mode 100644 netbox/dcim/migrations/0106_role_default_color.py delete mode 100644 netbox/dcim/migrations/0107_component_labels.py delete mode 100644 netbox/dcim/migrations/0108_add_tags.py delete mode 100644 netbox/dcim/migrations/0109_interface_remove_vm.py delete mode 100644 netbox/dcim/migrations/0110_virtualchassis_name.py delete mode 100644 netbox/dcim/migrations/0111_component_template_description.py delete mode 100644 netbox/dcim/migrations/0112_standardize_components.py delete mode 100644 netbox/dcim/migrations/0113_nullbooleanfield_to_booleanfield.py delete mode 100644 netbox/dcim/migrations/0114_update_jsonfield.py delete mode 100644 netbox/dcim/migrations/0115_rackreservation_order.py delete mode 100644 netbox/dcim/migrations/0116_rearport_max_positions.py delete mode 100644 netbox/dcim/migrations/0117_custom_field_data.py delete mode 100644 netbox/dcim/migrations/0118_inventoryitem_mptt.py delete mode 100644 netbox/dcim/migrations/0119_inventoryitem_mptt_rebuild.py delete mode 100644 netbox/dcim/migrations/0120_cache_cable_peer.py delete mode 100644 netbox/dcim/migrations/0121_cablepath.py delete mode 100644 netbox/dcim/migrations/0122_standardize_name_length.py delete mode 100644 netbox/dcim/migrations/0123_standardize_models.py delete mode 100644 netbox/dcim/migrations/0124_mark_connected.py delete mode 100644 netbox/dcim/migrations/0125_console_port_speed.py delete mode 100644 netbox/dcim/migrations/0126_rename_rackgroup_location.py delete mode 100644 netbox/dcim/migrations/0127_device_location.py delete mode 100644 netbox/dcim/migrations/0128_device_location_populate.py delete mode 100644 netbox/dcim/migrations/0129_interface_parent.py delete mode 100644 netbox/dcim/migrations/0130_sitegroup.py delete mode 100644 netbox/extras/migrations/0001_initial.py delete mode 100644 netbox/extras/migrations/0002_custom_fields.py delete mode 100644 netbox/extras/migrations/0003_exporttemplate_add_description.py delete mode 100644 netbox/extras/migrations/0004_topologymap_change_comma_to_semicolon.py delete mode 100644 netbox/extras/migrations/0005_useraction_add_bulk_create.py delete mode 100644 netbox/extras/migrations/0006_add_imageattachments.py delete mode 100644 netbox/extras/migrations/0007_unicode_literals.py delete mode 100644 netbox/extras/migrations/0008_reports.py delete mode 100644 netbox/extras/migrations/0009_topologymap_type.py delete mode 100644 netbox/extras/migrations/0010_customfield_filter_logic.py delete mode 100644 netbox/extras/migrations/0011_django2.py delete mode 100644 netbox/extras/migrations/0012_webhooks.py delete mode 100644 netbox/extras/migrations/0013_objectchange.py delete mode 100644 netbox/extras/migrations/0014_configcontexts.py delete mode 100644 netbox/extras/migrations/0015_remove_useraction.py delete mode 100644 netbox/extras/migrations/0016_exporttemplate_add_cable.py delete mode 100644 netbox/extras/migrations/0017_exporttemplate_mime_type_length.py delete mode 100644 netbox/extras/migrations/0018_exporttemplate_add_jinja2.py delete mode 100644 netbox/extras/migrations/0019_tag_taggeditem.py delete mode 100644 netbox/extras/migrations/0020_tag_data.py delete mode 100644 netbox/extras/migrations/0021_add_color_comments_changelog_to_tag.py delete mode 100644 netbox/extras/migrations/0022_custom_links.py delete mode 100644 netbox/extras/migrations/0023_fix_tag_sequences.py delete mode 100644 netbox/extras/migrations/0024_scripts.py delete mode 100644 netbox/extras/migrations/0025_objectchange_time_index.py delete mode 100644 netbox/extras/migrations/0026_webhook_ca_file_path.py delete mode 100644 netbox/extras/migrations/0027_webhook_additional_headers.py delete mode 100644 netbox/extras/migrations/0028_remove_topology_maps.py delete mode 100644 netbox/extras/migrations/0029_3569_customfield_fields.py delete mode 100644 netbox/extras/migrations/0030_3569_objectchange_fields.py delete mode 100644 netbox/extras/migrations/0031_3569_exporttemplate_fields.py delete mode 100644 netbox/extras/migrations/0032_3569_webhook_fields.py delete mode 100644 netbox/extras/migrations/0033_graph_type_template_language.py delete mode 100644 netbox/extras/migrations/0034_configcontext_tags.py delete mode 100644 netbox/extras/migrations/0035_deterministic_ordering.py delete mode 100644 netbox/extras/migrations/0036_contenttype_filters_to_q_objects.py delete mode 100644 netbox/extras/migrations/0037_configcontexts_clusters.py delete mode 100644 netbox/extras/migrations/0038_webhook_template_support.py delete mode 100644 netbox/extras/migrations/0039_update_features_content_types.py delete mode 100644 netbox/extras/migrations/0040_standardize_description.py delete mode 100644 netbox/extras/migrations/0041_tag_description.py delete mode 100644 netbox/extras/migrations/0042_customfield_manager.py delete mode 100644 netbox/extras/migrations/0043_report.py delete mode 100644 netbox/extras/migrations/0044_jobresult.py delete mode 100644 netbox/extras/migrations/0045_configcontext_changelog.py delete mode 100644 netbox/extras/migrations/0046_update_jsonfield.py delete mode 100644 netbox/extras/migrations/0047_tag_ordering.py delete mode 100644 netbox/extras/migrations/0048_exporttemplate_remove_template_language.py delete mode 100644 netbox/extras/migrations/0049_remove_graph.py delete mode 100644 netbox/extras/migrations/0050_customfield_changes.py delete mode 100644 netbox/extras/migrations/0051_migrate_customfields.py delete mode 100644 netbox/extras/migrations/0052_customfield_cleanup.py delete mode 100644 netbox/extras/migrations/0053_rename_webhook_obj_type.py delete mode 100644 netbox/extras/migrations/0054_standardize_models.py delete mode 100644 netbox/extras/migrations/0055_objectchange_data.py delete mode 100644 netbox/extras/migrations/0056_extend_configcontext.py delete mode 100644 netbox/extras/migrations/0057_customlink_rename_fields.py delete mode 100644 netbox/extras/migrations/0058_journalentry.py delete mode 100644 netbox/extras/migrations/0059_exporttemplate_as_attachment.py delete mode 100644 netbox/ipam/migrations/0001_initial.py delete mode 100644 netbox/ipam/migrations/0002_vrf_add_enforce_unique.py delete mode 100644 netbox/ipam/migrations/0003_ipam_add_vlangroups.py delete mode 100644 netbox/ipam/migrations/0004_ipam_vlangroup_uniqueness.py delete mode 100644 netbox/ipam/migrations/0005_auto_20160725_1842.py delete mode 100644 netbox/ipam/migrations/0006_vrf_vlan_add_tenant.py delete mode 100644 netbox/ipam/migrations/0007_prefix_ipaddress_add_tenant.py delete mode 100644 netbox/ipam/migrations/0008_prefix_change_order.py delete mode 100644 netbox/ipam/migrations/0009_ipaddress_add_status.py delete mode 100644 netbox/ipam/migrations/0010_ipaddress_help_texts.py delete mode 100644 netbox/ipam/migrations/0011_rir_add_is_private.py delete mode 100644 netbox/ipam/migrations/0012_services.py delete mode 100644 netbox/ipam/migrations/0013_prefix_add_is_pool.py delete mode 100644 netbox/ipam/migrations/0014_ipaddress_status_add_deprecated.py delete mode 100644 netbox/ipam/migrations/0015_global_vlans.py delete mode 100644 netbox/ipam/migrations/0016_unicode_literals.py delete mode 100644 netbox/ipam/migrations/0017_ipaddress_roles.py delete mode 100644 netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py delete mode 100644 netbox/ipam/migrations/0019_virtualization.py delete mode 100644 netbox/ipam/migrations/0020_ipaddress_add_role_carp.py delete mode 100644 netbox/ipam/migrations/0021_vrf_ordering.py delete mode 100644 netbox/ipam/migrations/0022_tags.py delete mode 100644 netbox/ipam/migrations/0023_change_logging.py delete mode 100644 netbox/ipam/migrations/0024_vrf_allow_null_rd.py delete mode 100644 netbox/ipam/migrations/0025_custom_tag_models.py delete mode 100644 netbox/ipam/migrations/0026_prefix_ordering_vrf_nulls_first.py delete mode 100644 netbox/ipam/migrations/0027_ipaddress_add_dns_name.py delete mode 100644 netbox/ipam/migrations/0028_3569_prefix_fields.py delete mode 100644 netbox/ipam/migrations/0029_3569_ipaddress_fields.py delete mode 100644 netbox/ipam/migrations/0030_3569_vlan_fields.py delete mode 100644 netbox/ipam/migrations/0031_3569_service_fields.py delete mode 100644 netbox/ipam/migrations/0032_role_description.py delete mode 100644 netbox/ipam/migrations/0033_deterministic_ordering.py delete mode 100644 netbox/ipam/migrations/0034_fix_ipaddress_status_dhcp.py delete mode 100644 netbox/ipam/migrations/0035_drop_ip_family.py delete mode 100644 netbox/ipam/migrations/0036_standardize_description.py delete mode 100644 netbox/ipam/migrations/0037_ipaddress_assignment.py delete mode 100644 netbox/ipam/migrations/0038_custom_field_data.py delete mode 100644 netbox/ipam/migrations/0039_service_ports_array.py delete mode 100644 netbox/ipam/migrations/0040_service_drop_port.py delete mode 100644 netbox/ipam/migrations/0041_routetarget.py delete mode 100644 netbox/ipam/migrations/0042_standardize_name_length.py delete mode 100644 netbox/ipam/migrations/0043_add_tenancy_to_aggregates.py delete mode 100644 netbox/ipam/migrations/0044_standardize_models.py delete mode 100644 netbox/ipam/migrations/0045_vlangroup_scope.py delete mode 100644 netbox/ipam/migrations/0046_set_vlangroup_scope_types.py delete mode 100644 netbox/tenancy/migrations/0001_initial.py delete mode 100644 netbox/tenancy/migrations/0002_tenant_group_optional.py delete mode 100644 netbox/tenancy/migrations/0003_unicode_literals.py delete mode 100644 netbox/tenancy/migrations/0004_tags.py delete mode 100644 netbox/tenancy/migrations/0005_change_logging.py delete mode 100644 netbox/tenancy/migrations/0006_custom_tag_models.py delete mode 100644 netbox/tenancy/migrations/0007_nested_tenantgroups.py delete mode 100644 netbox/tenancy/migrations/0008_nested_tenantgroups_rebuild.py delete mode 100644 netbox/tenancy/migrations/0009_standardize_description.py delete mode 100644 netbox/tenancy/migrations/0010_custom_field_data.py delete mode 100644 netbox/tenancy/migrations/0011_standardize_name_length.py delete mode 100644 netbox/tenancy/migrations/0012_standardize_models.py delete mode 100644 netbox/users/migrations/0001_api_tokens.py delete mode 100644 netbox/users/migrations/0002_unicode_literals.py delete mode 100644 netbox/users/migrations/0003_token_permissions.py delete mode 100644 netbox/users/migrations/0004_standardize_description.py delete mode 100644 netbox/users/migrations/0005_userconfig.py delete mode 100644 netbox/users/migrations/0006_create_userconfigs.py delete mode 100644 netbox/users/migrations/0007_proxy_group_user.py delete mode 100644 netbox/users/migrations/0008_objectpermission.py delete mode 100644 netbox/users/migrations/0009_replicate_permissions.py delete mode 100644 netbox/users/migrations/0010_update_jsonfield.py delete mode 100644 netbox/users/migrations/0011_standardize_models.py delete mode 100644 netbox/virtualization/migrations/0001_virtualization.py delete mode 100644 netbox/virtualization/migrations/0002_virtualmachine_add_status.py delete mode 100644 netbox/virtualization/migrations/0003_cluster_add_site.py delete mode 100644 netbox/virtualization/migrations/0004_virtualmachine_add_role.py delete mode 100644 netbox/virtualization/migrations/0005_django2.py delete mode 100644 netbox/virtualization/migrations/0006_tags.py delete mode 100644 netbox/virtualization/migrations/0007_change_logging.py delete mode 100644 netbox/virtualization/migrations/0008_virtualmachine_local_context_data.py delete mode 100644 netbox/virtualization/migrations/0009_custom_tag_models.py delete mode 100644 netbox/virtualization/migrations/0010_cluster_add_tenant.py delete mode 100644 netbox/virtualization/migrations/0011_3569_virtualmachine_fields.py delete mode 100644 netbox/virtualization/migrations/0012_vm_name_nonunique.py delete mode 100644 netbox/virtualization/migrations/0013_deterministic_ordering.py delete mode 100644 netbox/virtualization/migrations/0014_standardize_description.py delete mode 100644 netbox/virtualization/migrations/0015_vminterface.py delete mode 100644 netbox/virtualization/migrations/0016_replicate_interfaces.py delete mode 100644 netbox/virtualization/migrations/0017_update_jsonfield.py delete mode 100644 netbox/virtualization/migrations/0018_custom_field_data.py delete mode 100644 netbox/virtualization/migrations/0019_standardize_name_length.py delete mode 100644 netbox/virtualization/migrations/0020_standardize_models.py delete mode 100644 netbox/virtualization/migrations/0021_virtualmachine_vcpus_decimal.py delete mode 100644 netbox/virtualization/migrations/0022_vminterface_parent.py diff --git a/netbox/circuits/migrations/0001_initial.py b/netbox/circuits/migrations/0001_initial.py deleted file mode 100644 index dd4dc612b0c..00000000000 --- a/netbox/circuits/migrations/0001_initial.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Circuit', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('cid', models.CharField(max_length=50, verbose_name=b'Circuit ID')), - ('install_date', models.DateField(blank=True, null=True, verbose_name=b'Date installed')), - ('port_speed', models.PositiveIntegerField(verbose_name=b'Port speed (Kbps)')), - ('commit_rate', models.PositiveIntegerField(blank=True, null=True, verbose_name=b'Commit rate (Kbps)')), - ('xconnect_id', models.CharField(blank=True, max_length=50, verbose_name=b'Cross-connect ID')), - ('pp_info', models.CharField(blank=True, max_length=100, verbose_name=b'Patch panel/port(s)')), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['provider', 'cid'], - }, - ), - migrations.CreateModel( - name='CircuitType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='Provider', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('asn', models.PositiveIntegerField(blank=True, null=True, verbose_name=b'ASN')), - ('account', models.CharField(blank=True, max_length=30, verbose_name=b'Account number')), - ('portal_url', models.URLField(blank=True, verbose_name=b'Portal')), - ('noc_contact', models.TextField(blank=True, verbose_name=b'NOC contact')), - ('admin_contact', models.TextField(blank=True, verbose_name=b'Admin contact')), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - ] diff --git a/netbox/circuits/migrations/0002_auto_20160622_1821.py b/netbox/circuits/migrations/0002_auto_20160622_1821.py deleted file mode 100644 index 2d350b5f345..00000000000 --- a/netbox/circuits/migrations/0002_auto_20160622_1821.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('dcim', '0001_initial'), - ('circuits', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='interface', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='circuit', to='dcim.Interface'), - ), - migrations.AddField( - model_name='circuit', - name='provider', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='circuits.Provider'), - ), - migrations.AddField( - model_name='circuit', - name='site', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='dcim.Site'), - ), - migrations.AddField( - model_name='circuit', - name='type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='circuits.CircuitType'), - ), - migrations.AlterUniqueTogether( - name='circuit', - unique_together=set([('provider', 'cid')]), - ), - ] diff --git a/netbox/circuits/migrations/0003_provider_32bit_asn_support.py b/netbox/circuits/migrations/0003_provider_32bit_asn_support.py deleted file mode 100644 index e1e9adab9ac..00000000000 --- a/netbox/circuits/migrations/0003_provider_32bit_asn_support.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-13 19:24 -import dcim.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0002_auto_20160622_1821'), - ] - - operations = [ - migrations.AlterField( - model_name='provider', - name='asn', - field=dcim.fields.ASNField(blank=True, null=True, verbose_name=b'ASN'), - ), - ] diff --git a/netbox/circuits/migrations/0004_circuit_add_tenant.py b/netbox/circuits/migrations/0004_circuit_add_tenant.py deleted file mode 100644 index de81f21eb9d..00000000000 --- a/netbox/circuits/migrations/0004_circuit_add_tenant.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-26 21:59 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ('circuits', '0003_provider_32bit_asn_support'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py b/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py deleted file mode 100644 index 51b09ad4c8e..00000000000 --- a/netbox/circuits/migrations/0005_circuit_add_upstream_speed.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-08 20:24 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0004_circuit_add_tenant'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='upstream_speed', - field=models.PositiveIntegerField(blank=True, help_text=b'Upstream speed, if different from port speed', null=True, verbose_name=b'Upstream speed (Kbps)'), - ), - ] diff --git a/netbox/circuits/migrations/0006_terminations.py b/netbox/circuits/migrations/0006_terminations.py deleted file mode 100644 index 1a083c3dac4..00000000000 --- a/netbox/circuits/migrations/0006_terminations.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-12-13 16:30 -from django.db import migrations, models -import django.db.models.deletion - - -def circuits_to_terms(apps, schema_editor): - Circuit = apps.get_model('circuits', 'Circuit') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - for c in Circuit.objects.all(): - CircuitTermination( - circuit=c, - term_side=b'A', - site=c.site, - interface=c.interface, - port_speed=c.port_speed, - upstream_speed=c.upstream_speed, - xconnect_id=c.xconnect_id, - pp_info=c.pp_info, - ).save() - - -def terms_to_circuits(apps, schema_editor): - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - for ct in CircuitTermination.objects.filter(term_side='A'): - c = ct.circuit - c.site = ct.site - c.interface = ct.interface - c.port_speed = ct.port_speed - c.upstream_speed = ct.upstream_speed - c.xconnect_id = ct.xconnect_id - c.pp_info = ct.pp_info - c.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0022_color_names_to_rgb'), - ('circuits', '0005_circuit_add_upstream_speed'), - ] - - operations = [ - migrations.CreateModel( - name='CircuitTermination', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('term_side', models.CharField(choices=[(b'A', b'A'), (b'Z', b'Z')], max_length=1, - verbose_name='Termination')), - ('port_speed', models.PositiveIntegerField(verbose_name=b'Port speed (Kbps)')), - ('upstream_speed', - models.PositiveIntegerField(blank=True, help_text=b'Upstream speed, if different from port speed', - null=True, verbose_name=b'Upstream speed (Kbps)')), - ('xconnect_id', models.CharField(blank=True, max_length=50, verbose_name=b'Cross-connect ID')), - ('pp_info', models.CharField(blank=True, max_length=100, verbose_name=b'Patch panel/port(s)')), - ('circuit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', - to='circuits.Circuit')), - ('interface', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, - related_name='circuit_termination', to='dcim.Interface')), - ('site', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations', - to='dcim.Site')), - ], - options={ - 'ordering': ['circuit', 'term_side'], - }, - ), - migrations.AlterUniqueTogether( - name='circuittermination', - unique_together=set([('circuit', 'term_side')]), - ), - migrations.RunPython(circuits_to_terms, terms_to_circuits), - migrations.RemoveField( - model_name='circuit', - name='interface', - ), - migrations.RemoveField( - model_name='circuit', - name='port_speed', - ), - migrations.RemoveField( - model_name='circuit', - name='pp_info', - ), - migrations.RemoveField( - model_name='circuit', - name='site', - ), - migrations.RemoveField( - model_name='circuit', - name='upstream_speed', - ), - migrations.RemoveField( - model_name='circuit', - name='xconnect_id', - ), - ] diff --git a/netbox/circuits/migrations/0007_circuit_add_description.py b/netbox/circuits/migrations/0007_circuit_add_description.py deleted file mode 100644 index 238cb07dddd..00000000000 --- a/netbox/circuits/migrations/0007_circuit_add_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-01-17 20:08 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0006_terminations'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/circuits/migrations/0008_circuittermination_interface_protect_on_delete.py b/netbox/circuits/migrations/0008_circuittermination_interface_protect_on_delete.py deleted file mode 100644 index b7ccafd263d..00000000000 --- a/netbox/circuits/migrations/0008_circuittermination_interface_protect_on_delete.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-04-19 17:17 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0007_circuit_add_description'), - ] - - operations = [ - migrations.AlterField( - model_name='circuittermination', - name='interface', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuit_termination', to='dcim.Interface'), - ), - ] diff --git a/netbox/circuits/migrations/0009_unicode_literals.py b/netbox/circuits/migrations/0009_unicode_literals.py deleted file mode 100644 index 0cc58fea956..00000000000 --- a/netbox/circuits/migrations/0009_unicode_literals.py +++ /dev/null @@ -1,79 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -import dcim.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0008_circuittermination_interface_protect_on_delete'), - ] - - operations = [ - migrations.AlterField( - model_name='circuit', - name='cid', - field=models.CharField(max_length=50, verbose_name='Circuit ID'), - ), - migrations.AlterField( - model_name='circuit', - name='commit_rate', - field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Commit rate (Kbps)'), - ), - migrations.AlterField( - model_name='circuit', - name='install_date', - field=models.DateField(blank=True, null=True, verbose_name='Date installed'), - ), - migrations.AlterField( - model_name='circuittermination', - name='port_speed', - field=models.PositiveIntegerField(verbose_name='Port speed (Kbps)'), - ), - migrations.AlterField( - model_name='circuittermination', - name='pp_info', - field=models.CharField(blank=True, max_length=100, verbose_name='Patch panel/port(s)'), - ), - migrations.AlterField( - model_name='circuittermination', - name='term_side', - field=models.CharField(choices=[('A', 'A'), ('Z', 'Z')], max_length=1, verbose_name='Termination'), - ), - migrations.AlterField( - model_name='circuittermination', - name='upstream_speed', - field=models.PositiveIntegerField(blank=True, help_text='Upstream speed, if different from port speed', null=True, verbose_name='Upstream speed (Kbps)'), - ), - migrations.AlterField( - model_name='circuittermination', - name='xconnect_id', - field=models.CharField(blank=True, max_length=50, verbose_name='Cross-connect ID'), - ), - migrations.AlterField( - model_name='provider', - name='account', - field=models.CharField(blank=True, max_length=30, verbose_name='Account number'), - ), - migrations.AlterField( - model_name='provider', - name='admin_contact', - field=models.TextField(blank=True, verbose_name='Admin contact'), - ), - migrations.AlterField( - model_name='provider', - name='asn', - field=dcim.fields.ASNField(blank=True, null=True, verbose_name='ASN'), - ), - migrations.AlterField( - model_name='provider', - name='noc_contact', - field=models.TextField(blank=True, verbose_name='NOC contact'), - ), - migrations.AlterField( - model_name='provider', - name='portal_url', - field=models.URLField(blank=True, verbose_name='Portal'), - ), - ] diff --git a/netbox/circuits/migrations/0010_circuit_status.py b/netbox/circuits/migrations/0010_circuit_status.py deleted file mode 100644 index 675a0c1fba7..00000000000 --- a/netbox/circuits/migrations/0010_circuit_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.9 on 2018-02-06 18:48 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0009_unicode_literals'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='status', - field=models.PositiveSmallIntegerField(choices=[[2, 'Planned'], [3, 'Provisioning'], [1, 'Active'], [4, 'Offline'], [0, 'Deprovisioning'], [5, 'Decommissioned']], default=1), - ), - ] diff --git a/netbox/circuits/migrations/0011_tags.py b/netbox/circuits/migrations/0011_tags.py deleted file mode 100644 index 11243622386..00000000000 --- a/netbox/circuits/migrations/0011_tags.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:04 -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('circuits', '0010_circuit_status'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='provider', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/netbox/circuits/migrations/0012_change_logging.py b/netbox/circuits/migrations/0012_change_logging.py deleted file mode 100644 index c9a3ee41d96..00000000000 --- a/netbox/circuits/migrations/0012_change_logging.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-13 17:14 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0011_tags'), - ] - - operations = [ - migrations.AddField( - model_name='circuittype', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='circuittype', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='circuit', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='circuit', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='provider', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='provider', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/circuits/migrations/0013_cables.py b/netbox/circuits/migrations/0013_cables.py deleted file mode 100644 index ec0284be046..00000000000 --- a/netbox/circuits/migrations/0013_cables.py +++ /dev/null @@ -1,89 +0,0 @@ -import sys - -from django.db import migrations, models -import django.db.models.deletion - -CONNECTION_STATUS_CONNECTED = True - - -def circuit_terminations_to_cables(apps, schema_editor): - """ - Copy all existing CircuitTermination Interface associations as Cables - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - Interface = apps.get_model('dcim', 'Interface') - Cable = apps.get_model('dcim', 'Cable') - - # Load content types - circuittermination_type = ContentType.objects.get_for_model(CircuitTermination) - interface_type = ContentType.objects.get_for_model(Interface) - - # Create a new Cable instance from each console connection - if 'test' not in sys.argv: - print("\n Adding circuit terminations... ", end='', flush=True) - for circuittermination in CircuitTermination.objects.filter(interface__isnull=False): - - # Create the new Cable - cable = Cable.objects.create( - termination_a_type=circuittermination_type, - termination_a_id=circuittermination.id, - termination_b_type=interface_type, - termination_b_id=circuittermination.interface_id, - status=CONNECTION_STATUS_CONNECTED - ) - - # Cache the Cable on its two termination points - CircuitTermination.objects.filter(pk=circuittermination.pk).update( - cable=cable, - connected_endpoint=circuittermination.interface, - connection_status=CONNECTION_STATUS_CONNECTED - ) - # Cache the connected Cable on the Interface - Interface.objects.filter(pk=circuittermination.interface_id).update( - cable=cable, - _connected_circuittermination=circuittermination, - connection_status=CONNECTION_STATUS_CONNECTED - ) - - cable_count = Cable.objects.filter(termination_a_type=circuittermination_type).count() - if 'test' not in sys.argv: - print("{} cables created".format(cable_count)) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('circuits', '0012_change_logging'), - ('dcim', '0066_cables'), - ] - - operations = [ - - # Add new CircuitTermination fields - migrations.AddField( - model_name='circuittermination', - name='connected_endpoint', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Interface'), - ), - migrations.AddField( - model_name='circuittermination', - name='connection_status', - field=models.NullBooleanField(), - ), - migrations.AddField( - model_name='circuittermination', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - - # Copy CircuitTermination connections to Interfaces as Cables - migrations.RunPython(circuit_terminations_to_cables), - - # Remove interface field from CircuitTermination - migrations.RemoveField( - model_name='circuittermination', - name='interface', - ), - ] diff --git a/netbox/circuits/migrations/0014_circuittermination_description.py b/netbox/circuits/migrations/0014_circuittermination_description.py deleted file mode 100644 index 2b307042721..00000000000 --- a/netbox/circuits/migrations/0014_circuittermination_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.3 on 2018-11-05 18:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0013_cables'), - ] - - operations = [ - migrations.AddField( - model_name='circuittermination', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/circuits/migrations/0015_custom_tag_models.py b/netbox/circuits/migrations/0015_custom_tag_models.py deleted file mode 100644 index 11bde72ff7e..00000000000 --- a/netbox/circuits/migrations/0015_custom_tag_models.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0014_circuittermination_description'), - ('extras', '0019_tag_taggeditem'), - ] - - operations = [ - migrations.AlterField( - model_name='circuit', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='provider', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/circuits/migrations/0016_3569_circuit_fields.py b/netbox/circuits/migrations/0016_3569_circuit_fields.py deleted file mode 100644 index a65f72d6151..00000000000 --- a/netbox/circuits/migrations/0016_3569_circuit_fields.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.db import migrations, models - - -CIRCUIT_STATUS_CHOICES = ( - (0, 'deprovisioning'), - (1, 'active'), - (2, 'planned'), - (3, 'provisioning'), - (4, 'offline'), - (5, 'decommissioned') -) - - -def circuit_status_to_slug(apps, schema_editor): - Circuit = apps.get_model('circuits', 'Circuit') - for id, slug in CIRCUIT_STATUS_CHOICES: - Circuit.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('circuits', '0015_custom_tag_models'), - ] - - operations = [ - - # Circuit.status - migrations.AlterField( - model_name='circuit', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=circuit_status_to_slug - ), - - ] diff --git a/netbox/circuits/migrations/0017_circuittype_description.py b/netbox/circuits/migrations/0017_circuittype_description.py deleted file mode 100644 index 4cb5591dd6a..00000000000 --- a/netbox/circuits/migrations/0017_circuittype_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-10 18:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0016_3569_circuit_fields'), - ] - - operations = [ - migrations.AddField( - model_name='circuittype', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/circuits/migrations/0018_standardize_description.py b/netbox/circuits/migrations/0018_standardize_description.py deleted file mode 100644 index a0a213e176b..00000000000 --- a/netbox/circuits/migrations/0018_standardize_description.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0017_circuittype_description'), - ] - - operations = [ - migrations.AlterField( - model_name='circuit', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='circuittermination', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='circuittype', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/circuits/migrations/0019_nullbooleanfield_to_booleanfield.py b/netbox/circuits/migrations/0019_nullbooleanfield_to_booleanfield.py deleted file mode 100644 index c8e844284b8..00000000000 --- a/netbox/circuits/migrations/0019_nullbooleanfield_to_booleanfield.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 15:55 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0018_standardize_description'), - ] - - operations = [ - migrations.AlterField( - model_name='circuittermination', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - ] diff --git a/netbox/circuits/migrations/0020_custom_field_data.py b/netbox/circuits/migrations/0020_custom_field_data.py deleted file mode 100644 index 97da9962cc4..00000000000 --- a/netbox/circuits/migrations/0020_custom_field_data.py +++ /dev/null @@ -1,22 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0019_nullbooleanfield_to_booleanfield'), - ] - - operations = [ - migrations.AddField( - model_name='circuit', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='provider', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - ] diff --git a/netbox/circuits/migrations/0021_cache_cable_peer.py b/netbox/circuits/migrations/0021_cache_cable_peer.py deleted file mode 100644 index 630c3b4ece4..00000000000 --- a/netbox/circuits/migrations/0021_cache_cable_peer.py +++ /dev/null @@ -1,49 +0,0 @@ -import sys - -from django.db import migrations, models -import django.db.models.deletion - - -def cache_cable_peers(apps, schema_editor): - ContentType = apps.get_model('contenttypes', 'ContentType') - Cable = apps.get_model('dcim', 'Cable') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - - if 'test' not in sys.argv: - print(f"\n Updating circuit termination cable peers...", flush=True) - ct = ContentType.objects.get_for_model(CircuitTermination) - for cable in Cable.objects.filter(termination_a_type=ct): - CircuitTermination.objects.filter(pk=cable.termination_a_id).update( - _cable_peer_type_id=cable.termination_b_type_id, - _cable_peer_id=cable.termination_b_id - ) - for cable in Cable.objects.filter(termination_b_type=ct): - CircuitTermination.objects.filter(pk=cable.termination_b_id).update( - _cable_peer_type_id=cable.termination_a_type_id, - _cable_peer_id=cable.termination_a_id - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('circuits', '0020_custom_field_data'), - ] - - operations = [ - migrations.AddField( - model_name='circuittermination', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='circuittermination', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.RunPython( - code=cache_cable_peers, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/circuits/migrations/0022_cablepath.py b/netbox/circuits/migrations/0022_cablepath.py deleted file mode 100644 index 4a5b26efa65..00000000000 --- a/netbox/circuits/migrations/0022_cablepath.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0121_cablepath'), - ('circuits', '0021_cache_cable_peer'), - ] - - operations = [ - migrations.AddField( - model_name='circuittermination', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.RemoveField( - model_name='circuittermination', - name='connected_endpoint', - ), - migrations.RemoveField( - model_name='circuittermination', - name='connection_status', - ), - ] diff --git a/netbox/circuits/migrations/0023_circuittermination_port_speed_optional.py b/netbox/circuits/migrations/0023_circuittermination_port_speed_optional.py deleted file mode 100644 index ea91906235a..00000000000 --- a/netbox/circuits/migrations/0023_circuittermination_port_speed_optional.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1 on 2020-10-09 17:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0022_cablepath'), - ] - - operations = [ - migrations.AlterField( - model_name='circuittermination', - name='port_speed', - field=models.PositiveIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/circuits/migrations/0024_standardize_name_length.py b/netbox/circuits/migrations/0024_standardize_name_length.py deleted file mode 100644 index 8d0ae48e300..00000000000 --- a/netbox/circuits/migrations/0024_standardize_name_length.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 3.1 on 2020-10-15 19:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0023_circuittermination_port_speed_optional'), - ] - - operations = [ - migrations.AlterField( - model_name='circuit', - name='cid', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='circuittype', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='circuittype', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='provider', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='provider', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - ] diff --git a/netbox/circuits/migrations/0025_standardize_models.py b/netbox/circuits/migrations/0025_standardize_models.py deleted file mode 100644 index 42745f35b58..00000000000 --- a/netbox/circuits/migrations/0025_standardize_models.py +++ /dev/null @@ -1,47 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0024_standardize_name_length'), - ] - - operations = [ - migrations.AddField( - model_name='circuittype', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='circuit', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='circuittermination', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='circuittype', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='provider', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AddField( - model_name='circuittermination', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='circuittermination', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/circuits/migrations/0026_mark_connected.py b/netbox/circuits/migrations/0026_mark_connected.py deleted file mode 100644 index 8531e9715ab..00000000000 --- a/netbox/circuits/migrations/0026_mark_connected.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0025_standardize_models'), - ] - - operations = [ - migrations.AddField( - model_name='circuittermination', - name='mark_connected', - field=models.BooleanField(default=False), - ), - ] diff --git a/netbox/circuits/migrations/0027_providernetwork.py b/netbox/circuits/migrations/0027_providernetwork.py deleted file mode 100644 index e8fbdb8d4d6..00000000000 --- a/netbox/circuits/migrations/0027_providernetwork.py +++ /dev/null @@ -1,65 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0058_journalentry'), - ('circuits', '0026_mark_connected'), - ] - - operations = [ - # Create the new ProviderNetwork model - migrations.CreateModel( - name='ProviderNetwork', - fields=[ - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100)), - ('description', models.CharField(blank=True, max_length=200)), - ('comments', models.TextField(blank=True)), - ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='networks', to='circuits.provider')), - ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), - ], - options={ - 'ordering': ('provider', 'name'), - }, - ), - migrations.AddConstraint( - model_name='providernetwork', - constraint=models.UniqueConstraint(fields=('provider', 'name'), name='circuits_providernetwork_provider_name'), - ), - migrations.AlterUniqueTogether( - name='providernetwork', - unique_together={('provider', 'name')}, - ), - - # Add ProviderNetwork FK to CircuitTermination - migrations.AddField( - model_name='circuittermination', - name='provider_network', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations', to='circuits.providernetwork'), - ), - migrations.AlterField( - model_name='circuittermination', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations', to='dcim.site'), - ), - - # Add FKs to CircuitTermination on Circuit - migrations.AddField( - model_name='circuit', - name='termination_a', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='circuits.circuittermination'), - ), - migrations.AddField( - model_name='circuit', - name='termination_z', - field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='circuits.circuittermination'), - ), - ] diff --git a/netbox/circuits/migrations/0028_cache_circuit_terminations.py b/netbox/circuits/migrations/0028_cache_circuit_terminations.py deleted file mode 100644 index 23734348eca..00000000000 --- a/netbox/circuits/migrations/0028_cache_circuit_terminations.py +++ /dev/null @@ -1,37 +0,0 @@ -import sys - -from django.db import migrations - - -def cache_circuit_terminations(apps, schema_editor): - Circuit = apps.get_model('circuits', 'Circuit') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - - if 'test' not in sys.argv: - print(f"\n Caching circuit terminations...", flush=True) - - a_terminations = { - ct.circuit_id: ct.pk for ct in CircuitTermination.objects.filter(term_side='A') - } - z_terminations = { - ct.circuit_id: ct.pk for ct in CircuitTermination.objects.filter(term_side='Z') - } - for circuit in Circuit.objects.all(): - Circuit.objects.filter(pk=circuit.pk).update( - termination_a_id=a_terminations.get(circuit.pk), - termination_z_id=z_terminations.get(circuit.pk), - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0027_providernetwork'), - ] - - operations = [ - migrations.RunPython( - code=cache_circuit_terminations, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/circuits/migrations/0029_circuit_tracing.py b/netbox/circuits/migrations/0029_circuit_tracing.py deleted file mode 100644 index bddb38bb622..00000000000 --- a/netbox/circuits/migrations/0029_circuit_tracing.py +++ /dev/null @@ -1,32 +0,0 @@ -from django.db import migrations -from django.db.models import Q - - -def delete_obsolete_cablepaths(apps, schema_editor): - """ - Delete all CablePath instances which originate or terminate at a CircuitTermination. - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - CircuitTermination = apps.get_model('circuits', 'CircuitTermination') - CablePath = apps.get_model('dcim', 'CablePath') - - ct = ContentType.objects.get_for_model(CircuitTermination) - CablePath.objects.filter(Q(origin_type=ct) | Q(destination_type=ct)).delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0028_cache_circuit_terminations'), - ] - - operations = [ - migrations.RemoveField( - model_name='circuittermination', - name='_path', - ), - migrations.RunPython( - code=delete_obsolete_cablepaths, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0001_initial.py b/netbox/dcim/migrations/0001_initial.py deleted file mode 100644 index db5f3faf2b8..00000000000 --- a/netbox/dcim/migrations/0001_initial.py +++ /dev/null @@ -1,296 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import utilities.fields - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='ConsolePort', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('connection_status', models.NullBooleanField(choices=[[False, b'Planned'], [True, b'Connected']], default=True)), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='ConsolePortTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='ConsoleServerPort', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ], - ), - migrations.CreateModel( - name='ConsoleServerPortTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='Device', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', utilities.fields.NullableCharField(blank=True, max_length=50, null=True, unique=True)), - ('serial', models.CharField(blank=True, max_length=50, verbose_name=b'Serial number')), - ('position', models.PositiveSmallIntegerField(blank=True, help_text=b'Number of the lowest U position occupied by the device', null=True, validators=[django.core.validators.MinValueValidator(1)], verbose_name=b'Position (U)')), - ('face', models.PositiveSmallIntegerField(blank=True, choices=[[0, b'Front'], [1, b'Rear']], null=True, verbose_name=b'Rack face')), - ('status', models.BooleanField(choices=[[True, b'Active'], [False, b'Offline']], default=True, verbose_name=b'Status')), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='DeviceRole', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('color', models.CharField(choices=[[b'teal', b'Teal'], [b'green', b'Green'], [b'blue', b'Blue'], [b'purple', b'Purple'], [b'yellow', b'Yellow'], [b'orange', b'Orange'], [b'red', b'Red'], [b'light_gray', b'Light Gray'], [b'medium_gray', b'Medium Gray'], [b'dark_gray', b'Dark Gray']], max_length=30)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='DeviceType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('model', models.CharField(max_length=50)), - ('slug', models.SlugField()), - ('u_height', models.PositiveSmallIntegerField(default=1, verbose_name=b'Height (U)')), - ('is_full_depth', models.BooleanField(default=True, help_text=b'Device consumes both front and rear rack faces', verbose_name=b'Is full depth')), - ('is_console_server', models.BooleanField(default=False, help_text=b'This type of device has console server ports', verbose_name=b'Is a console server')), - ('is_pdu', models.BooleanField(default=False, help_text=b'This type of device has power outlets', verbose_name=b'Is a PDU')), - ('is_network_device', models.BooleanField(default=True, help_text=b'This type of device has network interfaces', verbose_name=b'Is a network device')), - ], - options={ - 'ordering': ['manufacturer', 'model'], - }, - ), - migrations.CreateModel( - name='Interface', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('form_factor', models.PositiveSmallIntegerField(choices=[[0, b'Virtual'], [800, b'10/100M (Copper)'], [1000, b'1GE (Copper)'], [1100, b'1GE (SFP)'], [1200, b'10GE (SFP+)'], [1300, b'10GE (XFP)'], [1400, b'40GE (QSFP+)']], default=1200)), - ('mgmt_only', models.BooleanField(default=False, help_text=b'This interface is used only for out-of-band management', verbose_name=b'OOB Management')), - ('description', models.CharField(blank=True, max_length=100)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='dcim.Device')), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='InterfaceConnection', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('connection_status', models.BooleanField(choices=[[False, b'Planned'], [True, b'Connected']], default=True, verbose_name=b'Status')), - ('interface_a', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='connected_as_a', to='dcim.Interface')), - ('interface_b', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='connected_as_b', to='dcim.Interface')), - ], - ), - migrations.CreateModel( - name='InterfaceTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('form_factor', models.PositiveSmallIntegerField(choices=[[0, b'Virtual'], [800, b'10/100M (Copper)'], [1000, b'1GE (Copper)'], [1100, b'1GE (SFP)'], [1200, b'10GE (SFP+)'], [1300, b'10GE (XFP)'], [1400, b'40GE (QSFP+)']], default=1200)), - ('mgmt_only', models.BooleanField(default=False, verbose_name=b'Management only')), - ('device_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interface_templates', to='dcim.DeviceType')), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='Manufacturer', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='Module', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name=b'Name')), - ('part_id', models.CharField(blank=True, max_length=50, verbose_name=b'Part ID')), - ('serial', models.CharField(blank=True, max_length=50, verbose_name=b'Serial number')), - ('discovered', models.BooleanField(default=False, verbose_name=b'Discovered')), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='modules', to='dcim.Device')), - ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submodules', to='dcim.Module')), - ], - options={ - 'ordering': ['device__id', 'parent__id', 'name'], - }, - ), - migrations.CreateModel( - name='Platform', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('rpc_client', models.CharField(blank=True, choices=[[b'juniper-junos', b'Juniper Junos (NETCONF)'], [b'cisco-ios', b'Cisco IOS (SSH)'], [b'opengear', b'Opengear (SSH)']], max_length=30, verbose_name=b'RPC client')), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='PowerOutlet', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='power_outlets', to='dcim.Device')), - ], - ), - migrations.CreateModel( - name='PowerOutletTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('device_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='power_outlet_templates', to='dcim.DeviceType')), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='PowerPort', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('connection_status', models.NullBooleanField(choices=[[False, b'Planned'], [True, b'Connected']], default=True)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='power_ports', to='dcim.Device')), - ('power_outlet', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_port', to='dcim.PowerOutlet')), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='PowerPortTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ('device_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='power_port_templates', to='dcim.DeviceType')), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='Rack', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=50)), - ('facility_id', utilities.fields.NullableCharField(blank=True, max_length=30, null=True, verbose_name=b'Facility ID')), - ('u_height', models.PositiveSmallIntegerField(default=42, verbose_name=b'Height (U)')), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['site', 'name'], - }, - ), - migrations.CreateModel( - name='RackGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ('slug', models.SlugField()), - ], - options={ - 'ordering': ['site', 'name'], - }, - ), - migrations.CreateModel( - name='Site', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('facility', models.CharField(blank=True, max_length=50)), - ('asn', models.PositiveIntegerField(blank=True, null=True, verbose_name=b'ASN')), - ('physical_address', models.CharField(blank=True, max_length=200)), - ('shipping_address', models.CharField(blank=True, max_length=200)), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.AddField( - model_name='rackgroup', - name='site', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rack_groups', to='dcim.Site'), - ), - migrations.AddField( - model_name='rack', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='racks', to='dcim.RackGroup'), - ), - migrations.AddField( - model_name='rack', - name='site', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='dcim.Site'), - ), - migrations.AddField( - model_name='devicetype', - name='manufacturer', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='device_types', to='dcim.Manufacturer'), - ), - migrations.AddField( - model_name='device', - name='device_role', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.DeviceRole'), - ), - migrations.AddField( - model_name='device', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='instances', to='dcim.DeviceType'), - ), - migrations.AddField( - model_name='device', - name='platform', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='devices', to='dcim.Platform'), - ), - ] diff --git a/netbox/dcim/migrations/0002_auto_20160622_1821.py b/netbox/dcim/migrations/0002_auto_20160622_1821.py deleted file mode 100644 index 1e3aa4d2a6f..00000000000 --- a/netbox/dcim/migrations/0002_auto_20160622_1821.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('dcim', '0001_initial'), - ('ipam', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='primary_ip', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_for', to='ipam.IPAddress', verbose_name=b'Primary IP'), - ), - migrations.AddField( - model_name='device', - name='rack', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.Rack'), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cs_port_templates', to='dcim.DeviceType'), - ), - migrations.AddField( - model_name='consoleserverport', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cs_ports', to='dcim.Device'), - ), - migrations.AddField( - model_name='consoleporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='console_port_templates', to='dcim.DeviceType'), - ), - migrations.AddField( - model_name='consoleport', - name='cs_port', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_console', to='dcim.ConsoleServerPort', verbose_name=b'Console server port'), - ), - migrations.AddField( - model_name='consoleport', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='console_ports', to='dcim.Device'), - ), - migrations.AlterUniqueTogether( - name='rackgroup', - unique_together=set([('site', 'name'), ('site', 'slug')]), - ), - migrations.AlterUniqueTogether( - name='rack', - unique_together=set([('site', 'facility_id'), ('site', 'name')]), - ), - migrations.AlterUniqueTogether( - name='powerporttemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='powerport', - unique_together=set([('device', 'name')]), - ), - migrations.AlterUniqueTogether( - name='poweroutlettemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='poweroutlet', - unique_together=set([('device', 'name')]), - ), - migrations.AlterUniqueTogether( - name='module', - unique_together=set([('device', 'parent', 'name')]), - ), - migrations.AlterUniqueTogether( - name='interfacetemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='interface', - unique_together=set([('device', 'name')]), - ), - migrations.AlterUniqueTogether( - name='devicetype', - unique_together=set([('manufacturer', 'slug'), ('manufacturer', 'model')]), - ), - migrations.AlterUniqueTogether( - name='device', - unique_together=set([('rack', 'position', 'face')]), - ), - migrations.AlterUniqueTogether( - name='consoleserverporttemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='consoleserverport', - unique_together=set([('device', 'name')]), - ), - migrations.AlterUniqueTogether( - name='consoleporttemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='consoleport', - unique_together=set([('device', 'name')]), - ), - ] diff --git a/netbox/dcim/migrations/0003_auto_20160628_1721.py b/netbox/dcim/migrations/0003_auto_20160628_1721.py deleted file mode 100644 index 312d0456c32..00000000000 --- a/netbox/dcim/migrations/0003_auto_20160628_1721.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-28 17:21 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0002_auto_20160622_1821'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[0, b'Virtual'], [800, b'10/100M (100BASE-TX)'], [1000, b'1GE (1000BASE-T)'], [1100, b'1GE (SFP)'], [1150, b'10GE (10GBASE-T)'], [1200, b'10GE (SFP+)'], [1300, b'10GE (XFP)'], [1400, b'40GE (QSFP+)']], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[0, b'Virtual'], [800, b'10/100M (100BASE-TX)'], [1000, b'1GE (1000BASE-T)'], [1100, b'1GE (SFP)'], [1150, b'10GE (10GBASE-T)'], [1200, b'10GE (SFP+)'], [1300, b'10GE (XFP)'], [1400, b'40GE (QSFP+)']], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0004_auto_20160701_2049.py b/netbox/dcim/migrations/0004_auto_20160701_2049.py deleted file mode 100644 index 0806acb8262..00000000000 --- a/netbox/dcim/migrations/0004_auto_20160701_2049.py +++ /dev/null @@ -1,54 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-01 20:49 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0003_auto_20160628_1721'), - ] - - operations = [ - migrations.CreateModel( - name='DeviceBay', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name=b'Name')), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='device_bays', to='dcim.Device')), - ('installed_device', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_bay', to='dcim.Device')), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='DeviceBayTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=30)), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.AddField( - model_name='devicetype', - name='subdevice_role', - field=models.NullBooleanField(choices=[(None, b'N/A'), (True, b'Parent'), (False, b'Child')], default=None, help_text=b'Parent devices house child devices in device bays. Select "None" if this device type is neither a parent nor a child.', verbose_name=b'Parent/child status'), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='device_bay_templates', to='dcim.DeviceType'), - ), - migrations.AlterUniqueTogether( - name='devicebaytemplate', - unique_together=set([('device_type', 'name')]), - ), - migrations.AlterUniqueTogether( - name='devicebay', - unique_together=set([('device', 'name')]), - ), - ] diff --git a/netbox/dcim/migrations/0005_auto_20160706_1722.py b/netbox/dcim/migrations/0005_auto_20160706_1722.py deleted file mode 100644 index a286d6ff35b..00000000000 --- a/netbox/dcim/migrations/0005_auto_20160706_1722.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-06 17:22 -import dcim.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0004_auto_20160701_2049'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='mac_address', - field=dcim.fields.MACAddressField(blank=True, null=True, verbose_name=b'MAC Address'), - ), - migrations.AlterField( - model_name='devicetype', - name='subdevice_role', - field=models.NullBooleanField(choices=[(None, b'None'), (True, b'Parent'), (False, b'Child')], default=None, help_text=b'Parent devices house child devices in device bays. Select "None" if this device type is neither a parent nor a child.', verbose_name=b'Parent/child status'), - ), - ] diff --git a/netbox/dcim/migrations/0006_add_device_primary_ip4_ip6.py b/netbox/dcim/migrations/0006_add_device_primary_ip4_ip6.py deleted file mode 100644 index 6038cc02718..00000000000 --- a/netbox/dcim/migrations/0006_add_device_primary_ip4_ip6.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-11 18:40 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0001_initial'), - ('dcim', '0005_auto_20160706_1722'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='primary_ip4', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip4_for', to='ipam.IPAddress', verbose_name=b'Primary IPv4'), - ), - migrations.AddField( - model_name='device', - name='primary_ip6', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip6_for', to='ipam.IPAddress', verbose_name=b'Primary IPv6'), - ), - ] diff --git a/netbox/dcim/migrations/0007_device_copy_primary_ip.py b/netbox/dcim/migrations/0007_device_copy_primary_ip.py deleted file mode 100644 index 0d53337f7e7..00000000000 --- a/netbox/dcim/migrations/0007_device_copy_primary_ip.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-11 18:40 -from django.db import migrations - - -def copy_primary_ip(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - for d in Device.objects.select_related('primary_ip'): - if not d.primary_ip: - continue - if d.primary_ip.family == 4: - d.primary_ip4 = d.primary_ip - elif d.primary_ip.family == 6: - d.primary_ip6 = d.primary_ip - d.save() - - -def restore_primary_ip(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - for d in Device.objects.select_related('primary_ip4', 'primary_ip6'): - if d.primary_ip: - continue - # Prefer IPv6 over IPv4 - if d.primary_ip6: - d.primary_ip = d.primary_ip6 - elif d.primary_ip4: - d.primary_ip = d.primary_ip4 - d.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0006_add_device_primary_ip4_ip6'), - ] - - operations = [ - migrations.RunPython(copy_primary_ip, restore_primary_ip), - ] diff --git a/netbox/dcim/migrations/0008_device_remove_primary_ip.py b/netbox/dcim/migrations/0008_device_remove_primary_ip.py deleted file mode 100644 index f43452de2ff..00000000000 --- a/netbox/dcim/migrations/0008_device_remove_primary_ip.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-11 19:01 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0007_device_copy_primary_ip'), - ] - - operations = [ - migrations.RemoveField( - model_name='device', - name='primary_ip', - ), - ] diff --git a/netbox/dcim/migrations/0009_site_32bit_asn_support.py b/netbox/dcim/migrations/0009_site_32bit_asn_support.py deleted file mode 100644 index 0a72a6cf4ee..00000000000 --- a/netbox/dcim/migrations/0009_site_32bit_asn_support.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-13 19:24 -import dcim.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0008_device_remove_primary_ip'), - ] - - operations = [ - migrations.AlterField( - model_name='site', - name='asn', - field=dcim.fields.ASNField(blank=True, null=True, verbose_name=b'ASN'), - ), - ] diff --git a/netbox/dcim/migrations/0010_devicebay_installed_device_set_null.py b/netbox/dcim/migrations/0010_devicebay_installed_device_set_null.py deleted file mode 100644 index 769a6f67874..00000000000 --- a/netbox/dcim/migrations/0010_devicebay_installed_device_set_null.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-14 21:38 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0009_site_32bit_asn_support'), - ] - - operations = [ - migrations.AlterField( - model_name='devicebay', - name='installed_device', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parent_bay', to='dcim.Device'), - ), - ] diff --git a/netbox/dcim/migrations/0011_devicetype_part_number.py b/netbox/dcim/migrations/0011_devicetype_part_number.py deleted file mode 100644 index eb77ea50046..00000000000 --- a/netbox/dcim/migrations/0011_devicetype_part_number.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-26 15:05 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0010_devicebay_installed_device_set_null'), - ] - - operations = [ - migrations.AddField( - model_name='devicetype', - name='part_number', - field=models.CharField(blank=True, help_text=b'Discrete part number (optional)', max_length=50), - ), - ] diff --git a/netbox/dcim/migrations/0012_site_rack_device_add_tenant.py b/netbox/dcim/migrations/0012_site_rack_device_add_tenant.py deleted file mode 100644 index b01f507c301..00000000000 --- a/netbox/dcim/migrations/0012_site_rack_device_add_tenant.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-26 21:59 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ('dcim', '0011_devicetype_part_number'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='tenancy.Tenant'), - ), - migrations.AddField( - model_name='rack', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='tenancy.Tenant'), - ), - migrations.AddField( - model_name='site', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='sites', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/dcim/migrations/0013_add_interface_form_factors.py b/netbox/dcim/migrations/0013_add_interface_form_factors.py deleted file mode 100644 index 478cb59ff8d..00000000000 --- a/netbox/dcim/migrations/0013_add_interface_form_factors.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-06 20:24 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0012_site_rack_device_add_tenant'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet', [[800, b'100BASE-TX (10/100M)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Modular', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1300, b'XFP (10GE)'], [1200, b'SFP+ (10GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet', [[800, b'100BASE-TX (10/100M)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Modular', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1300, b'XFP (10GE)'], [1200, b'SFP+ (10GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0014_rack_add_type_width.py b/netbox/dcim/migrations/0014_rack_add_type_width.py deleted file mode 100644 index a3922c8cdbc..00000000000 --- a/netbox/dcim/migrations/0014_rack_add_type_width.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-08 21:11 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0013_add_interface_form_factors'), - ] - - operations = [ - migrations.AddField( - model_name='rack', - name='type', - field=models.PositiveSmallIntegerField(blank=True, choices=[(100, b'2-post frame'), (200, b'4-post frame'), (300, b'4-post cabinet'), (1000, b'Wall-mounted frame'), (1100, b'Wall-mounted cabinet')], null=True, verbose_name=b'Type'), - ), - migrations.AddField( - model_name='rack', - name='width', - field=models.PositiveSmallIntegerField(choices=[(19, b'19 inches'), (23, b'23 inches')], default=19, help_text=b'Rail-to-rail width', verbose_name=b'Width'), - ), - ] diff --git a/netbox/dcim/migrations/0015_rack_add_u_height_validator.py b/netbox/dcim/migrations/0015_rack_add_u_height_validator.py deleted file mode 100644 index 167dd8f5424..00000000000 --- a/netbox/dcim/migrations/0015_rack_add_u_height_validator.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-09 21:18 -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0014_rack_add_type_width'), - ] - - operations = [ - migrations.AlterField( - model_name='rack', - name='u_height', - field=models.PositiveSmallIntegerField(default=42, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)], verbose_name=b'Height (U)'), - ), - ] diff --git a/netbox/dcim/migrations/0016_module_add_manufacturer.py b/netbox/dcim/migrations/0016_module_add_manufacturer.py deleted file mode 100644 index 7204e66260c..00000000000 --- a/netbox/dcim/migrations/0016_module_add_manufacturer.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-10 13:45 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0015_rack_add_u_height_validator'), - ] - - operations = [ - migrations.AddField( - model_name='module', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='modules', to='dcim.Manufacturer'), - ), - ] diff --git a/netbox/dcim/migrations/0017_rack_add_role.py b/netbox/dcim/migrations/0017_rack_add_role.py deleted file mode 100644 index 48500f4b415..00000000000 --- a/netbox/dcim/migrations/0017_rack_add_role.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-10 14:58 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0016_module_add_manufacturer'), - ] - - operations = [ - migrations.CreateModel( - name='RackRole', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('color', models.CharField(choices=[[b'teal', b'Teal'], [b'green', b'Green'], [b'blue', b'Blue'], [b'purple', b'Purple'], [b'yellow', b'Yellow'], [b'orange', b'Orange'], [b'red', b'Red'], [b'light_gray', b'Light Gray'], [b'medium_gray', b'Medium Gray'], [b'dark_gray', b'Dark Gray']], max_length=30)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.AddField( - model_name='rack', - name='role', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='dcim.RackRole'), - ), - ] diff --git a/netbox/dcim/migrations/0018_device_add_asset_tag.py b/netbox/dcim/migrations/0018_device_add_asset_tag.py deleted file mode 100644 index 84d1cef3586..00000000000 --- a/netbox/dcim/migrations/0018_device_add_asset_tag.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-08-11 15:42 -from django.db import migrations -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0017_rack_add_role'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='asset_tag', - field=utilities.fields.NullableCharField(blank=True, help_text=b'A unique tag used to identify this device', max_length=50, null=True, unique=True, verbose_name=b'Asset tag'), - ), - ] diff --git a/netbox/dcim/migrations/0019_new_iface_form_factors.py b/netbox/dcim/migrations/0019_new_iface_form_factors.py deleted file mode 100644 index b2d8be53302..00000000000 --- a/netbox/dcim/migrations/0019_new_iface_form_factors.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-13 15:20 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0018_device_add_asset_tag'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0020_rack_desc_units.py b/netbox/dcim/migrations/0020_rack_desc_units.py deleted file mode 100644 index 7408c82ef14..00000000000 --- a/netbox/dcim/migrations/0020_rack_desc_units.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-28 15:01 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0019_new_iface_form_factors'), - ] - - operations = [ - migrations.AddField( - model_name='rack', - name='desc_units', - field=models.BooleanField(default=False, help_text=b'Units are numbered top-to-bottom', verbose_name=b'Descending units'), - ), - ] diff --git a/netbox/dcim/migrations/0021_add_ff_flexstack.py b/netbox/dcim/migrations/0021_add_ff_flexstack.py deleted file mode 100644 index bb4c4f4be22..00000000000 --- a/netbox/dcim/migrations/0021_add_ff_flexstack.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-31 18:47 -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0020_rack_desc_units'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='position', - field=models.PositiveSmallIntegerField(blank=True, help_text=b'The lowest-numbered unit occupied by the device', null=True, validators=[django.core.validators.MinValueValidator(1)], verbose_name=b'Position (U)'), - ), - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0022_color_names_to_rgb.py b/netbox/dcim/migrations/0022_color_names_to_rgb.py deleted file mode 100644 index 87fba47870c..00000000000 --- a/netbox/dcim/migrations/0022_color_names_to_rgb.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-12-06 16:35 -from django.db import migrations -import utilities.fields - - -COLOR_CONVERSION = { - 'teal': '009688', - 'green': '4caf50', - 'blue': '2196f3', - 'purple': '9c27b0', - 'yellow': 'ffeb3b', - 'orange': 'ff9800', - 'red': 'f44336', - 'light_gray': 'c0c0c0', - 'medium_gray': '9e9e9e', - 'dark_gray': '607d8b', -} - - -def color_names_to_rgb(apps, schema_editor): - RackRole = apps.get_model('dcim', 'RackRole') - DeviceRole = apps.get_model('dcim', 'DeviceRole') - for color_name, color_rgb in COLOR_CONVERSION.items(): - RackRole.objects.filter(color=color_name).update(color=color_rgb) - DeviceRole.objects.filter(color=color_name).update(color=color_rgb) - - -def color_rgb_to_name(apps, schema_editor): - RackRole = apps.get_model('dcim', 'RackRole') - DeviceRole = apps.get_model('dcim', 'DeviceRole') - for color_name, color_rgb in COLOR_CONVERSION.items(): - RackRole.objects.filter(color=color_rgb).update(color=color_name) - DeviceRole.objects.filter(color=color_rgb).update(color=color_name) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0021_add_ff_flexstack'), - ] - - operations = [ - migrations.RunPython(color_names_to_rgb, color_rgb_to_name), - migrations.AlterField( - model_name='devicerole', - name='color', - field=utilities.fields.ColorField(max_length=6), - ), - migrations.AlterField( - model_name='rackrole', - name='color', - field=utilities.fields.ColorField(max_length=6), - ), - ] diff --git a/netbox/dcim/migrations/0023_devicetype_comments.py b/netbox/dcim/migrations/0023_devicetype_comments.py deleted file mode 100644 index 5f70e80760b..00000000000 --- a/netbox/dcim/migrations/0023_devicetype_comments.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-12-16 16:08 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0022_color_names_to_rgb'), - ] - - operations = [ - migrations.AddField( - model_name='devicetype', - name='comments', - field=models.TextField(blank=True), - ), - ] diff --git a/netbox/dcim/migrations/0024_site_add_contact_fields.py b/netbox/dcim/migrations/0024_site_add_contact_fields.py deleted file mode 100644 index 218107ba2a8..00000000000 --- a/netbox/dcim/migrations/0024_site_add_contact_fields.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2016-12-29 16:23 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0023_devicetype_comments'), - ] - - operations = [ - migrations.AddField( - model_name='site', - name='contact_email', - field=models.EmailField(blank=True, max_length=254, verbose_name=b'Contact E-mail'), - ), - migrations.AddField( - model_name='site', - name='contact_name', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='site', - name='contact_phone', - field=models.CharField(blank=True, max_length=20), - ), - ] diff --git a/netbox/dcim/migrations/0025_devicetype_add_interface_ordering.py b/netbox/dcim/migrations/0025_devicetype_add_interface_ordering.py deleted file mode 100644 index 56db88f1cd8..00000000000 --- a/netbox/dcim/migrations/0025_devicetype_add_interface_ordering.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-01-06 16:56 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0024_site_add_contact_fields'), - ] - - operations = [ - migrations.AddField( - model_name='devicetype', - name='interface_ordering', - field=models.PositiveSmallIntegerField(choices=[[1, b'Slot/position'], [2, b'Name (alphabetically)']], default=1), - ), - ] diff --git a/netbox/dcim/migrations/0026_add_rack_reservations.py b/netbox/dcim/migrations/0026_add_rack_reservations.py deleted file mode 100644 index ba66feea5d1..00000000000 --- a/netbox/dcim/migrations/0026_add_rack_reservations.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-16 18:43 -from django.conf import settings -import django.contrib.postgres.fields -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('dcim', '0025_devicetype_add_interface_ordering'), - ] - - operations = [ - migrations.CreateModel( - name='RackReservation', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('units', django.contrib.postgres.fields.ArrayField(base_field=models.PositiveSmallIntegerField(), size=None)), - ('created', models.DateTimeField(auto_now_add=True)), - ('description', models.CharField(max_length=100)), - ('rack', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to='dcim.Rack')), - ('user', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['created'], - }, - ), - ] diff --git a/netbox/dcim/migrations/0027_device_add_site.py b/netbox/dcim/migrations/0027_device_add_site.py deleted file mode 100644 index bef85a82255..00000000000 --- a/netbox/dcim/migrations/0027_device_add_site.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-16 21:21 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0026_add_rack_reservations'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.Site'), - ), - ] diff --git a/netbox/dcim/migrations/0028_device_copy_rack_to_site.py b/netbox/dcim/migrations/0028_device_copy_rack_to_site.py deleted file mode 100644 index a67f34b3890..00000000000 --- a/netbox/dcim/migrations/0028_device_copy_rack_to_site.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-16 21:23 -from django.db import migrations - - -def copy_site_from_rack(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - for device in Device.objects.all(): - device.site = device.rack.site - device.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0027_device_add_site'), - ] - - operations = [ - migrations.RunPython(copy_site_from_rack), - ] diff --git a/netbox/dcim/migrations/0029_allow_rackless_devices.py b/netbox/dcim/migrations/0029_allow_rackless_devices.py deleted file mode 100644 index dd9f30bf2fb..00000000000 --- a/netbox/dcim/migrations/0029_allow_rackless_devices.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-16 21:25 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0028_device_copy_rack_to_site'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='rack', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.Rack'), - ), - migrations.AlterField( - model_name='device', - name='site', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.Site'), - ), - ] diff --git a/netbox/dcim/migrations/0030_interface_add_lag.py b/netbox/dcim/migrations/0030_interface_add_lag.py deleted file mode 100644 index 1ffd74f0452..00000000000 --- a/netbox/dcim/migrations/0030_interface_add_lag.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-27 19:55 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0029_allow_rackless_devices'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='lag', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='member_interfaces', to='dcim.Interface', verbose_name=b'Parent LAG'), - ), - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual'], [200, b'Link Aggregation Group (LAG)']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual'], [200, b'Link Aggregation Group (LAG)']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0031_regions.py b/netbox/dcim/migrations/0031_regions.py deleted file mode 100644 index 73bb77b3f5d..00000000000 --- a/netbox/dcim/migrations/0031_regions.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-28 17:14 -from django.db import migrations, models -import django.db.models.deletion -import mptt.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0030_interface_add_lag'), - ] - - operations = [ - migrations.CreateModel( - name='Region', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('lft', models.PositiveIntegerField(db_index=True, editable=False)), - ('rght', models.PositiveIntegerField(db_index=True, editable=False)), - ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), - ('level', models.PositiveIntegerField(db_index=True, editable=False)), - ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.Region')), - ], - options={ - 'abstract': False, - }, - ), - migrations.AddField( - model_name='site', - name='region', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sites', to='dcim.Region'), - ), - ] diff --git a/netbox/dcim/migrations/0032_device_increase_name_length.py b/netbox/dcim/migrations/0032_device_increase_name_length.py deleted file mode 100644 index ff0cd137f80..00000000000 --- a/netbox/dcim/migrations/0032_device_increase_name_length.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-03-02 15:09 -from django.db import migrations -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0031_regions'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='name', - field=utilities.fields.NullableCharField(blank=True, max_length=64, null=True, unique=True), - ), - ] diff --git a/netbox/dcim/migrations/0033_rackreservation_rack_editable.py b/netbox/dcim/migrations/0033_rackreservation_rack_editable.py deleted file mode 100644 index 567de43454f..00000000000 --- a/netbox/dcim/migrations/0033_rackreservation_rack_editable.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-17 18:39 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0032_device_increase_name_length'), - ] - - operations = [ - migrations.AlterField( - model_name='rackreservation', - name='rack', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to='dcim.Rack'), - ), - ] diff --git a/netbox/dcim/migrations/0034_rename_module_to_inventoryitem.py b/netbox/dcim/migrations/0034_rename_module_to_inventoryitem.py deleted file mode 100644 index db2f0577a08..00000000000 --- a/netbox/dcim/migrations/0034_rename_module_to_inventoryitem.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-21 14:55 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0033_rackreservation_rack_editable'), - ] - - operations = [ - migrations.RenameModel( - old_name='Module', - new_name='InventoryItem', - ), - migrations.AlterField( - model_name='inventoryitem', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inventory_items', to='dcim.Device'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='parent', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child_items', to='dcim.InventoryItem'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='manufacturer', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='inventory_items', to='dcim.Manufacturer'), - ), - ] diff --git a/netbox/dcim/migrations/0035_device_expand_status_choices.py b/netbox/dcim/migrations/0035_device_expand_status_choices.py deleted file mode 100644 index a6f7aa5639b..00000000000 --- a/netbox/dcim/migrations/0035_device_expand_status_choices.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.7 on 2017-05-08 15:57 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0034_rename_module_to_inventoryitem'), - ] - - # We convert the BooleanField to an IntegerField first as PostgreSQL does not provide a direct cast for boolean to - # smallint (attempting to convert directly yields the error "cannot cast type boolean to smallint"). - operations = [ - migrations.AlterField( - model_name='device', - name='status', - field=models.PositiveIntegerField(choices=[[1, b'Active'], [0, b'Offline'], [2, b'Planned'], [3, b'Staged'], [4, b'Failed'], [5, b'Inventory']], default=1, verbose_name=b'Status'), - ), - migrations.AlterField( - model_name='device', - name='status', - field=models.PositiveSmallIntegerField(choices=[[1, b'Active'], [0, b'Offline'], [2, b'Planned'], [3, b'Staged'], [4, b'Failed'], [5, b'Inventory']], default=1, verbose_name=b'Status'), - ), - ] diff --git a/netbox/dcim/migrations/0036_add_ff_juniper_vcp.py b/netbox/dcim/migrations/0036_add_ff_juniper_vcp.py deleted file mode 100644 index ceed2263851..00000000000 --- a/netbox/dcim/migrations/0036_add_ff_juniper_vcp.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-05-09 16:00 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0035_device_expand_status_choices'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual'], [200, b'Link Aggregation Group (LAG)']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus'], [5200, b'Juniper VCP']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[[b'Virtual interfaces', [[0, b'Virtual'], [200, b'Link Aggregation Group (LAG)']]], [b'Ethernet (fixed)', [[800, b'100BASE-TX (10/100ME)'], [1000, b'1000BASE-T (1GE)'], [1150, b'10GBASE-T (10GE)']]], [b'Ethernet (modular)', [[1050, b'GBIC (1GE)'], [1100, b'SFP (1GE)'], [1200, b'SFP+ (10GE)'], [1300, b'XFP (10GE)'], [1310, b'XENPAK (10GE)'], [1320, b'X2 (10GE)'], [1350, b'SFP28 (25GE)'], [1400, b'QSFP+ (40GE)'], [1500, b'CFP (100GE)'], [1600, b'QSFP28 (100GE)']]], [b'FibreChannel', [[3010, b'SFP (1GFC)'], [3020, b'SFP (2GFC)'], [3040, b'SFP (4GFC)'], [3080, b'SFP+ (8GFC)'], [3160, b'SFP+ (16GFC)']]], [b'Serial', [[4000, b'T1 (1.544 Mbps)'], [4010, b'E1 (2.048 Mbps)'], [4040, b'T3 (45 Mbps)'], [4050, b'E3 (34 Mbps)'], [4050, b'E3 (34 Mbps)']]], [b'Stacking', [[5000, b'Cisco StackWise'], [5050, b'Cisco StackWise Plus'], [5100, b'Cisco FlexStack'], [5150, b'Cisco FlexStack Plus'], [5200, b'Juniper VCP']]], [b'Other', [[32767, b'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0037_unicode_literals.py b/netbox/dcim/migrations/0037_unicode_literals.py deleted file mode 100644 index 57ad7a744ef..00000000000 --- a/netbox/dcim/migrations/0037_unicode_literals.py +++ /dev/null @@ -1,207 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -import dcim.fields -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0036_add_ff_juniper_vcp'), - ] - - operations = [ - migrations.AlterField( - model_name='consoleport', - name='connection_status', - field=models.NullBooleanField(choices=[[False, 'Planned'], [True, 'Connected']], default=True), - ), - migrations.AlterField( - model_name='consoleport', - name='cs_port', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_console', to='dcim.ConsoleServerPort', verbose_name='Console server port'), - ), - migrations.AlterField( - model_name='device', - name='asset_tag', - field=utilities.fields.NullableCharField(blank=True, help_text='A unique tag used to identify this device', max_length=50, null=True, unique=True, verbose_name='Asset tag'), - ), - migrations.AlterField( - model_name='device', - name='face', - field=models.PositiveSmallIntegerField(blank=True, choices=[[0, 'Front'], [1, 'Rear']], null=True, verbose_name='Rack face'), - ), - migrations.AlterField( - model_name='device', - name='position', - field=models.PositiveSmallIntegerField(blank=True, help_text='The lowest-numbered unit occupied by the device', null=True, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Position (U)'), - ), - migrations.AlterField( - model_name='device', - name='primary_ip4', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip4_for', to='ipam.IPAddress', verbose_name='Primary IPv4'), - ), - migrations.AlterField( - model_name='device', - name='primary_ip6', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip6_for', to='ipam.IPAddress', verbose_name='Primary IPv6'), - ), - migrations.AlterField( - model_name='device', - name='serial', - field=models.CharField(blank=True, max_length=50, verbose_name='Serial number'), - ), - migrations.AlterField( - model_name='device', - name='status', - field=models.PositiveSmallIntegerField(choices=[[1, 'Active'], [0, 'Offline'], [2, 'Planned'], [3, 'Staged'], [4, 'Failed'], [5, 'Inventory']], default=1, verbose_name='Status'), - ), - migrations.AlterField( - model_name='devicebay', - name='name', - field=models.CharField(max_length=50, verbose_name='Name'), - ), - migrations.AlterField( - model_name='devicetype', - name='interface_ordering', - field=models.PositiveSmallIntegerField(choices=[[1, 'Slot/position'], [2, 'Name (alphabetically)']], default=1), - ), - migrations.AlterField( - model_name='devicetype', - name='is_console_server', - field=models.BooleanField(default=False, help_text='This type of device has console server ports', verbose_name='Is a console server'), - ), - migrations.AlterField( - model_name='devicetype', - name='is_full_depth', - field=models.BooleanField(default=True, help_text='Device consumes both front and rear rack faces', verbose_name='Is full depth'), - ), - migrations.AlterField( - model_name='devicetype', - name='is_network_device', - field=models.BooleanField(default=True, help_text='This type of device has network interfaces', verbose_name='Is a network device'), - ), - migrations.AlterField( - model_name='devicetype', - name='is_pdu', - field=models.BooleanField(default=False, help_text='This type of device has power outlets', verbose_name='Is a PDU'), - ), - migrations.AlterField( - model_name='devicetype', - name='part_number', - field=models.CharField(blank=True, help_text='Discrete part number (optional)', max_length=50), - ), - migrations.AlterField( - model_name='devicetype', - name='subdevice_role', - field=models.NullBooleanField(choices=[(None, 'None'), (True, 'Parent'), (False, 'Child')], default=None, help_text='Parent devices house child devices in device bays. Select "None" if this device type is neither a parent nor a child.', verbose_name='Parent/child status'), - ), - migrations.AlterField( - model_name='devicetype', - name='u_height', - field=models.PositiveSmallIntegerField(default=1, verbose_name='Height (U)'), - ), - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interface', - name='lag', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='member_interfaces', to='dcim.Interface', verbose_name='Parent LAG'), - ), - migrations.AlterField( - model_name='interface', - name='mac_address', - field=dcim.fields.MACAddressField(blank=True, null=True, verbose_name='MAC Address'), - ), - migrations.AlterField( - model_name='interface', - name='mgmt_only', - field=models.BooleanField(default=False, help_text='This interface is used only for out-of-band management', verbose_name='OOB Management'), - ), - migrations.AlterField( - model_name='interfaceconnection', - name='connection_status', - field=models.BooleanField(choices=[[False, 'Planned'], [True, 'Connected']], default=True, verbose_name='Status'), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='mgmt_only', - field=models.BooleanField(default=False, verbose_name='Management only'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='discovered', - field=models.BooleanField(default=False, verbose_name='Discovered'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='name', - field=models.CharField(max_length=50, verbose_name='Name'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='part_id', - field=models.CharField(blank=True, max_length=50, verbose_name='Part ID'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='serial', - field=models.CharField(blank=True, max_length=50, verbose_name='Serial number'), - ), - migrations.AlterField( - model_name='platform', - name='rpc_client', - field=models.CharField(blank=True, choices=[['juniper-junos', 'Juniper Junos (NETCONF)'], ['cisco-ios', 'Cisco IOS (SSH)'], ['opengear', 'Opengear (SSH)']], max_length=30, verbose_name='RPC client'), - ), - migrations.AlterField( - model_name='powerport', - name='connection_status', - field=models.NullBooleanField(choices=[[False, 'Planned'], [True, 'Connected']], default=True), - ), - migrations.AlterField( - model_name='rack', - name='desc_units', - field=models.BooleanField(default=False, help_text='Units are numbered top-to-bottom', verbose_name='Descending units'), - ), - migrations.AlterField( - model_name='rack', - name='facility_id', - field=utilities.fields.NullableCharField(blank=True, max_length=30, null=True, verbose_name='Facility ID'), - ), - migrations.AlterField( - model_name='rack', - name='type', - field=models.PositiveSmallIntegerField(blank=True, choices=[(100, '2-post frame'), (200, '4-post frame'), (300, '4-post cabinet'), (1000, 'Wall-mounted frame'), (1100, 'Wall-mounted cabinet')], null=True, verbose_name='Type'), - ), - migrations.AlterField( - model_name='rack', - name='u_height', - field=models.PositiveSmallIntegerField(default=42, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)], verbose_name='Height (U)'), - ), - migrations.AlterField( - model_name='rack', - name='width', - field=models.PositiveSmallIntegerField(choices=[(19, '19 inches'), (23, '23 inches')], default=19, help_text='Rail-to-rail width', verbose_name='Width'), - ), - migrations.AlterField( - model_name='site', - name='asn', - field=dcim.fields.ASNField(blank=True, null=True, verbose_name='ASN'), - ), - migrations.AlterField( - model_name='site', - name='contact_email', - field=models.EmailField(blank=True, max_length=254, verbose_name='Contact E-mail'), - ), - ] diff --git a/netbox/dcim/migrations/0038_wireless_interfaces.py b/netbox/dcim/migrations/0038_wireless_interfaces.py deleted file mode 100644 index 78ea103e5e4..00000000000 --- a/netbox/dcim/migrations/0038_wireless_interfaces.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-16 21:38 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0037_unicode_literals'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0039_interface_add_enabled_mtu.py b/netbox/dcim/migrations/0039_interface_add_enabled_mtu.py deleted file mode 100644 index c5f8dc83d88..00000000000 --- a/netbox/dcim/migrations/0039_interface_add_enabled_mtu.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-23 17:05 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0038_wireless_interfaces'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='enabled', - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name='interface', - name='mtu', - field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='MTU'), - ), - ] diff --git a/netbox/dcim/migrations/0040_inventoryitem_add_asset_tag_description.py b/netbox/dcim/migrations/0040_inventoryitem_add_asset_tag_description.py deleted file mode 100644 index aaca23ea826..00000000000 --- a/netbox/dcim/migrations/0040_inventoryitem_add_asset_tag_description.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-06-23 20:44 -from django.db import migrations, models -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0039_interface_add_enabled_mtu'), - ] - - operations = [ - migrations.AddField( - model_name='inventoryitem', - name='asset_tag', - field=utilities.fields.NullableCharField(blank=True, help_text='A unique tag used to identify this item', max_length=50, null=True, unique=True, verbose_name='Asset tag'), - ), - migrations.AddField( - model_name='inventoryitem', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/dcim/migrations/0041_napalm_integration.py b/netbox/dcim/migrations/0041_napalm_integration.py deleted file mode 100644 index 3acad9f0b94..00000000000 --- a/netbox/dcim/migrations/0041_napalm_integration.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2017-07-14 17:26 -from django.db import migrations, models - - -def rpc_client_to_napalm_driver(apps, schema_editor): - """ - Migrate legacy RPC clients to their respective NAPALM drivers - """ - Platform = apps.get_model('dcim', 'Platform') - - Platform.objects.filter(rpc_client='juniper-junos').update(napalm_driver='junos') - Platform.objects.filter(rpc_client='cisco-ios').update(napalm_driver='ios') - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0040_inventoryitem_add_asset_tag_description'), - ] - - operations = [ - migrations.AlterModelOptions( - name='device', - options={'ordering': ['name']}, - ), - migrations.AddField( - model_name='platform', - name='napalm_driver', - field=models.CharField(blank=True, help_text='The name of the NAPALM driver to use when interacting with devices.', max_length=50, verbose_name='NAPALM driver'), - ), - migrations.AlterField( - model_name='platform', - name='rpc_client', - field=models.CharField(blank=True, choices=[['juniper-junos', 'Juniper Junos (NETCONF)'], ['cisco-ios', 'Cisco IOS (SSH)'], ['opengear', 'Opengear (SSH)']], max_length=30, verbose_name='Legacy RPC client'), - ), - migrations.RunPython(rpc_client_to_napalm_driver), - ] diff --git a/netbox/dcim/migrations/0042_interface_ff_10ge_cx4.py b/netbox/dcim/migrations/0042_interface_ff_10ge_cx4.py deleted file mode 100644 index e667d9451f7..00000000000 --- a/netbox/dcim/migrations/0042_interface_ff_10ge_cx4.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-29 21:00 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0041_napalm_integration'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0043_device_component_name_lengths.py b/netbox/dcim/migrations/0043_device_component_name_lengths.py deleted file mode 100644 index 9f0ba224321..00000000000 --- a/netbox/dcim/migrations/0043_device_component_name_lengths.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-29 21:26 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0042_interface_ff_10ge_cx4'), - ] - - operations = [ - migrations.AlterField( - model_name='consoleport', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='consoleporttemplate', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='consoleserverport', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='consoleserverporttemplate', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='devicebaytemplate', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='interface', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='poweroutlet', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='powerport', - name='name', - field=models.CharField(max_length=50), - ), - migrations.AlterField( - model_name='powerporttemplate', - name='name', - field=models.CharField(max_length=50), - ), - ] diff --git a/netbox/dcim/migrations/0044_virtualization.py b/netbox/dcim/migrations/0044_virtualization.py deleted file mode 100644 index 362979aefa7..00000000000 --- a/netbox/dcim/migrations/0044_virtualization.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-31 14:15 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0001_virtualization'), - ('dcim', '0043_device_component_name_lengths'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='cluster', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='devices', to='virtualization.Cluster'), - ), - migrations.AddField( - model_name='interface', - name='virtual_machine', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='virtualization.VirtualMachine'), - ), - migrations.AlterField( - model_name='interface', - name='device', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='dcim.Device'), - ), - ] diff --git a/netbox/dcim/migrations/0045_devicerole_vm_role.py b/netbox/dcim/migrations/0045_devicerole_vm_role.py deleted file mode 100644 index 306a5a80620..00000000000 --- a/netbox/dcim/migrations/0045_devicerole_vm_role.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-29 16:09 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0044_virtualization'), - ] - - operations = [ - migrations.AddField( - model_name='devicerole', - name='vm_role', - field=models.BooleanField(default=True, help_text='Virtual machines may be assigned to this role', verbose_name='VM Role'), - ), - ] diff --git a/netbox/dcim/migrations/0046_rack_lengthen_facility_id.py b/netbox/dcim/migrations/0046_rack_lengthen_facility_id.py deleted file mode 100644 index f6e93a43d5c..00000000000 --- a/netbox/dcim/migrations/0046_rack_lengthen_facility_id.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-09 17:43 -from django.db import migrations -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0045_devicerole_vm_role'), - ] - - operations = [ - migrations.AlterField( - model_name='rack', - name='facility_id', - field=utilities.fields.NullableCharField(blank=True, max_length=50, null=True, verbose_name='Facility ID'), - ), - ] diff --git a/netbox/dcim/migrations/0047_more_100ge_form_factors.py b/netbox/dcim/migrations/0047_more_100ge_form_factors.py deleted file mode 100644 index a76ef6c8d14..00000000000 --- a/netbox/dcim/migrations/0047_more_100ge_form_factors.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-09 18:43 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0046_rack_lengthen_facility_id'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1510, 'CFP2 (100GE)'], [1520, 'CFP4 (100GE)'], [1550, 'Cisco CPAK (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1510, 'CFP2 (100GE)'], [1520, 'CFP4 (100GE)'], [1550, 'Cisco CPAK (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0048_rack_serial.py b/netbox/dcim/migrations/0048_rack_serial.py deleted file mode 100644 index 3fb7c0d2e2c..00000000000 --- a/netbox/dcim/migrations/0048_rack_serial.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-09 18:50 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0047_more_100ge_form_factors'), - ] - - operations = [ - migrations.AddField( - model_name='rack', - name='serial', - field=models.CharField(blank=True, max_length=50, verbose_name='Serial number'), - ), - ] diff --git a/netbox/dcim/migrations/0049_rackreservation_change_user.py b/netbox/dcim/migrations/0049_rackreservation_change_user.py deleted file mode 100644 index 2d03db58781..00000000000 --- a/netbox/dcim/migrations/0049_rackreservation_change_user.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-10-31 17:32 -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0048_rack_serial'), - ] - - operations = [ - migrations.AlterField( - model_name='rackreservation', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/netbox/dcim/migrations/0050_interface_vlan_tagging.py b/netbox/dcim/migrations/0050_interface_vlan_tagging.py deleted file mode 100644 index 8acaf4eec0c..00000000000 --- a/netbox/dcim/migrations/0050_interface_vlan_tagging.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-11-10 20:10 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0020_ipaddress_add_role_carp'), - ('dcim', '0049_rackreservation_change_user'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='mode', - field=models.PositiveSmallIntegerField(blank=True, choices=[[100, 'Access'], [200, 'Tagged'], [300, 'Tagged All']], null=True), - ), - migrations.AddField( - model_name='interface', - name='tagged_vlans', - field=models.ManyToManyField(blank=True, related_name='interfaces_as_tagged', to='ipam.VLAN', verbose_name='Tagged VLANs'), - ), - migrations.AddField( - model_name='interface', - name='untagged_vlan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='interfaces_as_untagged', to='ipam.VLAN', verbose_name='Untagged VLAN'), - ), - ] diff --git a/netbox/dcim/migrations/0051_rackreservation_tenant.py b/netbox/dcim/migrations/0051_rackreservation_tenant.py deleted file mode 100644 index ca0513ab070..00000000000 --- a/netbox/dcim/migrations/0051_rackreservation_tenant.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-11-15 18:56 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0003_unicode_literals'), - ('dcim', '0050_interface_vlan_tagging'), - ] - - operations = [ - migrations.AddField( - model_name='rackreservation', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='rackreservations', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/dcim/migrations/0052_virtual_chassis.py b/netbox/dcim/migrations/0052_virtual_chassis.py deleted file mode 100644 index 56777744ca3..00000000000 --- a/netbox/dcim/migrations/0052_virtual_chassis.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-11-27 17:27 -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0051_rackreservation_tenant'), - ] - - operations = [ - migrations.CreateModel( - name='VirtualChassis', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('domain', models.CharField(blank=True, max_length=30)), - ('master', models.OneToOneField(default=1, on_delete=django.db.models.deletion.PROTECT, related_name='vc_master_for', to='dcim.Device')), - ], - ), - migrations.AddField( - model_name='device', - name='virtual_chassis', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='members', to='dcim.VirtualChassis'), - ), - migrations.AddField( - model_name='device', - name='vc_position', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MaxValueValidator(255)]), - ), - migrations.AddField( - model_name='device', - name='vc_priority', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MaxValueValidator(255)]), - ), - migrations.AlterUniqueTogether( - name='device', - unique_together=set([('virtual_chassis', 'vc_position'), ('rack', 'position', 'face')]), - ), - ] diff --git a/netbox/dcim/migrations/0053_platform_manufacturer.py b/netbox/dcim/migrations/0053_platform_manufacturer.py deleted file mode 100644 index bb5f24c91c6..00000000000 --- a/netbox/dcim/migrations/0053_platform_manufacturer.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-12-19 20:56 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0052_virtual_chassis'), - ] - - operations = [ - migrations.AddField( - model_name='platform', - name='manufacturer', - field=models.ForeignKey(blank=True, help_text='Optionally limit this platform to devices of a certain manufacturer', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='platforms', to='dcim.Manufacturer'), - ), - migrations.AlterField( - model_name='platform', - name='napalm_driver', - field=models.CharField(blank=True, help_text='The name of the NAPALM driver to use when interacting with devices', max_length=50, verbose_name='NAPALM driver'), - ), - ] diff --git a/netbox/dcim/migrations/0054_site_status_timezone_description.py b/netbox/dcim/migrations/0054_site_status_timezone_description.py deleted file mode 100644 index 554bf554cd8..00000000000 --- a/netbox/dcim/migrations/0054_site_status_timezone_description.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2018-01-25 18:21 -from django.db import migrations, models -import timezone_field.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0053_platform_manufacturer'), - ] - - operations = [ - migrations.AddField( - model_name='site', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='site', - name='status', - field=models.PositiveSmallIntegerField(choices=[[1, 'Active'], [2, 'Planned'], [4, 'Retired']], default=1), - ), - migrations.AddField( - model_name='site', - name='time_zone', - field=timezone_field.fields.TimeZoneField(blank=True), - ), - ] diff --git a/netbox/dcim/migrations/0055_virtualchassis_ordering.py b/netbox/dcim/migrations/0055_virtualchassis_ordering.py deleted file mode 100644 index ab23f403f7a..00000000000 --- a/netbox/dcim/migrations/0055_virtualchassis_ordering.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.9 on 2018-02-21 14:41 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0054_site_status_timezone_description'), - ] - - operations = [ - migrations.AlterModelOptions( - name='virtualchassis', - options={'ordering': ['master'], 'verbose_name_plural': 'virtual chassis'}, - ), - migrations.AlterField( - model_name='virtualchassis', - name='master', - field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='vc_master_for', to='dcim.Device'), - ), - ] diff --git a/netbox/dcim/migrations/0056_django2.py b/netbox/dcim/migrations/0056_django2.py deleted file mode 100644 index bb7af920ec9..00000000000 --- a/netbox/dcim/migrations/0056_django2.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.0.3 on 2018-03-30 14:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0055_virtualchassis_ordering'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='untagged_vlan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='interfaces_as_untagged', to='ipam.VLAN', verbose_name='Untagged VLAN'), - ), - migrations.AlterField( - model_name='platform', - name='manufacturer', - field=models.ForeignKey(blank=True, help_text='Optionally limit this platform to devices of a certain manufacturer', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='platforms', to='dcim.Manufacturer'), - ), - ] diff --git a/netbox/dcim/migrations/0057_tags.py b/netbox/dcim/migrations/0057_tags.py deleted file mode 100644 index 44ed0949769..00000000000 --- a/netbox/dcim/migrations/0057_tags.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:04 -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('dcim', '0056_django2'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='devicetype', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='rack', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='site', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='consoleport', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='consoleserverport', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='devicebay', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='interface', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='inventoryitem', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='poweroutlet', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='powerport', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='virtualchassis', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/netbox/dcim/migrations/0058_relax_rack_naming_constraints.py b/netbox/dcim/migrations/0058_relax_rack_naming_constraints.py deleted file mode 100644 index 9676e973d8d..00000000000 --- a/netbox/dcim/migrations/0058_relax_rack_naming_constraints.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:27 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0057_tags'), - ] - - operations = [ - migrations.AlterModelOptions( - name='rack', - options={'ordering': ['site', 'group', 'name']}, - ), - migrations.AlterUniqueTogether( - name='rack', - unique_together=set([('group', 'name'), ('group', 'facility_id')]), - ), - ] diff --git a/netbox/dcim/migrations/0059_site_latitude_longitude.py b/netbox/dcim/migrations/0059_site_latitude_longitude.py deleted file mode 100644 index 7c019ed5dd9..00000000000 --- a/netbox/dcim/migrations/0059_site_latitude_longitude.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-21 18:45 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0058_relax_rack_naming_constraints'), - ] - - operations = [ - migrations.AddField( - model_name='site', - name='latitude', - field=models.DecimalField(blank=True, decimal_places=6, max_digits=8, null=True), - ), - migrations.AddField( - model_name='site', - name='longitude', - field=models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0060_change_logging.py b/netbox/dcim/migrations/0060_change_logging.py deleted file mode 100644 index 12a9f95ada5..00000000000 --- a/netbox/dcim/migrations/0060_change_logging.py +++ /dev/null @@ -1,133 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-13 17:14 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0059_site_latitude_longitude'), - ] - - operations = [ - migrations.AddField( - model_name='devicerole', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='devicerole', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='devicetype', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='devicetype', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='manufacturer', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='manufacturer', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='platform', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='platform', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='rackgroup', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='rackgroup', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='rackreservation', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='rackrole', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='rackrole', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='region', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='region', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='virtualchassis', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='virtualchassis', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='device', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='device', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='rack', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='rack', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='rackreservation', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='site', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='site', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0061_platform_napalm_args.py b/netbox/dcim/migrations/0061_platform_napalm_args.py deleted file mode 100644 index 6da863aecc0..00000000000 --- a/netbox/dcim/migrations/0061_platform_napalm_args.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.6 on 2018-06-29 15:02 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0060_change_logging'), - ] - - operations = [ - migrations.AddField( - model_name='platform', - name='napalm_args', - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, help_text='Additional arguments to pass when initiating the NAPALM driver (JSON format)', null=True, verbose_name='NAPALM arguments'), - ), - ] diff --git a/netbox/dcim/migrations/0062_interface_mtu.py b/netbox/dcim/migrations/0062_interface_mtu.py deleted file mode 100644 index d1ae9252096..00000000000 --- a/netbox/dcim/migrations/0062_interface_mtu.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.0.8 on 2018-08-22 14:23 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0061_platform_napalm_args'), - ] - - operations = [ - migrations.AlterField( - model_name='interface', - name='mtu', - field=models.PositiveIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65536)], verbose_name='MTU'), - ), - migrations.AlterField( - model_name='interface', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1510, 'CFP2 (100GE)'], [1520, 'CFP4 (100GE)'], [1550, 'Cisco CPAK (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['SONET', [[6100, 'OC-3/STM-1'], [6200, 'OC-12/STM-4'], [6300, 'OC-48/STM-16'], [6400, 'OC-192/STM-64'], [6500, 'OC-768/STM-256'], [6600, 'OC-1920/STM-640'], [6700, 'OC-3840/STM-1234']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)'], [3320, 'SFP28 (32GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP'], [5300, 'Extreme SummitStack'], [5310, 'Extreme SummitStack-128'], [5320, 'Extreme SummitStack-256'], [5330, 'Extreme SummitStack-512']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='form_factor', - field=models.PositiveSmallIntegerField(choices=[['Virtual interfaces', [[0, 'Virtual'], [200, 'Link Aggregation Group (LAG)']]], ['Ethernet (fixed)', [[800, '100BASE-TX (10/100ME)'], [1000, '1000BASE-T (1GE)'], [1150, '10GBASE-T (10GE)'], [1170, '10GBASE-CX4 (10GE)']]], ['Ethernet (modular)', [[1050, 'GBIC (1GE)'], [1100, 'SFP (1GE)'], [1200, 'SFP+ (10GE)'], [1300, 'XFP (10GE)'], [1310, 'XENPAK (10GE)'], [1320, 'X2 (10GE)'], [1350, 'SFP28 (25GE)'], [1400, 'QSFP+ (40GE)'], [1500, 'CFP (100GE)'], [1510, 'CFP2 (100GE)'], [1520, 'CFP4 (100GE)'], [1550, 'Cisco CPAK (100GE)'], [1600, 'QSFP28 (100GE)']]], ['Wireless', [[2600, 'IEEE 802.11a'], [2610, 'IEEE 802.11b/g'], [2620, 'IEEE 802.11n'], [2630, 'IEEE 802.11ac'], [2640, 'IEEE 802.11ad']]], ['SONET', [[6100, 'OC-3/STM-1'], [6200, 'OC-12/STM-4'], [6300, 'OC-48/STM-16'], [6400, 'OC-192/STM-64'], [6500, 'OC-768/STM-256'], [6600, 'OC-1920/STM-640'], [6700, 'OC-3840/STM-1234']]], ['FibreChannel', [[3010, 'SFP (1GFC)'], [3020, 'SFP (2GFC)'], [3040, 'SFP (4GFC)'], [3080, 'SFP+ (8GFC)'], [3160, 'SFP+ (16GFC)'], [3320, 'SFP28 (32GFC)']]], ['Serial', [[4000, 'T1 (1.544 Mbps)'], [4010, 'E1 (2.048 Mbps)'], [4040, 'T3 (45 Mbps)'], [4050, 'E3 (34 Mbps)']]], ['Stacking', [[5000, 'Cisco StackWise'], [5050, 'Cisco StackWise Plus'], [5100, 'Cisco FlexStack'], [5150, 'Cisco FlexStack Plus'], [5200, 'Juniper VCP'], [5300, 'Extreme SummitStack'], [5310, 'Extreme SummitStack-128'], [5320, 'Extreme SummitStack-256'], [5330, 'Extreme SummitStack-512']]], ['Other', [[32767, 'Other']]]], default=1200), - ), - ] diff --git a/netbox/dcim/migrations/0063_device_local_context_data.py b/netbox/dcim/migrations/0063_device_local_context_data.py deleted file mode 100644 index 73c5688872b..00000000000 --- a/netbox/dcim/migrations/0063_device_local_context_data.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.8 on 2018-09-16 02:01 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0062_interface_mtu'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='local_context_data', - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0064_remove_platform_rpc_client.py b/netbox/dcim/migrations/0064_remove_platform_rpc_client.py deleted file mode 100644 index 4926c4b322b..00000000000 --- a/netbox/dcim/migrations/0064_remove_platform_rpc_client.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.0.8 on 2018-08-22 16:09 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0063_device_local_context_data'), - ] - - operations = [ - migrations.RemoveField( - model_name='platform', - name='rpc_client', - ), - ] diff --git a/netbox/dcim/migrations/0065_front_rear_ports.py b/netbox/dcim/migrations/0065_front_rear_ports.py deleted file mode 100644 index a7fe9eab97e..00000000000 --- a/netbox/dcim/migrations/0065_front_rear_ports.py +++ /dev/null @@ -1,131 +0,0 @@ -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('dcim', '0064_remove_platform_rpc_client'), - ] - - operations = [ - migrations.CreateModel( - name='FrontPort', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=64)), - ('type', models.PositiveSmallIntegerField()), - ('rear_port_position', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ('description', models.CharField(blank=True, max_length=100)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontports', to='dcim.Device')), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='FrontPortTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=64)), - ('type', models.PositiveSmallIntegerField()), - ('rear_port_position', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.CreateModel( - name='RearPort', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=64)), - ('type', models.PositiveSmallIntegerField()), - ('positions', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ('description', models.CharField(blank=True, max_length=100)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rearports', to='dcim.Device')), - ('tags', taggit.managers.TaggableManager(through='taggit.TaggedItem', to='taggit.Tag')), - ], - options={ - 'ordering': ['device', 'name'], - }, - ), - migrations.CreateModel( - name='RearPortTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=64)), - ('type', models.PositiveSmallIntegerField()), - ('positions', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(64)])), - ], - options={ - 'ordering': ['device_type', 'name'], - }, - ), - migrations.AddField( - model_name='rearporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rearport_templates', to='dcim.DeviceType'), - ), - migrations.AddField( - model_name='frontporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontport_templates', to='dcim.DeviceType'), - ), - migrations.AddField( - model_name='frontporttemplate', - name='rear_port', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontport_templates', to='dcim.RearPortTemplate'), - ), - migrations.AddField( - model_name='frontport', - name='rear_port', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontports', to='dcim.RearPort'), - ), - migrations.AddField( - model_name='frontport', - name='tags', - field=taggit.managers.TaggableManager(through='taggit.TaggedItem', to='taggit.Tag'), - ), - migrations.AlterUniqueTogether( - name='rearporttemplate', - unique_together={('device_type', 'name')}, - ), - migrations.AlterUniqueTogether( - name='rearport', - unique_together={('device', 'name')}, - ), - migrations.AlterUniqueTogether( - name='frontporttemplate', - unique_together={('rear_port', 'rear_port_position'), ('device_type', 'name')}, - ), - migrations.AlterUniqueTogether( - name='frontport', - unique_together={('device', 'name'), ('rear_port', 'rear_port_position')}, - ), - - # Rename reverse relationships of component templates to DeviceType - migrations.AlterField( - model_name='consoleporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleport_templates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='consoleserverporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverport_templates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlet_templates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='powerporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='powerport_templates', to='dcim.DeviceType'), - ), - ] diff --git a/netbox/dcim/migrations/0066_cables.py b/netbox/dcim/migrations/0066_cables.py deleted file mode 100644 index b30a2a8faca..00000000000 --- a/netbox/dcim/migrations/0066_cables.py +++ /dev/null @@ -1,322 +0,0 @@ -import sys - -from django.db import migrations, models -import django.db.models.deletion - -import utilities.fields - - -def console_connections_to_cables(apps, schema_editor): - """ - Copy all existing console connections as Cables - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - ConsolePort = apps.get_model('dcim', 'ConsolePort') - ConsoleServerPort = apps.get_model('dcim', 'ConsoleServerPort') - Cable = apps.get_model('dcim', 'Cable') - - # Load content types - consoleport_type = ContentType.objects.get_for_model(ConsolePort) - consoleserverport_type = ContentType.objects.get_for_model(ConsoleServerPort) - - # Create a new Cable instance from each console connection - if 'test' not in sys.argv: - print("\n Adding console connections... ", end='', flush=True) - for consoleport in ConsolePort.objects.filter(connected_endpoint__isnull=False): - - # Create the new Cable - cable = Cable.objects.create( - termination_a_type=consoleport_type, - termination_a_id=consoleport.id, - termination_b_type=consoleserverport_type, - termination_b_id=consoleport.connected_endpoint_id, - status=consoleport.connection_status - ) - - # Cache the Cable on its two termination points - ConsolePort.objects.filter(pk=consoleport.id).update( - cable=cable - ) - ConsoleServerPort.objects.filter(pk=consoleport.connected_endpoint_id).update( - connection_status=consoleport.connection_status, - cable=cable - ) - - cable_count = Cable.objects.filter(termination_a_type=consoleport_type).count() - if 'test' not in sys.argv: - print("{} cables created".format(cable_count)) - - # Normalize connection_status for all non-connected ConsolePorts - ConsolePort.objects.filter(connected_endpoint__isnull=True).update(connection_status=None) - - -def power_connections_to_cables(apps, schema_editor): - """ - Copy all existing power connections as Cables - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - PowerPort = apps.get_model('dcim', 'PowerPort') - PowerOutlet = apps.get_model('dcim', 'PowerOutlet') - Cable = apps.get_model('dcim', 'Cable') - - # Load content types - powerport_type = ContentType.objects.get_for_model(PowerPort) - poweroutlet_type = ContentType.objects.get_for_model(PowerOutlet) - - # Create a new Cable instance from each power connection - if 'test' not in sys.argv: - print(" Adding power connections... ", end='', flush=True) - for powerport in PowerPort.objects.filter(connected_endpoint__isnull=False): - - # Create the new Cable - cable = Cable.objects.create( - termination_a_type=powerport_type, - termination_a_id=powerport.id, - termination_b_type=poweroutlet_type, - termination_b_id=powerport.connected_endpoint_id, - status=powerport.connection_status - ) - - # Cache the Cable on its two termination points - PowerPort.objects.filter(pk=powerport.id).update( - cable=cable - ) - PowerOutlet.objects.filter(pk=powerport.connected_endpoint_id).update( - connection_status=powerport.connection_status, - cable=cable - ) - - cable_count = Cable.objects.filter(termination_a_type=powerport_type).count() - if 'test' not in sys.argv: - print("{} cables created".format(cable_count)) - - # Normalize connection_status for all non-connected PowerPorts - PowerPort.objects.filter(connected_endpoint__isnull=True).update(connection_status=None) - - -def interface_connections_to_cables(apps, schema_editor): - """ - Copy all InterfaceConnections as Cables - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - Interface = apps.get_model('dcim', 'Interface') - InterfaceConnection = apps.get_model('dcim', 'InterfaceConnection') - Cable = apps.get_model('dcim', 'Cable') - - # Load content types - interface_type = ContentType.objects.get_for_model(Interface) - - # Create a new Cable instance from each InterfaceConnection - if 'test' not in sys.argv: - print(" Adding interface connections... ", end='', flush=True) - for conn in InterfaceConnection.objects.all(): - - # Create the new Cable - cable = Cable.objects.create( - termination_a_type=interface_type, - termination_a_id=conn.interface_a_id, - termination_b_type=interface_type, - termination_b_id=conn.interface_b_id, - status=conn.connection_status - ) - - # Cache the connected Cable on each Interface - Interface.objects.filter(pk=conn.interface_a_id).update( - _connected_interface=conn.interface_b, - connection_status=conn.connection_status, - cable=cable - ) - Interface.objects.filter(pk=conn.interface_b_id).update( - _connected_interface=conn.interface_a, - connection_status=conn.connection_status, - cable=cable - ) - - cable_count = Cable.objects.filter(termination_a_type=interface_type).count() - if 'test' not in sys.argv: - print("{} cables created".format(cable_count)) - - -def delete_interfaceconnection_content_type(apps, schema_editor): - """ - Delete the ContentType for the InterfaceConnection model. (This is not done automatically upon model deletion.) - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - InterfaceConnection = apps.get_model('dcim', 'InterfaceConnection') - ContentType.objects.get_for_model(InterfaceConnection).delete() - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('circuits', '0006_terminations'), - ('dcim', '0065_front_rear_ports'), - ] - - operations = [ - - # Create the Cable model - migrations.CreateModel( - name='Cable', - options={'ordering': ['pk']}, - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('termination_a_id', models.PositiveIntegerField()), - ('termination_b_id', models.PositiveIntegerField()), - ('type', models.PositiveSmallIntegerField(blank=True, null=True)), - ('status', models.BooleanField(default=True)), - ('label', models.CharField(blank=True, max_length=100)), - ('color', utilities.fields.ColorField(blank=True, max_length=6)), - ('length', models.PositiveSmallIntegerField(blank=True, null=True)), - ('length_unit', models.PositiveSmallIntegerField(blank=True, null=True)), - ('_abs_length', models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True)), - ('termination_a_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', 'rearport', 'circuittermination', 'powerfeed']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ('termination_b_type', models.ForeignKey(limit_choices_to={'model__in': ['consoleport', 'consoleserverport', 'interface', 'poweroutlet', 'powerport', 'frontport', 'rearport', 'circuittermination', 'powerfeed']}, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ], - ), - migrations.AlterUniqueTogether( - name='cable', - unique_together={('termination_b_type', 'termination_b_id'), ('termination_a_type', 'termination_a_id')}, - ), - - # Alter console port models - migrations.RenameField( - model_name='consoleport', - old_name='cs_port', - new_name='connected_endpoint' - ), - migrations.AlterField( - model_name='consoleport', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleports', to='dcim.Device'), - ), - migrations.AlterField( - model_name='consoleport', - name='connected_endpoint', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_endpoint', to='dcim.ConsoleServerPort'), - ), - migrations.AlterField( - model_name='consoleport', - name='connection_status', - field=models.NullBooleanField(), - ), - migrations.AddField( - model_name='consoleport', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - migrations.AlterField( - model_name='consoleserverport', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverports', to='dcim.Device'), - ), - migrations.AddField( - model_name='consoleserverport', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - migrations.AddField( - model_name='consoleserverport', - name='connection_status', - field=models.NullBooleanField(), - ), - - # Alter power port models - migrations.RenameField( - model_name='powerport', - old_name='power_outlet', - new_name='connected_endpoint' - ), - migrations.AlterField( - model_name='powerport', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='powerports', to='dcim.Device'), - ), - migrations.AlterField( - model_name='powerport', - name='connected_endpoint', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='connected_endpoint', to='dcim.PowerOutlet'), - ), - migrations.AlterField( - model_name='powerport', - name='connection_status', - field=models.NullBooleanField(), - ), - migrations.AddField( - model_name='powerport', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - migrations.AlterField( - model_name='poweroutlet', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlets', to='dcim.Device'), - ), - migrations.AddField( - model_name='poweroutlet', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - migrations.AddField( - model_name='poweroutlet', - name='connection_status', - field=models.NullBooleanField(), - ), - - # Alter the Interface model - migrations.AddField( - model_name='interface', - name='_connected_circuittermination', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='circuits.CircuitTermination'), - ), - migrations.AddField( - model_name='interface', - name='_connected_interface', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Interface'), - ), - migrations.AddField( - model_name='interface', - name='connection_status', - field=models.NullBooleanField(), - ), - migrations.AddField( - model_name='interface', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - - # Alter front/rear port models - migrations.AddField( - model_name='frontport', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - migrations.AddField( - model_name='rearport', - name='cable', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable'), - ), - - # Copy console/power/interface connections as Cables - migrations.RunPython(console_connections_to_cables), - migrations.RunPython(power_connections_to_cables), - migrations.RunPython(interface_connections_to_cables), - - # Delete the InterfaceConnection model and its ContentType - migrations.RunPython(delete_interfaceconnection_content_type), - migrations.RemoveField( - model_name='interfaceconnection', - name='interface_a', - ), - migrations.RemoveField( - model_name='interfaceconnection', - name='interface_b', - ), - migrations.DeleteModel( - name='InterfaceConnection', - ), - ] diff --git a/netbox/dcim/migrations/0067_device_type_remove_qualifiers.py b/netbox/dcim/migrations/0067_device_type_remove_qualifiers.py deleted file mode 100644 index e78ccd8b6cd..00000000000 --- a/netbox/dcim/migrations/0067_device_type_remove_qualifiers.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.0.8 on 2018-10-26 17:49 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0066_cables'), - ] - - operations = [ - migrations.RemoveField( - model_name='devicetype', - name='is_console_server', - ), - migrations.RemoveField( - model_name='devicetype', - name='is_network_device', - ), - migrations.RemoveField( - model_name='devicetype', - name='is_pdu', - ), - migrations.RemoveField( - model_name='devicetype', - name='interface_ordering', - ), - ] diff --git a/netbox/dcim/migrations/0068_rack_new_fields.py b/netbox/dcim/migrations/0068_rack_new_fields.py deleted file mode 100644 index 5ad4703e4ef..00000000000 --- a/netbox/dcim/migrations/0068_rack_new_fields.py +++ /dev/null @@ -1,38 +0,0 @@ -from django.db import migrations, models - -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0067_device_type_remove_qualifiers'), - ] - - operations = [ - migrations.AddField( - model_name='rack', - name='status', - field=models.PositiveSmallIntegerField(default=3), - ), - migrations.AddField( - model_name='rack', - name='asset_tag', - field=utilities.fields.NullableCharField(blank=True, max_length=50, null=True, unique=True), - ), - migrations.AddField( - model_name='rack', - name='outer_depth', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='rack', - name='outer_unit', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='rack', - name='outer_width', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0069_deprecate_nullablecharfield.py b/netbox/dcim/migrations/0069_deprecate_nullablecharfield.py deleted file mode 100644 index 77cee8517f1..00000000000 --- a/netbox/dcim/migrations/0069_deprecate_nullablecharfield.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 2.1.5 on 2019-02-14 14:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0068_rack_new_fields'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='asset_tag', - field=models.CharField(blank=True, max_length=50, null=True, unique=True), - ), - migrations.AlterField( - model_name='device', - name='name', - field=models.CharField(blank=True, max_length=64, null=True, unique=True), - ), - migrations.AlterField( - model_name='inventoryitem', - name='asset_tag', - field=models.CharField(blank=True, max_length=50, null=True, unique=True), - ), - migrations.AlterField( - model_name='rack', - name='asset_tag', - field=models.CharField(blank=True, max_length=50, null=True, unique=True), - ), - migrations.AlterField( - model_name='rack', - name='facility_id', - field=models.CharField(blank=True, max_length=50, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0070_custom_tag_models.py b/netbox/dcim/migrations/0070_custom_tag_models.py deleted file mode 100644 index ee78bed0231..00000000000 --- a/netbox/dcim/migrations/0070_custom_tag_models.py +++ /dev/null @@ -1,85 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0069_deprecate_nullablecharfield'), - ('extras', '0019_tag_taggeditem'), - ] - - operations = [ - migrations.AlterField( - model_name='consoleport', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='consoleserverport', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='device', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='devicebay', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='devicetype', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='frontport', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='interface', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='poweroutlet', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='powerport', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='rack', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='rearport', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='site', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='virtualchassis', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/dcim/migrations/0071_device_components_add_description.py b/netbox/dcim/migrations/0071_device_components_add_description.py deleted file mode 100644 index d38f8a88b86..00000000000 --- a/netbox/dcim/migrations/0071_device_components_add_description.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 2.1.7 on 2019-02-20 18:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0070_custom_tag_models'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='consoleserverport', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='devicebay', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='poweroutlet', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='powerport', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/dcim/migrations/0072_powerfeeds.py b/netbox/dcim/migrations/0072_powerfeeds.py deleted file mode 100644 index 63662684d74..00000000000 --- a/netbox/dcim/migrations/0072_powerfeeds.py +++ /dev/null @@ -1,134 +0,0 @@ -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0021_add_color_comments_changelog_to_tag'), - ('dcim', '0071_device_components_add_description'), - ] - - operations = [ - migrations.CreateModel( - name='PowerFeed', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('name', models.CharField(max_length=50)), - ('status', models.PositiveSmallIntegerField(default=1)), - ('type', models.PositiveSmallIntegerField(default=1)), - ('supply', models.PositiveSmallIntegerField(default=1)), - ('phase', models.PositiveSmallIntegerField(default=1)), - ('voltage', models.PositiveSmallIntegerField(default=120, validators=[django.core.validators.MinValueValidator(1)])), - ('amperage', models.PositiveSmallIntegerField(default=20, validators=[django.core.validators.MinValueValidator(1)])), - ('max_utilization', models.PositiveSmallIntegerField(default=80, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)])), - ('available_power', models.PositiveSmallIntegerField(default=0, editable=False)), - ('comments', models.TextField(blank=True)), - ('cable', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.Cable')), - ], - options={ - 'ordering': ['power_panel', 'name'], - }, - ), - migrations.CreateModel( - name='PowerPanel', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('name', models.CharField(max_length=50)), - ('rack_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dcim.RackGroup')), - ('site', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='dcim.Site')), - ], - options={ - 'ordering': ['site', 'name'], - }, - ), - migrations.AddField( - model_name='powerfeed', - name='power_panel', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='powerfeeds', to='dcim.PowerPanel'), - ), - migrations.AddField( - model_name='powerfeed', - name='rack', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dcim.Rack'), - ), - migrations.AddField( - model_name='powerfeed', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AddField( - model_name='powerfeed', - name='connected_endpoint', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.PowerPort'), - ), - migrations.AddField( - model_name='powerfeed', - name='connection_status', - field=models.NullBooleanField(), - ), - migrations.RenameField( - model_name='powerport', - old_name='connected_endpoint', - new_name='_connected_poweroutlet', - ), - migrations.AddField( - model_name='powerport', - name='_connected_powerfeed', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.PowerFeed'), - ), - migrations.AddField( - model_name='powerport', - name='allocated_draw', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)]), - ), - migrations.AddField( - model_name='powerport', - name='maximum_draw', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)]), - ), - migrations.AddField( - model_name='powerporttemplate', - name='allocated_draw', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)]), - ), - migrations.AddField( - model_name='powerporttemplate', - name='maximum_draw', - field=models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)]), - ), - migrations.AlterUniqueTogether( - name='powerpanel', - unique_together={('site', 'name')}, - ), - migrations.AlterUniqueTogether( - name='powerfeed', - unique_together={('power_panel', 'name')}, - ), - migrations.AddField( - model_name='poweroutlet', - name='feed_leg', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='poweroutlet', - name='power_port', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='poweroutlets', to='dcim.PowerPort'), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='feed_leg', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='power_port', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='poweroutlet_templates', to='dcim.PowerPortTemplate'), - ), - ] diff --git a/netbox/dcim/migrations/0073_interface_form_factor_to_type.py b/netbox/dcim/migrations/0073_interface_form_factor_to_type.py deleted file mode 100644 index 38016ea0060..00000000000 --- a/netbox/dcim/migrations/0073_interface_form_factor_to_type.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.1.7 on 2019-04-12 17:27 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0072_powerfeeds'), - ] - - operations = [ - migrations.RenameField( - model_name='interface', - old_name='form_factor', - new_name='type', - ), - migrations.RenameField( - model_name='interfacetemplate', - old_name='form_factor', - new_name='type', - ), - ] diff --git a/netbox/dcim/migrations/0074_increase_field_length_platform_name_slug.py b/netbox/dcim/migrations/0074_increase_field_length_platform_name_slug.py deleted file mode 100644 index 2c8a2255cc9..00000000000 --- a/netbox/dcim/migrations/0074_increase_field_length_platform_name_slug.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2 on 2019-07-17 20:40 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0073_interface_form_factor_to_type'), - ] - - operations = [ - migrations.AlterField( - model_name='platform', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='platform', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - ] diff --git a/netbox/dcim/migrations/0075_cable_devices.py b/netbox/dcim/migrations/0075_cable_devices.py deleted file mode 100644 index f022fe11199..00000000000 --- a/netbox/dcim/migrations/0075_cable_devices.py +++ /dev/null @@ -1,60 +0,0 @@ -import sys - -from django.db import migrations, models -import django.db.models.deletion - - -def cache_cable_devices(apps, schema_editor): - Cable = apps.get_model('dcim', 'Cable') - - if 'test' not in sys.argv: - print("\nUpdating cable device terminations...") - cable_count = Cable.objects.count() - - # Cache A/B termination devices on all existing Cables. Note that the custom save() method on Cable is not - # available during a migration, so we replicate its logic here. - for i, cable in enumerate(Cable.objects.all(), start=1): - - if not i % 1000 and 'test' not in sys.argv: - print("[{}/{}]".format(i, cable_count)) - - termination_a_model = apps.get_model(cable.termination_a_type.app_label, cable.termination_a_type.model) - termination_a_device = None - if hasattr(termination_a_model, 'device'): - termination_a = termination_a_model.objects.get(pk=cable.termination_a_id) - termination_a_device = termination_a.device - - termination_b_model = apps.get_model(cable.termination_b_type.app_label, cable.termination_b_type.model) - termination_b_device = None - if hasattr(termination_b_model, 'device'): - termination_b = termination_b_model.objects.get(pk=cable.termination_b_id) - termination_b_device = termination_b.device - - Cable.objects.filter(pk=cable.pk).update( - _termination_a_device=termination_a_device, - _termination_b_device=termination_b_device - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0074_increase_field_length_platform_name_slug'), - ] - - operations = [ - migrations.AddField( - model_name='cable', - name='_termination_a_device', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.Device'), - ), - migrations.AddField( - model_name='cable', - name='_termination_b_device', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.Device'), - ), - migrations.RunPython( - code=cache_cable_devices, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0076_console_port_types.py b/netbox/dcim/migrations/0076_console_port_types.py deleted file mode 100644 index 844b3228330..00000000000 --- a/netbox/dcim/migrations/0076_console_port_types.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.2.6 on 2019-10-30 17:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0075_cable_devices'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='consoleporttemplate', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='consoleserverport', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - ] diff --git a/netbox/dcim/migrations/0077_power_types.py b/netbox/dcim/migrations/0077_power_types.py deleted file mode 100644 index 702bd837b02..00000000000 --- a/netbox/dcim/migrations/0077_power_types.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.2.6 on 2019-11-06 19:48 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0076_console_port_types'), - ] - - operations = [ - migrations.AddField( - model_name='poweroutlet', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='powerport', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - migrations.AddField( - model_name='powerporttemplate', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - ] diff --git a/netbox/dcim/migrations/0078_3569_site_fields.py b/netbox/dcim/migrations/0078_3569_site_fields.py deleted file mode 100644 index 8775abe5e71..00000000000 --- a/netbox/dcim/migrations/0078_3569_site_fields.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import migrations, models - -SITE_STATUS_CHOICES = ( - (1, 'active'), - (2, 'planned'), - (4, 'retired'), -) - - -def site_status_to_slug(apps, schema_editor): - Site = apps.get_model('dcim', 'Site') - for id, slug in SITE_STATUS_CHOICES: - Site.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0077_power_types'), - ] - - operations = [ - - # Site.status - migrations.AlterField( - model_name='site', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=site_status_to_slug - ), - - ] diff --git a/netbox/dcim/migrations/0079_3569_rack_fields.py b/netbox/dcim/migrations/0079_3569_rack_fields.py deleted file mode 100644 index da544bb7a6e..00000000000 --- a/netbox/dcim/migrations/0079_3569_rack_fields.py +++ /dev/null @@ -1,92 +0,0 @@ -from django.db import migrations, models - -RACK_TYPE_CHOICES = ( - (100, '2-post-frame'), - (200, '4-post-frame'), - (300, '4-post-cabinet'), - (1000, 'wall-frame'), - (1100, 'wall-cabinet'), -) - -RACK_STATUS_CHOICES = ( - (0, 'reserved'), - (1, 'available'), - (2, 'planned'), - (3, 'active'), - (4, 'deprecated'), -) - -RACK_DIMENSION_CHOICES = ( - (1000, 'mm'), - (2000, 'in'), -) - - -def rack_type_to_slug(apps, schema_editor): - Rack = apps.get_model('dcim', 'Rack') - for id, slug in RACK_TYPE_CHOICES: - Rack.objects.filter(type=str(id)).update(type=slug) - - -def rack_status_to_slug(apps, schema_editor): - Rack = apps.get_model('dcim', 'Rack') - for id, slug in RACK_STATUS_CHOICES: - Rack.objects.filter(status=str(id)).update(status=slug) - - -def rack_outer_unit_to_slug(apps, schema_editor): - Rack = apps.get_model('dcim', 'Rack') - for id, slug in RACK_DIMENSION_CHOICES: - Rack.objects.filter(outer_unit=str(id)).update(outer_unit=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0078_3569_site_fields'), - ] - - operations = [ - - # Rack.type - migrations.AlterField( - model_name='rack', - name='type', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=rack_type_to_slug - ), - migrations.AlterField( - model_name='rack', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - - # Rack.status - migrations.AlterField( - model_name='rack', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=rack_status_to_slug - ), - - # Rack.outer_unit - migrations.AlterField( - model_name='rack', - name='outer_unit', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=rack_outer_unit_to_slug - ), - migrations.AlterField( - model_name='rack', - name='outer_unit', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/dcim/migrations/0080_3569_devicetype_fields.py b/netbox/dcim/migrations/0080_3569_devicetype_fields.py deleted file mode 100644 index e729eaa55a0..00000000000 --- a/netbox/dcim/migrations/0080_3569_devicetype_fields.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.db import migrations, models - -SUBDEVICE_ROLE_CHOICES = ( - ('true', 'parent'), - ('false', 'child'), -) - - -def devicetype_subdevicerole_to_slug(apps, schema_editor): - DeviceType = apps.get_model('dcim', 'DeviceType') - for boolean, slug in SUBDEVICE_ROLE_CHOICES: - DeviceType.objects.filter(subdevice_role=boolean).update(subdevice_role=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0079_3569_rack_fields'), - ] - - operations = [ - - # DeviceType.subdevice_role - migrations.AlterField( - model_name='devicetype', - name='subdevice_role', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=devicetype_subdevicerole_to_slug - ), - migrations.AlterField( - model_name='devicetype', - name='subdevice_role', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/dcim/migrations/0081_3569_device_fields.py b/netbox/dcim/migrations/0081_3569_device_fields.py deleted file mode 100644 index f1f0bdb2b9c..00000000000 --- a/netbox/dcim/migrations/0081_3569_device_fields.py +++ /dev/null @@ -1,65 +0,0 @@ -from django.db import migrations, models - -DEVICE_FACE_CHOICES = ( - (0, 'front'), - (1, 'rear'), -) - -DEVICE_STATUS_CHOICES = ( - (0, 'offline'), - (1, 'active'), - (2, 'planned'), - (3, 'staged'), - (4, 'failed'), - (5, 'inventory'), - (6, 'decommissioning'), -) - - -def device_face_to_slug(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - for id, slug in DEVICE_FACE_CHOICES: - Device.objects.filter(face=str(id)).update(face=slug) - - -def device_status_to_slug(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - for id, slug in DEVICE_STATUS_CHOICES: - Device.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0080_3569_devicetype_fields'), - ] - - operations = [ - - # Device.face - migrations.AlterField( - model_name='device', - name='face', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=device_face_to_slug - ), - migrations.AlterField( - model_name='device', - name='face', - field=models.CharField(blank=True, max_length=50), - ), - - # Device.status - migrations.AlterField( - model_name='device', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=device_status_to_slug - ), - - ] diff --git a/netbox/dcim/migrations/0082_3569_interface_fields.py b/netbox/dcim/migrations/0082_3569_interface_fields.py deleted file mode 100644 index 57701ce0a5e..00000000000 --- a/netbox/dcim/migrations/0082_3569_interface_fields.py +++ /dev/null @@ -1,147 +0,0 @@ -from django.db import migrations, models - - -INTERFACE_TYPE_CHOICES = ( - (0, 'virtual'), - (200, 'lag'), - (800, '100base-tx'), - (1000, '1000base-t'), - (1050, '1000base-x-gbic'), - (1100, '1000base-x-sfp'), - (1120, '2.5gbase-t'), - (1130, '5gbase-t'), - (1150, '10gbase-t'), - (1170, '10gbase-cx4'), - (1200, '10gbase-x-sfpp'), - (1300, '10gbase-x-xfp'), - (1310, '10gbase-x-xenpak'), - (1320, '10gbase-x-x2'), - (1350, '25gbase-x-sfp28'), - (1400, '40gbase-x-qsfpp'), - (1420, '50gbase-x-sfp28'), - (1500, '100gbase-x-cfp'), - (1510, '100gbase-x-cfp2'), - (1520, '100gbase-x-cfp4'), - (1550, '100gbase-x-cpak'), - (1600, '100gbase-x-qsfp28'), - (1650, '200gbase-x-cfp2'), - (1700, '200gbase-x-qsfp56'), - (1750, '400gbase-x-qsfpdd'), - (1800, '400gbase-x-osfp'), - (2600, 'ieee802.11a'), - (2610, 'ieee802.11g'), - (2620, 'ieee802.11n'), - (2630, 'ieee802.11ac'), - (2640, 'ieee802.11ad'), - (2810, 'gsm'), - (2820, 'cdma'), - (2830, 'lte'), - (6100, 'sonet-oc3'), - (6200, 'sonet-oc12'), - (6300, 'sonet-oc48'), - (6400, 'sonet-oc192'), - (6500, 'sonet-oc768'), - (6600, 'sonet-oc1920'), - (6700, 'sonet-oc3840'), - (3010, '1gfc-sfp'), - (3020, '2gfc-sfp'), - (3040, '4gfc-sfp'), - (3080, '8gfc-sfpp'), - (3160, '16gfc-sfpp'), - (3320, '32gfc-sfp28'), - (3400, '128gfc-sfp28'), - (7010, 'inifiband-sdr'), - (7020, 'inifiband-ddr'), - (7030, 'inifiband-qdr'), - (7040, 'inifiband-fdr10'), - (7050, 'inifiband-fdr'), - (7060, 'inifiband-edr'), - (7070, 'inifiband-hdr'), - (7080, 'inifiband-ndr'), - (7090, 'inifiband-xdr'), - (4000, 't1'), - (4010, 'e1'), - (4040, 't3'), - (4050, 'e3'), - (5000, 'cisco-stackwise'), - (5050, 'cisco-stackwise-plus'), - (5100, 'cisco-flexstack'), - (5150, 'cisco-flexstack-plus'), - (5200, 'juniper-vcp'), - (5300, 'extreme-summitstack'), - (5310, 'extreme-summitstack-128'), - (5320, 'extreme-summitstack-256'), - (5330, 'extreme-summitstack-512'), -) - - -INTERFACE_MODE_CHOICES = ( - (100, 'access'), - (200, 'tagged'), - (300, 'tagged-all'), -) - - -def interfacetemplate_type_to_slug(apps, schema_editor): - InterfaceTemplate = apps.get_model('dcim', 'InterfaceTemplate') - for id, slug in INTERFACE_TYPE_CHOICES: - InterfaceTemplate.objects.filter(type=id).update(type=slug) - - -def interface_type_to_slug(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - for id, slug in INTERFACE_TYPE_CHOICES: - Interface.objects.filter(type=id).update(type=slug) - - -def interface_mode_to_slug(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - for id, slug in INTERFACE_MODE_CHOICES: - Interface.objects.filter(mode=id).update(mode=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0081_3569_device_fields'), - ] - - operations = [ - - # InterfaceTemplate.type - migrations.AlterField( - model_name='interfacetemplate', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=interfacetemplate_type_to_slug - ), - - # Interface.type - migrations.AlterField( - model_name='interface', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=interface_type_to_slug - ), - - # Interface.mode - migrations.AlterField( - model_name='interface', - name='mode', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=interface_mode_to_slug - ), - migrations.AlterField( - model_name='interface', - name='mode', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/dcim/migrations/0082_3569_port_fields.py b/netbox/dcim/migrations/0082_3569_port_fields.py deleted file mode 100644 index 6d8f50c3227..00000000000 --- a/netbox/dcim/migrations/0082_3569_port_fields.py +++ /dev/null @@ -1,93 +0,0 @@ -from django.db import migrations, models - - -PORT_TYPE_CHOICES = ( - (1000, '8p8c'), - (1100, '110-punch'), - (1200, 'bnc'), - (2000, 'st'), - (2100, 'sc'), - (2110, 'sc-apc'), - (2200, 'fc'), - (2300, 'lc'), - (2310, 'lc-apc'), - (2400, 'mtrj'), - (2500, 'mpo'), - (2600, 'lsh'), - (2610, 'lsh-apc'), -) - - -def frontporttemplate_type_to_slug(apps, schema_editor): - FrontPortTemplate = apps.get_model('dcim', 'FrontPortTemplate') - for id, slug in PORT_TYPE_CHOICES: - FrontPortTemplate.objects.filter(type=id).update(type=slug) - - -def rearporttemplate_type_to_slug(apps, schema_editor): - RearPortTemplate = apps.get_model('dcim', 'RearPortTemplate') - for id, slug in PORT_TYPE_CHOICES: - RearPortTemplate.objects.filter(type=id).update(type=slug) - - -def frontport_type_to_slug(apps, schema_editor): - FrontPort = apps.get_model('dcim', 'FrontPort') - for id, slug in PORT_TYPE_CHOICES: - FrontPort.objects.filter(type=id).update(type=slug) - - -def rearport_type_to_slug(apps, schema_editor): - RearPort = apps.get_model('dcim', 'RearPort') - for id, slug in PORT_TYPE_CHOICES: - RearPort.objects.filter(type=id).update(type=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0082_3569_interface_fields'), - ] - - operations = [ - - # FrontPortTemplate.type - migrations.AlterField( - model_name='frontporttemplate', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=frontporttemplate_type_to_slug - ), - - # RearPortTemplate.type - migrations.AlterField( - model_name='rearporttemplate', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=rearporttemplate_type_to_slug - ), - - # FrontPort.type - migrations.AlterField( - model_name='frontport', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=frontport_type_to_slug - ), - - # RearPort.type - migrations.AlterField( - model_name='rearport', - name='type', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=rearport_type_to_slug - ), - ] diff --git a/netbox/dcim/migrations/0083_3569_cable_fields.py b/netbox/dcim/migrations/0083_3569_cable_fields.py deleted file mode 100644 index 26cf734f7c4..00000000000 --- a/netbox/dcim/migrations/0083_3569_cable_fields.py +++ /dev/null @@ -1,106 +0,0 @@ -from django.db import migrations, models - - -CABLE_TYPE_CHOICES = ( - (1300, 'cat3'), - (1500, 'cat5'), - (1510, 'cat5e'), - (1600, 'cat6'), - (1610, 'cat6a'), - (1700, 'cat7'), - (1800, 'dac-active'), - (1810, 'dac-passive'), - (1900, 'coaxial'), - (3000, 'mmf'), - (3010, 'mmf-om1'), - (3020, 'mmf-om2'), - (3030, 'mmf-om3'), - (3040, 'mmf-om4'), - (3500, 'smf'), - (3510, 'smf-os1'), - (3520, 'smf-os2'), - (3800, 'aoc'), - (5000, 'power'), -) - -CABLE_STATUS_CHOICES = ( - ('true', 'connected'), - ('false', 'planned'), -) - -CABLE_LENGTH_UNIT_CHOICES = ( - (1200, 'm'), - (1100, 'cm'), - (2100, 'ft'), - (2000, 'in'), -) - - -def cable_type_to_slug(apps, schema_editor): - Cable = apps.get_model('dcim', 'Cable') - for id, slug in CABLE_TYPE_CHOICES: - Cable.objects.filter(type=id).update(type=slug) - - -def cable_status_to_slug(apps, schema_editor): - Cable = apps.get_model('dcim', 'Cable') - for bool_str, slug in CABLE_STATUS_CHOICES: - Cable.objects.filter(status=bool_str).update(status=slug) - - -def cable_length_unit_to_slug(apps, schema_editor): - Cable = apps.get_model('dcim', 'Cable') - for id, slug in CABLE_LENGTH_UNIT_CHOICES: - Cable.objects.filter(length_unit=id).update(length_unit=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0082_3569_port_fields'), - ] - - operations = [ - - # Cable.type - migrations.AlterField( - model_name='cable', - name='type', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=cable_type_to_slug - ), - migrations.AlterField( - model_name='cable', - name='type', - field=models.CharField(blank=True, max_length=50), - ), - - # Cable.status - migrations.AlterField( - model_name='cable', - name='status', - field=models.CharField(default='connected', max_length=50), - ), - migrations.RunPython( - code=cable_status_to_slug - ), - - # Cable.length_unit - migrations.AlterField( - model_name='cable', - name='length_unit', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=cable_length_unit_to_slug - ), - migrations.AlterField( - model_name='cable', - name='length_unit', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/dcim/migrations/0084_3569_powerfeed_fields.py b/netbox/dcim/migrations/0084_3569_powerfeed_fields.py deleted file mode 100644 index 332443d0ab3..00000000000 --- a/netbox/dcim/migrations/0084_3569_powerfeed_fields.py +++ /dev/null @@ -1,100 +0,0 @@ -from django.db import migrations, models - - -POWERFEED_STATUS_CHOICES = ( - (0, 'offline'), - (1, 'active'), - (2, 'planned'), - (4, 'failed'), -) - -POWERFEED_TYPE_CHOICES = ( - (1, 'primary'), - (2, 'redundant'), -) - -POWERFEED_SUPPLY_CHOICES = ( - (1, 'ac'), - (2, 'dc'), -) - -POWERFEED_PHASE_CHOICES = ( - (1, 'single-phase'), - (3, 'three-phase'), -) - - -def powerfeed_status_to_slug(apps, schema_editor): - PowerFeed = apps.get_model('dcim', 'PowerFeed') - for id, slug in POWERFEED_STATUS_CHOICES: - PowerFeed.objects.filter(status=id).update(status=slug) - - -def powerfeed_type_to_slug(apps, schema_editor): - PowerFeed = apps.get_model('dcim', 'PowerFeed') - for id, slug in POWERFEED_TYPE_CHOICES: - PowerFeed.objects.filter(type=id).update(type=slug) - - -def powerfeed_supply_to_slug(apps, schema_editor): - PowerFeed = apps.get_model('dcim', 'PowerFeed') - for id, slug in POWERFEED_SUPPLY_CHOICES: - PowerFeed.objects.filter(supply=id).update(supply=slug) - - -def powerfeed_phase_to_slug(apps, schema_editor): - PowerFeed = apps.get_model('dcim', 'PowerFeed') - for id, slug in POWERFEED_PHASE_CHOICES: - PowerFeed.objects.filter(phase=id).update(phase=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0083_3569_cable_fields'), - ] - - operations = [ - - # PowerFeed.status - migrations.AlterField( - model_name='powerfeed', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=powerfeed_status_to_slug - ), - - # PowerFeed.type - migrations.AlterField( - model_name='powerfeed', - name='type', - field=models.CharField(default='primary', max_length=50), - ), - migrations.RunPython( - code=powerfeed_type_to_slug - ), - - # PowerFeed.supply - migrations.AlterField( - model_name='powerfeed', - name='supply', - field=models.CharField(default='ac', max_length=50), - ), - migrations.RunPython( - code=powerfeed_supply_to_slug - ), - - # PowerFeed.phase - migrations.AlterField( - model_name='powerfeed', - name='phase', - field=models.CharField(default='single-phase', max_length=50), - ), - migrations.RunPython( - code=powerfeed_phase_to_slug - ), - - ] diff --git a/netbox/dcim/migrations/0085_3569_poweroutlet_fields.py b/netbox/dcim/migrations/0085_3569_poweroutlet_fields.py deleted file mode 100644 index e2c070584f0..00000000000 --- a/netbox/dcim/migrations/0085_3569_poweroutlet_fields.py +++ /dev/null @@ -1,62 +0,0 @@ -from django.db import migrations, models - - -POWEROUTLET_FEED_LEG_CHOICES_CHOICES = ( - (1, 'A'), - (2, 'B'), - (3, 'C'), -) - - -def poweroutlettemplate_feed_leg_to_slug(apps, schema_editor): - PowerOutletTemplate = apps.get_model('dcim', 'PowerOutletTemplate') - for id, slug in POWEROUTLET_FEED_LEG_CHOICES_CHOICES: - PowerOutletTemplate.objects.filter(feed_leg=id).update(feed_leg=slug) - - -def poweroutlet_feed_leg_to_slug(apps, schema_editor): - PowerOutlet = apps.get_model('dcim', 'PowerOutlet') - for id, slug in POWEROUTLET_FEED_LEG_CHOICES_CHOICES: - PowerOutlet.objects.filter(feed_leg=id).update(feed_leg=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('dcim', '0084_3569_powerfeed_fields'), - ] - - operations = [ - - # PowerOutletTemplate.feed_leg - migrations.AlterField( - model_name='poweroutlettemplate', - name='feed_leg', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=poweroutlettemplate_feed_leg_to_slug - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='feed_leg', - field=models.CharField(blank=True, max_length=50), - ), - - # PowerOutlet.feed_leg - migrations.AlterField( - model_name='poweroutlet', - name='feed_leg', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=poweroutlet_feed_leg_to_slug - ), - migrations.AlterField( - model_name='poweroutlet', - name='feed_leg', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/dcim/migrations/0086_device_name_nonunique.py b/netbox/dcim/migrations/0086_device_name_nonunique.py deleted file mode 100644 index 3666cf01873..00000000000 --- a/netbox/dcim/migrations/0086_device_name_nonunique.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-09 15:49 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0006_custom_tag_models'), - ('dcim', '0085_3569_poweroutlet_fields'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='name', - field=models.CharField(blank=True, max_length=64, null=True), - ), - migrations.AlterUniqueTogether( - name='device', - unique_together={('rack', 'position', 'face'), ('virtual_chassis', 'vc_position'), ('site', 'tenant', 'name')}, - ), - ] diff --git a/netbox/dcim/migrations/0087_role_descriptions.py b/netbox/dcim/migrations/0087_role_descriptions.py deleted file mode 100644 index 5f8fd9707ac..00000000000 --- a/netbox/dcim/migrations/0087_role_descriptions.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-10 17:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0086_device_name_nonunique'), - ] - - operations = [ - migrations.AddField( - model_name='devicerole', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AddField( - model_name='rackrole', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/dcim/migrations/0088_powerfeed_available_power.py b/netbox/dcim/migrations/0088_powerfeed_available_power.py deleted file mode 100644 index af13d49c6bf..00000000000 --- a/netbox/dcim/migrations/0088_powerfeed_available_power.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.8 on 2019-12-12 02:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0087_role_descriptions'), - ] - - operations = [ - migrations.AlterField( - model_name='powerfeed', - name='available_power', - field=models.PositiveIntegerField(default=0, editable=False), - ), - ] diff --git a/netbox/dcim/migrations/0089_deterministic_ordering.py b/netbox/dcim/migrations/0089_deterministic_ordering.py deleted file mode 100644 index 77d18739ea5..00000000000 --- a/netbox/dcim/migrations/0089_deterministic_ordering.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 18:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0088_powerfeed_available_power'), - ] - - operations = [ - migrations.AlterModelOptions( - name='device', - options={'ordering': ('name', 'pk')}, - ), - migrations.AlterModelOptions( - name='rack', - options={'ordering': ('site', 'group', 'name', 'pk')}, - ), - ] diff --git a/netbox/dcim/migrations/0090_cable_termination_models.py b/netbox/dcim/migrations/0090_cable_termination_models.py deleted file mode 100644 index b5f240f3e81..00000000000 --- a/netbox/dcim/migrations/0090_cable_termination_models.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 20:51 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0089_deterministic_ordering'), - ] - - operations = [ - migrations.AlterField( - model_name='cable', - name='termination_a_type', - field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='cable', - name='termination_b_type', - field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/dcim/migrations/0091_interface_type_other.py b/netbox/dcim/migrations/0091_interface_type_other.py deleted file mode 100644 index 1ea24885f84..00000000000 --- a/netbox/dcim/migrations/0091_interface_type_other.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.db import migrations - - -def interface_type_to_slug(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - Interface.objects.filter(type=32767).update(type='other') - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0090_cable_termination_models'), - ] - - operations = [ - # Missed type "other" in the initial migration (see #3967) - migrations.RunPython( - code=interface_type_to_slug - ), - ] diff --git a/netbox/dcim/migrations/0092_fix_rack_outer_unit.py b/netbox/dcim/migrations/0092_fix_rack_outer_unit.py deleted file mode 100644 index 3d63f1cb305..00000000000 --- a/netbox/dcim/migrations/0092_fix_rack_outer_unit.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.db import migrations - -RACK_DIMENSION_CHOICES = ( - (1000, 'mm'), - (2000, 'in'), -) - - -def rack_outer_unit_to_slug(apps, schema_editor): - Rack = apps.get_model('dcim', 'Rack') - for id, slug in RACK_DIMENSION_CHOICES: - Rack.objects.filter(outer_unit=str(id)).update(outer_unit=slug) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0091_interface_type_other'), - ] - - operations = [ - # Fixes a missed field migration from #3569; see bug #4056. The original migration has also been fixed. - migrations.RunPython( - code=rack_outer_unit_to_slug - ), - ] diff --git a/netbox/dcim/migrations/0093_device_component_ordering.py b/netbox/dcim/migrations/0093_device_component_ordering.py deleted file mode 100644 index 925694958e7..00000000000 --- a/netbox/dcim/migrations/0093_device_component_ordering.py +++ /dev/null @@ -1,147 +0,0 @@ -from django.db import migrations -import utilities.fields -import utilities.ordering - - -def _update_model_names(model): - # Update each unique field value in bulk - for name in model.objects.values_list('name', flat=True).order_by('name').distinct(): - model.objects.filter(name=name).update(_name=utilities.ordering.naturalize(name, max_length=100)) - - -def naturalize_consoleports(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'ConsolePort')) - - -def naturalize_consoleserverports(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'ConsoleServerPort')) - - -def naturalize_powerports(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'PowerPort')) - - -def naturalize_poweroutlets(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'PowerOutlet')) - - -def naturalize_frontports(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'FrontPort')) - - -def naturalize_rearports(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'RearPort')) - - -def naturalize_devicebays(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'DeviceBay')) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0092_fix_rack_outer_unit'), - ] - - operations = [ - migrations.AlterModelOptions( - name='consoleport', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='consoleserverport', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='devicebay', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='frontport', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='inventoryitem', - options={'ordering': ('device__id', 'parent__id', '_name')}, - ), - migrations.AlterModelOptions( - name='poweroutlet', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='powerport', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='rearport', - options={'ordering': ('device', '_name')}, - ), - migrations.AddField( - model_name='consoleport', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='consoleserverport', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='devicebay', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='frontport', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='inventoryitem', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='poweroutlet', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='powerport', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='rearport', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.RunPython( - code=naturalize_consoleports, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_consoleserverports, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_powerports, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_poweroutlets, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_frontports, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_rearports, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_devicebays, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0094_device_component_template_ordering.py b/netbox/dcim/migrations/0094_device_component_template_ordering.py deleted file mode 100644 index 70acd31894f..00000000000 --- a/netbox/dcim/migrations/0094_device_component_template_ordering.py +++ /dev/null @@ -1,138 +0,0 @@ -from django.db import migrations -import utilities.fields -import utilities.ordering - - -def _update_model_names(model): - # Update each unique field value in bulk - for name in model.objects.values_list('name', flat=True).order_by('name').distinct(): - model.objects.filter(name=name).update(_name=utilities.ordering.naturalize(name, max_length=100)) - - -def naturalize_consoleporttemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'ConsolePortTemplate')) - - -def naturalize_consoleserverporttemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'ConsoleServerPortTemplate')) - - -def naturalize_powerporttemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'PowerPortTemplate')) - - -def naturalize_poweroutlettemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'PowerOutletTemplate')) - - -def naturalize_frontporttemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'FrontPortTemplate')) - - -def naturalize_rearporttemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'RearPortTemplate')) - - -def naturalize_devicebaytemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'DeviceBayTemplate')) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0093_device_component_ordering'), - ] - - operations = [ - migrations.AlterModelOptions( - name='consoleporttemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='consoleserverporttemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='devicebaytemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='frontporttemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='poweroutlettemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='powerporttemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AlterModelOptions( - name='rearporttemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AddField( - model_name='consoleporttemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='frontporttemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='powerporttemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='rearporttemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.RunPython( - code=naturalize_consoleporttemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_consoleserverporttemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_powerporttemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_poweroutlettemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_frontporttemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_rearporttemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_devicebaytemplates, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0095_primary_model_ordering.py b/netbox/dcim/migrations/0095_primary_model_ordering.py deleted file mode 100644 index 2d6be72c8b6..00000000000 --- a/netbox/dcim/migrations/0095_primary_model_ordering.py +++ /dev/null @@ -1,70 +0,0 @@ -from django.db import migrations -import utilities.fields -import utilities.ordering - - -def _update_model_names(model): - # Update each unique field value in bulk - for name in model.objects.values_list('name', flat=True).order_by('name').distinct(): - model.objects.filter(name=name).update(_name=utilities.ordering.naturalize(name, max_length=100)) - - -def naturalize_sites(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'Site')) - - -def naturalize_racks(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'Rack')) - - -def naturalize_devices(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'Device')) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0094_device_component_template_ordering'), - ] - - operations = [ - migrations.AlterModelOptions( - name='device', - options={'ordering': ('_name', 'pk')}, - ), - migrations.AlterModelOptions( - name='rack', - options={'ordering': ('site', 'group', '_name', 'pk')}, - ), - migrations.AlterModelOptions( - name='site', - options={'ordering': ('_name',)}, - ), - migrations.AddField( - model_name='device', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize, null=True), - ), - migrations.AddField( - model_name='rack', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.AddField( - model_name='site', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize), - ), - migrations.RunPython( - code=naturalize_sites, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_racks, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_devices, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0096_interface_ordering.py b/netbox/dcim/migrations/0096_interface_ordering.py deleted file mode 100644 index 7b2663c953e..00000000000 --- a/netbox/dcim/migrations/0096_interface_ordering.py +++ /dev/null @@ -1,53 +0,0 @@ -from django.db import migrations -import utilities.fields -import utilities.ordering - - -def _update_model_names(model): - # Update each unique field value in bulk - for name in model.objects.values_list('name', flat=True).order_by('name').distinct(): - model.objects.filter(name=name).update(_name=utilities.ordering.naturalize_interface(name, max_length=100)) - - -def naturalize_interfacetemplates(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'InterfaceTemplate')) - - -def naturalize_interfaces(apps, schema_editor): - _update_model_names(apps.get_model('dcim', 'Interface')) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0095_primary_model_ordering'), - ] - - operations = [ - migrations.AlterModelOptions( - name='interface', - options={'ordering': ('device', '_name')}, - ), - migrations.AlterModelOptions( - name='interfacetemplate', - options={'ordering': ('device_type', '_name')}, - ), - migrations.AddField( - model_name='interface', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface), - ), - migrations.AddField( - model_name='interfacetemplate', - name='_name', - field=utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface), - ), - migrations.RunPython( - code=naturalize_interfacetemplates, - reverse_code=migrations.RunPython.noop - ), - migrations.RunPython( - code=naturalize_interfaces, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0097_interfacetemplate_type_other.py b/netbox/dcim/migrations/0097_interfacetemplate_type_other.py deleted file mode 100644 index d71b5c65568..00000000000 --- a/netbox/dcim/migrations/0097_interfacetemplate_type_other.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.db import migrations - - -def interfacetemplate_type_to_slug(apps, schema_editor): - InterfaceTemplate = apps.get_model('dcim', 'InterfaceTemplate') - InterfaceTemplate.objects.filter(type=32767).update(type='other') - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0096_interface_ordering'), - ] - - operations = [ - # Missed type "other" in the initial migration (see #3967) - migrations.RunPython( - code=interfacetemplate_type_to_slug - ), - ] diff --git a/netbox/dcim/migrations/0098_devicetype_images.py b/netbox/dcim/migrations/0098_devicetype_images.py deleted file mode 100644 index 837a2b73a94..00000000000 --- a/netbox/dcim/migrations/0098_devicetype_images.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.9 on 2020-02-20 15:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0097_interfacetemplate_type_other'), - ] - - operations = [ - migrations.AddField( - model_name='devicetype', - name='front_image', - field=models.ImageField(blank=True, upload_to='devicetype-images'), - ), - migrations.AddField( - model_name='devicetype', - name='rear_image', - field=models.ImageField(blank=True, upload_to='devicetype-images'), - ), - ] diff --git a/netbox/dcim/migrations/0099_powerfeed_negative_voltage.py b/netbox/dcim/migrations/0099_powerfeed_negative_voltage.py deleted file mode 100644 index db16fbc9103..00000000000 --- a/netbox/dcim/migrations/0099_powerfeed_negative_voltage.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2.10 on 2020-03-03 16:59 - -from django.db import migrations, models -import utilities.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0098_devicetype_images'), - ] - - operations = [ - migrations.AlterField( - model_name='powerfeed', - name='voltage', - field=models.SmallIntegerField(default=120, validators=[utilities.validators.ExclusionValidator([0])]), - ), - ] diff --git a/netbox/dcim/migrations/0100_mptt_remove_indexes.py b/netbox/dcim/migrations/0100_mptt_remove_indexes.py deleted file mode 100644 index 79d9cb597c6..00000000000 --- a/netbox/dcim/migrations/0100_mptt_remove_indexes.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.0.3 on 2020-02-18 21:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0099_powerfeed_negative_voltage'), - ] - - operations = [ - migrations.AlterField( - model_name='region', - name='level', - field=models.PositiveIntegerField(editable=False), - ), - migrations.AlterField( - model_name='region', - name='lft', - field=models.PositiveIntegerField(editable=False), - ), - migrations.AlterField( - model_name='region', - name='rght', - field=models.PositiveIntegerField(editable=False), - ), - ] diff --git a/netbox/dcim/migrations/0101_nested_rackgroups.py b/netbox/dcim/migrations/0101_nested_rackgroups.py deleted file mode 100644 index dd5f8af2635..00000000000 --- a/netbox/dcim/migrations/0101_nested_rackgroups.py +++ /dev/null @@ -1,43 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion -import mptt.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0100_mptt_remove_indexes'), - ] - - operations = [ - migrations.AddField( - model_name='rackgroup', - name='parent', - field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.RackGroup'), - ), - migrations.AddField( - model_name='rackgroup', - name='level', - field=models.PositiveIntegerField(default=0, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='rackgroup', - name='lft', - field=models.PositiveIntegerField(default=1, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='rackgroup', - name='rght', - field=models.PositiveIntegerField(default=2, editable=False), - preserve_default=False, - ), - # tree_id will be set to a valid value during the following migration (which needs to be a separate migration) - migrations.AddField( - model_name='rackgroup', - name='tree_id', - field=models.PositiveIntegerField(db_index=True, default=0, editable=False), - preserve_default=False, - ), - ] diff --git a/netbox/dcim/migrations/0102_nested_rackgroups_rebuild.py b/netbox/dcim/migrations/0102_nested_rackgroups_rebuild.py deleted file mode 100644 index 411bb3abb5e..00000000000 --- a/netbox/dcim/migrations/0102_nested_rackgroups_rebuild.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import migrations - - -def rebuild_mptt(apps, schema_editor): - RackGroup = apps.get_model('dcim', 'RackGroup') - for i, rackgroup in enumerate(RackGroup.objects.all(), start=1): - RackGroup.objects.filter(pk=rackgroup.pk).update(tree_id=i) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0101_nested_rackgroups'), - ] - - operations = [ - migrations.RunPython( - code=rebuild_mptt, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0103_standardize_description.py b/netbox/dcim/migrations/0103_standardize_description.py deleted file mode 100644 index eb4a2d76044..00000000000 --- a/netbox/dcim/migrations/0103_standardize_description.py +++ /dev/null @@ -1,98 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0102_nested_rackgroups_rebuild'), - ] - - operations = [ - migrations.AddField( - model_name='manufacturer', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='platform', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='rackgroup', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='region', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='consoleport', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='consoleserverport', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='devicebay', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='devicerole', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='frontport', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='interface', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='inventoryitem', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='poweroutlet', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='powerport', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='rackreservation', - name='description', - field=models.CharField(max_length=200), - ), - migrations.AlterField( - model_name='rackrole', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='rearport', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='site', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/dcim/migrations/0104_correct_infiniband_types.py b/netbox/dcim/migrations/0104_correct_infiniband_types.py deleted file mode 100644 index 91438e62eda..00000000000 --- a/netbox/dcim/migrations/0104_correct_infiniband_types.py +++ /dev/null @@ -1,34 +0,0 @@ -from django.db import migrations - - -INFINIBAND_SLUGS = ( - ('inifiband-sdr', 'infiniband-sdr'), - ('inifiband-ddr', 'infiniband-ddr'), - ('inifiband-qdr', 'infiniband-qdr'), - ('inifiband-fdr10', 'infiniband-fdr10'), - ('inifiband-fdr', 'infiniband-fdr'), - ('inifiband-edr', 'infiniband-edr'), - ('inifiband-hdr', 'infiniband-hdr'), - ('inifiband-ndr', 'infiniband-ndr'), - ('inifiband-xdr', 'infiniband-xdr'), -) - - -def correct_infiniband_types(apps, schema_editor): - Interface = apps.get_model('dcim', 'Interface') - for old, new in INFINIBAND_SLUGS: - Interface.objects.filter(type=old).update(type=new) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0103_standardize_description'), - ] - - operations = [ - migrations.RunPython( - code=correct_infiniband_types, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0105_interface_name_collation.py b/netbox/dcim/migrations/0105_interface_name_collation.py deleted file mode 100644 index 3079cf5cd72..00000000000 --- a/netbox/dcim/migrations/0105_interface_name_collation.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-21 20:13 - -from django.db import migrations -import utilities.query_functions - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0104_correct_infiniband_types'), - ] - - operations = [ - migrations.AlterModelOptions( - name='interface', - options={'ordering': ('device', utilities.query_functions.CollateAsChar('_name'))}, - ), - ] diff --git a/netbox/dcim/migrations/0106_role_default_color.py b/netbox/dcim/migrations/0106_role_default_color.py deleted file mode 100644 index c4df1b33f6d..00000000000 --- a/netbox/dcim/migrations/0106_role_default_color.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.0.6 on 2020-05-26 13:33 - -from django.db import migrations -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0105_interface_name_collation'), - ] - - operations = [ - migrations.AlterField( - model_name='devicerole', - name='color', - field=utilities.fields.ColorField(default='9e9e9e', max_length=6), - ), - migrations.AlterField( - model_name='rackrole', - name='color', - field=utilities.fields.ColorField(default='9e9e9e', max_length=6), - ), - ] diff --git a/netbox/dcim/migrations/0107_component_labels.py b/netbox/dcim/migrations/0107_component_labels.py deleted file mode 100644 index c89bfc0b69a..00000000000 --- a/netbox/dcim/migrations/0107_component_labels.py +++ /dev/null @@ -1,96 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0106_role_default_color'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='consoleporttemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='consoleserverport', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='devicebay', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='frontport', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='frontporttemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='interface', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='interfacetemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='inventoryitem', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='poweroutlet', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='powerport', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='powerporttemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='rearport', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AddField( - model_name='rearporttemplate', - name='label', - field=models.CharField(blank=True, max_length=64), - ), - ] diff --git a/netbox/dcim/migrations/0108_add_tags.py b/netbox/dcim/migrations/0108_add_tags.py deleted file mode 100644 index 670f1f0e9b9..00000000000 --- a/netbox/dcim/migrations/0108_add_tags.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 3.0.6 on 2020-06-10 18:32 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0042_customfield_manager'), - ('dcim', '0107_component_labels'), - ] - - operations = [ - migrations.AddField( - model_name='cable', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AddField( - model_name='powerpanel', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AddField( - model_name='rackreservation', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/dcim/migrations/0109_interface_remove_vm.py b/netbox/dcim/migrations/0109_interface_remove_vm.py deleted file mode 100644 index 6e1d727b0b7..00000000000 --- a/netbox/dcim/migrations/0109_interface_remove_vm.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0108_add_tags'), - ('virtualization', '0016_replicate_interfaces'), - ] - - operations = [ - migrations.RemoveField( - model_name='interface', - name='virtual_machine', - ), - # device is now a required field - migrations.AlterField( - model_name='interface', - name='device', - field=models.ForeignKey(default=0, on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='dcim.Device'), - preserve_default=False, - ), - ] diff --git a/netbox/dcim/migrations/0110_virtualchassis_name.py b/netbox/dcim/migrations/0110_virtualchassis_name.py deleted file mode 100644 index e8455d6fe3f..00000000000 --- a/netbox/dcim/migrations/0110_virtualchassis_name.py +++ /dev/null @@ -1,46 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -def copy_master_name(apps, schema_editor): - """ - Copy the master device's name to the VirtualChassis. - """ - VirtualChassis = apps.get_model('dcim', 'VirtualChassis') - - for vc in VirtualChassis.objects.prefetch_related('master'): - name = vc.master.name if vc.master.name else f'Unnamed VC #{vc.pk}' - VirtualChassis.objects.filter(pk=vc.pk).update(name=name) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0109_interface_remove_vm'), - ] - - operations = [ - migrations.AlterModelOptions( - name='virtualchassis', - options={'ordering': ['name'], 'verbose_name_plural': 'virtual chassis'}, - ), - migrations.AddField( - model_name='virtualchassis', - name='name', - field=models.CharField(blank=True, max_length=64), - ), - migrations.AlterField( - model_name='virtualchassis', - name='master', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vc_master_for', to='dcim.Device'), - ), - migrations.RunPython( - code=copy_master_name, - reverse_code=migrations.RunPython.noop - ), - migrations.AlterField( - model_name='virtualchassis', - name='name', - field=models.CharField(max_length=64), - ), - ] diff --git a/netbox/dcim/migrations/0111_component_template_description.py b/netbox/dcim/migrations/0111_component_template_description.py deleted file mode 100644 index 3040f586c2b..00000000000 --- a/netbox/dcim/migrations/0111_component_template_description.py +++ /dev/null @@ -1,53 +0,0 @@ -# Generated by Django 3.0.6 on 2020-06-30 18:55 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0110_virtualchassis_name'), - ] - - operations = [ - migrations.AddField( - model_name='consoleporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='frontporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='interfacetemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='powerporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='rearporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/dcim/migrations/0112_standardize_components.py b/netbox/dcim/migrations/0112_standardize_components.py deleted file mode 100644 index 1a3465e02c7..00000000000 --- a/netbox/dcim/migrations/0112_standardize_components.py +++ /dev/null @@ -1,120 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0111_component_template_description'), - ] - - operations = [ - # Set max_length=64 for all name fields - migrations.AlterField( - model_name='consoleport', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='consoleporttemplate', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='consoleserverport', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='consoleserverporttemplate', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='devicebay', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='devicebaytemplate', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='inventoryitem', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='poweroutlet', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='powerport', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterField( - model_name='powerporttemplate', - name='name', - field=models.CharField(max_length=64), - ), - - # Update related_name for necessary component and component template models - migrations.AlterField( - model_name='consoleporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleporttemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='consoleserverporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverporttemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='devicebay', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='devicebays', to='dcim.Device'), - ), - migrations.AlterField( - model_name='devicebaytemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='devicebaytemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='frontporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontporttemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfacetemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='inventoryitem', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inventoryitems', to='dcim.Device'), - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlettemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='powerporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='powerporttemplates', to='dcim.DeviceType'), - ), - migrations.AlterField( - model_name='rearporttemplate', - name='device_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rearporttemplates', to='dcim.DeviceType'), - ), - ] diff --git a/netbox/dcim/migrations/0113_nullbooleanfield_to_booleanfield.py b/netbox/dcim/migrations/0113_nullbooleanfield_to_booleanfield.py deleted file mode 100644 index b96e2dcd4ef..00000000000 --- a/netbox/dcim/migrations/0113_nullbooleanfield_to_booleanfield.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 15:55 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0112_standardize_components'), - ] - - operations = [ - migrations.AlterField( - model_name='consoleport', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='consoleserverport', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='interface', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='powerfeed', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='poweroutlet', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='powerport', - name='connection_status', - field=models.BooleanField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0114_update_jsonfield.py b/netbox/dcim/migrations/0114_update_jsonfield.py deleted file mode 100644 index 5a971bced4b..00000000000 --- a/netbox/dcim/migrations/0114_update_jsonfield.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 16:01 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0113_nullbooleanfield_to_booleanfield'), - ] - - operations = [ - migrations.AlterField( - model_name='device', - name='local_context_data', - field=models.JSONField(blank=True, null=True), - ), - migrations.AlterField( - model_name='platform', - name='napalm_args', - field=models.JSONField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0115_rackreservation_order.py b/netbox/dcim/migrations/0115_rackreservation_order.py deleted file mode 100644 index 594f6b9a43e..00000000000 --- a/netbox/dcim/migrations/0115_rackreservation_order.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.1 on 2020-08-24 16:03 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0114_update_jsonfield'), - ] - - operations = [ - migrations.AlterModelOptions( - name='rackreservation', - options={'ordering': ['created', 'pk']}, - ), - ] diff --git a/netbox/dcim/migrations/0116_rearport_max_positions.py b/netbox/dcim/migrations/0116_rearport_max_positions.py deleted file mode 100644 index a03f4e3d573..00000000000 --- a/netbox/dcim/migrations/0116_rearport_max_positions.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 3.1 on 2020-09-16 16:51 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0115_rackreservation_order'), - ] - - operations = [ - migrations.AlterField( - model_name='frontport', - name='rear_port_position', - field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)]), - ), - migrations.AlterField( - model_name='frontporttemplate', - name='rear_port_position', - field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)]), - ), - migrations.AlterField( - model_name='rearport', - name='positions', - field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)]), - ), - migrations.AlterField( - model_name='rearporttemplate', - name='positions', - field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)]), - ), - ] diff --git a/netbox/dcim/migrations/0117_custom_field_data.py b/netbox/dcim/migrations/0117_custom_field_data.py deleted file mode 100644 index 36933cc469b..00000000000 --- a/netbox/dcim/migrations/0117_custom_field_data.py +++ /dev/null @@ -1,60 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0116_rearport_max_positions'), - ] - - operations = [ - # Original CustomFieldModels - migrations.AddField( - model_name='device', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='devicetype', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='powerfeed', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='rack', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='site', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - - # Added under #5146 - migrations.AddField( - model_name='cable', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='powerpanel', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='rackreservation', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='virtualchassis', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - ] diff --git a/netbox/dcim/migrations/0118_inventoryitem_mptt.py b/netbox/dcim/migrations/0118_inventoryitem_mptt.py deleted file mode 100644 index 844e00136e5..00000000000 --- a/netbox/dcim/migrations/0118_inventoryitem_mptt.py +++ /dev/null @@ -1,44 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion -import mptt.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0117_custom_field_data'), - ] - - operations = [ - # The MPTT will be rebuilt in the following migration. Using dummy values for now. - migrations.AddField( - model_name='inventoryitem', - name='level', - field=models.PositiveIntegerField(default=0, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='inventoryitem', - name='lft', - field=models.PositiveIntegerField(default=0, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='inventoryitem', - name='rght', - field=models.PositiveIntegerField(default=0, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='inventoryitem', - name='tree_id', - field=models.PositiveIntegerField(db_index=True, default=0, editable=False), - preserve_default=False, - ), - # Convert ForeignKey to TreeForeignKey - migrations.AlterField( - model_name='inventoryitem', - name='parent', - field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child_items', to='dcim.inventoryitem'), - ), - ] diff --git a/netbox/dcim/migrations/0119_inventoryitem_mptt_rebuild.py b/netbox/dcim/migrations/0119_inventoryitem_mptt_rebuild.py deleted file mode 100644 index d3bdb3025f2..00000000000 --- a/netbox/dcim/migrations/0119_inventoryitem_mptt_rebuild.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.db import migrations -import mptt -import mptt.managers - - -def rebuild_mptt(apps, schema_editor): - manager = mptt.managers.TreeManager() - InventoryItem = apps.get_model('dcim', 'InventoryItem') - manager.model = InventoryItem - mptt.register(InventoryItem) - manager.contribute_to_class(InventoryItem, 'objects') - manager.rebuild() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0118_inventoryitem_mptt'), - ] - - operations = [ - migrations.RunPython( - code=rebuild_mptt, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0120_cache_cable_peer.py b/netbox/dcim/migrations/0120_cache_cable_peer.py deleted file mode 100644 index c45d033968d..00000000000 --- a/netbox/dcim/migrations/0120_cache_cable_peer.py +++ /dev/null @@ -1,141 +0,0 @@ -import sys - -from django.db import migrations, models -import django.db.models.deletion - - -def cache_cable_peers(apps, schema_editor): - ContentType = apps.get_model('contenttypes', 'ContentType') - Cable = apps.get_model('dcim', 'Cable') - ConsolePort = apps.get_model('dcim', 'ConsolePort') - ConsoleServerPort = apps.get_model('dcim', 'ConsoleServerPort') - PowerPort = apps.get_model('dcim', 'PowerPort') - PowerOutlet = apps.get_model('dcim', 'PowerOutlet') - Interface = apps.get_model('dcim', 'Interface') - FrontPort = apps.get_model('dcim', 'FrontPort') - RearPort = apps.get_model('dcim', 'RearPort') - PowerFeed = apps.get_model('dcim', 'PowerFeed') - - models = ( - ConsolePort, - ConsoleServerPort, - PowerPort, - PowerOutlet, - Interface, - FrontPort, - RearPort, - PowerFeed - ) - - if 'test' not in sys.argv: - print("\n", end="") - - for model in models: - if 'test' not in sys.argv: - print(f" Updating {model._meta.verbose_name} cable peers...", flush=True) - ct = ContentType.objects.get_for_model(model) - for cable in Cable.objects.filter(termination_a_type=ct): - model.objects.filter(pk=cable.termination_a_id).update( - _cable_peer_type_id=cable.termination_b_type_id, - _cable_peer_id=cable.termination_b_id - ) - for cable in Cable.objects.filter(termination_b_type=ct): - model.objects.filter(pk=cable.termination_b_id).update( - _cable_peer_type_id=cable.termination_a_type_id, - _cable_peer_id=cable.termination_a_id - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('dcim', '0119_inventoryitem_mptt_rebuild'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='consoleport', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='consoleserverport', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='consoleserverport', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='frontport', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='frontport', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='interface', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='interface', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='powerfeed', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='powerfeed', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='poweroutlet', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='poweroutlet', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='powerport', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='powerport', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.AddField( - model_name='rearport', - name='_cable_peer_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='rearport', - name='_cable_peer_type', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), - ), - migrations.RunPython( - code=cache_cable_peers, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/dcim/migrations/0121_cablepath.py b/netbox/dcim/migrations/0121_cablepath.py deleted file mode 100644 index 69411415d72..00000000000 --- a/netbox/dcim/migrations/0121_cablepath.py +++ /dev/null @@ -1,108 +0,0 @@ -import dcim.fields -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('dcim', '0120_cache_cable_peer'), - ] - - operations = [ - migrations.CreateModel( - name='CablePath', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('origin_id', models.PositiveIntegerField()), - ('destination_id', models.PositiveIntegerField(blank=True, null=True)), - ('path', dcim.fields.PathField(base_field=models.CharField(max_length=40), size=None)), - ('is_active', models.BooleanField(default=False)), - ('is_split', models.BooleanField(default=False)), - ('destination_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype')), - ('origin_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype')), - ], - options={ - 'unique_together': {('origin_type', 'origin_id')}, - }, - ), - migrations.AddField( - model_name='consoleport', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.AddField( - model_name='consoleserverport', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.AddField( - model_name='interface', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.AddField( - model_name='powerfeed', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.AddField( - model_name='poweroutlet', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.AddField( - model_name='powerport', - name='_path', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), - ), - migrations.RemoveField( - model_name='consoleport', - name='connected_endpoint', - ), - migrations.RemoveField( - model_name='consoleport', - name='connection_status', - ), - migrations.RemoveField( - model_name='consoleserverport', - name='connection_status', - ), - migrations.RemoveField( - model_name='interface', - name='_connected_circuittermination', - ), - migrations.RemoveField( - model_name='interface', - name='_connected_interface', - ), - migrations.RemoveField( - model_name='interface', - name='connection_status', - ), - migrations.RemoveField( - model_name='powerfeed', - name='connected_endpoint', - ), - migrations.RemoveField( - model_name='powerfeed', - name='connection_status', - ), - migrations.RemoveField( - model_name='poweroutlet', - name='connection_status', - ), - migrations.RemoveField( - model_name='powerport', - name='_connected_powerfeed', - ), - migrations.RemoveField( - model_name='powerport', - name='_connected_poweroutlet', - ), - migrations.RemoveField( - model_name='powerport', - name='connection_status', - ), - ] diff --git a/netbox/dcim/migrations/0122_standardize_name_length.py b/netbox/dcim/migrations/0122_standardize_name_length.py deleted file mode 100644 index 6c805f2ee6f..00000000000 --- a/netbox/dcim/migrations/0122_standardize_name_length.py +++ /dev/null @@ -1,98 +0,0 @@ -# Generated by Django 3.1 on 2020-10-15 19:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0121_cablepath'), - ] - - operations = [ - migrations.AlterField( - model_name='devicerole', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='devicerole', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='devicetype', - name='model', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='devicetype', - name='slug', - field=models.SlugField(max_length=100), - ), - migrations.AlterField( - model_name='manufacturer', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='manufacturer', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='powerfeed', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='powerpanel', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='rack', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='rackgroup', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='rackgroup', - name='slug', - field=models.SlugField(max_length=100), - ), - migrations.AlterField( - model_name='rackrole', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='rackrole', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='region', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='region', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='site', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='site', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - ] diff --git a/netbox/dcim/migrations/0123_standardize_models.py b/netbox/dcim/migrations/0123_standardize_models.py deleted file mode 100644 index 48e9e65030c..00000000000 --- a/netbox/dcim/migrations/0123_standardize_models.py +++ /dev/null @@ -1,422 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0122_standardize_name_length'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='consoleport', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='consoleport', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='consoleporttemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='consoleporttemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='consoleserverport', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='consoleserverport', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='consoleserverport', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='consoleserverporttemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='devicebay', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='devicebay', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='devicebay', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='devicebaytemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='devicerole', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='frontport', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='frontport', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='frontport', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='frontporttemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='frontporttemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='interface', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='interface', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='interface', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='interfacetemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='interfacetemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='inventoryitem', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='inventoryitem', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='inventoryitem', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='manufacturer', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='platform', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='poweroutlet', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='poweroutlet', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='poweroutlet', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='poweroutlettemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='powerport', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='powerport', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='powerport', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='powerporttemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='powerporttemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='rackgroup', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='rackrole', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='rearport', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='rearport', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='rearport', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='rearporttemplate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='rearporttemplate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='region', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='cable', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='cablepath', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='consoleport', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='consoleporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='consoleserverport', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='consoleserverporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='device', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='devicebay', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='devicebaytemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='devicerole', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='devicetype', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='frontport', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='frontporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='interface', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='interfacetemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='inventoryitem', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='manufacturer', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='platform', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='powerfeed', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='poweroutlet', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='poweroutlettemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='powerpanel', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='powerport', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='powerporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rack', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rackgroup', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rackreservation', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rackrole', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rearport', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rearporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='region', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='site', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='virtualchassis', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] diff --git a/netbox/dcim/migrations/0124_mark_connected.py b/netbox/dcim/migrations/0124_mark_connected.py deleted file mode 100644 index d7bf40a2432..00000000000 --- a/netbox/dcim/migrations/0124_mark_connected.py +++ /dev/null @@ -1,51 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0123_standardize_models'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='consoleserverport', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='frontport', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='interface', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='powerfeed', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='poweroutlet', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='powerport', - name='mark_connected', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='rearport', - name='mark_connected', - field=models.BooleanField(default=False), - ), - ] diff --git a/netbox/dcim/migrations/0125_console_port_speed.py b/netbox/dcim/migrations/0125_console_port_speed.py deleted file mode 100644 index 1a7f455d6a6..00000000000 --- a/netbox/dcim/migrations/0125_console_port_speed.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0124_mark_connected'), - ] - - operations = [ - migrations.AddField( - model_name='consoleport', - name='speed', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='consoleserverport', - name='speed', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - ] diff --git a/netbox/dcim/migrations/0126_rename_rackgroup_location.py b/netbox/dcim/migrations/0126_rename_rackgroup_location.py deleted file mode 100644 index 8755097bd8b..00000000000 --- a/netbox/dcim/migrations/0126_rename_rackgroup_location.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0125_console_port_speed'), - ] - - operations = [ - migrations.RenameModel( - old_name='RackGroup', - new_name='Location', - ), - migrations.AlterModelOptions( - name='rack', - options={'ordering': ('site', 'location', '_name', 'pk')}, - ), - migrations.AlterField( - model_name='location', - name='site', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='locations', to='dcim.site'), - ), - migrations.RenameField( - model_name='powerpanel', - old_name='rack_group', - new_name='location', - ), - migrations.RenameField( - model_name='rack', - old_name='group', - new_name='location', - ), - migrations.AlterUniqueTogether( - name='rack', - unique_together={('location', 'facility_id'), ('location', 'name')}, - ), - ] diff --git a/netbox/dcim/migrations/0127_device_location.py b/netbox/dcim/migrations/0127_device_location.py deleted file mode 100644 index 479f9cea94b..00000000000 --- a/netbox/dcim/migrations/0127_device_location.py +++ /dev/null @@ -1,17 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0126_rename_rackgroup_location'), - ] - - operations = [ - migrations.AddField( - model_name='device', - name='location', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.location'), - ), - ] diff --git a/netbox/dcim/migrations/0128_device_location_populate.py b/netbox/dcim/migrations/0128_device_location_populate.py deleted file mode 100644 index 06a172ac328..00000000000 --- a/netbox/dcim/migrations/0128_device_location_populate.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.db import migrations -from django.db.models import Subquery, OuterRef - - -def populate_device_location(apps, schema_editor): - Device = apps.get_model('dcim', 'Device') - Device.objects.filter(rack__isnull=False).update( - location_id=Subquery( - Device.objects.filter(pk=OuterRef('pk')).values('rack__location_id')[:1] - ) - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0127_device_location'), - ] - - operations = [ - migrations.RunPython( - code=populate_device_location - ), - ] diff --git a/netbox/dcim/migrations/0129_interface_parent.py b/netbox/dcim/migrations/0129_interface_parent.py deleted file mode 100644 index 37e722f0a27..00000000000 --- a/netbox/dcim/migrations/0129_interface_parent.py +++ /dev/null @@ -1,17 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0128_device_location_populate'), - ] - - operations = [ - migrations.AddField( - model_name='interface', - name='parent', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='child_interfaces', to='dcim.interface'), - ), - ] diff --git a/netbox/dcim/migrations/0130_sitegroup.py b/netbox/dcim/migrations/0130_sitegroup.py deleted file mode 100644 index 3b3bdcf101a..00000000000 --- a/netbox/dcim/migrations/0130_sitegroup.py +++ /dev/null @@ -1,39 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models -import django.db.models.deletion -import mptt.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0129_interface_parent'), - ] - - operations = [ - migrations.CreateModel( - name='SiteGroup', - fields=[ - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100, unique=True)), - ('slug', models.SlugField(max_length=100, unique=True)), - ('description', models.CharField(blank=True, max_length=200)), - ('lft', models.PositiveIntegerField(editable=False)), - ('rght', models.PositiveIntegerField(editable=False)), - ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), - ('level', models.PositiveIntegerField(editable=False)), - ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.sitegroup')), - ], - options={ - 'abstract': False, - }, - ), - migrations.AddField( - model_name='site', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sites', to='dcim.sitegroup'), - ), - ] diff --git a/netbox/extras/migrations/0001_initial.py b/netbox/extras/migrations/0001_initial.py deleted file mode 100644 index be9b952640c..00000000000 --- a/netbox/extras/migrations/0001_initial.py +++ /dev/null @@ -1,80 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('dcim', '0002_auto_20160622_1821'), - ] - - operations = [ - migrations.CreateModel( - name='ExportTemplate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=200)), - ('template_code', models.TextField()), - ('mime_type', models.CharField(blank=True, max_length=15)), - ('file_extension', models.CharField(blank=True, max_length=15)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ], - options={ - 'ordering': ['content_type', 'name'], - }, - ), - migrations.CreateModel( - name='Graph', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.PositiveSmallIntegerField(choices=[(100, b'Interface'), (200, b'Provider'), (300, b'Site')])), - ('weight', models.PositiveSmallIntegerField(default=1000)), - ('name', models.CharField(max_length=100, verbose_name=b'Name')), - ('source', models.CharField(max_length=500, verbose_name=b'Source URL')), - ('link', models.URLField(blank=True, verbose_name=b'Link URL')), - ], - options={ - 'ordering': ['type', 'weight', 'name'], - }, - ), - migrations.CreateModel( - name='TopologyMap', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('device_patterns', models.TextField(help_text=b'Identify devices to include in the diagram using regular expressions,one per line. Each line will result in a new tier of the drawing. Separate multiple regexes on a line using commas. Devices will be rendered in the order they are defined.')), - ('description', models.CharField(blank=True, max_length=100)), - ('site', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='topology_maps', to='dcim.Site')), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='UserAction', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('time', models.DateTimeField(auto_now_add=True)), - ('object_id', models.PositiveIntegerField(blank=True, null=True)), - ('action', models.PositiveSmallIntegerField(choices=[(1, b'created'), (2, b'imported'), (3, b'modified'), (4, b'bulk edited'), (5, b'deleted'), (6, b'bulk deleted')])), - ('message', models.TextField(blank=True)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='actions', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['-time'], - }, - ), - migrations.AlterUniqueTogether( - name='exporttemplate', - unique_together=set([('content_type', 'name')]), - ), - ] diff --git a/netbox/extras/migrations/0002_custom_fields.py b/netbox/extras/migrations/0002_custom_fields.py deleted file mode 100644 index 300ae758a8d..00000000000 --- a/netbox/extras/migrations/0002_custom_fields.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-08-23 20:33 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='CustomField', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.PositiveSmallIntegerField(choices=[(100, b'Text'), (200, b'Integer'), (300, b'Boolean (true/false)'), (400, b'Date'), (500, b'URL'), (600, b'Selection')], default=100)), - ('name', models.CharField(max_length=50, unique=True)), - ('label', models.CharField(blank=True, help_text=b"Name of the field as displayed to users (if not provided, the field's name will be used)", max_length=50)), - ('description', models.CharField(blank=True, max_length=100)), - ('required', models.BooleanField(default=False, help_text=b'Determines whether this field is required when creating new objects or editing an existing object.')), - ('is_filterable', models.BooleanField(default=True, help_text=b'This field can be used to filter objects.')), - ('default', models.CharField(blank=True, help_text=b'Default value for the field. Use "true" or "false" for booleans. N/A for selection fields.', max_length=100)), - ('weight', models.PositiveSmallIntegerField(default=100, help_text=b'Fields with higher weights appear lower in a form')), - ('obj_type', models.ManyToManyField(help_text=b'The object(s) to which this field applies.', related_name='custom_fields', to='contenttypes.ContentType', verbose_name=b'Object(s)')), - ], - options={ - 'ordering': ['weight', 'name'], - }, - ), - migrations.CreateModel( - name='CustomFieldChoice', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(max_length=100)), - ('weight', models.PositiveSmallIntegerField(default=100, help_text=b'Higher weights appear lower in the list')), - ('field', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='extras.CustomField')), - ], - options={ - 'ordering': ['field', 'weight', 'value'], - }, - ), - migrations.CreateModel( - name='CustomFieldValue', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('obj_id', models.PositiveIntegerField()), - ('serialized_value', models.CharField(max_length=255)), - ('field', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='values', to='extras.CustomField')), - ('obj_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ], - options={ - 'ordering': ['obj_type', 'obj_id'], - }, - ), - migrations.AlterUniqueTogether( - name='customfieldvalue', - unique_together=set([('field', 'obj_type', 'obj_id')]), - ), - migrations.AlterUniqueTogether( - name='customfieldchoice', - unique_together=set([('field', 'value')]), - ), - ] diff --git a/netbox/extras/migrations/0003_exporttemplate_add_description.py b/netbox/extras/migrations/0003_exporttemplate_add_description.py deleted file mode 100644 index fc45f525521..00000000000 --- a/netbox/extras/migrations/0003_exporttemplate_add_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-27 20:20 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0002_custom_fields'), - ] - - operations = [ - migrations.AddField( - model_name='exporttemplate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='exporttemplate', - name='name', - field=models.CharField(max_length=100), - ), - ] diff --git a/netbox/extras/migrations/0004_topologymap_change_comma_to_semicolon.py b/netbox/extras/migrations/0004_topologymap_change_comma_to_semicolon.py deleted file mode 100644 index b35c641dad5..00000000000 --- a/netbox/extras/migrations/0004_topologymap_change_comma_to_semicolon.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-03 18:33 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0003_exporttemplate_add_description'), - ] - - operations = [ - migrations.AlterField( - model_name='topologymap', - name='device_patterns', - field=models.TextField(help_text=b'Identify devices to include in the diagram using regular expressions, one per line. Each line will result in a new tier of the drawing. Separate multiple regexes within a line using semicolons. Devices will be rendered in the order they are defined.'), - ), - ] diff --git a/netbox/extras/migrations/0005_useraction_add_bulk_create.py b/netbox/extras/migrations/0005_useraction_add_bulk_create.py deleted file mode 100644 index 58b66fe1ac1..00000000000 --- a/netbox/extras/migrations/0005_useraction_add_bulk_create.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-04-04 19:45 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0004_topologymap_change_comma_to_semicolon'), - ] - - operations = [ - migrations.AlterField( - model_name='useraction', - name='action', - field=models.PositiveSmallIntegerField(choices=[(1, b'created'), (7, b'bulk created'), (2, b'imported'), (3, b'modified'), (4, b'bulk edited'), (5, b'deleted'), (6, b'bulk deleted')]), - ), - ] diff --git a/netbox/extras/migrations/0006_add_imageattachments.py b/netbox/extras/migrations/0006_add_imageattachments.py deleted file mode 100644 index b25327c3393..00000000000 --- a/netbox/extras/migrations/0006_add_imageattachments.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-04-04 19:58 -from django.db import migrations, models -import django.db.models.deletion -import extras.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0005_useraction_add_bulk_create'), - ] - - operations = [ - migrations.CreateModel( - name='ImageAttachment', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('object_id', models.PositiveIntegerField()), - ('image', models.ImageField(height_field=b'image_height', upload_to=extras.utils.image_upload, width_field=b'image_width')), - ('image_height', models.PositiveSmallIntegerField()), - ('image_width', models.PositiveSmallIntegerField()), - ('name', models.CharField(blank=True, max_length=50)), - ('created', models.DateTimeField(auto_now_add=True)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ], - options={ - 'ordering': ['name'], - }, - ), - ] diff --git a/netbox/extras/migrations/0007_unicode_literals.py b/netbox/extras/migrations/0007_unicode_literals.py deleted file mode 100644 index 88525a24acd..00000000000 --- a/netbox/extras/migrations/0007_unicode_literals.py +++ /dev/null @@ -1,89 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -from django.db import migrations, models -import extras.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0006_add_imageattachments'), - ] - - operations = [ - migrations.AlterField( - model_name='customfield', - name='default', - field=models.CharField(blank=True, help_text='Default value for the field. Use "true" or "false" for booleans.', max_length=100), - ), - migrations.AlterField( - model_name='customfield', - name='is_filterable', - field=models.BooleanField(default=True, help_text='This field can be used to filter objects.'), - ), - migrations.AlterField( - model_name='customfield', - name='label', - field=models.CharField(blank=True, help_text="Name of the field as displayed to users (if not provided, the field's name will be used)", max_length=50), - ), - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(help_text='The object(s) to which this field applies.', related_name='custom_fields', to='contenttypes.ContentType', verbose_name='Object(s)'), - ), - migrations.AlterField( - model_name='customfield', - name='required', - field=models.BooleanField(default=False, help_text='Determines whether this field is required when creating new objects or editing an existing object.'), - ), - migrations.AlterField( - model_name='customfield', - name='type', - field=models.PositiveSmallIntegerField(choices=[(100, 'Text'), (200, 'Integer'), (300, 'Boolean (true/false)'), (400, 'Date'), (500, 'URL'), (600, 'Selection')], default=100), - ), - migrations.AlterField( - model_name='customfield', - name='weight', - field=models.PositiveSmallIntegerField(default=100, help_text='Fields with higher weights appear lower in a form'), - ), - migrations.AlterField( - model_name='customfieldchoice', - name='weight', - field=models.PositiveSmallIntegerField(default=100, help_text='Higher weights appear lower in the list'), - ), - migrations.AlterField( - model_name='graph', - name='link', - field=models.URLField(blank=True, verbose_name='Link URL'), - ), - migrations.AlterField( - model_name='graph', - name='name', - field=models.CharField(max_length=100, verbose_name='Name'), - ), - migrations.AlterField( - model_name='graph', - name='source', - field=models.CharField(max_length=500, verbose_name='Source URL'), - ), - migrations.AlterField( - model_name='graph', - name='type', - field=models.PositiveSmallIntegerField(choices=[(100, 'Interface'), (200, 'Provider'), (300, 'Site')]), - ), - migrations.AlterField( - model_name='imageattachment', - name='image', - field=models.ImageField(height_field='image_height', upload_to=extras.utils.image_upload, width_field='image_width'), - ), - migrations.AlterField( - model_name='topologymap', - name='device_patterns', - field=models.TextField(help_text='Identify devices to include in the diagram using regular expressions, one per line. Each line will result in a new tier of the drawing. Separate multiple regexes within a line using semicolons. Devices will be rendered in the order they are defined.'), - ), - migrations.AlterField( - model_name='useraction', - name='action', - field=models.PositiveSmallIntegerField(choices=[(1, 'created'), (7, 'bulk created'), (2, 'imported'), (3, 'modified'), (4, 'bulk edited'), (5, 'deleted'), (6, 'bulk deleted')]), - ), - ] diff --git a/netbox/extras/migrations/0008_reports.py b/netbox/extras/migrations/0008_reports.py deleted file mode 100644 index e0c74753200..00000000000 --- a/netbox/extras/migrations/0008_reports.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-26 21:25 - -from django.conf import settings -import django.contrib.postgres.fields.jsonb -from django.db import connection, migrations, models -import django.db.models.deletion -from django.db.utils import OperationalError - - -def verify_postgresql_version(apps, schema_editor): - """ - Verify that PostgreSQL is version 9.4 or higher. - """ - # https://www.postgresql.org/docs/current/libpq-status.html#LIBPQ-PQSERVERVERSION - DB_MINIMUM_VERSION = 90400 # 9.4.0 - - try: - pg_version = connection.pg_version - - if pg_version < DB_MINIMUM_VERSION: - raise Exception("PostgreSQL 9.4.0 ({}) or higher is required ({} found). Upgrade PostgreSQL and then run migrations again.".format(DB_MINIMUM_VERSION, pg_version)) - - # Skip if the database is missing (e.g. for CI testing) or misconfigured. - except OperationalError: - pass - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('extras', '0007_unicode_literals'), - ] - - operations = [ - migrations.RunPython(verify_postgresql_version), - migrations.CreateModel( - name='ReportResult', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('report', models.CharField(max_length=255, unique=True)), - ('created', models.DateTimeField(auto_now_add=True)), - ('failed', models.BooleanField()), - ('data', django.contrib.postgres.fields.jsonb.JSONField()), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['report'], - }, - ), - ] diff --git a/netbox/extras/migrations/0009_topologymap_type.py b/netbox/extras/migrations/0009_topologymap_type.py deleted file mode 100644 index bc9ec07d549..00000000000 --- a/netbox/extras/migrations/0009_topologymap_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.9 on 2018-02-15 16:28 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0008_reports'), - ] - - operations = [ - migrations.AddField( - model_name='topologymap', - name='type', - field=models.PositiveSmallIntegerField(choices=[(1, 'Network'), (2, 'Console'), (3, 'Power')], default=1), - ), - ] diff --git a/netbox/extras/migrations/0010_customfield_filter_logic.py b/netbox/extras/migrations/0010_customfield_filter_logic.py deleted file mode 100644 index dcc2d6ad629..00000000000 --- a/netbox/extras/migrations/0010_customfield_filter_logic.py +++ /dev/null @@ -1,47 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.9 on 2018-02-21 19:48 -from django.db import migrations, models - - -def is_filterable_to_filter_logic(apps, schema_editor): - CustomField = apps.get_model('extras', 'CustomField') - CustomField.objects.filter(is_filterable=False).update(filter_logic=0) - CustomField.objects.filter(is_filterable=True).update(filter_logic=1) - # Select fields match on primary key only - CustomField.objects.filter(is_filterable=True, type=600).update(filter_logic=2) - - -def filter_logic_to_is_filterable(apps, schema_editor): - CustomField = apps.get_model('extras', 'CustomField') - CustomField.objects.filter(filter_logic=0).update(is_filterable=False) - CustomField.objects.exclude(filter_logic=0).update(is_filterable=True) - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0009_topologymap_type'), - ] - - operations = [ - migrations.AddField( - model_name='customfield', - name='filter_logic', - field=models.PositiveSmallIntegerField(choices=[(0, 'Disabled'), (1, 'Loose'), (2, 'Exact')], default=1, help_text='Loose matches any instance of a given string; exact matches the entire field.'), - ), - migrations.AlterField( - model_name='customfield', - name='required', - field=models.BooleanField(default=False, help_text='If true, this field is required when creating new objects or editing an existing object.'), - ), - migrations.AlterField( - model_name='customfield', - name='weight', - field=models.PositiveSmallIntegerField(default=100, help_text='Fields with higher weights appear lower in a form.'), - ), - migrations.RunPython(is_filterable_to_filter_logic, filter_logic_to_is_filterable), - migrations.RemoveField( - model_name='customfield', - name='is_filterable', - ), - ] diff --git a/netbox/extras/migrations/0011_django2.py b/netbox/extras/migrations/0011_django2.py deleted file mode 100644 index f8e0954d663..00000000000 --- a/netbox/extras/migrations/0011_django2.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.0.3 on 2018-03-30 14:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0010_customfield_filter_logic'), - ] - - operations = [ - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(help_text='The object(s) to which this field applies.', limit_choices_to={'model__in': ('provider', 'circuit', 'site', 'rack', 'devicetype', 'device', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'tenant', 'cluster', 'virtualmachine')}, related_name='custom_fields', to='contenttypes.ContentType', verbose_name='Object(s)'), - ), - migrations.AlterField( - model_name='customfieldchoice', - name='field', - field=models.ForeignKey(limit_choices_to={'type': 600}, on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='extras.CustomField'), - ), - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(limit_choices_to={'model__in': ['provider', 'circuit', 'site', 'region', 'rack', 'rackgroup', 'manufacturer', 'devicetype', 'device', 'consoleport', 'powerport', 'interfaceconnection', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'tenant', 'cluster', 'virtualmachine']}, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/extras/migrations/0012_webhooks.py b/netbox/extras/migrations/0012_webhooks.py deleted file mode 100644 index 8f7fcf36fb7..00000000000 --- a/netbox/extras/migrations/0012_webhooks.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-30 17:55 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0011_django2'), - ] - - operations = [ - migrations.CreateModel( - name='Webhook', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=150, unique=True)), - ('type_create', models.BooleanField(default=False, help_text='Call this webhook when a matching object is created.')), - ('type_update', models.BooleanField(default=False, help_text='Call this webhook when a matching object is updated.')), - ('type_delete', models.BooleanField(default=False, help_text='Call this webhook when a matching object is deleted.')), - ('payload_url', models.CharField(help_text='A POST will be sent to this URL when the webhook is called.', max_length=500, verbose_name='URL')), - ('http_content_type', models.PositiveSmallIntegerField(choices=[(1, 'application/json'), (2, 'application/x-www-form-urlencoded')], default=1, verbose_name='HTTP content type')), - ('secret', models.CharField(blank=True, help_text="When provided, the request will include a 'X-Hook-Signature' header containing a HMAC hex digest of the payload body using the secret as the key. The secret is not transmitted in the request.", max_length=255)), - ('enabled', models.BooleanField(default=True)), - ('ssl_verification', models.BooleanField(default=True, help_text='Enable SSL certificate verification. Disable with caution!', verbose_name='SSL verification')), - ('obj_type', models.ManyToManyField(help_text='The object(s) to which this Webhook applies.', related_name='webhooks', to='contenttypes.ContentType', verbose_name='Object types')), - ], - ), - migrations.AlterUniqueTogether( - name='webhook', - unique_together=set([('payload_url', 'type_create', 'type_update', 'type_delete')]), - ), - ] diff --git a/netbox/extras/migrations/0013_objectchange.py b/netbox/extras/migrations/0013_objectchange.py deleted file mode 100644 index 01d73a84198..00000000000 --- a/netbox/extras/migrations/0013_objectchange.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-22 18:13 -from django.conf import settings -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0012_webhooks'), - ] - - operations = [ - migrations.CreateModel( - name='ObjectChange', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('time', models.DateTimeField(auto_now_add=True)), - ('user_name', models.CharField(editable=False, max_length=150)), - ('request_id', models.UUIDField(editable=False)), - ('action', models.PositiveSmallIntegerField(choices=[(1, 'Created'), (2, 'Updated'), (3, 'Deleted')])), - ('changed_object_id', models.PositiveIntegerField()), - ('related_object_id', models.PositiveIntegerField(blank=True, null=True)), - ('object_repr', models.CharField(editable=False, max_length=200)), - ('object_data', django.contrib.postgres.fields.jsonb.JSONField(editable=False)), - ('changed_object_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ('related_object_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType')), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='changes', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['-time'], - }, - ), - ] diff --git a/netbox/extras/migrations/0014_configcontexts.py b/netbox/extras/migrations/0014_configcontexts.py deleted file mode 100644 index 789679e4fb3..00000000000 --- a/netbox/extras/migrations/0014_configcontexts.py +++ /dev/null @@ -1,52 +0,0 @@ -# Generated by Django 2.0.7 on 2018-07-27 19:44 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0005_change_logging'), - ('dcim', '0061_platform_napalm_args'), - ('extras', '0013_objectchange'), - ] - - operations = [ - migrations.CreateModel( - name='ConfigContext', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100, unique=True)), - ('weight', models.PositiveSmallIntegerField(default=1000)), - ('description', models.CharField(blank=True, max_length=100)), - ('is_active', models.BooleanField(default=True)), - ('data', django.contrib.postgres.fields.jsonb.JSONField()), - ('platforms', models.ManyToManyField(blank=True, related_name='_configcontext_platforms_+', to='dcim.Platform')), - ('regions', models.ManyToManyField(blank=True, related_name='_configcontext_regions_+', to='dcim.Region')), - ('roles', models.ManyToManyField(blank=True, related_name='_configcontext_roles_+', to='dcim.DeviceRole')), - ('sites', models.ManyToManyField(blank=True, related_name='_configcontext_sites_+', to='dcim.Site')), - ('tenant_groups', models.ManyToManyField(blank=True, related_name='_configcontext_tenant_groups_+', to='tenancy.TenantGroup')), - ('tenants', models.ManyToManyField(blank=True, related_name='_configcontext_tenants_+', to='tenancy.Tenant')), - ], - options={ - 'ordering': ['weight', 'name'], - }, - ), - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(help_text='The object(s) to which this field applies.', limit_choices_to={'model__in': ('provider', 'circuit', 'site', 'rack', 'devicetype', 'device', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'service', 'secret', 'tenant', 'cluster', 'virtualmachine')}, related_name='custom_fields', to='contenttypes.ContentType', verbose_name='Object(s)'), - ), - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(limit_choices_to={'model__in': ['provider', 'circuit', 'site', 'region', 'rack', 'rackgroup', 'manufacturer', 'devicetype', 'device', 'consoleport', 'powerport', 'interfaceconnection', 'virtualchassis', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'service', 'secret', 'tenant', 'cluster', 'virtualmachine']}, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='webhook', - name='obj_type', - field=models.ManyToManyField(help_text='The object(s) to which this Webhook applies.', limit_choices_to={'model__in': ('provider', 'circuit', 'site', 'rack', 'devicetype', 'device', 'virtualchassis', 'consoleport', 'consoleserverport', 'powerport', 'poweroutlet', 'interface', 'devicebay', 'inventoryitem', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'service', 'secret', 'tenant', 'cluster', 'virtualmachine')}, related_name='webhooks', to='contenttypes.ContentType', verbose_name='Object types'), - ), - ] diff --git a/netbox/extras/migrations/0015_remove_useraction.py b/netbox/extras/migrations/0015_remove_useraction.py deleted file mode 100644 index eb750bc365c..00000000000 --- a/netbox/extras/migrations/0015_remove_useraction.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.0.8 on 2018-08-14 16:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0014_configcontexts'), - ] - - operations = [ - migrations.RemoveField( - model_name='useraction', - name='content_type', - ), - migrations.RemoveField( - model_name='useraction', - name='user', - ), - migrations.DeleteModel( - name='UserAction', - ), - ] diff --git a/netbox/extras/migrations/0016_exporttemplate_add_cable.py b/netbox/extras/migrations/0016_exporttemplate_add_cable.py deleted file mode 100644 index 3b8852f44d6..00000000000 --- a/netbox/extras/migrations/0016_exporttemplate_add_cable.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.1.3 on 2018-11-07 20:46 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0015_remove_useraction'), - ] - - operations = [ - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(limit_choices_to={'model__in': ['provider', 'circuit', 'site', 'region', 'rack', 'rackgroup', 'manufacturer', 'devicetype', 'device', 'consoleport', 'powerport', 'interface', 'cable', 'virtualchassis', 'aggregate', 'prefix', 'ipaddress', 'vlan', 'vrf', 'service', 'secret', 'tenant', 'cluster', 'virtualmachine']}, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/extras/migrations/0017_exporttemplate_mime_type_length.py b/netbox/extras/migrations/0017_exporttemplate_mime_type_length.py deleted file mode 100644 index 29283e0d17b..00000000000 --- a/netbox/extras/migrations/0017_exporttemplate_mime_type_length.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.7 on 2019-03-05 18:07 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0016_exporttemplate_add_cable'), - ] - - operations = [ - migrations.AlterField( - model_name='exporttemplate', - name='mime_type', - field=models.CharField(blank=True, max_length=50), - ), - ] diff --git a/netbox/extras/migrations/0018_exporttemplate_add_jinja2.py b/netbox/extras/migrations/0018_exporttemplate_add_jinja2.py deleted file mode 100644 index 1177ac2fbde..00000000000 --- a/netbox/extras/migrations/0018_exporttemplate_add_jinja2.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 2.1.7 on 2019-04-08 14:49 - -from django.db import migrations, models - - -def set_template_language(apps, schema_editor): - """ - Set the language for all existing ExportTemplates to Django (Jinja2 is the default for new ExportTemplates). - """ - ExportTemplate = apps.get_model('extras', 'ExportTemplate') - ExportTemplate.objects.update(template_language=10) - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0017_exporttemplate_mime_type_length'), - ] - - operations = [ - migrations.AddField( - model_name='exporttemplate', - name='template_language', - field=models.PositiveSmallIntegerField(default=20), - ), - migrations.RunPython(set_template_language), - ] diff --git a/netbox/extras/migrations/0019_tag_taggeditem.py b/netbox/extras/migrations/0019_tag_taggeditem.py deleted file mode 100644 index 7f531a73767..00000000000 --- a/netbox/extras/migrations/0019_tag_taggeditem.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations, models -import django.db.models.deletion -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0018_exporttemplate_add_jinja2'), - ] - - operations = [ - migrations.CreateModel( - name='Tag', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100, unique=True)), - ('slug', models.SlugField(max_length=100, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='TaggedItem', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('object_id', models.IntegerField(db_index=True)), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extras_taggeditem_tagged_items', to='contenttypes.ContentType')), - ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extras_taggeditem_items', to='extras.Tag')), - ], - options={ - 'abstract': False, - }, - ), - migrations.AlterIndexTogether( - name='taggeditem', - index_together={('content_type', 'object_id')}, - ), - ] diff --git a/netbox/extras/migrations/0020_tag_data.py b/netbox/extras/migrations/0020_tag_data.py deleted file mode 100644 index 4a364860c5a..00000000000 --- a/netbox/extras/migrations/0020_tag_data.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations, models -import django.db.models.deletion -import utilities.fields - - -def copy_tags(apps, schema_editor): - """ - Copy data from taggit_tag to extras_tag - """ - TaggitTag = apps.get_model('taggit', 'Tag') - ExtrasTag = apps.get_model('extras', 'Tag') - - tags_values = TaggitTag.objects.all().values('id', 'name', 'slug') - tags = [ExtrasTag(**tag) for tag in tags_values] - ExtrasTag.objects.bulk_create(tags) - - -def copy_taggeditems(apps, schema_editor): - """ - Copy data from taggit_taggeditem to extras_taggeditem - """ - TaggitTaggedItem = apps.get_model('taggit', 'TaggedItem') - ExtrasTaggedItem = apps.get_model('extras', 'TaggedItem') - - tagged_items_values = TaggitTaggedItem.objects.all().values('id', 'object_id', 'content_type_id', 'tag_id') - tagged_items = [ExtrasTaggedItem(**tagged_item) for tagged_item in tagged_items_values] - ExtrasTaggedItem.objects.bulk_create(tagged_items) - - -def delete_taggit_taggeditems(apps, schema_editor): - """ - Delete all TaggedItem instances from taggit_taggeditem - """ - TaggitTaggedItem = apps.get_model('taggit', 'TaggedItem') - TaggitTaggedItem.objects.all().delete() - - -def delete_taggit_tags(apps, schema_editor): - """ - Delete all Tag instances from taggit_tag - """ - TaggitTag = apps.get_model('taggit', 'Tag') - TaggitTag.objects.all().delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0019_tag_taggeditem'), - ('circuits', '0015_custom_tag_models'), - ('dcim', '0070_custom_tag_models'), - ('ipam', '0025_custom_tag_models'), - ('tenancy', '0006_custom_tag_models'), - ('virtualization', '0009_custom_tag_models'), - ] - - operations = [ - migrations.RunPython(copy_tags), - migrations.RunPython(copy_taggeditems), - migrations.RunPython(delete_taggit_taggeditems), - migrations.RunPython(delete_taggit_tags), - ] diff --git a/netbox/extras/migrations/0021_add_color_comments_changelog_to_tag.py b/netbox/extras/migrations/0021_add_color_comments_changelog_to_tag.py deleted file mode 100644 index 26ed34b3140..00000000000 --- a/netbox/extras/migrations/0021_add_color_comments_changelog_to_tag.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 07:38 - -from django.db import migrations, models -import utilities.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0020_tag_data'), - ] - - operations = [ - migrations.AddField( - model_name='tag', - name='color', - field=utilities.fields.ColorField(max_length=6, default='9e9e9e'), - ), - migrations.AddField( - model_name='tag', - name='comments', - field=models.TextField(blank=True, default=''), - ), - migrations.AddField( - model_name='tag', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='tag', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/extras/migrations/0022_custom_links.py b/netbox/extras/migrations/0022_custom_links.py deleted file mode 100644 index 54d841a4f83..00000000000 --- a/netbox/extras/migrations/0022_custom_links.py +++ /dev/null @@ -1,48 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion -import extras.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0021_add_color_comments_changelog_to_tag'), - ] - - operations = [ - migrations.CreateModel( - name='CustomLink', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100, unique=True)), - ('text', models.CharField(max_length=500)), - ('url', models.CharField(max_length=500)), - ('weight', models.PositiveSmallIntegerField(default=100)), - ('group_name', models.CharField(blank=True, max_length=50)), - ('button_class', models.CharField(default='default', max_length=30)), - ('new_window', models.BooleanField()), - ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), - ], - options={ - 'ordering': ['group_name', 'weight', 'name'], - }, - ), - - # Update limit_choices_to for CustomFields, ExportTemplates, and Webhooks - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(related_name='custom_fields', to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='webhook', - name='obj_type', - field=models.ManyToManyField(related_name='webhooks', to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/extras/migrations/0023_fix_tag_sequences.py b/netbox/extras/migrations/0023_fix_tag_sequences.py deleted file mode 100644 index faef5aa963d..00000000000 --- a/netbox/extras/migrations/0023_fix_tag_sequences.py +++ /dev/null @@ -1,14 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0022_custom_links'), - ] - - operations = [ - # Update the last_value for tag Tag and TaggedItem ID sequences - migrations.RunSQL("SELECT setval('extras_tag_id_seq', (SELECT id FROM extras_tag ORDER BY id DESC LIMIT 1) + 1)"), - migrations.RunSQL("SELECT setval('extras_taggeditem_id_seq', (SELECT id FROM extras_taggeditem ORDER BY id DESC LIMIT 1) + 1)"), - ] diff --git a/netbox/extras/migrations/0024_scripts.py b/netbox/extras/migrations/0024_scripts.py deleted file mode 100644 index c8d81e5e279..00000000000 --- a/netbox/extras/migrations/0024_scripts.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.2 on 2019-08-12 15:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0023_fix_tag_sequences'), - ] - - operations = [ - migrations.CreateModel( - name='Script', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ], - options={ - 'managed': False, - }, - ), - ] diff --git a/netbox/extras/migrations/0025_objectchange_time_index.py b/netbox/extras/migrations/0025_objectchange_time_index.py deleted file mode 100644 index 64e74658e2f..00000000000 --- a/netbox/extras/migrations/0025_objectchange_time_index.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2 on 2019-08-28 14:45 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0024_scripts'), - ] - - operations = [ - migrations.AlterField( - model_name='objectchange', - name='time', - field=models.DateTimeField(auto_now_add=True, db_index=True), - ), - ] diff --git a/netbox/extras/migrations/0026_webhook_ca_file_path.py b/netbox/extras/migrations/0026_webhook_ca_file_path.py deleted file mode 100644 index 07b5267f2c5..00000000000 --- a/netbox/extras/migrations/0026_webhook_ca_file_path.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2 on 2019-10-13 05:22 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0025_objectchange_time_index'), - ] - - operations = [ - migrations.AddField( - model_name='webhook', - name='ca_file_path', - field=models.CharField(blank=True, max_length=4096, null=True), - ), - ] diff --git a/netbox/extras/migrations/0027_webhook_additional_headers.py b/netbox/extras/migrations/0027_webhook_additional_headers.py deleted file mode 100644 index 8b1f04f19a5..00000000000 --- a/netbox/extras/migrations/0027_webhook_additional_headers.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2 on 2019-10-13 07:06 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0026_webhook_ca_file_path'), - ] - - operations = [ - migrations.AddField( - model_name='webhook', - name='additional_headers', - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True), - ), - ] diff --git a/netbox/extras/migrations/0028_remove_topology_maps.py b/netbox/extras/migrations/0028_remove_topology_maps.py deleted file mode 100644 index 834586f4f44..00000000000 --- a/netbox/extras/migrations/0028_remove_topology_maps.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 2.2 on 2019-08-09 01:26 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0027_webhook_additional_headers'), - ] - - operations = [ - migrations.DeleteModel( - name='TopologyMap', - ), - ] diff --git a/netbox/extras/migrations/0029_3569_customfield_fields.py b/netbox/extras/migrations/0029_3569_customfield_fields.py deleted file mode 100644 index 23174a4c7ef..00000000000 --- a/netbox/extras/migrations/0029_3569_customfield_fields.py +++ /dev/null @@ -1,69 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -CUSTOMFIELD_TYPE_CHOICES = ( - (100, 'text'), - (200, 'integer'), - (300, 'boolean'), - (400, 'date'), - (500, 'url'), - (600, 'select') -) - -CUSTOMFIELD_FILTER_LOGIC_CHOICES = ( - (0, 'disabled'), - (1, 'integer'), - (2, 'exact'), -) - - -def customfield_type_to_slug(apps, schema_editor): - CustomField = apps.get_model('extras', 'CustomField') - for id, slug in CUSTOMFIELD_TYPE_CHOICES: - CustomField.objects.filter(type=str(id)).update(type=slug) - - -def customfield_filter_logic_to_slug(apps, schema_editor): - CustomField = apps.get_model('extras', 'CustomField') - for id, slug in CUSTOMFIELD_FILTER_LOGIC_CHOICES: - CustomField.objects.filter(filter_logic=str(id)).update(filter_logic=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('extras', '0028_remove_topology_maps'), - ] - - operations = [ - - # CustomField.type - migrations.AlterField( - model_name='customfield', - name='type', - field=models.CharField(default='text', max_length=50), - ), - migrations.RunPython( - code=customfield_type_to_slug - ), - - # Update CustomFieldChoice.field.limit_choices_to - migrations.AlterField( - model_name='customfieldchoice', - name='field', - field=models.ForeignKey(limit_choices_to={'type': 'select'}, on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='extras.CustomField'), - ), - - # CustomField.filter_logic - migrations.AlterField( - model_name='customfield', - name='filter_logic', - field=models.CharField(default='loose', max_length=50), - ), - migrations.RunPython( - code=customfield_filter_logic_to_slug - ), - - ] diff --git a/netbox/extras/migrations/0030_3569_objectchange_fields.py b/netbox/extras/migrations/0030_3569_objectchange_fields.py deleted file mode 100644 index c31f925e237..00000000000 --- a/netbox/extras/migrations/0030_3569_objectchange_fields.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.db import migrations, models - - -OBJECTCHANGE_ACTION_CHOICES = ( - (1, 'create'), - (2, 'update'), - (3, 'delete'), -) - - -def objectchange_action_to_slug(apps, schema_editor): - ObjectChange = apps.get_model('extras', 'ObjectChange') - for id, slug in OBJECTCHANGE_ACTION_CHOICES: - ObjectChange.objects.filter(action=str(id)).update(action=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('extras', '0029_3569_customfield_fields'), - ] - - operations = [ - - # ObjectChange.action - migrations.AlterField( - model_name='objectchange', - name='action', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=objectchange_action_to_slug - ), - - ] diff --git a/netbox/extras/migrations/0031_3569_exporttemplate_fields.py b/netbox/extras/migrations/0031_3569_exporttemplate_fields.py deleted file mode 100644 index 2860f732e43..00000000000 --- a/netbox/extras/migrations/0031_3569_exporttemplate_fields.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import migrations, models - - -EXPORTTEMPLATE_LANGUAGE_CHOICES = ( - (10, 'django'), - (20, 'jinja2'), -) - - -def exporttemplate_language_to_slug(apps, schema_editor): - ExportTemplate = apps.get_model('extras', 'ExportTemplate') - for id, slug in EXPORTTEMPLATE_LANGUAGE_CHOICES: - ExportTemplate.objects.filter(template_language=str(id)).update(template_language=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('extras', '0030_3569_objectchange_fields'), - ] - - operations = [ - - # ExportTemplate.template_language - migrations.AlterField( - model_name='exporttemplate', - name='template_language', - field=models.CharField(default='jinja2', max_length=50), - ), - migrations.RunPython( - code=exporttemplate_language_to_slug - ), - - ] diff --git a/netbox/extras/migrations/0032_3569_webhook_fields.py b/netbox/extras/migrations/0032_3569_webhook_fields.py deleted file mode 100644 index a7bd2e3b5ed..00000000000 --- a/netbox/extras/migrations/0032_3569_webhook_fields.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import migrations, models - - -WEBHOOK_CONTENTTYPE_CHOICES = ( - (1, 'application/json'), - (2, 'application/x-www-form-urlencoded'), -) - - -def webhook_contenttype_to_slug(apps, schema_editor): - Webhook = apps.get_model('extras', 'Webhook') - for id, slug in WEBHOOK_CONTENTTYPE_CHOICES: - Webhook.objects.filter(http_content_type=str(id)).update(http_content_type=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('extras', '0031_3569_exporttemplate_fields'), - ] - - operations = [ - - # Webhook.http_content_type - migrations.AlterField( - model_name='webhook', - name='http_content_type', - field=models.CharField(default='application/json', max_length=50), - ), - migrations.RunPython( - code=webhook_contenttype_to_slug - ), - - ] diff --git a/netbox/extras/migrations/0033_graph_type_template_language.py b/netbox/extras/migrations/0033_graph_type_template_language.py deleted file mode 100644 index 672bbdbd8c1..00000000000 --- a/netbox/extras/migrations/0033_graph_type_template_language.py +++ /dev/null @@ -1,59 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -GRAPH_TYPE_CHOICES = ( - (100, 'dcim', 'interface'), - (150, 'dcim', 'device'), - (200, 'circuits', 'provider'), - (300, 'dcim', 'site'), -) - - -def graph_type_to_fk(apps, schema_editor): - Graph = apps.get_model('extras', 'Graph') - ContentType = apps.get_model('contenttypes', 'ContentType') - - # On a new installation (and during tests) content types might not yet exist. So, we only perform the bulk - # updates if a Graph has been created, which implies that we're working with a populated database. - if Graph.objects.exists(): - for id, app_label, model in GRAPH_TYPE_CHOICES: - content_type = ContentType.objects.get(app_label=app_label, model=model) - Graph.objects.filter(type=id).update(type=content_type.pk) - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0032_3569_webhook_fields'), - ] - - operations = [ - # We have to swap the legacy IDs to ContentType PKs *before* we alter the field, to avoid triggering an - # IntegrityError on the ForeignKey. - migrations.RunPython( - code=graph_type_to_fk - ), - migrations.AlterField( - model_name='graph', - name='type', - field=models.ForeignKey( - limit_choices_to={'model__in': ['provider', 'device', 'interface', 'site']}, - on_delete=django.db.models.deletion.CASCADE, - to='contenttypes.ContentType' - ), - ), - - # Add the template_language field with an initial default of Django to preserve current behavior. Then, - # alter the field to set the default for any *new* Graphs to Jinja2. - migrations.AddField( - model_name='graph', - name='template_language', - field=models.CharField(default='django', max_length=50), - ), - migrations.AlterField( - model_name='graph', - name='template_language', - field=models.CharField(default='jinja2', max_length=50), - ), - ] diff --git a/netbox/extras/migrations/0034_configcontext_tags.py b/netbox/extras/migrations/0034_configcontext_tags.py deleted file mode 100644 index e5076f43ce6..00000000000 --- a/netbox/extras/migrations/0034_configcontext_tags.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-11 09:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0033_graph_type_template_language'), - ] - - operations = [ - migrations.AddField( - model_name='configcontext', - name='tags', - field=models.ManyToManyField(blank=True, related_name='_configcontext_tags_+', to='extras.Tag'), - ), - ] diff --git a/netbox/extras/migrations/0035_deterministic_ordering.py b/netbox/extras/migrations/0035_deterministic_ordering.py deleted file mode 100644 index d1904c75daf..00000000000 --- a/netbox/extras/migrations/0035_deterministic_ordering.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 18:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0034_configcontext_tags'), - ] - - operations = [ - migrations.AlterModelOptions( - name='customfieldvalue', - options={'ordering': ('obj_type', 'obj_id', 'pk')}, - ), - migrations.AlterModelOptions( - name='graph', - options={'ordering': ('type', 'weight', 'name', 'pk')}, - ), - migrations.AlterModelOptions( - name='imageattachment', - options={'ordering': ('name', 'pk')}, - ), - migrations.AlterModelOptions( - name='webhook', - options={'ordering': ('name',)}, - ), - ] diff --git a/netbox/extras/migrations/0036_contenttype_filters_to_q_objects.py b/netbox/extras/migrations/0036_contenttype_filters_to_q_objects.py deleted file mode 100644 index a12ea65d48f..00000000000 --- a/netbox/extras/migrations/0036_contenttype_filters_to_q_objects.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 21:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0035_deterministic_ordering'), - ] - - operations = [ - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ['circuit', 'provider'])), models.Q(('app_label', 'dcim'), ('model__in', ['device', 'devicetype', 'powerfeed', 'rack', 'site'])), models.Q(('app_label', 'ipam'), ('model__in', ['aggregate', 'ipaddress', 'prefix', 'service', 'vlan', 'vrf'])), models.Q(('app_label', 'tenancy'), ('model__in', ['tenant'])), models.Q(('app_label', 'virtualization'), ('model__in', ['cluster', 'virtualmachine'])), _connector='OR')), related_name='custom_fields', to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='customlink', - name='content_type', - field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ['circuit', 'provider'])), models.Q(('app_label', 'dcim'), ('model__in', ['cable', 'device', 'devicetype', 'powerpanel', 'powerfeed', 'rack', 'site'])), models.Q(('app_label', 'ipam'), ('model__in', ['aggregate', 'ipaddress', 'prefix', 'service', 'vlan', 'vrf'])), models.Q(('app_label', 'tenancy'), ('model__in', ['tenant'])), models.Q(('app_label', 'virtualization'), ('model__in', ['cluster', 'virtualmachine'])), _connector='OR')), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ['circuit', 'provider'])), models.Q(('app_label', 'dcim'), ('model__in', ['cable', 'consoleport', 'device', 'devicetype', 'interface', 'inventoryitem', 'manufacturer', 'powerpanel', 'powerport', 'powerfeed', 'rack', 'rackgroup', 'region', 'site', 'virtualchassis'])), models.Q(('app_label', 'ipam'), ('model__in', ['aggregate', 'ipaddress', 'prefix', 'service', 'vlan', 'vrf'])), models.Q(('app_label', 'tenancy'), ('model__in', ['tenant'])), models.Q(('app_label', 'virtualization'), ('model__in', ['cluster', 'virtualmachine'])), _connector='OR')), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='graph', - name='type', - field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ['provider'])), models.Q(('app_label', 'dcim'), ('model__in', ['device', 'interface', 'site'])), _connector='OR')), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='webhook', - name='obj_type', - field=models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ['circuit', 'provider'])), models.Q(('app_label', 'dcim'), ('model__in', ['cable', 'consoleport', 'consoleserverport', 'device', 'devicebay', 'devicetype', 'frontport', 'interface', 'inventoryitem', 'manufacturer', 'poweroutlet', 'powerpanel', 'powerport', 'powerfeed', 'rack', 'rearport', 'region', 'site', 'virtualchassis'])), models.Q(('app_label', 'ipam'), ('model__in', ['aggregate', 'ipaddress', 'prefix', 'service', 'vlan', 'vrf'])), models.Q(('app_label', 'tenancy'), ('model__in', ['tenant'])), models.Q(('app_label', 'virtualization'), ('model__in', ['cluster', 'virtualmachine'])), _connector='OR')), related_name='webhooks', to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/extras/migrations/0037_configcontexts_clusters.py b/netbox/extras/migrations/0037_configcontexts_clusters.py deleted file mode 100644 index 201aed94af5..00000000000 --- a/netbox/extras/migrations/0037_configcontexts_clusters.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-17 18:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0013_deterministic_ordering'), - ('extras', '0036_contenttype_filters_to_q_objects'), - ] - - operations = [ - migrations.AddField( - model_name='configcontext', - name='cluster_groups', - field=models.ManyToManyField(blank=True, related_name='_configcontext_cluster_groups_+', to='virtualization.ClusterGroup'), - ), - migrations.AddField( - model_name='configcontext', - name='clusters', - field=models.ManyToManyField(blank=True, related_name='_configcontext_clusters_+', to='virtualization.Cluster'), - ), - ] diff --git a/netbox/extras/migrations/0038_webhook_template_support.py b/netbox/extras/migrations/0038_webhook_template_support.py deleted file mode 100644 index 7d563820f65..00000000000 --- a/netbox/extras/migrations/0038_webhook_template_support.py +++ /dev/null @@ -1,48 +0,0 @@ -import json - -from django.db import migrations, models - - -def json_to_text(apps, schema_editor): - """ - Convert a JSON representation of HTTP headers to key-value pairs (one header per line) - """ - Webhook = apps.get_model('extras', 'Webhook') - for webhook in Webhook.objects.exclude(additional_headers=''): - data = json.loads(webhook.additional_headers) - headers = ['{}: {}'.format(k, v) for k, v in data.items()] - Webhook.objects.filter(pk=webhook.pk).update(additional_headers='\n'.join(headers)) - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0037_configcontexts_clusters'), - ] - - operations = [ - migrations.AddField( - model_name='webhook', - name='http_method', - field=models.CharField(default='POST', max_length=30), - ), - migrations.AddField( - model_name='webhook', - name='body_template', - field=models.TextField(blank=True), - ), - migrations.AlterField( - model_name='webhook', - name='additional_headers', - field=models.TextField(blank=True, default=''), - preserve_default=False, - ), - migrations.AlterField( - model_name='webhook', - name='http_content_type', - field=models.CharField(default='application/json', max_length=100), - ), - migrations.RunPython( - code=json_to_text - ), - ] diff --git a/netbox/extras/migrations/0039_update_features_content_types.py b/netbox/extras/migrations/0039_update_features_content_types.py deleted file mode 100644 index 8747fcc16bd..00000000000 --- a/netbox/extras/migrations/0039_update_features_content_types.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 2.2.11 on 2020-03-14 06:50 - -from django.db import migrations, models -import django.db.models.deletion -import extras.utils - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0038_webhook_template_support'), - ] - - operations = [ - migrations.AlterField( - model_name='customfield', - name='obj_type', - field=models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('custom_fields'), related_name='custom_fields', to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='customlink', - name='content_type', - field=models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('custom_links'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='exporttemplate', - name='content_type', - field=models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('export_templates'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='graph', - name='type', - field=models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('graphs'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType'), - ), - migrations.AlterField( - model_name='webhook', - name='obj_type', - field=models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('webhooks'), related_name='webhooks', to='contenttypes.ContentType'), - ), - ] diff --git a/netbox/extras/migrations/0040_standardize_description.py b/netbox/extras/migrations/0040_standardize_description.py deleted file mode 100644 index fdc5da2da38..00000000000 --- a/netbox/extras/migrations/0040_standardize_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0039_update_features_content_types'), - ] - - operations = [ - migrations.AlterField( - model_name='configcontext', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='customfield', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/extras/migrations/0041_tag_description.py b/netbox/extras/migrations/0041_tag_description.py deleted file mode 100644 index 63ac5c49afe..00000000000 --- a/netbox/extras/migrations/0041_tag_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:46 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0040_standardize_description'), - ] - - operations = [ - migrations.AlterField( - model_name='tag', - name='comments', - field=models.CharField(blank=True, max_length=200), - ), - migrations.RenameField( - model_name='tag', - old_name='comments', - new_name='description', - ), - ] diff --git a/netbox/extras/migrations/0042_customfield_manager.py b/netbox/extras/migrations/0042_customfield_manager.py deleted file mode 100644 index 7d80b567a43..00000000000 --- a/netbox/extras/migrations/0042_customfield_manager.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.0.5 on 2020-05-07 21:06 - -from django.db import migrations -import extras.models.customfields - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0041_tag_description'), - ] - - operations = [ - migrations.AlterModelManagers( - name='customfield', - managers=[ - ('objects', extras.models.customfields.CustomFieldManager()), - ], - ), - ] diff --git a/netbox/extras/migrations/0043_report.py b/netbox/extras/migrations/0043_report.py deleted file mode 100644 index d0d55c3f74f..00000000000 --- a/netbox/extras/migrations/0043_report.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 3.0.7 on 2020-06-23 02:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0042_customfield_manager'), - ] - - operations = [ - migrations.CreateModel( - name='Report', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ], - options={ - 'managed': False, - }, - ) - ] diff --git a/netbox/extras/migrations/0044_jobresult.py b/netbox/extras/migrations/0044_jobresult.py deleted file mode 100644 index 006d2878bae..00000000000 --- a/netbox/extras/migrations/0044_jobresult.py +++ /dev/null @@ -1,75 +0,0 @@ -import uuid - -import django.contrib.postgres.fields.jsonb -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - -import extras.utils -from extras.choices import JobResultStatusChoices - - -def convert_job_results(apps, schema_editor): - """ - Convert ReportResult objects to JobResult objects - """ - Report = apps.get_model('extras', 'Report') - ReportResult = apps.get_model('extras', 'ReportResult') - JobResult = apps.get_model('extras', 'JobResult') - ContentType = apps.get_model('contenttypes', 'ContentType') - report_content_type = ContentType.objects.get_for_model(Report) - - job_results = [] - for report_result in ReportResult.objects.all(): - if report_result.failed: - status = JobResultStatusChoices.STATUS_FAILED - else: - status = JobResultStatusChoices.STATUS_COMPLETED - job_results.append( - JobResult( - name=report_result.report, - obj_type=report_content_type, - created=report_result.created, - completed=report_result.created, - user=report_result.user, - status=status, - data=report_result.data, - job_id=uuid.uuid4() - ) - ) - JobResult.objects.bulk_create(job_results) - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('extras', '0043_report'), - ] - - operations = [ - migrations.CreateModel( - name='JobResult', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=255)), - ('created', models.DateTimeField(auto_now_add=True)), - ('completed', models.DateTimeField(blank=True, null=True)), - ('status', models.CharField(default='pending', max_length=30)), - ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)), - ('job_id', models.UUIDField(unique=True)), - ('obj_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('job_results'), on_delete=django.db.models.deletion.CASCADE, related_name='job_results', to='contenttypes.ContentType')), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['obj_type', 'name', '-created'], - }, - ), - migrations.RunPython( - code=convert_job_results - ), - migrations.DeleteModel( - name='ReportResult' - ) - ] diff --git a/netbox/extras/migrations/0045_configcontext_changelog.py b/netbox/extras/migrations/0045_configcontext_changelog.py deleted file mode 100644 index 0368e80eedc..00000000000 --- a/netbox/extras/migrations/0045_configcontext_changelog.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.0.6 on 2020-07-09 20:54 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0044_jobresult'), - ] - - operations = [ - migrations.AddField( - model_name='configcontext', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='configcontext', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/extras/migrations/0046_update_jsonfield.py b/netbox/extras/migrations/0046_update_jsonfield.py deleted file mode 100644 index a063028402a..00000000000 --- a/netbox/extras/migrations/0046_update_jsonfield.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 16:01 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0045_configcontext_changelog'), - ] - - operations = [ - migrations.AlterField( - model_name='configcontext', - name='data', - field=models.JSONField(), - ), - migrations.AlterField( - model_name='jobresult', - name='data', - field=models.JSONField(blank=True, null=True), - ), - migrations.AlterField( - model_name='objectchange', - name='object_data', - field=models.JSONField(editable=False), - ), - ] diff --git a/netbox/extras/migrations/0047_tag_ordering.py b/netbox/extras/migrations/0047_tag_ordering.py deleted file mode 100644 index 8fecbdad4e1..00000000000 --- a/netbox/extras/migrations/0047_tag_ordering.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.1rc1 on 2020-07-23 18:22 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0046_update_jsonfield'), - ] - - operations = [ - migrations.AlterModelOptions( - name='tag', - options={'ordering': ['name']}, - ), - ] diff --git a/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py b/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py deleted file mode 100644 index 68ff8f5ab1b..00000000000 --- a/netbox/extras/migrations/0048_exporttemplate_remove_template_language.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.1 on 2020-08-21 15:13 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0047_tag_ordering'), - ] - - operations = [ - migrations.RemoveField( - model_name='exporttemplate', - name='template_language', - ), - ] diff --git a/netbox/extras/migrations/0049_remove_graph.py b/netbox/extras/migrations/0049_remove_graph.py deleted file mode 100644 index c884c8f8239..00000000000 --- a/netbox/extras/migrations/0049_remove_graph.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 3.1 on 2020-08-21 15:47 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0048_exporttemplate_remove_template_language'), - ] - - operations = [ - migrations.DeleteModel( - name='Graph', - ), - ] diff --git a/netbox/extras/migrations/0050_customfield_changes.py b/netbox/extras/migrations/0050_customfield_changes.py deleted file mode 100644 index 711b21041b7..00000000000 --- a/netbox/extras/migrations/0050_customfield_changes.py +++ /dev/null @@ -1,65 +0,0 @@ -import django.contrib.postgres.fields -import django.core.validators -from django.db import migrations, models - -import utilities.validators - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0049_remove_graph'), - ] - - operations = [ - # Rename reverse relation on CustomFieldChoice - migrations.AlterField( - model_name='customfieldchoice', - name='field', - field=models.ForeignKey( - limit_choices_to={'type': 'select'}, - on_delete=django.db.models.deletion.CASCADE, - related_name='_choices', - to='extras.customfield' - ), - ), - # Add choices field to CustomField - migrations.AddField( - model_name='customfield', - name='choices', - field=django.contrib.postgres.fields.ArrayField( - base_field=models.CharField(max_length=100), - blank=True, - null=True, - size=None - ), - ), - # Introduce new default field (to be renamed later) - migrations.AddField( - model_name='customfield', - name='default2', - field=models.JSONField(blank=True, null=True), - ), - # Rename obj_type to content_types - migrations.RenameField( - model_name='customfield', - old_name='obj_type', - new_name='content_types', - ), - # Add validation fields - migrations.AddField( - model_name='customfield', - name='validation_maximum', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='customfield', - name='validation_minimum', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='customfield', - name='validation_regex', - field=models.CharField(blank=True, max_length=500, validators=[utilities.validators.validate_regex]), - ), - ] diff --git a/netbox/extras/migrations/0051_migrate_customfields.py b/netbox/extras/migrations/0051_migrate_customfields.py deleted file mode 100644 index 3c1e46f9b27..00000000000 --- a/netbox/extras/migrations/0051_migrate_customfields.py +++ /dev/null @@ -1,109 +0,0 @@ -from django.db import migrations - -from extras.choices import CustomFieldTypeChoices - - -def deserialize_value(field, value): - """ - Convert serialized values to JSON equivalents. - """ - if field.type in (CustomFieldTypeChoices.TYPE_INTEGER): - return int(value) - if field.type == CustomFieldTypeChoices.TYPE_BOOLEAN: - return bool(int(value)) - if field.type == CustomFieldTypeChoices.TYPE_SELECT: - return field._choices.get(pk=int(value)).value - return value - - -def migrate_customfield_defaults(apps, schema_editor): - """ - Copy old serialized defaults to native JSON types. - """ - CustomField = apps.get_model('extras', 'CustomField') - - for customfield in CustomField.objects.exclude(default=''): - try: - if customfield.type == CustomFieldTypeChoices.TYPE_INTEGER: - value = int(customfield.default) - elif customfield.type == CustomFieldTypeChoices.TYPE_BOOLEAN: - value = customfield.default in ['true', 'yes', '1'] - else: - value = customfield.default - except ValueError: - raise ValueError( - f'Invalid default value "{customfield.default}" found for {customfield.type} ' - f'custom field {customfield.name}' - ) - CustomField.objects.filter(pk=customfield.pk).update(default2=value) - - -def migrate_customfieldchoices(apps, schema_editor): - """ - Collect all CustomFieldChoices for each applicable CustomField, and save them locally as an array on - the CustomField instance. - """ - CustomField = apps.get_model('extras', 'CustomField') - CustomFieldChoice = apps.get_model('extras', 'CustomFieldChoice') - - for cf in CustomField.objects.filter(type='select'): - cf.choices = [ - cfc.value for cfc in CustomFieldChoice.objects.filter(field=cf).order_by('weight', 'value') - ] - cf.save() - - -def migrate_customfieldvalues(apps, schema_editor): - """ - Copy data from CustomFieldValues into the custom_field_data JSON field on each model instance. - """ - CustomFieldValue = apps.get_model('extras', 'CustomFieldValue') - - for cfv in CustomFieldValue.objects.prefetch_related('field').exclude(serialized_value=''): - model = apps.get_model(cfv.obj_type.app_label, cfv.obj_type.model) - - # Read and update custom field value for each instance - # TODO: This can be done more efficiently once .update() is supported for JSON fields - cf_data = model.objects.filter(pk=cfv.obj_id).values('custom_field_data').first() - try: - cf_data['custom_field_data'][cfv.field.name] = deserialize_value(cfv.field, cfv.serialized_value) - except Exception as e: - print(f'{cfv.field.name} ({cfv.field.type}): {cfv.serialized_value} ({cfv.pk})') - raise e - model.objects.filter(pk=cfv.obj_id).update(**cf_data) - - -def fix_filter_logic_values(apps, schema_editor): - """ - Fix invalid values for CustomField.filter_logic (see #5376) - """ - CustomField = apps.get_model('extras', 'CustomField') - - CustomField.objects.filter(filter_logic="integer").update(filter_logic="loose") - - -class Migration(migrations.Migration): - - dependencies = [ - ('circuits', '0020_custom_field_data'), - ('dcim', '0117_custom_field_data'), - ('extras', '0050_customfield_changes'), - ('ipam', '0038_custom_field_data'), - ('tenancy', '0010_custom_field_data'), - ('virtualization', '0018_custom_field_data'), - ] - - operations = [ - migrations.RunPython( - code=migrate_customfield_defaults - ), - migrations.RunPython( - code=migrate_customfieldchoices - ), - migrations.RunPython( - code=migrate_customfieldvalues - ), - migrations.RunPython( - code=fix_filter_logic_values - ), - ] diff --git a/netbox/extras/migrations/0052_customfield_cleanup.py b/netbox/extras/migrations/0052_customfield_cleanup.py deleted file mode 100644 index 543cdee971c..00000000000 --- a/netbox/extras/migrations/0052_customfield_cleanup.py +++ /dev/null @@ -1,26 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0051_migrate_customfields'), - ] - - operations = [ - migrations.RemoveField( - model_name='CustomField', - name='default', - ), - migrations.RenameField( - model_name='CustomField', - old_name='default2', - new_name='default' - ), - migrations.DeleteModel( - name='CustomFieldChoice', - ), - migrations.DeleteModel( - name='CustomFieldValue', - ), - ] diff --git a/netbox/extras/migrations/0053_rename_webhook_obj_type.py b/netbox/extras/migrations/0053_rename_webhook_obj_type.py deleted file mode 100644 index 05bbebad8cb..00000000000 --- a/netbox/extras/migrations/0053_rename_webhook_obj_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1 on 2020-12-02 19:41 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0052_customfield_cleanup'), - ] - - operations = [ - migrations.RenameField( - model_name='webhook', - old_name='obj_type', - new_name='content_types', - ), - ] diff --git a/netbox/extras/migrations/0054_standardize_models.py b/netbox/extras/migrations/0054_standardize_models.py deleted file mode 100644 index c7304334518..00000000000 --- a/netbox/extras/migrations/0054_standardize_models.py +++ /dev/null @@ -1,61 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0053_rename_webhook_obj_type'), - ] - - operations = [ - migrations.AlterField( - model_name='configcontext', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='customfield', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='customlink', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='exporttemplate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='imageattachment', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='jobresult', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='objectchange', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='tag', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='taggeditem', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='webhook', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] diff --git a/netbox/extras/migrations/0055_objectchange_data.py b/netbox/extras/migrations/0055_objectchange_data.py deleted file mode 100644 index 4dc33fc1c15..00000000000 --- a/netbox/extras/migrations/0055_objectchange_data.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.2b1 on 2021-03-03 20:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0054_standardize_models'), - ] - - operations = [ - migrations.RenameField( - model_name='objectchange', - old_name='object_data', - new_name='postchange_data', - ), - migrations.AlterField( - model_name='objectchange', - name='postchange_data', - field=models.JSONField(blank=True, editable=False, null=True), - ), - migrations.AddField( - model_name='objectchange', - name='prechange_data', - field=models.JSONField(blank=True, editable=False, null=True), - ), - ] diff --git a/netbox/extras/migrations/0056_extend_configcontext.py b/netbox/extras/migrations/0056_extend_configcontext.py deleted file mode 100644 index 9c7e2d700b3..00000000000 --- a/netbox/extras/migrations/0056_extend_configcontext.py +++ /dev/null @@ -1,22 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0130_sitegroup'), - ('extras', '0055_objectchange_data'), - ] - - operations = [ - migrations.AddField( - model_name='configcontext', - name='site_groups', - field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_site_groups_+', to='dcim.SiteGroup'), - ), - migrations.AddField( - model_name='configcontext', - name='device_types', - field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_device_types_+', to='dcim.DeviceType'), - ), - ] diff --git a/netbox/extras/migrations/0057_customlink_rename_fields.py b/netbox/extras/migrations/0057_customlink_rename_fields.py deleted file mode 100644 index 6aba35d9f22..00000000000 --- a/netbox/extras/migrations/0057_customlink_rename_fields.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.2b1 on 2021-03-09 01:42 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0056_extend_configcontext'), - ] - - operations = [ - migrations.RenameField( - model_name='customlink', - old_name='text', - new_name='link_text', - ), - migrations.RenameField( - model_name='customlink', - old_name='url', - new_name='link_url', - ), - migrations.AlterField( - model_name='customlink', - name='new_window', - field=models.BooleanField(default=False), - ), - ] diff --git a/netbox/extras/migrations/0058_journalentry.py b/netbox/extras/migrations/0058_journalentry.py deleted file mode 100644 index 22abf965ca2..00000000000 --- a/netbox/extras/migrations/0058_journalentry.py +++ /dev/null @@ -1,32 +0,0 @@ -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('contenttypes', '0002_remove_content_type_name'), - ('extras', '0057_customlink_rename_fields'), - ] - - operations = [ - migrations.CreateModel( - name='JournalEntry', - fields=[ - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ('assigned_object_id', models.PositiveIntegerField()), - ('created', models.DateTimeField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('kind', models.CharField(default='info', max_length=30)), - ('comments', models.TextField()), - ('assigned_object_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), - ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), - ], - options={ - 'verbose_name_plural': 'journal entries', - 'ordering': ('-created',), - }, - ), - ] diff --git a/netbox/extras/migrations/0059_exporttemplate_as_attachment.py b/netbox/extras/migrations/0059_exporttemplate_as_attachment.py deleted file mode 100644 index 6e6ae0413ac..00000000000 --- a/netbox/extras/migrations/0059_exporttemplate_as_attachment.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('extras', '0058_journalentry'), - ] - - operations = [ - migrations.AddField( - model_name='exporttemplate', - name='as_attachment', - field=models.BooleanField(default=True), - ), - ] diff --git a/netbox/ipam/migrations/0001_initial.py b/netbox/ipam/migrations/0001_initial.py deleted file mode 100644 index 567f991eced..00000000000 --- a/netbox/ipam/migrations/0001_initial.py +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-06-22 18:21 -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import ipam.fields - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('dcim', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Aggregate', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('family', models.PositiveSmallIntegerField(choices=[(4, b'IPv4'), (6, b'IPv6')])), - ('prefix', ipam.fields.IPNetworkField()), - ('date_added', models.DateField(blank=True, null=True)), - ('description', models.CharField(blank=True, max_length=100)), - ], - options={ - 'ordering': ['family', 'prefix'], - }, - ), - migrations.CreateModel( - name='IPAddress', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('family', models.PositiveSmallIntegerField(choices=[(4, b'IPv4'), (6, b'IPv6')], editable=False)), - ('address', ipam.fields.IPAddressField()), - ('description', models.CharField(blank=True, max_length=100)), - ('interface', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ip_addresses', to='dcim.Interface')), - ('nat_inside', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='nat_outside', to='ipam.IPAddress', verbose_name=b'NAT IP (inside)')), - ], - options={ - 'ordering': ['family', 'address'], - 'verbose_name': 'IP address', - 'verbose_name_plural': 'IP addresses', - }, - ), - migrations.CreateModel( - name='Prefix', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('family', models.PositiveSmallIntegerField(choices=[(4, b'IPv4'), (6, b'IPv6')], editable=False)), - ('prefix', ipam.fields.IPNetworkField()), - ('status', models.PositiveSmallIntegerField(choices=[(0, b'Container'), (1, b'Active'), (2, b'Reserved'), (3, b'Deprecated')], default=1, verbose_name=b'Status')), - ('description', models.CharField(blank=True, max_length=100)), - ], - options={ - 'ordering': ['family', 'prefix'], - 'verbose_name_plural': 'prefixes', - }, - ), - migrations.CreateModel( - name='RIR', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - 'verbose_name': 'RIR', - 'verbose_name_plural': 'RIRs', - }, - ), - migrations.CreateModel( - name='Role', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ('weight', models.PositiveSmallIntegerField(default=1000)), - ], - options={ - 'ordering': ['weight', 'name'], - }, - ), - migrations.CreateModel( - name='VLAN', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)], verbose_name=b'ID')), - ('name', models.CharField(max_length=30)), - ('status', models.PositiveSmallIntegerField(choices=[(1, b'Active'), (2, b'Reserved'), (3, b'Deprecated')], default=1, verbose_name=b'Status')), - ('role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vlans', to='ipam.Role')), - ('site', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='dcim.Site')), - ], - options={ - 'ordering': ['site', 'vid'], - 'verbose_name': 'VLAN', - 'verbose_name_plural': 'VLANs', - }, - ), - migrations.CreateModel( - name='VRF', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=50)), - ('rd', models.CharField(max_length=21, unique=True, verbose_name=b'Route distinguisher')), - ('description', models.CharField(blank=True, max_length=100)), - ], - options={ - 'ordering': ['name'], - 'verbose_name': 'VRF', - 'verbose_name_plural': 'VRFs', - }, - ), - migrations.AddField( - model_name='prefix', - name='role', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prefixes', to='ipam.Role'), - ), - migrations.AddField( - model_name='prefix', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='dcim.Site'), - ), - migrations.AddField( - model_name='prefix', - name='vlan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.VLAN', verbose_name=b'VLAN'), - ), - migrations.AddField( - model_name='prefix', - name='vrf', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.VRF', verbose_name=b'VRF'), - ), - migrations.AddField( - model_name='ipaddress', - name='vrf', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='ip_addresses', to='ipam.VRF', verbose_name=b'VRF'), - ), - migrations.AddField( - model_name='aggregate', - name='rir', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='aggregates', to='ipam.RIR', verbose_name=b'RIR'), - ), - ] diff --git a/netbox/ipam/migrations/0002_vrf_add_enforce_unique.py b/netbox/ipam/migrations/0002_vrf_add_enforce_unique.py deleted file mode 100644 index 993020a1275..00000000000 --- a/netbox/ipam/migrations/0002_vrf_add_enforce_unique.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-14 19:34 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='vrf', - name='enforce_unique', - field=models.BooleanField(default=True, help_text=b'Prevent duplicate prefixes/IP addresses within this VRF', verbose_name=b'Enforce unique space'), - ), - ] diff --git a/netbox/ipam/migrations/0003_ipam_add_vlangroups.py b/netbox/ipam/migrations/0003_ipam_add_vlangroups.py deleted file mode 100644 index c9092f0f2f2..00000000000 --- a/netbox/ipam/migrations/0003_ipam_add_vlangroups.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-15 16:22 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0010_devicebay_installed_device_set_null'), - ('ipam', '0002_vrf_add_enforce_unique'), - ] - - operations = [ - migrations.CreateModel( - name='VLANGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50)), - ('slug', models.SlugField()), - ('site', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vlan_groups', to='dcim.Site')), - ], - options={ - 'ordering': ['site', 'name'], - }, - ), - migrations.AddField( - model_name='vlan', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='ipam.VLANGroup'), - ), - migrations.AlterUniqueTogether( - name='vlangroup', - unique_together=set([('site', 'name'), ('site', 'slug')]), - ), - ] diff --git a/netbox/ipam/migrations/0004_ipam_vlangroup_uniqueness.py b/netbox/ipam/migrations/0004_ipam_vlangroup_uniqueness.py deleted file mode 100644 index d8f628c57e8..00000000000 --- a/netbox/ipam/migrations/0004_ipam_vlangroup_uniqueness.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.7 on 2016-07-15 17:14 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0003_ipam_add_vlangroups'), - ] - - operations = [ - migrations.AlterModelOptions( - name='vlan', - options={'ordering': ['site', 'group', 'vid'], 'verbose_name': 'VLAN', 'verbose_name_plural': 'VLANs'}, - ), - migrations.AlterModelOptions( - name='vlangroup', - options={'ordering': ['site', 'name'], 'verbose_name': 'VLAN group', 'verbose_name_plural': 'VLAN groups'}, - ), - migrations.AlterUniqueTogether( - name='vlan', - unique_together=set([('group', 'name'), ('group', 'vid')]), - ), - ] diff --git a/netbox/ipam/migrations/0005_auto_20160725_1842.py b/netbox/ipam/migrations/0005_auto_20160725_1842.py deleted file mode 100644 index 726b89259ba..00000000000 --- a/netbox/ipam/migrations/0005_auto_20160725_1842.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-25 18:42 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0004_ipam_vlangroup_uniqueness'), - ] - - operations = [ - migrations.AddField( - model_name='vlan', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - migrations.AlterField( - model_name='vlan', - name='name', - field=models.CharField(max_length=64), - ), - ] diff --git a/netbox/ipam/migrations/0006_vrf_vlan_add_tenant.py b/netbox/ipam/migrations/0006_vrf_vlan_add_tenant.py deleted file mode 100644 index 9352e487290..00000000000 --- a/netbox/ipam/migrations/0006_vrf_vlan_add_tenant.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-27 14:39 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ('ipam', '0005_auto_20160725_1842'), - ] - - operations = [ - migrations.AddField( - model_name='vlan', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='tenancy.Tenant'), - ), - migrations.AddField( - model_name='vrf', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vrfs', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/ipam/migrations/0007_prefix_ipaddress_add_tenant.py b/netbox/ipam/migrations/0007_prefix_ipaddress_add_tenant.py deleted file mode 100644 index dfe8fbb521e..00000000000 --- a/netbox/ipam/migrations/0007_prefix_ipaddress_add_tenant.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-28 15:32 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ('ipam', '0006_vrf_vlan_add_tenant'), - ] - - operations = [ - migrations.AddField( - model_name='ipaddress', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='ip_addresses', to='tenancy.Tenant'), - ), - migrations.AddField( - model_name='prefix', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/ipam/migrations/0008_prefix_change_order.py b/netbox/ipam/migrations/0008_prefix_change_order.py deleted file mode 100644 index ea219da1920..00000000000 --- a/netbox/ipam/migrations/0008_prefix_change_order.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-09-15 16:08 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0007_prefix_ipaddress_add_tenant'), - ] - - operations = [ - migrations.AlterModelOptions( - name='prefix', - options={'ordering': ['vrf', 'family', 'prefix'], 'verbose_name_plural': 'prefixes'}, - ), - ] diff --git a/netbox/ipam/migrations/0009_ipaddress_add_status.py b/netbox/ipam/migrations/0009_ipaddress_add_status.py deleted file mode 100644 index b2859073048..00000000000 --- a/netbox/ipam/migrations/0009_ipaddress_add_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-10-21 15:44 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0008_prefix_change_order'), - ] - - operations = [ - migrations.AddField( - model_name='ipaddress', - name='status', - field=models.PositiveSmallIntegerField(choices=[(1, b'Active'), (2, b'Reserved'), (5, b'DHCP')], default=1, verbose_name=b'Status'), - ), - ] diff --git a/netbox/ipam/migrations/0010_ipaddress_help_texts.py b/netbox/ipam/migrations/0010_ipaddress_help_texts.py deleted file mode 100644 index 2a7e0633544..00000000000 --- a/netbox/ipam/migrations/0010_ipaddress_help_texts.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-11-01 17:46 -from django.db import migrations, models -import django.db.models.deletion -import ipam.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0009_ipaddress_add_status'), - ] - - operations = [ - migrations.AlterField( - model_name='ipaddress', - name='address', - field=ipam.fields.IPAddressField(help_text=b'IPv4 or IPv6 address (with mask)'), - ), - migrations.AlterField( - model_name='ipaddress', - name='nat_inside', - field=models.OneToOneField(blank=True, help_text=b'The IP for which this address is the "outside" IP', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='nat_outside', to='ipam.IPAddress', verbose_name=b'NAT (Inside)'), - ), - ] diff --git a/netbox/ipam/migrations/0011_rir_add_is_private.py b/netbox/ipam/migrations/0011_rir_add_is_private.py deleted file mode 100644 index d8b81d484ad..00000000000 --- a/netbox/ipam/migrations/0011_rir_add_is_private.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-12-06 18:27 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0010_ipaddress_help_texts'), - ] - - operations = [ - migrations.AddField( - model_name='rir', - name='is_private', - field=models.BooleanField(default=False, help_text=b'IP space managed by this RIR is considered private', verbose_name=b'Private'), - ), - ] diff --git a/netbox/ipam/migrations/0012_services.py b/netbox/ipam/migrations/0012_services.py deleted file mode 100644 index 12b2cf67390..00000000000 --- a/netbox/ipam/migrations/0012_services.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10 on 2016-12-15 20:22 -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0022_color_names_to_rgb'), - ('ipam', '0011_rir_add_is_private'), - ] - - operations = [ - migrations.CreateModel( - name='Service', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=30)), - ('protocol', models.PositiveSmallIntegerField(choices=[(6, b'TCP'), (17, b'UDP')])), - ('port', models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535)], verbose_name=b'Port number')), - ('description', models.CharField(blank=True, max_length=100)), - ('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='services', to='dcim.Device', verbose_name=b'device')), - ('ipaddresses', models.ManyToManyField(blank=True, related_name='services', to='ipam.IPAddress', verbose_name=b'IP addresses')), - ], - options={ - 'ordering': ['device', 'protocol', 'port'], - }, - ), - migrations.AlterUniqueTogether( - name='service', - unique_together=set([('device', 'protocol', 'port')]), - ), - ] diff --git a/netbox/ipam/migrations/0013_prefix_add_is_pool.py b/netbox/ipam/migrations/0013_prefix_add_is_pool.py deleted file mode 100644 index 194bcb65130..00000000000 --- a/netbox/ipam/migrations/0013_prefix_add_is_pool.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2016-12-27 19:34 -from django.db import migrations, models -import django.db.models.deletion -import ipam.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0012_services'), - ] - - operations = [ - migrations.AddField( - model_name='prefix', - name='is_pool', - field=models.BooleanField(default=False, help_text=b'All IP addresses within this prefix are considered usable', verbose_name=b'Is a pool'), - ), - migrations.AlterField( - model_name='prefix', - name='prefix', - field=ipam.fields.IPNetworkField(help_text=b'IPv4 or IPv6 network with mask'), - ), - migrations.AlterField( - model_name='prefix', - name='role', - field=models.ForeignKey(blank=True, help_text=b'The primary function of this prefix', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prefixes', to='ipam.Role'), - ), - migrations.AlterField( - model_name='prefix', - name='status', - field=models.PositiveSmallIntegerField(choices=[(0, b'Container'), (1, b'Active'), (2, b'Reserved'), (3, b'Deprecated')], default=1, help_text=b'Operational status of this prefix', verbose_name=b'Status'), - ), - ] diff --git a/netbox/ipam/migrations/0014_ipaddress_status_add_deprecated.py b/netbox/ipam/migrations/0014_ipaddress_status_add_deprecated.py deleted file mode 100644 index 3f5f48437dd..00000000000 --- a/netbox/ipam/migrations/0014_ipaddress_status_add_deprecated.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-01-23 19:10 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0013_prefix_add_is_pool'), - ] - - operations = [ - migrations.AlterField( - model_name='ipaddress', - name='status', - field=models.PositiveSmallIntegerField(choices=[(1, b'Active'), (2, b'Reserved'), (3, b'Deprecated'), (5, b'DHCP')], default=1, verbose_name=b'Status'), - ), - ] diff --git a/netbox/ipam/migrations/0015_global_vlans.py b/netbox/ipam/migrations/0015_global_vlans.py deleted file mode 100644 index 5471e33e277..00000000000 --- a/netbox/ipam/migrations/0015_global_vlans.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.4 on 2017-02-21 18:45 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0014_ipaddress_status_add_deprecated'), - ] - - operations = [ - migrations.AlterField( - model_name='vlan', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='dcim.Site'), - ), - migrations.AlterField( - model_name='vlangroup', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlan_groups', to='dcim.Site'), - ), - ] diff --git a/netbox/ipam/migrations/0016_unicode_literals.py b/netbox/ipam/migrations/0016_unicode_literals.py deleted file mode 100644 index 6807bc55519..00000000000 --- a/netbox/ipam/migrations/0016_unicode_literals.py +++ /dev/null @@ -1,131 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import ipam.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0015_global_vlans'), - ] - - operations = [ - migrations.AlterField( - model_name='aggregate', - name='family', - field=models.PositiveSmallIntegerField(choices=[(4, 'IPv4'), (6, 'IPv6')]), - ), - migrations.AlterField( - model_name='aggregate', - name='rir', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='aggregates', to='ipam.RIR', verbose_name='RIR'), - ), - migrations.AlterField( - model_name='ipaddress', - name='address', - field=ipam.fields.IPAddressField(help_text='IPv4 or IPv6 address (with mask)'), - ), - migrations.AlterField( - model_name='ipaddress', - name='family', - field=models.PositiveSmallIntegerField(choices=[(4, 'IPv4'), (6, 'IPv6')], editable=False), - ), - migrations.AlterField( - model_name='ipaddress', - name='nat_inside', - field=models.OneToOneField(blank=True, help_text='The IP for which this address is the "outside" IP', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='nat_outside', to='ipam.IPAddress', verbose_name='NAT (Inside)'), - ), - migrations.AlterField( - model_name='ipaddress', - name='status', - field=models.PositiveSmallIntegerField(choices=[(1, 'Active'), (2, 'Reserved'), (3, 'Deprecated'), (5, 'DHCP')], default=1, verbose_name='Status'), - ), - migrations.AlterField( - model_name='ipaddress', - name='vrf', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='ip_addresses', to='ipam.VRF', verbose_name='VRF'), - ), - migrations.AlterField( - model_name='prefix', - name='family', - field=models.PositiveSmallIntegerField(choices=[(4, 'IPv4'), (6, 'IPv6')], editable=False), - ), - migrations.AlterField( - model_name='prefix', - name='is_pool', - field=models.BooleanField(default=False, help_text='All IP addresses within this prefix are considered usable', verbose_name='Is a pool'), - ), - migrations.AlterField( - model_name='prefix', - name='prefix', - field=ipam.fields.IPNetworkField(help_text='IPv4 or IPv6 network with mask'), - ), - migrations.AlterField( - model_name='prefix', - name='role', - field=models.ForeignKey(blank=True, help_text='The primary function of this prefix', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prefixes', to='ipam.Role'), - ), - migrations.AlterField( - model_name='prefix', - name='status', - field=models.PositiveSmallIntegerField(choices=[(0, 'Container'), (1, 'Active'), (2, 'Reserved'), (3, 'Deprecated')], default=1, help_text='Operational status of this prefix', verbose_name='Status'), - ), - migrations.AlterField( - model_name='prefix', - name='vlan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.VLAN', verbose_name='VLAN'), - ), - migrations.AlterField( - model_name='prefix', - name='vrf', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.VRF', verbose_name='VRF'), - ), - migrations.AlterField( - model_name='rir', - name='is_private', - field=models.BooleanField(default=False, help_text='IP space managed by this RIR is considered private', verbose_name='Private'), - ), - migrations.AlterField( - model_name='service', - name='device', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='services', to='dcim.Device', verbose_name='device'), - ), - migrations.AlterField( - model_name='service', - name='ipaddresses', - field=models.ManyToManyField(blank=True, related_name='services', to='ipam.IPAddress', verbose_name='IP addresses'), - ), - migrations.AlterField( - model_name='service', - name='port', - field=models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535)], verbose_name='Port number'), - ), - migrations.AlterField( - model_name='service', - name='protocol', - field=models.PositiveSmallIntegerField(choices=[(6, 'TCP'), (17, 'UDP')]), - ), - migrations.AlterField( - model_name='vlan', - name='status', - field=models.PositiveSmallIntegerField(choices=[(1, 'Active'), (2, 'Reserved'), (3, 'Deprecated')], default=1, verbose_name='Status'), - ), - migrations.AlterField( - model_name='vlan', - name='vid', - field=models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)], verbose_name='ID'), - ), - migrations.AlterField( - model_name='vrf', - name='enforce_unique', - field=models.BooleanField(default=True, help_text='Prevent duplicate prefixes/IP addresses within this VRF', verbose_name='Enforce unique space'), - ), - migrations.AlterField( - model_name='vrf', - name='rd', - field=models.CharField(max_length=21, unique=True, verbose_name='Route distinguisher'), - ), - ] diff --git a/netbox/ipam/migrations/0017_ipaddress_roles.py b/netbox/ipam/migrations/0017_ipaddress_roles.py deleted file mode 100644 index 11bf372941c..00000000000 --- a/netbox/ipam/migrations/0017_ipaddress_roles.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.1 on 2017-06-16 19:37 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0016_unicode_literals'), - ] - - operations = [ - migrations.AddField( - model_name='ipaddress', - name='role', - field=models.PositiveSmallIntegerField(blank=True, choices=[(10, 'Loopback'), (20, 'Secondary'), (30, 'Anycast'), (40, 'VIP'), (41, 'VRRP'), (42, 'HSRP'), (43, 'GLBP')], help_text='The functional role of this IP', null=True, verbose_name='Role'), - ), - migrations.AlterField( - model_name='ipaddress', - name='status', - field=models.PositiveSmallIntegerField(choices=[(1, 'Active'), (2, 'Reserved'), (3, 'Deprecated'), (5, 'DHCP')], default=1, help_text='The operational status of this IP', verbose_name='Status'), - ), - ] diff --git a/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py b/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py deleted file mode 100644 index 3d318435400..00000000000 --- a/netbox/ipam/migrations/0018_remove_service_uniqueness_constraint.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.3 on 2017-08-03 19:37 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0017_ipaddress_roles'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='service', - unique_together=set([]), - ), - ] diff --git a/netbox/ipam/migrations/0019_virtualization.py b/netbox/ipam/migrations/0019_virtualization.py deleted file mode 100644 index f8ffbca11b4..00000000000 --- a/netbox/ipam/migrations/0019_virtualization.py +++ /dev/null @@ -1,29 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-31 15:44 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0001_virtualization'), - ('ipam', '0018_remove_service_uniqueness_constraint'), - ] - - operations = [ - migrations.AlterModelOptions( - name='service', - options={'ordering': ['protocol', 'port']}, - ), - migrations.AddField( - model_name='service', - name='virtual_machine', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='services', to='virtualization.VirtualMachine'), - ), - migrations.AlterField( - model_name='service', - name='device', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='services', to='dcim.Device', verbose_name='device'), - ), - ] diff --git a/netbox/ipam/migrations/0020_ipaddress_add_role_carp.py b/netbox/ipam/migrations/0020_ipaddress_add_role_carp.py deleted file mode 100644 index e15c12a3269..00000000000 --- a/netbox/ipam/migrations/0020_ipaddress_add_role_carp.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-10-09 20:02 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0019_virtualization'), - ] - - operations = [ - migrations.AlterField( - model_name='ipaddress', - name='role', - field=models.PositiveSmallIntegerField(blank=True, choices=[(10, 'Loopback'), (20, 'Secondary'), (30, 'Anycast'), (40, 'VIP'), (41, 'VRRP'), (42, 'HSRP'), (43, 'GLBP'), (44, 'CARP')], help_text='The functional role of this IP', null=True, verbose_name='Role'), - ), - ] diff --git a/netbox/ipam/migrations/0021_vrf_ordering.py b/netbox/ipam/migrations/0021_vrf_ordering.py deleted file mode 100644 index 7f74115b630..00000000000 --- a/netbox/ipam/migrations/0021_vrf_ordering.py +++ /dev/null @@ -1,17 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.9 on 2018-02-07 18:37 -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0020_ipaddress_add_role_carp'), - ] - - operations = [ - migrations.AlterModelOptions( - name='vrf', - options={'ordering': ['name', 'rd'], 'verbose_name': 'VRF', 'verbose_name_plural': 'VRFs'}, - ), - ] diff --git a/netbox/ipam/migrations/0022_tags.py b/netbox/ipam/migrations/0022_tags.py deleted file mode 100644 index 642bccc0577..00000000000 --- a/netbox/ipam/migrations/0022_tags.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:04 -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('ipam', '0021_vrf_ordering'), - ] - - operations = [ - migrations.AddField( - model_name='aggregate', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='ipaddress', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='prefix', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='service', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='vlan', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='vrf', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/netbox/ipam/migrations/0023_change_logging.py b/netbox/ipam/migrations/0023_change_logging.py deleted file mode 100644 index afb732d64fb..00000000000 --- a/netbox/ipam/migrations/0023_change_logging.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-13 17:14 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0022_tags'), - ] - - operations = [ - migrations.AddField( - model_name='rir', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='rir', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='role', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='role', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='vlangroup', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='vlangroup', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='aggregate', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='aggregate', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='ipaddress', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='ipaddress', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='prefix', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='prefix', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='service', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='service', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='vlan', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='vlan', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='vrf', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='vrf', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/ipam/migrations/0024_vrf_allow_null_rd.py b/netbox/ipam/migrations/0024_vrf_allow_null_rd.py deleted file mode 100644 index 611644f6c49..00000000000 --- a/netbox/ipam/migrations/0024_vrf_allow_null_rd.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.5 on 2019-01-31 18:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0023_change_logging'), - ] - - operations = [ - migrations.AlterField( - model_name='vrf', - name='rd', - field=models.CharField(blank=True, max_length=21, null=True, unique=True), - ), - ] diff --git a/netbox/ipam/migrations/0025_custom_tag_models.py b/netbox/ipam/migrations/0025_custom_tag_models.py deleted file mode 100644 index 002aefcb2e1..00000000000 --- a/netbox/ipam/migrations/0025_custom_tag_models.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0024_vrf_allow_null_rd'), - ('extras', '0019_tag_taggeditem'), - ] - - operations = [ - migrations.AlterField( - model_name='aggregate', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='ipaddress', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='prefix', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='service', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='vlan', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='vrf', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/ipam/migrations/0026_prefix_ordering_vrf_nulls_first.py b/netbox/ipam/migrations/0026_prefix_ordering_vrf_nulls_first.py deleted file mode 100644 index 17b169b249d..00000000000 --- a/netbox/ipam/migrations/0026_prefix_ordering_vrf_nulls_first.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2 on 2019-04-20 00:57 - -from django.db import migrations -import django.db.models.expressions - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0025_custom_tag_models'), - ] - - operations = [ - migrations.AlterModelOptions( - name='prefix', - options={'ordering': [django.db.models.expressions.OrderBy(django.db.models.expressions.F('vrf'), nulls_first=True), 'family', 'prefix'], 'verbose_name_plural': 'prefixes'}, - ), - ] diff --git a/netbox/ipam/migrations/0027_ipaddress_add_dns_name.py b/netbox/ipam/migrations/0027_ipaddress_add_dns_name.py deleted file mode 100644 index c93034f3df8..00000000000 --- a/netbox/ipam/migrations/0027_ipaddress_add_dns_name.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.2 on 2019-04-22 21:43 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0026_prefix_ordering_vrf_nulls_first'), - ] - - operations = [ - migrations.AddField( - model_name='ipaddress', - name='dns_name', - field=models.CharField(blank=True, max_length=255, validators=[django.core.validators.RegexValidator(code='invalid', message='Only alphanumeric characters, hyphens, periods, and underscores are allowed in DNS names', regex='^[0-9A-Za-z._-]+$')]), - ), - ] diff --git a/netbox/ipam/migrations/0028_3569_prefix_fields.py b/netbox/ipam/migrations/0028_3569_prefix_fields.py deleted file mode 100644 index f0db5f403d3..00000000000 --- a/netbox/ipam/migrations/0028_3569_prefix_fields.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.db import migrations, models - - -PREFIX_STATUS_CHOICES = ( - (0, 'container'), - (1, 'active'), - (2, 'reserved'), - (3, 'deprecated'), -) - - -def prefix_status_to_slug(apps, schema_editor): - Prefix = apps.get_model('ipam', 'Prefix') - for id, slug in PREFIX_STATUS_CHOICES: - Prefix.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('ipam', '0027_ipaddress_add_dns_name'), - ] - - operations = [ - - # Prefix.status - migrations.AlterField( - model_name='prefix', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=prefix_status_to_slug - ), - - ] diff --git a/netbox/ipam/migrations/0029_3569_ipaddress_fields.py b/netbox/ipam/migrations/0029_3569_ipaddress_fields.py deleted file mode 100644 index 195b630db7c..00000000000 --- a/netbox/ipam/migrations/0029_3569_ipaddress_fields.py +++ /dev/null @@ -1,69 +0,0 @@ -from django.db import migrations, models - - -IPADDRESS_STATUS_CHOICES = ( - (1, 'active'), - (2, 'reserved'), - (3, 'deprecated'), - (5, 'dhcp'), -) - -IPADDRESS_ROLE_CHOICES = ( - (10, 'loopback'), - (20, 'secondary'), - (30, 'anycast'), - (40, 'vip'), - (41, 'vrrp'), - (42, 'hsrp'), - (43, 'glbp'), - (44, 'carp'), -) - - -def ipaddress_status_to_slug(apps, schema_editor): - IPAddress = apps.get_model('ipam', 'IPAddress') - for id, slug in IPADDRESS_STATUS_CHOICES: - IPAddress.objects.filter(status=str(id)).update(status=slug) - - -def ipaddress_role_to_slug(apps, schema_editor): - IPAddress = apps.get_model('ipam', 'IPAddress') - for id, slug in IPADDRESS_ROLE_CHOICES: - IPAddress.objects.filter(role=str(id)).update(role=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('ipam', '0028_3569_prefix_fields'), - ] - - operations = [ - - # IPAddress.status - migrations.AlterField( - model_name='ipaddress', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=ipaddress_status_to_slug - ), - - # IPAddress.role - migrations.AlterField( - model_name='ipaddress', - name='role', - field=models.CharField(blank=True, default='', max_length=50), - ), - migrations.RunPython( - code=ipaddress_role_to_slug - ), - migrations.AlterField( - model_name='ipaddress', - name='role', - field=models.CharField(blank=True, max_length=50), - ), - - ] diff --git a/netbox/ipam/migrations/0030_3569_vlan_fields.py b/netbox/ipam/migrations/0030_3569_vlan_fields.py deleted file mode 100644 index ac3bc47ec7b..00000000000 --- a/netbox/ipam/migrations/0030_3569_vlan_fields.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.db import migrations, models - - -VLAN_STATUS_CHOICES = ( - (1, 'active'), - (2, 'reserved'), - (3, 'deprecated'), -) - - -def vlan_status_to_slug(apps, schema_editor): - VLAN = apps.get_model('ipam', 'VLAN') - for id, slug in VLAN_STATUS_CHOICES: - VLAN.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('ipam', '0029_3569_ipaddress_fields'), - ] - - operations = [ - - # VLAN.status - migrations.AlterField( - model_name='vlan', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=vlan_status_to_slug - ), - - ] diff --git a/netbox/ipam/migrations/0031_3569_service_fields.py b/netbox/ipam/migrations/0031_3569_service_fields.py deleted file mode 100644 index f06d9ff8458..00000000000 --- a/netbox/ipam/migrations/0031_3569_service_fields.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import migrations, models - - -SERVICE_PROTOCOL_CHOICES = ( - (6, 'tcp'), - (17, 'udp'), -) - - -def service_protocol_to_slug(apps, schema_editor): - Service = apps.get_model('ipam', 'Service') - for id, slug in SERVICE_PROTOCOL_CHOICES: - Service.objects.filter(protocol=str(id)).update(protocol=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('ipam', '0030_3569_vlan_fields'), - ] - - operations = [ - - # Service.protocol - migrations.AlterField( - model_name='service', - name='protocol', - field=models.CharField(max_length=50), - ), - migrations.RunPython( - code=service_protocol_to_slug - ), - - ] diff --git a/netbox/ipam/migrations/0032_role_description.py b/netbox/ipam/migrations/0032_role_description.py deleted file mode 100644 index 5a6206bbcc9..00000000000 --- a/netbox/ipam/migrations/0032_role_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-10 17:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0031_3569_service_fields'), - ] - - operations = [ - migrations.AddField( - model_name='role', - name='description', - field=models.CharField(blank=True, max_length=100), - ), - ] diff --git a/netbox/ipam/migrations/0033_deterministic_ordering.py b/netbox/ipam/migrations/0033_deterministic_ordering.py deleted file mode 100644 index 4fa5d890cbd..00000000000 --- a/netbox/ipam/migrations/0033_deterministic_ordering.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 18:10 - -from django.db import migrations -import django.db.models.expressions - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0032_role_description'), - ] - - operations = [ - migrations.AlterModelOptions( - name='aggregate', - options={'ordering': ('family', 'prefix', 'pk')}, - ), - migrations.AlterModelOptions( - name='ipaddress', - options={'ordering': ('family', 'address', 'pk'), 'verbose_name': 'IP address', 'verbose_name_plural': 'IP addresses'}, - ), - migrations.AlterModelOptions( - name='prefix', - options={'ordering': (django.db.models.expressions.OrderBy(django.db.models.expressions.F('vrf'), nulls_first=True), 'family', 'prefix', 'pk'), 'verbose_name_plural': 'prefixes'}, - ), - migrations.AlterModelOptions( - name='service', - options={'ordering': ('protocol', 'port', 'pk')}, - ), - migrations.AlterModelOptions( - name='vlan', - options={'ordering': ('site', 'group', 'vid', 'pk'), 'verbose_name': 'VLAN', 'verbose_name_plural': 'VLANs'}, - ), - migrations.AlterModelOptions( - name='vlangroup', - options={'ordering': ('site', 'name', 'pk'), 'verbose_name': 'VLAN group', 'verbose_name_plural': 'VLAN groups'}, - ), - migrations.AlterModelOptions( - name='vrf', - options={'ordering': ('name', 'rd', 'pk'), 'verbose_name': 'VRF', 'verbose_name_plural': 'VRFs'}, - ), - ] diff --git a/netbox/ipam/migrations/0034_fix_ipaddress_status_dhcp.py b/netbox/ipam/migrations/0034_fix_ipaddress_status_dhcp.py deleted file mode 100644 index 8d068df355b..00000000000 --- a/netbox/ipam/migrations/0034_fix_ipaddress_status_dhcp.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.db import migrations - - -def ipaddress_status_dhcp_to_slug(apps, schema_editor): - IPAddress = apps.get_model('ipam', 'IPAddress') - IPAddress.objects.filter(status='5').update(status='dhcp') - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0033_deterministic_ordering'), - ] - - operations = [ - # Fixes a missed integer substitution from #3569; see bug #4027. The original migration has also been fixed. - migrations.RunPython( - code=ipaddress_status_dhcp_to_slug - ), - ] diff --git a/netbox/ipam/migrations/0035_drop_ip_family.py b/netbox/ipam/migrations/0035_drop_ip_family.py deleted file mode 100644 index e0142973f38..00000000000 --- a/netbox/ipam/migrations/0035_drop_ip_family.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 2.2.9 on 2020-02-14 19:36 - -from django.db import migrations -import django.db.models.expressions - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0034_fix_ipaddress_status_dhcp'), - ] - - operations = [ - migrations.AlterModelOptions( - name='aggregate', - options={'ordering': ('prefix', 'pk')}, - ), - migrations.AlterModelOptions( - name='ipaddress', - options={'ordering': ('address', 'pk'), 'verbose_name': 'IP address', 'verbose_name_plural': 'IP addresses'}, - ), - migrations.AlterModelOptions( - name='prefix', - options={'ordering': (django.db.models.expressions.OrderBy(django.db.models.expressions.F('vrf'), nulls_first=True), 'prefix', 'pk'), 'verbose_name_plural': 'prefixes'}, - ), - migrations.RemoveField( - model_name='aggregate', - name='family', - ), - migrations.RemoveField( - model_name='ipaddress', - name='family', - ), - migrations.RemoveField( - model_name='prefix', - name='family', - ), - ] diff --git a/netbox/ipam/migrations/0036_standardize_description.py b/netbox/ipam/migrations/0036_standardize_description.py deleted file mode 100644 index b0da0635aa3..00000000000 --- a/netbox/ipam/migrations/0036_standardize_description.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0035_drop_ip_family'), - ] - - operations = [ - migrations.AddField( - model_name='rir', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='vlangroup', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='aggregate', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='ipaddress', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='prefix', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='role', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='service', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='vlan', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='vrf', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/ipam/migrations/0037_ipaddress_assignment.py b/netbox/ipam/migrations/0037_ipaddress_assignment.py deleted file mode 100644 index 6139d41d657..00000000000 --- a/netbox/ipam/migrations/0037_ipaddress_assignment.py +++ /dev/null @@ -1,40 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -def set_assigned_object_type(apps, schema_editor): - ContentType = apps.get_model('contenttypes', 'ContentType') - IPAddress = apps.get_model('ipam', 'IPAddress') - - device_ct = ContentType.objects.get(app_label='dcim', model='interface').pk - IPAddress.objects.update(assigned_object_type=device_ct) - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('ipam', '0036_standardize_description'), - ] - - operations = [ - migrations.RenameField( - model_name='ipaddress', - old_name='interface', - new_name='assigned_object_id', - ), - migrations.AlterField( - model_name='ipaddress', - name='assigned_object_id', - field=models.PositiveIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='ipaddress', - name='assigned_object_type', - field=models.ForeignKey(blank=True, limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'dcim'), ('model', 'interface')), models.Q(('app_label', 'virtualization'), ('model', 'vminterface')), _connector='OR')), null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.ContentType'), - preserve_default=False, - ), - migrations.RunPython( - code=set_assigned_object_type - ), - ] diff --git a/netbox/ipam/migrations/0038_custom_field_data.py b/netbox/ipam/migrations/0038_custom_field_data.py deleted file mode 100644 index 86d51e9b8eb..00000000000 --- a/netbox/ipam/migrations/0038_custom_field_data.py +++ /dev/null @@ -1,42 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0037_ipaddress_assignment'), - ] - - operations = [ - migrations.AddField( - model_name='aggregate', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='ipaddress', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='prefix', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='service', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='vlan', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='vrf', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - ] diff --git a/netbox/ipam/migrations/0039_service_ports_array.py b/netbox/ipam/migrations/0039_service_ports_array.py deleted file mode 100644 index 63e592c032e..00000000000 --- a/netbox/ipam/migrations/0039_service_ports_array.py +++ /dev/null @@ -1,43 +0,0 @@ -import django.contrib.postgres.fields -import django.core.validators -from django.db import migrations, models - - -def replicate_ports(apps, schema_editor): - Service = apps.get_model('ipam', 'Service') - # TODO: Figure out how to cast IntegerField to an array so we can use .update() - for service in Service.objects.all(): - Service.objects.filter(pk=service.pk).update(ports=[service.port]) - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0038_custom_field_data'), - ] - - operations = [ - migrations.AddField( - model_name='service', - name='ports', - field=django.contrib.postgres.fields.ArrayField( - base_field=models.PositiveIntegerField( - validators=[ - django.core.validators.MinValueValidator(1), - django.core.validators.MaxValueValidator(65535) - ] - ), - default=[], - size=None - ), - preserve_default=False, - ), - - migrations.AlterModelOptions( - name='service', - options={'ordering': ('protocol', 'ports', 'pk')}, - ), - migrations.RunPython( - code=replicate_ports - ), - ] diff --git a/netbox/ipam/migrations/0040_service_drop_port.py b/netbox/ipam/migrations/0040_service_drop_port.py deleted file mode 100644 index d1db82678ee..00000000000 --- a/netbox/ipam/migrations/0040_service_drop_port.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0039_service_ports_array'), - ] - - operations = [ - migrations.RemoveField( - model_name='service', - name='port', - ), - ] diff --git a/netbox/ipam/migrations/0041_routetarget.py b/netbox/ipam/migrations/0041_routetarget.py deleted file mode 100644 index 2c2909279e2..00000000000 --- a/netbox/ipam/migrations/0041_routetarget.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 3.1 on 2020-09-24 15:19 - -import django.core.serializers.json -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0010_custom_field_data'), - ('extras', '0052_customfield_cleanup'), - ('ipam', '0040_service_drop_port'), - ] - - operations = [ - migrations.CreateModel( - name='RouteTarget', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('created', models.DateField(auto_now_add=True, null=True)), - ('last_updated', models.DateTimeField(auto_now=True, null=True)), - ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), - ('name', models.CharField(max_length=21, unique=True)), - ('description', models.CharField(blank=True, max_length=200)), - ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), - ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='route_targets', to='tenancy.tenant')), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.AddField( - model_name='vrf', - name='export_targets', - field=models.ManyToManyField(blank=True, related_name='exporting_vrfs', to='ipam.RouteTarget'), - ), - migrations.AddField( - model_name='vrf', - name='import_targets', - field=models.ManyToManyField(blank=True, related_name='importing_vrfs', to='ipam.RouteTarget'), - ), - ] diff --git a/netbox/ipam/migrations/0042_standardize_name_length.py b/netbox/ipam/migrations/0042_standardize_name_length.py deleted file mode 100644 index 09bfdda6e66..00000000000 --- a/netbox/ipam/migrations/0042_standardize_name_length.py +++ /dev/null @@ -1,53 +0,0 @@ -# Generated by Django 3.1 on 2020-10-15 19:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0041_routetarget'), - ] - - operations = [ - migrations.AlterField( - model_name='rir', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='rir', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='role', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='role', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='service', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='vlangroup', - name='name', - field=models.CharField(max_length=100), - ), - migrations.AlterField( - model_name='vlangroup', - name='slug', - field=models.SlugField(max_length=100), - ), - migrations.AlterField( - model_name='vrf', - name='name', - field=models.CharField(max_length=100), - ), - ] diff --git a/netbox/ipam/migrations/0043_add_tenancy_to_aggregates.py b/netbox/ipam/migrations/0043_add_tenancy_to_aggregates.py deleted file mode 100644 index a5ec9013b00..00000000000 --- a/netbox/ipam/migrations/0043_add_tenancy_to_aggregates.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.1 on 2020-10-16 01:24 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0011_standardize_name_length'), - ('ipam', '0042_standardize_name_length'), - ] - - operations = [ - migrations.AddField( - model_name='aggregate', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='aggregates', to='tenancy.tenant'), - ), - ] diff --git a/netbox/ipam/migrations/0044_standardize_models.py b/netbox/ipam/migrations/0044_standardize_models.py deleted file mode 100644 index 2762c9973cb..00000000000 --- a/netbox/ipam/migrations/0044_standardize_models.py +++ /dev/null @@ -1,77 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0043_add_tenancy_to_aggregates'), - ] - - operations = [ - migrations.AddField( - model_name='rir', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='role', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='vlangroup', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='aggregate', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='ipaddress', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='prefix', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='rir', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='role', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='routetarget', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='service', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='vlan', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='vlangroup', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='vrf', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] diff --git a/netbox/ipam/migrations/0045_vlangroup_scope.py b/netbox/ipam/migrations/0045_vlangroup_scope.py deleted file mode 100644 index c1f3c013f50..00000000000 --- a/netbox/ipam/migrations/0045_vlangroup_scope.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('ipam', '0044_standardize_models'), - ] - - operations = [ - migrations.RenameField( - model_name='vlangroup', - old_name='site', - new_name='scope_id', - ), - migrations.AlterField( - model_name='vlangroup', - name='scope_id', - field=models.PositiveBigIntegerField(blank=True, null=True), - ), - migrations.AddField( - model_name='vlangroup', - name='scope_type', - field=models.ForeignKey(blank=True, limit_choices_to=models.Q(model__in=('region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster')), null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype'), - ), - migrations.AlterModelOptions( - name='vlangroup', - options={'ordering': ('name', 'pk'), 'verbose_name': 'VLAN group', 'verbose_name_plural': 'VLAN groups'}, - ), - migrations.AlterUniqueTogether( - name='vlangroup', - unique_together={('scope_type', 'scope_id', 'name'), ('scope_type', 'scope_id', 'slug')}, - ), - ] diff --git a/netbox/ipam/migrations/0046_set_vlangroup_scope_types.py b/netbox/ipam/migrations/0046_set_vlangroup_scope_types.py deleted file mode 100644 index ad636e47f47..00000000000 --- a/netbox/ipam/migrations/0046_set_vlangroup_scope_types.py +++ /dev/null @@ -1,27 +0,0 @@ -from django.db import migrations - - -def set_scope_types(apps, schema_editor): - """ - Set 'site' as the scope type for all VLANGroups with a scope ID defined. - """ - ContentType = apps.get_model('contenttypes', 'ContentType') - Site = apps.get_model('dcim', 'Site') - VLANGroup = apps.get_model('ipam', 'VLANGroup') - - VLANGroup.objects.filter(scope_id__isnull=False).update( - scope_type=ContentType.objects.get_for_model(Site) - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0045_vlangroup_scope'), - ] - - operations = [ - migrations.RunPython( - code=set_scope_types - ), - ] diff --git a/netbox/tenancy/migrations/0001_initial.py b/netbox/tenancy/migrations/0001_initial.py deleted file mode 100644 index fcad19413db..00000000000 --- a/netbox/tenancy/migrations/0001_initial.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-07-26 21:58 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Tenant', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=30, unique=True)), - ('slug', models.SlugField(unique=True)), - ('description', models.CharField(blank=True, help_text=b'Long-form name (optional)', max_length=100)), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['group', 'name'], - }, - ), - migrations.CreateModel( - name='TenantGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.AddField( - model_name='tenant', - name='group', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='tenants', to='tenancy.TenantGroup'), - ), - ] diff --git a/netbox/tenancy/migrations/0002_tenant_group_optional.py b/netbox/tenancy/migrations/0002_tenant_group_optional.py deleted file mode 100644 index 3d91b76ecd9..00000000000 --- a/netbox/tenancy/migrations/0002_tenant_group_optional.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.8 on 2016-08-02 19:54 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='tenant', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tenants', to='tenancy.TenantGroup'), - ), - ] diff --git a/netbox/tenancy/migrations/0003_unicode_literals.py b/netbox/tenancy/migrations/0003_unicode_literals.py deleted file mode 100644 index 24cc7f969f1..00000000000 --- a/netbox/tenancy/migrations/0003_unicode_literals.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0002_tenant_group_optional'), - ] - - operations = [ - migrations.AlterField( - model_name='tenant', - name='description', - field=models.CharField(blank=True, help_text='Long-form name (optional)', max_length=100), - ), - ] diff --git a/netbox/tenancy/migrations/0004_tags.py b/netbox/tenancy/migrations/0004_tags.py deleted file mode 100644 index dbea49cd0ff..00000000000 --- a/netbox/tenancy/migrations/0004_tags.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:04 -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('tenancy', '0003_unicode_literals'), - ] - - operations = [ - migrations.AddField( - model_name='tenant', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/netbox/tenancy/migrations/0005_change_logging.py b/netbox/tenancy/migrations/0005_change_logging.py deleted file mode 100644 index eb097936672..00000000000 --- a/netbox/tenancy/migrations/0005_change_logging.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-13 17:14 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0004_tags'), - ] - - operations = [ - migrations.AddField( - model_name='tenantgroup', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='tenantgroup', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='tenant', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='tenant', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/tenancy/migrations/0006_custom_tag_models.py b/netbox/tenancy/migrations/0006_custom_tag_models.py deleted file mode 100644 index dd39ff471c0..00000000000 --- a/netbox/tenancy/migrations/0006_custom_tag_models.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0005_change_logging'), - ('extras', '0019_tag_taggeditem'), - ] - - operations = [ - migrations.AlterField( - model_name='tenant', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/tenancy/migrations/0007_nested_tenantgroups.py b/netbox/tenancy/migrations/0007_nested_tenantgroups.py deleted file mode 100644 index 4278b34090b..00000000000 --- a/netbox/tenancy/migrations/0007_nested_tenantgroups.py +++ /dev/null @@ -1,43 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion -import mptt.fields - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0006_custom_tag_models'), - ] - - operations = [ - migrations.AddField( - model_name='tenantgroup', - name='parent', - field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='tenancy.TenantGroup'), - ), - migrations.AddField( - model_name='tenantgroup', - name='level', - field=models.PositiveIntegerField(default=0, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='tenantgroup', - name='lft', - field=models.PositiveIntegerField(default=1, editable=False), - preserve_default=False, - ), - migrations.AddField( - model_name='tenantgroup', - name='rght', - field=models.PositiveIntegerField(default=2, editable=False), - preserve_default=False, - ), - # tree_id will be set to a valid value during the following migration (which needs to be a separate migration) - migrations.AddField( - model_name='tenantgroup', - name='tree_id', - field=models.PositiveIntegerField(db_index=True, default=0, editable=False), - preserve_default=False, - ), - ] diff --git a/netbox/tenancy/migrations/0008_nested_tenantgroups_rebuild.py b/netbox/tenancy/migrations/0008_nested_tenantgroups_rebuild.py deleted file mode 100644 index e31a75d364b..00000000000 --- a/netbox/tenancy/migrations/0008_nested_tenantgroups_rebuild.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import migrations - - -def rebuild_mptt(apps, schema_editor): - TenantGroup = apps.get_model('tenancy', 'TenantGroup') - for i, tenantgroup in enumerate(TenantGroup.objects.all(), start=1): - TenantGroup.objects.filter(pk=tenantgroup.pk).update(tree_id=i) - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0007_nested_tenantgroups'), - ] - - operations = [ - migrations.RunPython( - code=rebuild_mptt, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/tenancy/migrations/0009_standardize_description.py b/netbox/tenancy/migrations/0009_standardize_description.py deleted file mode 100644 index 0f65ced048d..00000000000 --- a/netbox/tenancy/migrations/0009_standardize_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0008_nested_tenantgroups_rebuild'), - ] - - operations = [ - migrations.AddField( - model_name='tenantgroup', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AlterField( - model_name='tenant', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/tenancy/migrations/0010_custom_field_data.py b/netbox/tenancy/migrations/0010_custom_field_data.py deleted file mode 100644 index ec05be0ff8c..00000000000 --- a/netbox/tenancy/migrations/0010_custom_field_data.py +++ /dev/null @@ -1,17 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0009_standardize_description'), - ] - - operations = [ - migrations.AddField( - model_name='tenant', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - ] diff --git a/netbox/tenancy/migrations/0011_standardize_name_length.py b/netbox/tenancy/migrations/0011_standardize_name_length.py deleted file mode 100644 index 1e29a0f5e74..00000000000 --- a/netbox/tenancy/migrations/0011_standardize_name_length.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.1 on 2020-10-15 19:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0010_custom_field_data'), - ] - - operations = [ - migrations.AlterField( - model_name='tenant', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='tenant', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='tenantgroup', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='tenantgroup', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - ] diff --git a/netbox/tenancy/migrations/0012_standardize_models.py b/netbox/tenancy/migrations/0012_standardize_models.py deleted file mode 100644 index 7ce55cf42ba..00000000000 --- a/netbox/tenancy/migrations/0012_standardize_models.py +++ /dev/null @@ -1,27 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0011_standardize_name_length'), - ] - - operations = [ - migrations.AddField( - model_name='tenantgroup', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='tenant', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='tenantgroup', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] diff --git a/netbox/users/migrations/0001_api_tokens.py b/netbox/users/migrations/0001_api_tokens.py deleted file mode 100644 index 3e2ea274e21..00000000000 --- a/netbox/users/migrations/0001_api_tokens.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.6 on 2017-03-08 15:32 -from django.conf import settings -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name='Token', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateTimeField(auto_now_add=True)), - ('expires', models.DateTimeField(blank=True, null=True)), - ('key', models.CharField(max_length=40, unique=True, validators=[django.core.validators.MinLengthValidator(40)])), - ('write_enabled', models.BooleanField(default=True, help_text=b'Permit create/update/delete operations using this key')), - ('description', models.CharField(blank=True, max_length=100)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tokens', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'default_permissions': [], - }, - ), - ] diff --git a/netbox/users/migrations/0002_unicode_literals.py b/netbox/users/migrations/0002_unicode_literals.py deleted file mode 100644 index d0cf75fd8a9..00000000000 --- a/netbox/users/migrations/0002_unicode_literals.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11 on 2017-05-24 15:34 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0001_api_tokens'), - ] - - operations = [ - migrations.AlterField( - model_name='token', - name='write_enabled', - field=models.BooleanField(default=True, help_text='Permit create/update/delete operations using this key'), - ), - ] diff --git a/netbox/users/migrations/0003_token_permissions.py b/netbox/users/migrations/0003_token_permissions.py deleted file mode 100644 index 163f3d5b90a..00000000000 --- a/netbox/users/migrations/0003_token_permissions.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.0.8 on 2018-10-05 14:32 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0002_unicode_literals'), - ] - - operations = [ - migrations.AlterModelOptions( - name='token', - options={}, - ), - ] diff --git a/netbox/users/migrations/0004_standardize_description.py b/netbox/users/migrations/0004_standardize_description.py deleted file mode 100644 index b1f45666ff5..00000000000 --- a/netbox/users/migrations/0004_standardize_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0003_token_permissions'), - ] - - operations = [ - migrations.AlterField( - model_name='token', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/users/migrations/0005_userconfig.py b/netbox/users/migrations/0005_userconfig.py deleted file mode 100644 index f8dc64fc36d..00000000000 --- a/netbox/users/migrations/0005_userconfig.py +++ /dev/null @@ -1,28 +0,0 @@ -from django.conf import settings -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('users', '0004_standardize_description'), - ] - - operations = [ - migrations.CreateModel( - name='UserConfig', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('data', django.contrib.postgres.fields.jsonb.JSONField(default=dict)), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='config', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['user'], - 'verbose_name': 'User Preferences', - 'verbose_name_plural': 'User Preferences' - }, - ), - ] diff --git a/netbox/users/migrations/0006_create_userconfigs.py b/netbox/users/migrations/0006_create_userconfigs.py deleted file mode 100644 index 397bfdb2446..00000000000 --- a/netbox/users/migrations/0006_create_userconfigs.py +++ /dev/null @@ -1,27 +0,0 @@ -from django.contrib.auth import get_user_model -from django.db import migrations - - -def create_userconfigs(apps, schema_editor): - """ - Create an empty UserConfig instance for each existing User. - """ - User = get_user_model() - UserConfig = apps.get_model('users', 'UserConfig') - UserConfig.objects.bulk_create( - [UserConfig(user_id=user.pk) for user in User.objects.all()] - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0005_userconfig'), - ] - - operations = [ - migrations.RunPython( - code=create_userconfigs, - reverse_code=migrations.RunPython.noop - ), - ] diff --git a/netbox/users/migrations/0007_proxy_group_user.py b/netbox/users/migrations/0007_proxy_group_user.py deleted file mode 100644 index 2aec9e425eb..00000000000 --- a/netbox/users/migrations/0007_proxy_group_user.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 3.0.6 on 2020-05-29 14:30 - -import django.contrib.auth.models -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('auth', '0011_update_proxy_permissions'), - ('users', '0006_create_userconfigs'), - ] - - operations = [ - migrations.CreateModel( - name='AdminGroup', - fields=[ - ], - options={ - 'proxy': True, - 'indexes': [], - 'constraints': [], - 'verbose_name': 'Group', - }, - bases=('auth.group',), - managers=[ - ('objects', django.contrib.auth.models.GroupManager()), - ], - ), - migrations.CreateModel( - name='AdminUser', - fields=[ - ], - options={ - 'proxy': True, - 'indexes': [], - 'constraints': [], - 'verbose_name': 'User', - }, - bases=('auth.user',), - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ], - ), - ] diff --git a/netbox/users/migrations/0008_objectpermission.py b/netbox/users/migrations/0008_objectpermission.py deleted file mode 100644 index 8ed15b6a1cc..00000000000 --- a/netbox/users/migrations/0008_objectpermission.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.conf import settings -import django.contrib.postgres.fields -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contenttypes', '0002_remove_content_type_name'), - ('auth', '0011_update_proxy_permissions'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('users', '0007_proxy_group_user'), - ] - - operations = [ - migrations.CreateModel( - name='ObjectPermission', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=100)), - ('description', models.CharField(blank=True, max_length=200)), - ('enabled', models.BooleanField(default=True)), - ('constraints', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)), - ('actions', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), size=None)), - ('object_types', models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(_negated=True, app_label__in=['admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']), models.Q(('app_label', 'auth'), ('model__in', ['group', 'user'])), models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token'])), _connector='OR')), related_name='object_permissions', to='contenttypes.ContentType')), - ('groups', models.ManyToManyField(blank=True, related_name='object_permissions', to='auth.Group')), - ('users', models.ManyToManyField(blank=True, related_name='object_permissions', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'ordering': ['name'], - 'verbose_name': 'permission', - }, - ), - ] diff --git a/netbox/users/migrations/0009_replicate_permissions.py b/netbox/users/migrations/0009_replicate_permissions.py deleted file mode 100644 index c46f8635e51..00000000000 --- a/netbox/users/migrations/0009_replicate_permissions.py +++ /dev/null @@ -1,54 +0,0 @@ -from django.db import migrations -from django.db.models import Q - -ACTIONS = ['view', 'add', 'change', 'delete'] - - -def replicate_permissions(apps, schema_editor): - """ - Replicate all Permission assignments as ObjectPermissions. - """ - Permission = apps.get_model('auth', 'Permission') - ObjectPermission = apps.get_model('users', 'ObjectPermission') - - # TODO: Optimize this iteration so that ObjectPermissions with identical sets of users and groups - # are combined into a single ObjectPermission instance. - for perm in Permission.objects.select_related('content_type'): - if perm.codename.split('_')[0] in ACTIONS: - action = perm.codename.split('_')[0] - elif perm.codename == 'activate_userkey': - action = 'change' - elif perm.codename == 'run_script': - action = 'run' - else: - action = perm.codename - - if perm.group_set.exists() or perm.user_set.exists(): - - # Handle replication of SecretRole user/group assignments for Secrets - obj_perm = ObjectPermission( - # Copy name from original Permission object - name=f'{perm.content_type.app_label}.{perm.codename}'[:100], - actions=[action] - ) - obj_perm.save() - obj_perm.object_types.add(perm.content_type) - - if perm.group_set.exists(): - obj_perm.groups.add(*list(perm.group_set.all())) - if perm.user_set.exists(): - obj_perm.users.add(*list(perm.user_set.all())) - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0008_objectpermission'), - ] - - operations = [ - migrations.RunPython( - code=replicate_permissions, - reverse_code=migrations.RunPython.noop - ) - ] diff --git a/netbox/users/migrations/0010_update_jsonfield.py b/netbox/users/migrations/0010_update_jsonfield.py deleted file mode 100644 index 1935e58b7cf..00000000000 --- a/netbox/users/migrations/0010_update_jsonfield.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 16:01 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0009_replicate_permissions'), - ] - - operations = [ - migrations.AlterField( - model_name='objectpermission', - name='constraints', - field=models.JSONField(blank=True, null=True), - ), - migrations.AlterField( - model_name='userconfig', - name='data', - field=models.JSONField(default=dict), - ), - ] diff --git a/netbox/users/migrations/0011_standardize_models.py b/netbox/users/migrations/0011_standardize_models.py deleted file mode 100644 index 08d1103ed40..00000000000 --- a/netbox/users/migrations/0011_standardize_models.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0010_update_jsonfield'), - ] - - operations = [ - migrations.AlterField( - model_name='objectpermission', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='token', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - ] diff --git a/netbox/virtualization/migrations/0001_virtualization.py b/netbox/virtualization/migrations/0001_virtualization.py deleted file mode 100644 index f34bee36cb2..00000000000 --- a/netbox/virtualization/migrations/0001_virtualization.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-08-31 14:15 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('ipam', '0018_remove_service_uniqueness_constraint'), - ('dcim', '0043_device_component_name_lengths'), - ('tenancy', '0003_unicode_literals'), - ] - - operations = [ - migrations.CreateModel( - name='Cluster', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=100, unique=True)), - ('comments', models.TextField(blank=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='ClusterGroup', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='ClusterType', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, unique=True)), - ('slug', models.SlugField(unique=True)), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.CreateModel( - name='VirtualMachine', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('created', models.DateField(auto_now_add=True)), - ('last_updated', models.DateTimeField(auto_now=True)), - ('name', models.CharField(max_length=64, unique=True)), - ('vcpus', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='vCPUs')), - ('memory', models.PositiveIntegerField(blank=True, null=True, verbose_name='Memory (MB)')), - ('disk', models.PositiveIntegerField(blank=True, null=True, verbose_name='Disk (GB)')), - ('comments', models.TextField(blank=True)), - ('cluster', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='virtualization.Cluster')), - ('platform', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='virtual_machines', to='dcim.Platform')), - ('primary_ip4', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.IPAddress', verbose_name='Primary IPv4')), - ('primary_ip6', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.IPAddress', verbose_name='Primary IPv6')), - ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='tenancy.Tenant')), - ], - options={ - 'ordering': ['name'], - }, - ), - migrations.AddField( - model_name='cluster', - name='group', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='virtualization.ClusterGroup'), - ), - migrations.AddField( - model_name='cluster', - name='type', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='virtualization.ClusterType'), - ), - ] diff --git a/netbox/virtualization/migrations/0002_virtualmachine_add_status.py b/netbox/virtualization/migrations/0002_virtualmachine_add_status.py deleted file mode 100644 index f9f5c72bdac..00000000000 --- a/netbox/virtualization/migrations/0002_virtualmachine_add_status.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-14 17:49 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0001_virtualization'), - ] - - operations = [ - migrations.AddField( - model_name='virtualmachine', - name='status', - field=models.PositiveSmallIntegerField(choices=[[1, 'Active'], [0, 'Offline'], [3, 'Staged']], default=1, verbose_name='Status'), - ), - ] diff --git a/netbox/virtualization/migrations/0003_cluster_add_site.py b/netbox/virtualization/migrations/0003_cluster_add_site.py deleted file mode 100644 index bdcce88bc9d..00000000000 --- a/netbox/virtualization/migrations/0003_cluster_add_site.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-22 16:30 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0044_virtualization'), - ('virtualization', '0002_virtualmachine_add_status'), - ] - - operations = [ - migrations.AddField( - model_name='cluster', - name='site', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='dcim.Site'), - ), - ] diff --git a/netbox/virtualization/migrations/0004_virtualmachine_add_role.py b/netbox/virtualization/migrations/0004_virtualmachine_add_role.py deleted file mode 100644 index db416fc5da5..00000000000 --- a/netbox/virtualization/migrations/0004_virtualmachine_add_role.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.4 on 2017-09-29 14:32 -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0044_virtualization'), - ('virtualization', '0003_cluster_add_site'), - ] - - operations = [ - migrations.AddField( - model_name='virtualmachine', - name='role', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.DeviceRole'), - ), - ] diff --git a/netbox/virtualization/migrations/0005_django2.py b/netbox/virtualization/migrations/0005_django2.py deleted file mode 100644 index e79a5535007..00000000000 --- a/netbox/virtualization/migrations/0005_django2.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.3 on 2018-03-30 14:18 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0004_virtualmachine_add_role'), - ] - - operations = [ - migrations.AlterField( - model_name='virtualmachine', - name='role', - field=models.ForeignKey(blank=True, limit_choices_to={'vm_role': True}, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.DeviceRole'), - ), - ] diff --git a/netbox/virtualization/migrations/0006_tags.py b/netbox/virtualization/migrations/0006_tags.py deleted file mode 100644 index 5152086de1a..00000000000 --- a/netbox/virtualization/migrations/0006_tags.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-05-22 19:04 -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('taggit', '0002_auto_20150616_2121'), - ('virtualization', '0005_django2'), - ] - - operations = [ - migrations.AddField( - model_name='cluster', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - migrations.AddField( - model_name='virtualmachine', - name='tags', - field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'), - ), - ] diff --git a/netbox/virtualization/migrations/0007_change_logging.py b/netbox/virtualization/migrations/0007_change_logging.py deleted file mode 100644 index 4c2d342e577..00000000000 --- a/netbox/virtualization/migrations/0007_change_logging.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.12 on 2018-06-13 17:14 -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0006_tags'), - ] - - operations = [ - migrations.AddField( - model_name='clustergroup', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='clustergroup', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='clustertype', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='clustertype', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='cluster', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='cluster', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AlterField( - model_name='virtualmachine', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AlterField( - model_name='virtualmachine', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - ] diff --git a/netbox/virtualization/migrations/0008_virtualmachine_local_context_data.py b/netbox/virtualization/migrations/0008_virtualmachine_local_context_data.py deleted file mode 100644 index ce8105d957c..00000000000 --- a/netbox/virtualization/migrations/0008_virtualmachine_local_context_data.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.8 on 2018-09-16 02:01 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0007_change_logging'), - ] - - operations = [ - migrations.AddField( - model_name='virtualmachine', - name='local_context_data', - field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True), - ), - ] diff --git a/netbox/virtualization/migrations/0009_custom_tag_models.py b/netbox/virtualization/migrations/0009_custom_tag_models.py deleted file mode 100644 index 04d589beef2..00000000000 --- a/netbox/virtualization/migrations/0009_custom_tag_models.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 2.1.4 on 2019-02-20 06:56 - -from django.db import migrations -import taggit.managers - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0008_virtualmachine_local_context_data'), - ('extras', '0019_tag_taggeditem'), - ] - - operations = [ - migrations.AlterField( - model_name='cluster', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - migrations.AlterField( - model_name='virtualmachine', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/virtualization/migrations/0010_cluster_add_tenant.py b/netbox/virtualization/migrations/0010_cluster_add_tenant.py deleted file mode 100644 index 425b3263594..00000000000 --- a/netbox/virtualization/migrations/0010_cluster_add_tenant.py +++ /dev/null @@ -1,18 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0001_initial'), - ('virtualization', '0009_custom_tag_models'), - ] - - operations = [ - migrations.AddField( - model_name='cluster', - name='tenant', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='tenancy.Tenant'), - ), - ] diff --git a/netbox/virtualization/migrations/0011_3569_virtualmachine_fields.py b/netbox/virtualization/migrations/0011_3569_virtualmachine_fields.py deleted file mode 100644 index 8699750755b..00000000000 --- a/netbox/virtualization/migrations/0011_3569_virtualmachine_fields.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.db import migrations, models - - -VIRTUALMACHINE_STATUS_CHOICES = ( - (0, 'offline'), - (1, 'active'), - (3, 'staged'), -) - - -def virtualmachine_status_to_slug(apps, schema_editor): - VirtualMachine = apps.get_model('virtualization', 'VirtualMachine') - for id, slug in VIRTUALMACHINE_STATUS_CHOICES: - VirtualMachine.objects.filter(status=str(id)).update(status=slug) - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ('virtualization', '0010_cluster_add_tenant'), - ] - - operations = [ - - # VirtualMachine.status - migrations.AlterField( - model_name='virtualmachine', - name='status', - field=models.CharField(default='active', max_length=50), - ), - migrations.RunPython( - code=virtualmachine_status_to_slug - ), - - ] diff --git a/netbox/virtualization/migrations/0012_vm_name_nonunique.py b/netbox/virtualization/migrations/0012_vm_name_nonunique.py deleted file mode 100644 index c10b3e5e5c6..00000000000 --- a/netbox/virtualization/migrations/0012_vm_name_nonunique.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.6 on 2019-12-09 16:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('tenancy', '0006_custom_tag_models'), - ('virtualization', '0011_3569_virtualmachine_fields'), - ] - - operations = [ - migrations.AlterField( - model_name='virtualmachine', - name='name', - field=models.CharField(max_length=64), - ), - migrations.AlterUniqueTogether( - name='virtualmachine', - unique_together={('cluster', 'tenant', 'name')}, - ), - ] diff --git a/netbox/virtualization/migrations/0013_deterministic_ordering.py b/netbox/virtualization/migrations/0013_deterministic_ordering.py deleted file mode 100644 index b5b0451a17e..00000000000 --- a/netbox/virtualization/migrations/0013_deterministic_ordering.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.2.8 on 2020-01-15 18:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0012_vm_name_nonunique'), - ] - - operations = [ - migrations.AlterModelOptions( - name='virtualmachine', - options={'ordering': ('name', 'pk')}, - ), - ] diff --git a/netbox/virtualization/migrations/0014_standardize_description.py b/netbox/virtualization/migrations/0014_standardize_description.py deleted file mode 100644 index e02655bb744..00000000000 --- a/netbox/virtualization/migrations/0014_standardize_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.0.3 on 2020-03-13 20:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0013_deterministic_ordering'), - ] - - operations = [ - migrations.AddField( - model_name='clustergroup', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - migrations.AddField( - model_name='clustertype', - name='description', - field=models.CharField(blank=True, max_length=200), - ), - ] diff --git a/netbox/virtualization/migrations/0015_vminterface.py b/netbox/virtualization/migrations/0015_vminterface.py deleted file mode 100644 index 6c520722666..00000000000 --- a/netbox/virtualization/migrations/0015_vminterface.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 3.0.6 on 2020-06-18 20:21 - -import dcim.fields -import django.core.validators -from django.db import migrations, models -import django.db.models.deletion -import taggit.managers -import utilities.fields -import utilities.ordering -import utilities.query_functions - - -class Migration(migrations.Migration): - - dependencies = [ - ('ipam', '0036_standardize_description'), - ('extras', '0042_customfield_manager'), - ('virtualization', '0014_standardize_description'), - ] - - operations = [ - migrations.CreateModel( - name='VMInterface', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), - ('name', models.CharField(max_length=64)), - ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface)), - ('enabled', models.BooleanField(default=True)), - ('mac_address', dcim.fields.MACAddressField(blank=True, null=True)), - ('mtu', models.PositiveIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65536)])), - ('mode', models.CharField(blank=True, max_length=50)), - ('description', models.CharField(blank=True, max_length=200)), - ('tagged_vlans', models.ManyToManyField(blank=True, related_name='vminterfaces_as_tagged', to='ipam.VLAN')), - ('tags', taggit.managers.TaggableManager(related_name='vminterface', through='extras.TaggedItem', to='extras.Tag')), - ('untagged_vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vminterfaces_as_untagged', to='ipam.VLAN')), - ('virtual_machine', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='virtualization.VirtualMachine')), - ], - options={ - 'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')), - 'unique_together': {('virtual_machine', 'name')}, - 'verbose_name': 'interface', - }, - ), - ] diff --git a/netbox/virtualization/migrations/0016_replicate_interfaces.py b/netbox/virtualization/migrations/0016_replicate_interfaces.py deleted file mode 100644 index 585f5b80ce3..00000000000 --- a/netbox/virtualization/migrations/0016_replicate_interfaces.py +++ /dev/null @@ -1,95 +0,0 @@ -import sys - -from django.db import migrations - - -def replicate_interfaces(apps, schema_editor): - show_output = 'test' not in sys.argv - - ContentType = apps.get_model('contenttypes', 'ContentType') - TaggedItem = apps.get_model('extras', 'TaggedItem') - Interface = apps.get_model('dcim', 'Interface') - IPAddress = apps.get_model('ipam', 'IPAddress') - VMInterface = apps.get_model('virtualization', 'VMInterface') - - interface_ct = ContentType.objects.get_for_model(Interface) - vminterface_ct = ContentType.objects.get_for_model(VMInterface) - - # Replicate dcim.Interface instances assigned to VirtualMachines - original_interfaces = Interface.objects.prefetch_related('tagged_vlans').filter( - virtual_machine__isnull=False - ) - interfaces_count = len(original_interfaces) - if show_output: - print(f"\n Replicating {interfaces_count} VM interfaces...", flush=True) - new_interfaces = [ - VMInterface( - virtual_machine=interface.virtual_machine, - name=interface.name, - enabled=interface.enabled, - mac_address=interface.mac_address, - mtu=interface.mtu, - mode=interface.mode, - description=interface.description, - untagged_vlan=interface.untagged_vlan, - ) for interface in original_interfaces - ] - VMInterface.objects.bulk_create(new_interfaces, batch_size=1000) - - # Pre-fetch the PKs of interfaces with tags/IP addresses - interfaces_with_tags = TaggedItem.objects.filter( - content_type=interface_ct - ).values_list('object_id', flat=True) - interfaces_with_ips = IPAddress.objects.filter( - assigned_object_id__isnull=False - ).values_list('assigned_object_id', flat=True) - - if show_output: - print(f" Replicating assigned objects...", flush=True) - for i, interface in enumerate(original_interfaces): - vminterface = new_interfaces[i] - - # Copy tagged VLANs - if interface.tagged_vlans.exists(): - vminterface.tagged_vlans.set(interface.tagged_vlans.all()) - - # Reassign tags to the new instance - if interface.pk in interfaces_with_tags: - TaggedItem.objects.filter(content_type=interface_ct, object_id=interface.pk).update( - content_type=vminterface_ct, - object_id=vminterface.pk - ) - - # Update any assigned IPAddresses - if interface.pk in interfaces_with_ips: - IPAddress.objects.filter(assigned_object_type=interface_ct, assigned_object_id=interface.pk).update( - assigned_object_type=vminterface_ct, - assigned_object_id=vminterface.pk - ) - - # Progress counter - if show_output and not i % 1000: - percentage = int(i / interfaces_count * 100) - print(f" {i}/{interfaces_count} ({percentage}%)", flush=True) - - # Verify that all interfaces have been replicated - replicated_count = VMInterface.objects.count() - assert replicated_count == original_interfaces.count(), "Replicated interfaces count does not match original count!" - - # Delete all interfaces not assigned to a Device - Interface.objects.filter(device__isnull=True).delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('dcim', '0082_3569_interface_fields'), - ('ipam', '0037_ipaddress_assignment'), - ('virtualization', '0015_vminterface'), - ] - - operations = [ - migrations.RunPython( - code=replicate_interfaces - ), - ] diff --git a/netbox/virtualization/migrations/0017_update_jsonfield.py b/netbox/virtualization/migrations/0017_update_jsonfield.py deleted file mode 100644 index 2a23deef6f8..00000000000 --- a/netbox/virtualization/migrations/0017_update_jsonfield.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1b1 on 2020-07-16 16:01 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0016_replicate_interfaces'), - ] - - operations = [ - migrations.AlterField( - model_name='virtualmachine', - name='local_context_data', - field=models.JSONField(blank=True, null=True), - ), - ] diff --git a/netbox/virtualization/migrations/0018_custom_field_data.py b/netbox/virtualization/migrations/0018_custom_field_data.py deleted file mode 100644 index 9a120406aef..00000000000 --- a/netbox/virtualization/migrations/0018_custom_field_data.py +++ /dev/null @@ -1,22 +0,0 @@ -import django.core.serializers.json -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0017_update_jsonfield'), - ] - - operations = [ - migrations.AddField( - model_name='cluster', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='virtualmachine', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - ] diff --git a/netbox/virtualization/migrations/0019_standardize_name_length.py b/netbox/virtualization/migrations/0019_standardize_name_length.py deleted file mode 100644 index d6820640d06..00000000000 --- a/netbox/virtualization/migrations/0019_standardize_name_length.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 3.1 on 2020-10-15 19:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0018_custom_field_data'), - ] - - operations = [ - migrations.AlterField( - model_name='clustergroup', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='clustergroup', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='clustertype', - name='name', - field=models.CharField(max_length=100, unique=True), - ), - migrations.AlterField( - model_name='clustertype', - name='slug', - field=models.SlugField(max_length=100, unique=True), - ), - ] diff --git a/netbox/virtualization/migrations/0020_standardize_models.py b/netbox/virtualization/migrations/0020_standardize_models.py deleted file mode 100644 index bea551a721b..00000000000 --- a/netbox/virtualization/migrations/0020_standardize_models.py +++ /dev/null @@ -1,68 +0,0 @@ -import django.core.serializers.json -import taggit.managers -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0019_standardize_name_length'), - ] - - operations = [ - migrations.AddField( - model_name='clustergroup', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AddField( - model_name='clustertype', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='cluster', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='clustergroup', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='clustertype', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='virtualmachine', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AlterField( - model_name='vminterface', - name='id', - field=models.BigAutoField(primary_key=True, serialize=False), - ), - migrations.AddField( - model_name='vminterface', - name='created', - field=models.DateField(auto_now_add=True, null=True), - ), - migrations.AddField( - model_name='vminterface', - name='last_updated', - field=models.DateTimeField(auto_now=True, null=True), - ), - migrations.AddField( - model_name='vminterface', - name='custom_field_data', - field=models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder), - ), - migrations.AlterField( - model_name='vminterface', - name='tags', - field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), - ), - ] diff --git a/netbox/virtualization/migrations/0021_virtualmachine_vcpus_decimal.py b/netbox/virtualization/migrations/0021_virtualmachine_vcpus_decimal.py deleted file mode 100644 index 0d82fcb4370..00000000000 --- a/netbox/virtualization/migrations/0021_virtualmachine_vcpus_decimal.py +++ /dev/null @@ -1,17 +0,0 @@ -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0020_standardize_models'), - ] - - operations = [ - migrations.AlterField( - model_name='virtualmachine', - name='vcpus', - field=models.DecimalField(blank=True, decimal_places=2, max_digits=6, null=True, validators=[django.core.validators.MinValueValidator(0.01)]), - ), - ] diff --git a/netbox/virtualization/migrations/0022_vminterface_parent.py b/netbox/virtualization/migrations/0022_vminterface_parent.py deleted file mode 100644 index d1249985f87..00000000000 --- a/netbox/virtualization/migrations/0022_vminterface_parent.py +++ /dev/null @@ -1,17 +0,0 @@ -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('virtualization', '0021_virtualmachine_vcpus_decimal'), - ] - - operations = [ - migrations.AddField( - model_name='vminterface', - name='parent', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='child_interfaces', to='virtualization.vminterface'), - ), - ] From c82470e4df45f33c1ba6824ec46a8921545aff30 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 9 Jul 2021 11:11:21 -0400 Subject: [PATCH 2/4] Add re-initialized migrations for v2.11.0 --- netbox/circuits/migrations/0001_initial.py | 103 +++ netbox/circuits/migrations/0002_initial.py | 100 +++ netbox/dcim/migrations/0001_initial.py | 659 ++++++++++++++++++ netbox/dcim/migrations/0002_initial.py | 311 +++++++++ netbox/dcim/migrations/0003_initial.py | 355 ++++++++++ netbox/extras/migrations/0001_initial.py | 231 ++++++ netbox/extras/migrations/0002_initial.py | 83 +++ netbox/ipam/migrations/0001_initial.py | 206 ++++++ netbox/ipam/migrations/0002_initial.py | 113 +++ netbox/tenancy/migrations/0001_initial.py | 55 ++ netbox/users/migrations/0001_initial.py | 93 +++ .../virtualization/migrations/0001_initial.py | 146 ++++ 12 files changed, 2455 insertions(+) create mode 100644 netbox/circuits/migrations/0001_initial.py create mode 100644 netbox/circuits/migrations/0002_initial.py create mode 100644 netbox/dcim/migrations/0001_initial.py create mode 100644 netbox/dcim/migrations/0002_initial.py create mode 100644 netbox/dcim/migrations/0003_initial.py create mode 100644 netbox/extras/migrations/0001_initial.py create mode 100644 netbox/extras/migrations/0002_initial.py create mode 100644 netbox/ipam/migrations/0001_initial.py create mode 100644 netbox/ipam/migrations/0002_initial.py create mode 100644 netbox/tenancy/migrations/0001_initial.py create mode 100644 netbox/users/migrations/0001_initial.py create mode 100644 netbox/virtualization/migrations/0001_initial.py diff --git a/netbox/circuits/migrations/0001_initial.py b/netbox/circuits/migrations/0001_initial.py new file mode 100644 index 00000000000..01b735d1bbe --- /dev/null +++ b/netbox/circuits/migrations/0001_initial.py @@ -0,0 +1,103 @@ +import dcim.fields +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Circuit', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('cid', models.CharField(max_length=100)), + ('status', models.CharField(default='active', max_length=50)), + ('install_date', models.DateField(blank=True, null=True)), + ('commit_rate', models.PositiveIntegerField(blank=True, null=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['provider', 'cid'], + }, + ), + migrations.CreateModel( + name='CircuitTermination', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('term_side', models.CharField(max_length=1)), + ('port_speed', models.PositiveIntegerField(blank=True, null=True)), + ('upstream_speed', models.PositiveIntegerField(blank=True, null=True)), + ('xconnect_id', models.CharField(blank=True, max_length=50)), + ('pp_info', models.CharField(blank=True, max_length=100)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['circuit', 'term_side'], + }, + ), + migrations.CreateModel( + name='CircuitType', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Provider', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('asn', dcim.fields.ASNField(blank=True, null=True)), + ('account', models.CharField(blank=True, max_length=30)), + ('portal_url', models.URLField(blank=True)), + ('noc_contact', models.TextField(blank=True)), + ('admin_contact', models.TextField(blank=True)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ProviderNetwork', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('provider', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='networks', to='circuits.provider')), + ], + options={ + 'ordering': ('provider', 'name'), + }, + ), + ] diff --git a/netbox/circuits/migrations/0002_initial.py b/netbox/circuits/migrations/0002_initial.py new file mode 100644 index 00000000000..e2b0cdd120d --- /dev/null +++ b/netbox/circuits/migrations/0002_initial.py @@ -0,0 +1,100 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0001_initial'), + ('contenttypes', '0002_remove_content_type_name'), + ('circuits', '0001_initial'), + ('extras', '0001_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='providernetwork', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='provider', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='circuittermination', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='circuittermination', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='circuittermination', + name='circuit', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', to='circuits.circuit'), + ), + migrations.AddField( + model_name='circuittermination', + name='provider_network', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations', to='circuits.providernetwork'), + ), + migrations.AddField( + model_name='circuittermination', + name='site', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuit_terminations', to='dcim.site'), + ), + migrations.AddField( + model_name='circuit', + name='provider', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='circuits.provider'), + ), + migrations.AddField( + model_name='circuit', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='circuit', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='circuit', + name='termination_a', + field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='circuits.circuittermination'), + ), + migrations.AddField( + model_name='circuit', + name='termination_z', + field=models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='circuits.circuittermination'), + ), + migrations.AddField( + model_name='circuit', + name='type', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='circuits', to='circuits.circuittype'), + ), + migrations.AddConstraint( + model_name='providernetwork', + constraint=models.UniqueConstraint(fields=('provider', 'name'), name='circuits_providernetwork_provider_name'), + ), + migrations.AlterUniqueTogether( + name='providernetwork', + unique_together={('provider', 'name')}, + ), + migrations.AlterUniqueTogether( + name='circuittermination', + unique_together={('circuit', 'term_side')}, + ), + migrations.AlterUniqueTogether( + name='circuit', + unique_together={('provider', 'cid')}, + ), + ] diff --git a/netbox/dcim/migrations/0001_initial.py b/netbox/dcim/migrations/0001_initial.py new file mode 100644 index 00000000000..30f31b982a7 --- /dev/null +++ b/netbox/dcim/migrations/0001_initial.py @@ -0,0 +1,659 @@ +import dcim.fields +import django.contrib.postgres.fields +import django.core.serializers.json +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import timezone_field.fields +import utilities.fields +import utilities.ordering +import utilities.query_functions +import utilities.validators + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Cable', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('termination_a_id', models.PositiveIntegerField()), + ('termination_b_id', models.PositiveIntegerField()), + ('type', models.CharField(blank=True, max_length=50)), + ('status', models.CharField(default='connected', max_length=50)), + ('label', models.CharField(blank=True, max_length=100)), + ('color', utilities.fields.ColorField(blank=True, max_length=6)), + ('length', models.PositiveSmallIntegerField(blank=True, null=True)), + ('length_unit', models.CharField(blank=True, max_length=50)), + ('_abs_length', models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True)), + ], + options={ + 'ordering': ['pk'], + }, + ), + migrations.CreateModel( + name='CablePath', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('origin_id', models.PositiveIntegerField()), + ('destination_id', models.PositiveIntegerField(blank=True, null=True)), + ('path', dcim.fields.PathField(base_field=models.CharField(max_length=40), size=None)), + ('is_active', models.BooleanField(default=False)), + ('is_split', models.BooleanField(default=False)), + ], + ), + migrations.CreateModel( + name='ConsolePort', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(blank=True, max_length=50)), + ('speed', models.PositiveSmallIntegerField(blank=True, null=True)), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='ConsolePortTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(blank=True, max_length=50)), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='ConsoleServerPort', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(blank=True, max_length=50)), + ('speed', models.PositiveSmallIntegerField(blank=True, null=True)), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='ConsoleServerPortTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(blank=True, max_length=50)), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='Device', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('local_context_data', models.JSONField(blank=True, null=True)), + ('name', models.CharField(blank=True, max_length=64, null=True)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize, null=True)), + ('serial', models.CharField(blank=True, max_length=50)), + ('asset_tag', models.CharField(blank=True, max_length=50, null=True, unique=True)), + ('position', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])), + ('face', models.CharField(blank=True, max_length=50)), + ('status', models.CharField(default='active', max_length=50)), + ('vc_position', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MaxValueValidator(255)])), + ('vc_priority', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MaxValueValidator(255)])), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ('_name', 'pk'), + }, + ), + migrations.CreateModel( + name='DeviceBay', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='DeviceBayTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='DeviceRole', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('color', utilities.fields.ColorField(default='9e9e9e', max_length=6)), + ('vm_role', models.BooleanField(default=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='DeviceType', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('model', models.CharField(max_length=100)), + ('slug', models.SlugField(max_length=100)), + ('part_number', models.CharField(blank=True, max_length=50)), + ('u_height', models.PositiveSmallIntegerField(default=1)), + ('is_full_depth', models.BooleanField(default=True)), + ('subdevice_role', models.CharField(blank=True, max_length=50)), + ('front_image', models.ImageField(blank=True, upload_to='devicetype-images')), + ('rear_image', models.ImageField(blank=True, upload_to='devicetype-images')), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['manufacturer', 'model'], + }, + ), + migrations.CreateModel( + name='FrontPort', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(max_length=50)), + ('rear_port_position', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)])), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='FrontPortTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(max_length=50)), + ('rear_port_position', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)])), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='Interface', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('enabled', models.BooleanField(default=True)), + ('mac_address', dcim.fields.MACAddressField(blank=True, null=True)), + ('mtu', models.PositiveIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65536)])), + ('mode', models.CharField(blank=True, max_length=50)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface)), + ('type', models.CharField(max_length=50)), + ('mgmt_only', models.BooleanField(default=False)), + ], + options={ + 'ordering': ('device', utilities.query_functions.CollateAsChar('_name')), + }, + ), + migrations.CreateModel( + name='InterfaceTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface)), + ('type', models.CharField(max_length=50)), + ('mgmt_only', models.BooleanField(default=False)), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='InventoryItem', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('part_id', models.CharField(blank=True, max_length=50)), + ('serial', models.CharField(blank=True, max_length=50)), + ('asset_tag', models.CharField(blank=True, max_length=50, null=True, unique=True)), + ('discovered', models.BooleanField(default=False)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ], + options={ + 'ordering': ('device__id', 'parent__id', '_name'), + }, + ), + migrations.CreateModel( + name='Location', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('slug', models.SlugField(max_length=100)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ], + options={ + 'ordering': ['site', 'name'], + }, + ), + migrations.CreateModel( + name='Manufacturer', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Platform', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('napalm_driver', models.CharField(blank=True, max_length=50)), + ('napalm_args', models.JSONField(blank=True, null=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='PowerFeed', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('name', models.CharField(max_length=100)), + ('status', models.CharField(default='active', max_length=50)), + ('type', models.CharField(default='primary', max_length=50)), + ('supply', models.CharField(default='ac', max_length=50)), + ('phase', models.CharField(default='single-phase', max_length=50)), + ('voltage', models.SmallIntegerField(default=120, validators=[utilities.validators.ExclusionValidator([0])])), + ('amperage', models.PositiveSmallIntegerField(default=20, validators=[django.core.validators.MinValueValidator(1)])), + ('max_utilization', models.PositiveSmallIntegerField(default=80, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)])), + ('available_power', models.PositiveIntegerField(default=0, editable=False)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['power_panel', 'name'], + }, + ), + migrations.CreateModel( + name='PowerOutlet', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(blank=True, max_length=50)), + ('feed_leg', models.CharField(blank=True, max_length=50)), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='PowerOutletTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(blank=True, max_length=50)), + ('feed_leg', models.CharField(blank=True, max_length=50)), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='PowerPanel', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ], + options={ + 'ordering': ['site', 'name'], + }, + ), + migrations.CreateModel( + name='PowerPort', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(blank=True, max_length=50)), + ('maximum_draw', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])), + ('allocated_draw', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='PowerPortTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(blank=True, max_length=50)), + ('maximum_draw', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])), + ('allocated_draw', models.PositiveSmallIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='Rack', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('facility_id', models.CharField(blank=True, max_length=50, null=True)), + ('status', models.CharField(default='active', max_length=50)), + ('serial', models.CharField(blank=True, max_length=50)), + ('asset_tag', models.CharField(blank=True, max_length=50, null=True, unique=True)), + ('type', models.CharField(blank=True, max_length=50)), + ('width', models.PositiveSmallIntegerField(default=19)), + ('u_height', models.PositiveSmallIntegerField(default=42, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(100)])), + ('desc_units', models.BooleanField(default=False)), + ('outer_width', models.PositiveSmallIntegerField(blank=True, null=True)), + ('outer_depth', models.PositiveSmallIntegerField(blank=True, null=True)), + ('outer_unit', models.CharField(blank=True, max_length=50)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ('site', 'location', '_name', 'pk'), + }, + ), + migrations.CreateModel( + name='RackReservation', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('units', django.contrib.postgres.fields.ArrayField(base_field=models.PositiveSmallIntegerField(), size=None)), + ('description', models.CharField(max_length=200)), + ], + options={ + 'ordering': ['created', 'pk'], + }, + ), + migrations.CreateModel( + name='RackRole', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('color', utilities.fields.ColorField(default='9e9e9e', max_length=6)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='RearPort', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('_cable_peer_id', models.PositiveIntegerField(blank=True, null=True)), + ('mark_connected', models.BooleanField(default=False)), + ('type', models.CharField(max_length=50)), + ('positions', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)])), + ], + options={ + 'ordering': ('device', '_name'), + }, + ), + migrations.CreateModel( + name='RearPortTemplate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('label', models.CharField(blank=True, max_length=64)), + ('description', models.CharField(blank=True, max_length=200)), + ('type', models.CharField(max_length=50)), + ('positions', models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(1024)])), + ], + options={ + 'ordering': ('device_type', '_name'), + }, + ), + migrations.CreateModel( + name='Region', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Site', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('status', models.CharField(default='active', max_length=50)), + ('facility', models.CharField(blank=True, max_length=50)), + ('asn', dcim.fields.ASNField(blank=True, null=True)), + ('time_zone', timezone_field.fields.TimeZoneField(blank=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('physical_address', models.CharField(blank=True, max_length=200)), + ('shipping_address', models.CharField(blank=True, max_length=200)), + ('latitude', models.DecimalField(blank=True, decimal_places=6, max_digits=8, null=True)), + ('longitude', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True)), + ('contact_name', models.CharField(blank=True, max_length=50)), + ('contact_phone', models.CharField(blank=True, max_length=20)), + ('contact_email', models.EmailField(blank=True, max_length=254)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ('_name',), + }, + ), + migrations.CreateModel( + name='SiteGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='VirtualChassis', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('domain', models.CharField(blank=True, max_length=30)), + ('master', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vc_master_for', to='dcim.device')), + ], + options={ + 'verbose_name_plural': 'virtual chassis', + 'ordering': ['name'], + }, + ), + ] diff --git a/netbox/dcim/migrations/0002_initial.py b/netbox/dcim/migrations/0002_initial.py new file mode 100644 index 00000000000..737658bde69 --- /dev/null +++ b/netbox/dcim/migrations/0002_initial.py @@ -0,0 +1,311 @@ +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import mptt.fields +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('contenttypes', '0002_remove_content_type_name'), + ('extras', '0001_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='virtualchassis', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='sitegroup', + name='parent', + field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.sitegroup'), + ), + migrations.AddField( + model_name='site', + name='group', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sites', to='dcim.sitegroup'), + ), + migrations.AddField( + model_name='site', + name='region', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sites', to='dcim.region'), + ), + migrations.AddField( + model_name='site', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='site', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='sites', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='region', + name='parent', + field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.region'), + ), + migrations.AddField( + model_name='rearporttemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rearporttemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='rearport', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='rearport', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='rearport', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rearports', to='dcim.device'), + ), + migrations.AddField( + model_name='rearport', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='rackreservation', + name='rack', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservations', to='dcim.rack'), + ), + migrations.AddField( + model_name='rackreservation', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='rackreservation', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='rackreservations', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='rackreservation', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='rack', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='racks', to='dcim.location'), + ), + migrations.AddField( + model_name='rack', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='dcim.rackrole'), + ), + migrations.AddField( + model_name='rack', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='dcim.site'), + ), + migrations.AddField( + model_name='rack', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='rack', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='racks', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='powerporttemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='powerporttemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='powerport', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='powerport', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='powerport', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='powerport', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='powerports', to='dcim.device'), + ), + migrations.AddField( + model_name='powerport', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='powerpanel', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dcim.location'), + ), + migrations.AddField( + model_name='powerpanel', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='dcim.site'), + ), + migrations.AddField( + model_name='powerpanel', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='poweroutlettemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlettemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='poweroutlettemplate', + name='power_port', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='poweroutlet_templates', to='dcim.powerporttemplate'), + ), + migrations.AddField( + model_name='poweroutlet', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='poweroutlet', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='poweroutlet', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='poweroutlet', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='poweroutlets', to='dcim.device'), + ), + migrations.AddField( + model_name='poweroutlet', + name='power_port', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='poweroutlets', to='dcim.powerport'), + ), + migrations.AddField( + model_name='poweroutlet', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='powerfeed', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='powerfeed', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='powerfeed', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='powerfeed', + name='power_panel', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='powerfeeds', to='dcim.powerpanel'), + ), + migrations.AddField( + model_name='powerfeed', + name='rack', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='dcim.rack'), + ), + migrations.AddField( + model_name='powerfeed', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='platform', + name='manufacturer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='platforms', to='dcim.manufacturer'), + ), + migrations.AddField( + model_name='location', + name='parent', + field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='dcim.location'), + ), + migrations.AddField( + model_name='location', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='locations', to='dcim.site'), + ), + migrations.AddField( + model_name='inventoryitem', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='inventoryitems', to='dcim.device'), + ), + migrations.AddField( + model_name='inventoryitem', + name='manufacturer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='inventory_items', to='dcim.manufacturer'), + ), + migrations.AddField( + model_name='inventoryitem', + name='parent', + field=mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child_items', to='dcim.inventoryitem'), + ), + migrations.AddField( + model_name='inventoryitem', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='interfacetemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfacetemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='interface', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='interface', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='interface', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='interface', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='dcim.device'), + ), + migrations.AddField( + model_name='interface', + name='lag', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='member_interfaces', to='dcim.interface'), + ), + migrations.AddField( + model_name='interface', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='child_interfaces', to='dcim.interface'), + ), + ] diff --git a/netbox/dcim/migrations/0003_initial.py b/netbox/dcim/migrations/0003_initial.py new file mode 100644 index 00000000000..11773ed7a24 --- /dev/null +++ b/netbox/dcim/migrations/0003_initial.py @@ -0,0 +1,355 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0002_initial'), + ('virtualization', '0001_initial'), + ('contenttypes', '0002_remove_content_type_name'), + ('ipam', '0001_initial'), + ('tenancy', '0001_initial'), + ('extras', '0002_initial'), + ] + + operations = [ + migrations.AddField( + model_name='interface', + name='tagged_vlans', + field=models.ManyToManyField(blank=True, related_name='interfaces_as_tagged', to='ipam.VLAN'), + ), + migrations.AddField( + model_name='interface', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='interface', + name='untagged_vlan', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='interfaces_as_untagged', to='ipam.vlan'), + ), + migrations.AddField( + model_name='frontporttemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontporttemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='frontporttemplate', + name='rear_port', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontport_templates', to='dcim.rearporttemplate'), + ), + migrations.AddField( + model_name='frontport', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='frontport', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='frontport', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontports', to='dcim.device'), + ), + migrations.AddField( + model_name='frontport', + name='rear_port', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='frontports', to='dcim.rearport'), + ), + migrations.AddField( + model_name='frontport', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='devicetype', + name='manufacturer', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='device_types', to='dcim.manufacturer'), + ), + migrations.AddField( + model_name='devicetype', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='devicebaytemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='devicebaytemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='devicebay', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='devicebays', to='dcim.device'), + ), + migrations.AddField( + model_name='devicebay', + name='installed_device', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parent_bay', to='dcim.device'), + ), + migrations.AddField( + model_name='devicebay', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='device', + name='cluster', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='devices', to='virtualization.cluster'), + ), + migrations.AddField( + model_name='device', + name='device_role', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.devicerole'), + ), + migrations.AddField( + model_name='device', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='instances', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='device', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.location'), + ), + migrations.AddField( + model_name='device', + name='platform', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='devices', to='dcim.platform'), + ), + migrations.AddField( + model_name='device', + name='primary_ip4', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip4_for', to='ipam.ipaddress'), + ), + migrations.AddField( + model_name='device', + name='primary_ip6', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='primary_ip6_for', to='ipam.ipaddress'), + ), + migrations.AddField( + model_name='device', + name='rack', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.rack'), + ), + migrations.AddField( + model_name='device', + name='site', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='dcim.site'), + ), + migrations.AddField( + model_name='device', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='device', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='devices', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='device', + name='virtual_chassis', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='members', to='dcim.virtualchassis'), + ), + migrations.AddField( + model_name='consoleserverporttemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverporttemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='consoleserverport', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='consoleserverport', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='consoleserverport', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='consoleserverport', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleserverports', to='dcim.device'), + ), + migrations.AddField( + model_name='consoleserverport', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='consoleporttemplate', + name='device_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleporttemplates', to='dcim.devicetype'), + ), + migrations.AddField( + model_name='consoleport', + name='_cable_peer_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='consoleport', + name='_path', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='dcim.cablepath'), + ), + migrations.AddField( + model_name='consoleport', + name='cable', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='dcim.cable'), + ), + migrations.AddField( + model_name='consoleport', + name='device', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='consoleports', to='dcim.device'), + ), + migrations.AddField( + model_name='consoleport', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='cablepath', + name='destination_type', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='cablepath', + name='origin_type', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='cable', + name='_termination_a_device', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device'), + ), + migrations.AddField( + model_name='cable', + name='_termination_b_device', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='dcim.device'), + ), + migrations.AddField( + model_name='cable', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='cable', + name='termination_a_type', + field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='cable', + name='termination_b_type', + field=models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'circuits'), ('model__in', ('circuittermination',))), models.Q(('app_label', 'dcim'), ('model__in', ('consoleport', 'consoleserverport', 'frontport', 'interface', 'powerfeed', 'poweroutlet', 'powerport', 'rearport'))), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AlterUniqueTogether( + name='rearporttemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='rearport', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='rack', + unique_together={('location', 'facility_id'), ('location', 'name')}, + ), + migrations.AlterUniqueTogether( + name='powerporttemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='powerport', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='powerpanel', + unique_together={('site', 'name')}, + ), + migrations.AlterUniqueTogether( + name='poweroutlettemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='poweroutlet', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='powerfeed', + unique_together={('power_panel', 'name')}, + ), + migrations.AlterUniqueTogether( + name='location', + unique_together={('site', 'name'), ('site', 'slug')}, + ), + migrations.AlterUniqueTogether( + name='inventoryitem', + unique_together={('device', 'parent', 'name')}, + ), + migrations.AlterUniqueTogether( + name='interfacetemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='interface', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='frontporttemplate', + unique_together={('rear_port', 'rear_port_position'), ('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='frontport', + unique_together={('device', 'name'), ('rear_port', 'rear_port_position')}, + ), + migrations.AlterUniqueTogether( + name='devicetype', + unique_together={('manufacturer', 'model'), ('manufacturer', 'slug')}, + ), + migrations.AlterUniqueTogether( + name='devicebaytemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='devicebay', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='device', + unique_together={('rack', 'position', 'face'), ('virtual_chassis', 'vc_position'), ('site', 'tenant', 'name')}, + ), + migrations.AlterUniqueTogether( + name='consoleserverporttemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='consoleserverport', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='consoleporttemplate', + unique_together={('device_type', 'name')}, + ), + migrations.AlterUniqueTogether( + name='consoleport', + unique_together={('device', 'name')}, + ), + migrations.AlterUniqueTogether( + name='cablepath', + unique_together={('origin_type', 'origin_id')}, + ), + migrations.AlterUniqueTogether( + name='cable', + unique_together={('termination_b_type', 'termination_b_id'), ('termination_a_type', 'termination_a_id')}, + ), + ] diff --git a/netbox/extras/migrations/0001_initial.py b/netbox/extras/migrations/0001_initial.py new file mode 100644 index 00000000000..9b10f4a45f6 --- /dev/null +++ b/netbox/extras/migrations/0001_initial.py @@ -0,0 +1,231 @@ +from django.conf import settings +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion +import extras.models.customfields +import extras.utils +import utilities.fields +import utilities.validators + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('contenttypes', '0002_remove_content_type_name'), + ] + + operations = [ + migrations.CreateModel( + name='Report', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ], + options={ + 'managed': False, + }, + ), + migrations.CreateModel( + name='Script', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ], + options={ + 'managed': False, + }, + ), + migrations.CreateModel( + name='ConfigContext', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('weight', models.PositiveSmallIntegerField(default=1000)), + ('description', models.CharField(blank=True, max_length=200)), + ('is_active', models.BooleanField(default=True)), + ('data', models.JSONField()), + ], + options={ + 'ordering': ['weight', 'name'], + }, + ), + migrations.CreateModel( + name='Tag', + fields=[ + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('color', utilities.fields.ColorField(default='9e9e9e', max_length=6)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Webhook', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=150, unique=True)), + ('type_create', models.BooleanField(default=False)), + ('type_update', models.BooleanField(default=False)), + ('type_delete', models.BooleanField(default=False)), + ('payload_url', models.CharField(max_length=500)), + ('enabled', models.BooleanField(default=True)), + ('http_method', models.CharField(default='POST', max_length=30)), + ('http_content_type', models.CharField(default='application/json', max_length=100)), + ('additional_headers', models.TextField(blank=True)), + ('body_template', models.TextField(blank=True)), + ('secret', models.CharField(blank=True, max_length=255)), + ('ssl_verification', models.BooleanField(default=True)), + ('ca_file_path', models.CharField(blank=True, max_length=4096, null=True)), + ('content_types', models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('webhooks'), related_name='webhooks', to='contenttypes.ContentType')), + ], + options={ + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='TaggedItem', + fields=[ + ('object_id', models.IntegerField(db_index=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extras_taggeditem_tagged_items', to='contenttypes.contenttype')), + ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='extras_taggeditem_items', to='extras.tag')), + ], + ), + migrations.CreateModel( + name='ObjectChange', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('time', models.DateTimeField(auto_now_add=True, db_index=True)), + ('user_name', models.CharField(editable=False, max_length=150)), + ('request_id', models.UUIDField(editable=False)), + ('action', models.CharField(max_length=50)), + ('changed_object_id', models.PositiveIntegerField()), + ('related_object_id', models.PositiveIntegerField(blank=True, null=True)), + ('object_repr', models.CharField(editable=False, max_length=200)), + ('prechange_data', models.JSONField(blank=True, editable=False, null=True)), + ('postchange_data', models.JSONField(blank=True, editable=False, null=True)), + ('changed_object_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')), + ('related_object_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='changes', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-time'], + }, + ), + migrations.CreateModel( + name='JournalEntry', + fields=[ + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('assigned_object_id', models.PositiveIntegerField()), + ('created', models.DateTimeField(auto_now_add=True)), + ('kind', models.CharField(default='info', max_length=30)), + ('comments', models.TextField()), + ('assigned_object_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name_plural': 'journal entries', + 'ordering': ('-created',), + }, + ), + migrations.CreateModel( + name='JobResult', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255)), + ('created', models.DateTimeField(auto_now_add=True)), + ('completed', models.DateTimeField(blank=True, null=True)), + ('status', models.CharField(default='pending', max_length=30)), + ('data', models.JSONField(blank=True, null=True)), + ('job_id', models.UUIDField(unique=True)), + ('obj_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('job_results'), on_delete=django.db.models.deletion.CASCADE, related_name='job_results', to='contenttypes.contenttype')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['obj_type', 'name', '-created'], + }, + ), + migrations.CreateModel( + name='ImageAttachment', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('object_id', models.PositiveIntegerField()), + ('image', models.ImageField(height_field='image_height', upload_to=extras.utils.image_upload, width_field='image_width')), + ('image_height', models.PositiveSmallIntegerField()), + ('image_width', models.PositiveSmallIntegerField()), + ('name', models.CharField(blank=True, max_length=50)), + ('created', models.DateTimeField(auto_now_add=True)), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ], + options={ + 'ordering': ('name', 'pk'), + }, + ), + migrations.CreateModel( + name='ExportTemplate', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('description', models.CharField(blank=True, max_length=200)), + ('template_code', models.TextField()), + ('mime_type', models.CharField(blank=True, max_length=50)), + ('file_extension', models.CharField(blank=True, max_length=15)), + ('as_attachment', models.BooleanField(default=True)), + ('content_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('export_templates'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ], + options={ + 'ordering': ['content_type', 'name'], + }, + ), + migrations.CreateModel( + name='CustomLink', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('link_text', models.CharField(max_length=500)), + ('link_url', models.CharField(max_length=500)), + ('weight', models.PositiveSmallIntegerField(default=100)), + ('group_name', models.CharField(blank=True, max_length=50)), + ('button_class', models.CharField(default='default', max_length=30)), + ('new_window', models.BooleanField(default=False)), + ('content_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('custom_links'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ], + options={ + 'ordering': ['group_name', 'weight', 'name'], + }, + ), + migrations.CreateModel( + name='CustomField', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('type', models.CharField(default='text', max_length=50)), + ('name', models.CharField(max_length=50, unique=True)), + ('label', models.CharField(blank=True, max_length=50)), + ('description', models.CharField(blank=True, max_length=200)), + ('required', models.BooleanField(default=False)), + ('filter_logic', models.CharField(default='loose', max_length=50)), + ('default', models.JSONField(blank=True, null=True)), + ('weight', models.PositiveSmallIntegerField(default=100)), + ('validation_minimum', models.PositiveIntegerField(blank=True, null=True)), + ('validation_maximum', models.PositiveIntegerField(blank=True, null=True)), + ('validation_regex', models.CharField(blank=True, max_length=500, validators=[utilities.validators.validate_regex])), + ('choices', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), blank=True, null=True, size=None)), + ('content_types', models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('custom_fields'), related_name='custom_fields', to='contenttypes.ContentType')), + ], + options={ + 'ordering': ['weight', 'name'], + }, + managers=[ + ('objects', extras.models.customfields.CustomFieldManager()), + ], + ), + ] diff --git a/netbox/extras/migrations/0002_initial.py b/netbox/extras/migrations/0002_initial.py new file mode 100644 index 00000000000..ab41a936d98 --- /dev/null +++ b/netbox/extras/migrations/0002_initial.py @@ -0,0 +1,83 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0002_initial'), + ('extras', '0001_initial'), + ('virtualization', '0001_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='configcontext', + name='cluster_groups', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_cluster_groups_+', to='virtualization.ClusterGroup'), + ), + migrations.AddField( + model_name='configcontext', + name='clusters', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_clusters_+', to='virtualization.Cluster'), + ), + migrations.AddField( + model_name='configcontext', + name='device_types', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_device_types_+', to='dcim.DeviceType'), + ), + migrations.AddField( + model_name='configcontext', + name='platforms', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_platforms_+', to='dcim.Platform'), + ), + migrations.AddField( + model_name='configcontext', + name='regions', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_regions_+', to='dcim.Region'), + ), + migrations.AddField( + model_name='configcontext', + name='roles', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_roles_+', to='dcim.DeviceRole'), + ), + migrations.AddField( + model_name='configcontext', + name='site_groups', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_site_groups_+', to='dcim.SiteGroup'), + ), + migrations.AddField( + model_name='configcontext', + name='sites', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_sites_+', to='dcim.Site'), + ), + migrations.AddField( + model_name='configcontext', + name='tags', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_tags_+', to='extras.Tag'), + ), + migrations.AddField( + model_name='configcontext', + name='tenant_groups', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_tenant_groups_+', to='tenancy.TenantGroup'), + ), + migrations.AddField( + model_name='configcontext', + name='tenants', + field=models.ManyToManyField(blank=True, related_name='_extras_configcontext_tenants_+', to='tenancy.Tenant'), + ), + migrations.AlterUniqueTogether( + name='webhook', + unique_together={('payload_url', 'type_create', 'type_update', 'type_delete')}, + ), + migrations.AlterIndexTogether( + name='taggeditem', + index_together={('content_type', 'object_id')}, + ), + migrations.AlterUniqueTogether( + name='exporttemplate', + unique_together={('content_type', 'name')}, + ), + ] diff --git a/netbox/ipam/migrations/0001_initial.py b/netbox/ipam/migrations/0001_initial.py new file mode 100644 index 00000000000..45ad7873b8c --- /dev/null +++ b/netbox/ipam/migrations/0001_initial.py @@ -0,0 +1,206 @@ +import django.contrib.postgres.fields +import django.core.serializers.json +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import django.db.models.expressions +import ipam.fields +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('dcim', '0002_initial'), + ('extras', '0001_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Aggregate', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('prefix', ipam.fields.IPNetworkField()), + ('date_added', models.DateField(blank=True, null=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ('prefix', 'pk'), + }, + ), + migrations.CreateModel( + name='IPAddress', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('address', ipam.fields.IPAddressField()), + ('status', models.CharField(default='active', max_length=50)), + ('role', models.CharField(blank=True, max_length=50)), + ('assigned_object_id', models.PositiveIntegerField(blank=True, null=True)), + ('dns_name', models.CharField(blank=True, max_length=255, validators=[django.core.validators.RegexValidator(code='invalid', message='Only alphanumeric characters, hyphens, periods, and underscores are allowed in DNS names', regex='^[0-9A-Za-z._-]+$')])), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'verbose_name': 'IP address', + 'verbose_name_plural': 'IP addresses', + 'ordering': ('address', 'pk'), + }, + ), + migrations.CreateModel( + name='Prefix', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('prefix', ipam.fields.IPNetworkField()), + ('status', models.CharField(default='active', max_length=50)), + ('is_pool', models.BooleanField(default=False)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'verbose_name_plural': 'prefixes', + 'ordering': (django.db.models.expressions.OrderBy(django.db.models.expressions.F('vrf'), nulls_first=True), 'prefix', 'pk'), + }, + ), + migrations.CreateModel( + name='RIR', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('is_private', models.BooleanField(default=False)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'verbose_name': 'RIR', + 'verbose_name_plural': 'RIRs', + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Role', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('weight', models.PositiveSmallIntegerField(default=1000)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['weight', 'name'], + }, + ), + migrations.CreateModel( + name='RouteTarget', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=21, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='VRF', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('rd', models.CharField(blank=True, max_length=21, null=True, unique=True)), + ('enforce_unique', models.BooleanField(default=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('export_targets', models.ManyToManyField(blank=True, related_name='exporting_vrfs', to='ipam.RouteTarget')), + ('import_targets', models.ManyToManyField(blank=True, related_name='importing_vrfs', to='ipam.RouteTarget')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vrfs', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'VRF', + 'verbose_name_plural': 'VRFs', + 'ordering': ('name', 'rd', 'pk'), + }, + ), + migrations.CreateModel( + name='VLANGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('slug', models.SlugField(max_length=100)), + ('scope_id', models.PositiveBigIntegerField(blank=True, null=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('scope_type', models.ForeignKey(blank=True, limit_choices_to=models.Q(('model__in', ('region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster'))), null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ], + options={ + 'verbose_name': 'VLAN group', + 'verbose_name_plural': 'VLAN groups', + 'ordering': ('name', 'pk'), + }, + ), + migrations.CreateModel( + name='VLAN', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('vid', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(4094)])), + ('name', models.CharField(max_length=64)), + ('status', models.CharField(default='active', max_length=50)), + ('description', models.CharField(blank=True, max_length=200)), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='ipam.vlangroup')), + ('role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vlans', to='ipam.role')), + ('site', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='dcim.site')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vlans', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'VLAN', + 'verbose_name_plural': 'VLANs', + 'ordering': ('site', 'group', 'vid', 'pk'), + }, + ), + migrations.CreateModel( + name='Service', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('protocol', models.CharField(max_length=50)), + ('ports', django.contrib.postgres.fields.ArrayField(base_field=models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535)]), size=None)), + ('description', models.CharField(blank=True, max_length=200)), + ('device', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='services', to='dcim.device')), + ('ipaddresses', models.ManyToManyField(blank=True, related_name='services', to='ipam.IPAddress')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'ordering': ('protocol', 'ports', 'pk'), + }, + ), + ] diff --git a/netbox/ipam/migrations/0002_initial.py b/netbox/ipam/migrations/0002_initial.py new file mode 100644 index 00000000000..6b1ee18d585 --- /dev/null +++ b/netbox/ipam/migrations/0002_initial.py @@ -0,0 +1,113 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0003_initial'), + ('virtualization', '0001_initial'), + ('contenttypes', '0002_remove_content_type_name'), + ('ipam', '0001_initial'), + ('extras', '0002_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='service', + name='virtual_machine', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='services', to='virtualization.virtualmachine'), + ), + migrations.AddField( + model_name='routetarget', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='routetarget', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='route_targets', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='prefix', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prefixes', to='ipam.role'), + ), + migrations.AddField( + model_name='prefix', + name='site', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='dcim.site'), + ), + migrations.AddField( + model_name='prefix', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='prefix', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='prefix', + name='vlan', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.vlan'), + ), + migrations.AddField( + model_name='prefix', + name='vrf', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='prefixes', to='ipam.vrf'), + ), + migrations.AddField( + model_name='ipaddress', + name='assigned_object_type', + field=models.ForeignKey(blank=True, limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'dcim'), ('model', 'interface')), models.Q(('app_label', 'virtualization'), ('model', 'vminterface')), _connector='OR')), null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='ipaddress', + name='nat_inside', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='nat_outside', to='ipam.ipaddress'), + ), + migrations.AddField( + model_name='ipaddress', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='ipaddress', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='ip_addresses', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='ipaddress', + name='vrf', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='ip_addresses', to='ipam.vrf'), + ), + migrations.AddField( + model_name='aggregate', + name='rir', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='aggregates', to='ipam.rir'), + ), + migrations.AddField( + model_name='aggregate', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='aggregate', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='aggregates', to='tenancy.tenant'), + ), + migrations.AlterUniqueTogether( + name='vlangroup', + unique_together={('scope_type', 'scope_id', 'name'), ('scope_type', 'scope_id', 'slug')}, + ), + migrations.AlterUniqueTogether( + name='vlan', + unique_together={('group', 'vid'), ('group', 'name')}, + ), + ] diff --git a/netbox/tenancy/migrations/0001_initial.py b/netbox/tenancy/migrations/0001_initial.py new file mode 100644 index 00000000000..f4f196e3783 --- /dev/null +++ b/netbox/tenancy/migrations/0001_initial.py @@ -0,0 +1,55 @@ +import django.core.serializers.json +from django.db import migrations, models +import django.db.models.deletion +import mptt.fields +import taggit.managers + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('extras', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='TenantGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('lft', models.PositiveIntegerField(editable=False)), + ('rght', models.PositiveIntegerField(editable=False)), + ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), + ('level', models.PositiveIntegerField(editable=False)), + ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='tenancy.tenantgroup')), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Tenant', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='tenants', to='tenancy.tenantgroup')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'ordering': ['group', 'name'], + }, + ), + ] diff --git a/netbox/users/migrations/0001_initial.py b/netbox/users/migrations/0001_initial.py new file mode 100644 index 00000000000..4bf2d1eef0e --- /dev/null +++ b/netbox/users/migrations/0001_initial.py @@ -0,0 +1,93 @@ +from django.conf import settings +import django.contrib.auth.models +import django.contrib.postgres.fields +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('contenttypes', '0002_remove_content_type_name'), + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='AdminGroup', + fields=[ + ], + options={ + 'verbose_name': 'Group', + 'proxy': True, + 'indexes': [], + 'constraints': [], + }, + bases=('auth.group',), + managers=[ + ('objects', django.contrib.auth.models.GroupManager()), + ], + ), + migrations.CreateModel( + name='AdminUser', + fields=[ + ], + options={ + 'verbose_name': 'User', + 'proxy': True, + 'indexes': [], + 'constraints': [], + }, + bases=('auth.user',), + managers=[ + ('objects', django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name='UserConfig', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('data', models.JSONField(default=dict)), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='config', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'User Preferences', + 'verbose_name_plural': 'User Preferences', + 'ordering': ['user'], + }, + ), + migrations.CreateModel( + name='Token', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('expires', models.DateTimeField(blank=True, null=True)), + ('key', models.CharField(max_length=40, unique=True, validators=[django.core.validators.MinLengthValidator(40)])), + ('write_enabled', models.BooleanField(default=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tokens', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ObjectPermission', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100)), + ('description', models.CharField(blank=True, max_length=200)), + ('enabled', models.BooleanField(default=True)), + ('actions', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), size=None)), + ('constraints', models.JSONField(blank=True, null=True)), + ('groups', models.ManyToManyField(blank=True, related_name='object_permissions', to='auth.Group')), + ('object_types', models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label__in', ['admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']), _negated=True), models.Q(('app_label', 'auth'), ('model__in', ['group', 'user'])), models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token'])), _connector='OR')), related_name='object_permissions', to='contenttypes.ContentType')), + ('users', models.ManyToManyField(blank=True, related_name='object_permissions', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'permission', + 'ordering': ['name'], + }, + ), + ] diff --git a/netbox/virtualization/migrations/0001_initial.py b/netbox/virtualization/migrations/0001_initial.py new file mode 100644 index 00000000000..5bcad5e9f7a --- /dev/null +++ b/netbox/virtualization/migrations/0001_initial.py @@ -0,0 +1,146 @@ +import dcim.fields +import django.core.serializers.json +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers +import utilities.fields +import utilities.ordering +import utilities.query_functions + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('dcim', '0002_initial'), + ('ipam', '0001_initial'), + ('extras', '0001_initial'), + ('tenancy', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Cluster', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ClusterGroup', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='ClusterType', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='VirtualMachine', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('local_context_data', models.JSONField(blank=True, null=True)), + ('name', models.CharField(max_length=64)), + ('status', models.CharField(default='active', max_length=50)), + ('vcpus', models.DecimalField(blank=True, decimal_places=2, max_digits=6, null=True, validators=[django.core.validators.MinValueValidator(0.01)])), + ('memory', models.PositiveIntegerField(blank=True, null=True)), + ('disk', models.PositiveIntegerField(blank=True, null=True)), + ('comments', models.TextField(blank=True)), + ('cluster', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='virtualization.cluster')), + ('platform', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='virtual_machines', to='dcim.platform')), + ('primary_ip4', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.ipaddress')), + ('primary_ip6', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='ipam.ipaddress')), + ('role', models.ForeignKey(blank=True, limit_choices_to={'vm_role': True}, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='dcim.devicerole')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='virtual_machines', to='tenancy.tenant')), + ], + options={ + 'ordering': ('name', 'pk'), + 'unique_together': {('cluster', 'tenant', 'name')}, + }, + ), + migrations.AddField( + model_name='cluster', + name='group', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='virtualization.clustergroup'), + ), + migrations.AddField( + model_name='cluster', + name='site', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='dcim.site'), + ), + migrations.AddField( + model_name='cluster', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddField( + model_name='cluster', + name='tenant', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='tenancy.tenant'), + ), + migrations.AddField( + model_name='cluster', + name='type', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='clusters', to='virtualization.clustertype'), + ), + migrations.CreateModel( + name='VMInterface', + fields=[ + ('created', models.DateField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=django.core.serializers.json.DjangoJSONEncoder)), + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('enabled', models.BooleanField(default=True)), + ('mac_address', dcim.fields.MACAddressField(blank=True, null=True)), + ('mtu', models.PositiveIntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65536)])), + ('mode', models.CharField(blank=True, max_length=50)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface)), + ('description', models.CharField(blank=True, max_length=200)), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='child_interfaces', to='virtualization.vminterface')), + ('tagged_vlans', models.ManyToManyField(blank=True, related_name='vminterfaces_as_tagged', to='ipam.VLAN')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('untagged_vlan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vminterfaces_as_untagged', to='ipam.vlan')), + ('virtual_machine', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='interfaces', to='virtualization.virtualmachine')), + ], + options={ + 'verbose_name': 'interface', + 'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')), + 'unique_together': {('virtual_machine', 'name')}, + }, + ), + ] From 3387282de4ff0159b11d58a069130ff4bb9411d1 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 9 Jul 2021 11:49:55 -0400 Subject: [PATCH 3/4] Resolve migration dependencies --- ...{0002_initial.py => 0002_squashed_0029.py} | 33 ++++- ..._initial.py => 0002_auto_20160622_1821.py} | 2 - ...{0003_initial.py => 0003_squashed_0130.py} | 140 +++++++++++++++++- ...{0002_initial.py => 0002_squashed_0059.py} | 67 ++++++++- netbox/ipam/migrations/0001_initial.py | 2 +- ...{0002_initial.py => 0002_squashed_0046.py} | 56 ++++++- ...{0001_initial.py => 0001_squashed_0012.py} | 15 ++ ...{0001_initial.py => 0001_squashed_0011.py} | 14 ++ ...{0001_initial.py => 0001_squashed_0022.py} | 27 +++- 9 files changed, 336 insertions(+), 20 deletions(-) rename netbox/circuits/migrations/{0002_initial.py => 0002_squashed_0029.py} (74%) rename netbox/dcim/migrations/{0002_initial.py => 0002_auto_20160622_1821.py} (99%) rename netbox/dcim/migrations/{0003_initial.py => 0003_squashed_0130.py} (71%) rename netbox/extras/migrations/{0002_initial.py => 0002_squashed_0059.py} (52%) rename netbox/ipam/migrations/{0002_initial.py => 0002_squashed_0046.py} (68%) rename netbox/tenancy/migrations/{0001_initial.py => 0001_squashed_0012.py} (82%) rename netbox/users/migrations/{0001_initial.py => 0001_squashed_0011.py} (88%) rename netbox/virtualization/migrations/{0001_initial.py => 0001_squashed_0022.py} (86%) diff --git a/netbox/circuits/migrations/0002_initial.py b/netbox/circuits/migrations/0002_squashed_0029.py similarity index 74% rename from netbox/circuits/migrations/0002_initial.py rename to netbox/circuits/migrations/0002_squashed_0029.py index e2b0cdd120d..11fcbd6e61b 100644 --- a/netbox/circuits/migrations/0002_initial.py +++ b/netbox/circuits/migrations/0002_squashed_0029.py @@ -5,8 +5,6 @@ class Migration(migrations.Migration): - initial = True - dependencies = [ ('dcim', '0001_initial'), ('contenttypes', '0002_remove_content_type_name'), @@ -15,6 +13,37 @@ class Migration(migrations.Migration): ('tenancy', '0001_initial'), ] + replaces = [ + ('circuits', '0002_auto_20160622_1821'), + ('circuits', '0003_provider_32bit_asn_support'), + ('circuits', '0004_circuit_add_tenant'), + ('circuits', '0005_circuit_add_upstream_speed'), + ('circuits', '0006_terminations'), + ('circuits', '0007_circuit_add_description'), + ('circuits', '0008_circuittermination_interface_protect_on_delete'), + ('circuits', '0009_unicode_literals'), + ('circuits', '0010_circuit_status'), + ('circuits', '0011_tags'), + ('circuits', '0012_change_logging'), + ('circuits', '0013_cables'), + ('circuits', '0014_circuittermination_description'), + ('circuits', '0015_custom_tag_models'), + ('circuits', '0016_3569_circuit_fields'), + ('circuits', '0017_circuittype_description'), + ('circuits', '0018_standardize_description'), + ('circuits', '0019_nullbooleanfield_to_booleanfield'), + ('circuits', '0020_custom_field_data'), + ('circuits', '0021_cache_cable_peer'), + ('circuits', '0022_cablepath'), + ('circuits', '0023_circuittermination_port_speed_optional'), + ('circuits', '0024_standardize_name_length'), + ('circuits', '0025_standardize_models'), + ('circuits', '0026_mark_connected'), + ('circuits', '0027_providernetwork'), + ('circuits', '0028_cache_circuit_terminations'), + ('circuits', '0029_circuit_tracing'), + ] + operations = [ migrations.AddField( model_name='providernetwork', diff --git a/netbox/dcim/migrations/0002_initial.py b/netbox/dcim/migrations/0002_auto_20160622_1821.py similarity index 99% rename from netbox/dcim/migrations/0002_initial.py rename to netbox/dcim/migrations/0002_auto_20160622_1821.py index 737658bde69..7d8ed4dff31 100644 --- a/netbox/dcim/migrations/0002_initial.py +++ b/netbox/dcim/migrations/0002_auto_20160622_1821.py @@ -7,8 +7,6 @@ class Migration(migrations.Migration): - initial = True - dependencies = [ ('dcim', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/netbox/dcim/migrations/0003_initial.py b/netbox/dcim/migrations/0003_squashed_0130.py similarity index 71% rename from netbox/dcim/migrations/0003_initial.py rename to netbox/dcim/migrations/0003_squashed_0130.py index 11773ed7a24..48ea238d93b 100644 --- a/netbox/dcim/migrations/0003_initial.py +++ b/netbox/dcim/migrations/0003_squashed_0130.py @@ -5,15 +5,145 @@ class Migration(migrations.Migration): - initial = True - dependencies = [ - ('dcim', '0002_initial'), - ('virtualization', '0001_initial'), + ('dcim', '0002_auto_20160622_1821'), + ('virtualization', '0001_virtualization'), ('contenttypes', '0002_remove_content_type_name'), ('ipam', '0001_initial'), ('tenancy', '0001_initial'), - ('extras', '0002_initial'), + ('extras', '0002_custom_fields'), + ] + + replaces = [ + ('dcim', '0003_auto_20160628_1721'), + ('dcim', '0004_auto_20160701_2049'), + ('dcim', '0005_auto_20160706_1722'), + ('dcim', '0006_add_device_primary_ip4_ip6'), + ('dcim', '0007_device_copy_primary_ip'), + ('dcim', '0008_device_remove_primary_ip'), + ('dcim', '0009_site_32bit_asn_support'), + ('dcim', '0010_devicebay_installed_device_set_null'), + ('dcim', '0011_devicetype_part_number'), + ('dcim', '0012_site_rack_device_add_tenant'), + ('dcim', '0013_add_interface_form_factors'), + ('dcim', '0014_rack_add_type_width'), + ('dcim', '0015_rack_add_u_height_validator'), + ('dcim', '0016_module_add_manufacturer'), + ('dcim', '0017_rack_add_role'), + ('dcim', '0018_device_add_asset_tag'), + ('dcim', '0019_new_iface_form_factors'), + ('dcim', '0020_rack_desc_units'), + ('dcim', '0021_add_ff_flexstack'), + ('dcim', '0022_color_names_to_rgb'), + ('dcim', '0023_devicetype_comments'), + ('dcim', '0024_site_add_contact_fields'), + ('dcim', '0025_devicetype_add_interface_ordering'), + ('dcim', '0026_add_rack_reservations'), + ('dcim', '0027_device_add_site'), + ('dcim', '0028_device_copy_rack_to_site'), + ('dcim', '0029_allow_rackless_devices'), + ('dcim', '0030_interface_add_lag'), + ('dcim', '0031_regions'), + ('dcim', '0032_device_increase_name_length'), + ('dcim', '0033_rackreservation_rack_editable'), + ('dcim', '0034_rename_module_to_inventoryitem'), + ('dcim', '0035_device_expand_status_choices'), + ('dcim', '0036_add_ff_juniper_vcp'), + ('dcim', '0037_unicode_literals'), + ('dcim', '0038_wireless_interfaces'), + ('dcim', '0039_interface_add_enabled_mtu'), + ('dcim', '0040_inventoryitem_add_asset_tag_description'), + ('dcim', '0041_napalm_integration'), + ('dcim', '0042_interface_ff_10ge_cx4'), + ('dcim', '0043_device_component_name_lengths'), + ('dcim', '0044_virtualization'), + ('dcim', '0045_devicerole_vm_role'), + ('dcim', '0046_rack_lengthen_facility_id'), + ('dcim', '0047_more_100ge_form_factors'), + ('dcim', '0048_rack_serial'), + ('dcim', '0049_rackreservation_change_user'), + ('dcim', '0050_interface_vlan_tagging'), + ('dcim', '0051_rackreservation_tenant'), + ('dcim', '0052_virtual_chassis'), + ('dcim', '0053_platform_manufacturer'), + ('dcim', '0054_site_status_timezone_description'), + ('dcim', '0055_virtualchassis_ordering'), + ('dcim', '0056_django2'), + ('dcim', '0057_tags'), + ('dcim', '0058_relax_rack_naming_constraints'), + ('dcim', '0059_site_latitude_longitude'), + ('dcim', '0060_change_logging'), + ('dcim', '0061_platform_napalm_args'), + ('dcim', '0062_interface_mtu'), + ('dcim', '0063_device_local_context_data'), + ('dcim', '0064_remove_platform_rpc_client'), + ('dcim', '0065_front_rear_ports'), + ('dcim', '0066_cables'), + ('dcim', '0067_device_type_remove_qualifiers'), + ('dcim', '0068_rack_new_fields'), + ('dcim', '0069_deprecate_nullablecharfield'), + ('dcim', '0070_custom_tag_models'), + ('dcim', '0071_device_components_add_description'), + ('dcim', '0072_powerfeeds'), + ('dcim', '0073_interface_form_factor_to_type'), + ('dcim', '0074_increase_field_length_platform_name_slug'), + ('dcim', '0075_cable_devices'), + ('dcim', '0076_console_port_types'), + ('dcim', '0077_power_types'), + ('dcim', '0078_3569_site_fields'), + ('dcim', '0079_3569_rack_fields'), + ('dcim', '0080_3569_devicetype_fields'), + ('dcim', '0081_3569_device_fields'), + ('dcim', '0082_3569_interface_fields'), + ('dcim', '0082_3569_port_fields'), + ('dcim', '0083_3569_cable_fields'), + ('dcim', '0084_3569_powerfeed_fields'), + ('dcim', '0085_3569_poweroutlet_fields'), + ('dcim', '0086_device_name_nonunique'), + ('dcim', '0087_role_descriptions'), + ('dcim', '0088_powerfeed_available_power'), + ('dcim', '0089_deterministic_ordering'), + ('dcim', '0090_cable_termination_models'), + ('dcim', '0091_interface_type_other'), + ('dcim', '0092_fix_rack_outer_unit'), + ('dcim', '0093_device_component_ordering'), + ('dcim', '0094_device_component_template_ordering'), + ('dcim', '0095_primary_model_ordering'), + ('dcim', '0096_interface_ordering'), + ('dcim', '0097_interfacetemplate_type_other'), + ('dcim', '0098_devicetype_images'), + ('dcim', '0099_powerfeed_negative_voltage'), + ('dcim', '0100_mptt_remove_indexes'), + ('dcim', '0101_nested_rackgroups'), + ('dcim', '0102_nested_rackgroups_rebuild'), + ('dcim', '0103_standardize_description'), + ('dcim', '0104_correct_infiniband_types'), + ('dcim', '0105_interface_name_collation'), + ('dcim', '0106_role_default_color'), + ('dcim', '0107_component_labels'), + ('dcim', '0108_add_tags'), + ('dcim', '0109_interface_remove_vm'), + ('dcim', '0110_virtualchassis_name'), + ('dcim', '0111_component_template_description'), + ('dcim', '0112_standardize_components'), + ('dcim', '0113_nullbooleanfield_to_booleanfield'), + ('dcim', '0114_update_jsonfield'), + ('dcim', '0115_rackreservation_order'), + ('dcim', '0116_rearport_max_positions'), + ('dcim', '0117_custom_field_data'), + ('dcim', '0118_inventoryitem_mptt'), + ('dcim', '0119_inventoryitem_mptt_rebuild'), + ('dcim', '0120_cache_cable_peer'), + ('dcim', '0121_cablepath'), + ('dcim', '0122_standardize_name_length'), + ('dcim', '0123_standardize_models'), + ('dcim', '0124_mark_connected'), + ('dcim', '0125_console_port_speed'), + ('dcim', '0126_rename_rackgroup_location'), + ('dcim', '0127_device_location'), + ('dcim', '0128_device_location_populate'), + ('dcim', '0129_interface_parent'), + ('dcim', '0130_sitegroup'), ] operations = [ diff --git a/netbox/extras/migrations/0002_initial.py b/netbox/extras/migrations/0002_squashed_0059.py similarity index 52% rename from netbox/extras/migrations/0002_initial.py rename to netbox/extras/migrations/0002_squashed_0059.py index ab41a936d98..9098d286f01 100644 --- a/netbox/extras/migrations/0002_initial.py +++ b/netbox/extras/migrations/0002_squashed_0059.py @@ -3,15 +3,74 @@ class Migration(migrations.Migration): - initial = True - dependencies = [ - ('dcim', '0002_initial'), + ('dcim', '0002_auto_20160622_1821'), ('extras', '0001_initial'), - ('virtualization', '0001_initial'), + ('virtualization', '0001_virtualization'), ('tenancy', '0001_initial'), ] + replaces = [ + ('extras', '0002_custom_fields'), + ('extras', '0003_exporttemplate_add_description'), + ('extras', '0004_topologymap_change_comma_to_semicolon'), + ('extras', '0005_useraction_add_bulk_create'), + ('extras', '0006_add_imageattachments'), + ('extras', '0007_unicode_literals'), + ('extras', '0008_reports'), + ('extras', '0009_topologymap_type'), + ('extras', '0010_customfield_filter_logic'), + ('extras', '0011_django2'), + ('extras', '0012_webhooks'), + ('extras', '0013_objectchange'), + ('extras', '0014_configcontexts'), + ('extras', '0015_remove_useraction'), + ('extras', '0016_exporttemplate_add_cable'), + ('extras', '0017_exporttemplate_mime_type_length'), + ('extras', '0018_exporttemplate_add_jinja2'), + ('extras', '0019_tag_taggeditem'), + ('extras', '0020_tag_data'), + ('extras', '0021_add_color_comments_changelog_to_tag'), + ('extras', '0022_custom_links'), + ('extras', '0023_fix_tag_sequences'), + ('extras', '0024_scripts'), + ('extras', '0025_objectchange_time_index'), + ('extras', '0026_webhook_ca_file_path'), + ('extras', '0027_webhook_additional_headers'), + ('extras', '0028_remove_topology_maps'), + ('extras', '0029_3569_customfield_fields'), + ('extras', '0030_3569_objectchange_fields'), + ('extras', '0031_3569_exporttemplate_fields'), + ('extras', '0032_3569_webhook_fields'), + ('extras', '0033_graph_type_template_language'), + ('extras', '0034_configcontext_tags'), + ('extras', '0035_deterministic_ordering'), + ('extras', '0036_contenttype_filters_to_q_objects'), + ('extras', '0037_configcontexts_clusters'), + ('extras', '0038_webhook_template_support'), + ('extras', '0039_update_features_content_types'), + ('extras', '0040_standardize_description'), + ('extras', '0041_tag_description'), + ('extras', '0042_customfield_manager'), + ('extras', '0043_report'), + ('extras', '0044_jobresult'), + ('extras', '0045_configcontext_changelog'), + ('extras', '0046_update_jsonfield'), + ('extras', '0047_tag_ordering'), + ('extras', '0048_exporttemplate_remove_template_language'), + ('extras', '0049_remove_graph'), + ('extras', '0050_customfield_changes'), + ('extras', '0051_migrate_customfields'), + ('extras', '0052_customfield_cleanup'), + ('extras', '0053_rename_webhook_obj_type'), + ('extras', '0054_standardize_models'), + ('extras', '0055_objectchange_data'), + ('extras', '0056_extend_configcontext'), + ('extras', '0057_customlink_rename_fields'), + ('extras', '0058_journalentry'), + ('extras', '0059_exporttemplate_as_attachment'), + ] + operations = [ migrations.AddField( model_name='configcontext', diff --git a/netbox/ipam/migrations/0001_initial.py b/netbox/ipam/migrations/0001_initial.py index 45ad7873b8c..fe13dbf3a2e 100644 --- a/netbox/ipam/migrations/0001_initial.py +++ b/netbox/ipam/migrations/0001_initial.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0002_remove_content_type_name'), - ('dcim', '0002_initial'), + ('dcim', '0002_auto_20160622_1821'), ('extras', '0001_initial'), ('tenancy', '0001_initial'), ] diff --git a/netbox/ipam/migrations/0002_initial.py b/netbox/ipam/migrations/0002_squashed_0046.py similarity index 68% rename from netbox/ipam/migrations/0002_initial.py rename to netbox/ipam/migrations/0002_squashed_0046.py index 6b1ee18d585..06bcd87416b 100644 --- a/netbox/ipam/migrations/0002_initial.py +++ b/netbox/ipam/migrations/0002_squashed_0046.py @@ -5,17 +5,63 @@ class Migration(migrations.Migration): - initial = True - dependencies = [ - ('dcim', '0003_initial'), - ('virtualization', '0001_initial'), + ('dcim', '0003_auto_20160628_1721'), + ('virtualization', '0001_virtualization'), ('contenttypes', '0002_remove_content_type_name'), ('ipam', '0001_initial'), - ('extras', '0002_initial'), + ('extras', '0002_custom_fields'), ('tenancy', '0001_initial'), ] + replaces = [ + ('ipam', '0002_vrf_add_enforce_unique'), + ('ipam', '0003_ipam_add_vlangroups'), + ('ipam', '0004_ipam_vlangroup_uniqueness'), + ('ipam', '0005_auto_20160725_1842'), + ('ipam', '0006_vrf_vlan_add_tenant'), + ('ipam', '0007_prefix_ipaddress_add_tenant'), + ('ipam', '0008_prefix_change_order'), + ('ipam', '0009_ipaddress_add_status'), + ('ipam', '0010_ipaddress_help_texts'), + ('ipam', '0011_rir_add_is_private'), + ('ipam', '0012_services'), + ('ipam', '0013_prefix_add_is_pool'), + ('ipam', '0014_ipaddress_status_add_deprecated'), + ('ipam', '0015_global_vlans'), + ('ipam', '0016_unicode_literals'), + ('ipam', '0017_ipaddress_roles'), + ('ipam', '0018_remove_service_uniqueness_constraint'), + ('ipam', '0019_virtualization'), + ('ipam', '0020_ipaddress_add_role_carp'), + ('ipam', '0021_vrf_ordering'), + ('ipam', '0022_tags'), + ('ipam', '0023_change_logging'), + ('ipam', '0024_vrf_allow_null_rd'), + ('ipam', '0025_custom_tag_models'), + ('ipam', '0026_prefix_ordering_vrf_nulls_first'), + ('ipam', '0027_ipaddress_add_dns_name'), + ('ipam', '0028_3569_prefix_fields'), + ('ipam', '0029_3569_ipaddress_fields'), + ('ipam', '0030_3569_vlan_fields'), + ('ipam', '0031_3569_service_fields'), + ('ipam', '0032_role_description'), + ('ipam', '0033_deterministic_ordering'), + ('ipam', '0034_fix_ipaddress_status_dhcp'), + ('ipam', '0035_drop_ip_family'), + ('ipam', '0036_standardize_description'), + ('ipam', '0037_ipaddress_assignment'), + ('ipam', '0038_custom_field_data'), + ('ipam', '0039_service_ports_array'), + ('ipam', '0040_service_drop_port'), + ('ipam', '0041_routetarget'), + ('ipam', '0042_standardize_name_length'), + ('ipam', '0043_add_tenancy_to_aggregates'), + ('ipam', '0044_standardize_models'), + ('ipam', '0045_vlangroup_scope'), + ('ipam', '0046_set_vlangroup_scope_types'), + ] + operations = [ migrations.AddField( model_name='service', diff --git a/netbox/tenancy/migrations/0001_initial.py b/netbox/tenancy/migrations/0001_squashed_0012.py similarity index 82% rename from netbox/tenancy/migrations/0001_initial.py rename to netbox/tenancy/migrations/0001_squashed_0012.py index f4f196e3783..77297b98260 100644 --- a/netbox/tenancy/migrations/0001_initial.py +++ b/netbox/tenancy/migrations/0001_squashed_0012.py @@ -13,6 +13,21 @@ class Migration(migrations.Migration): ('extras', '0001_initial'), ] + replaces = [ + ('tenancy', '0001_initial'), + ('tenancy', '0002_tenant_group_optional'), + ('tenancy', '0003_unicode_literals'), + ('tenancy', '0004_tags'), + ('tenancy', '0005_change_logging'), + ('tenancy', '0006_custom_tag_models'), + ('tenancy', '0007_nested_tenantgroups'), + ('tenancy', '0008_nested_tenantgroups_rebuild'), + ('tenancy', '0009_standardize_description'), + ('tenancy', '0010_custom_field_data'), + ('tenancy', '0011_standardize_name_length'), + ('tenancy', '0012_standardize_models'), + ] + operations = [ migrations.CreateModel( name='TenantGroup', diff --git a/netbox/users/migrations/0001_initial.py b/netbox/users/migrations/0001_squashed_0011.py similarity index 88% rename from netbox/users/migrations/0001_initial.py rename to netbox/users/migrations/0001_squashed_0011.py index 4bf2d1eef0e..e9f66f83ada 100644 --- a/netbox/users/migrations/0001_initial.py +++ b/netbox/users/migrations/0001_squashed_0011.py @@ -16,6 +16,20 @@ class Migration(migrations.Migration): ('auth', '0012_alter_user_first_name_max_length'), ] + replaces = [ + ('users', '0001_api_tokens'), + ('users', '0002_unicode_literals'), + ('users', '0003_token_permissions'), + ('users', '0004_standardize_description'), + ('users', '0005_userconfig'), + ('users', '0006_create_userconfigs'), + ('users', '0007_proxy_group_user'), + ('users', '0008_objectpermission'), + ('users', '0009_replicate_permissions'), + ('users', '0010_update_jsonfield'), + ('users', '0011_standardize_models'), + ] + operations = [ migrations.CreateModel( name='AdminGroup', diff --git a/netbox/virtualization/migrations/0001_initial.py b/netbox/virtualization/migrations/0001_squashed_0022.py similarity index 86% rename from netbox/virtualization/migrations/0001_initial.py rename to netbox/virtualization/migrations/0001_squashed_0022.py index 5bcad5e9f7a..d00bae2e2c8 100644 --- a/netbox/virtualization/migrations/0001_initial.py +++ b/netbox/virtualization/migrations/0001_squashed_0022.py @@ -14,12 +14,37 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('dcim', '0002_initial'), + ('dcim', '0002_auto_20160622_1821'), ('ipam', '0001_initial'), ('extras', '0001_initial'), ('tenancy', '0001_initial'), ] + replaces = [ + ('virtualization', '0001_virtualization'), + ('virtualization', '0002_virtualmachine_add_status'), + ('virtualization', '0003_cluster_add_site'), + ('virtualization', '0004_virtualmachine_add_role'), + ('virtualization', '0005_django2'), + ('virtualization', '0006_tags'), + ('virtualization', '0007_change_logging'), + ('virtualization', '0008_virtualmachine_local_context_data'), + ('virtualization', '0009_custom_tag_models'), + ('virtualization', '0010_cluster_add_tenant'), + ('virtualization', '0011_3569_virtualmachine_fields'), + ('virtualization', '0012_vm_name_nonunique'), + ('virtualization', '0013_deterministic_ordering'), + ('virtualization', '0014_standardize_description'), + ('virtualization', '0015_vminterface'), + ('virtualization', '0016_replicate_interfaces'), + ('virtualization', '0017_update_jsonfield'), + ('virtualization', '0018_custom_field_data'), + ('virtualization', '0019_standardize_name_length'), + ('virtualization', '0020_standardize_models'), + ('virtualization', '0021_virtualmachine_vcpus_decimal'), + ('virtualization', '0022_vminterface_parent'), + ] + operations = [ migrations.CreateModel( name='Cluster', From 42b2e2717d8165596fdf5ae8edb02092ffe1ec63 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Fri, 9 Jul 2021 13:23:36 -0400 Subject: [PATCH 4/4] Standardize squashed migration names --- .../circuits/migrations/{0001_initial.py => 0001_squashed.py} | 4 ++++ netbox/dcim/migrations/{0001_initial.py => 0001_squashed.py} | 4 ++++ .../{0002_auto_20160622_1821.py => 0002_squashed.py} | 4 ++++ .../extras/migrations/{0001_initial.py => 0001_squashed.py} | 4 ++++ netbox/ipam/migrations/{0001_initial.py => 0001_squashed.py} | 4 ++++ 5 files changed, 20 insertions(+) rename netbox/circuits/migrations/{0001_initial.py => 0001_squashed.py} (98%) rename netbox/dcim/migrations/{0001_initial.py => 0001_squashed.py} (99%) rename netbox/dcim/migrations/{0002_auto_20160622_1821.py => 0002_squashed.py} (99%) rename netbox/extras/migrations/{0001_initial.py => 0001_squashed.py} (99%) rename netbox/ipam/migrations/{0001_initial.py => 0001_squashed.py} (99%) diff --git a/netbox/circuits/migrations/0001_initial.py b/netbox/circuits/migrations/0001_squashed.py similarity index 98% rename from netbox/circuits/migrations/0001_initial.py rename to netbox/circuits/migrations/0001_squashed.py index 01b735d1bbe..851f40a220f 100644 --- a/netbox/circuits/migrations/0001_initial.py +++ b/netbox/circuits/migrations/0001_squashed.py @@ -11,6 +11,10 @@ class Migration(migrations.Migration): dependencies = [ ] + replaces = [ + ('circuits', '0001_initial'), + ] + operations = [ migrations.CreateModel( name='Circuit', diff --git a/netbox/dcim/migrations/0001_initial.py b/netbox/dcim/migrations/0001_squashed.py similarity index 99% rename from netbox/dcim/migrations/0001_initial.py rename to netbox/dcim/migrations/0001_squashed.py index 30f31b982a7..bb99d199fea 100644 --- a/netbox/dcim/migrations/0001_initial.py +++ b/netbox/dcim/migrations/0001_squashed.py @@ -18,6 +18,10 @@ class Migration(migrations.Migration): dependencies = [ ] + replaces = [ + ('dcim', '0001_initial'), + ] + operations = [ migrations.CreateModel( name='Cable', diff --git a/netbox/dcim/migrations/0002_auto_20160622_1821.py b/netbox/dcim/migrations/0002_squashed.py similarity index 99% rename from netbox/dcim/migrations/0002_auto_20160622_1821.py rename to netbox/dcim/migrations/0002_squashed.py index 7d8ed4dff31..a1b6db30a14 100644 --- a/netbox/dcim/migrations/0002_auto_20160622_1821.py +++ b/netbox/dcim/migrations/0002_squashed.py @@ -15,6 +15,10 @@ class Migration(migrations.Migration): ('tenancy', '0001_initial'), ] + replaces = [ + ('dcim', '0002_auto_20160622_1821'), + ] + operations = [ migrations.AddField( model_name='virtualchassis', diff --git a/netbox/extras/migrations/0001_initial.py b/netbox/extras/migrations/0001_squashed.py similarity index 99% rename from netbox/extras/migrations/0001_initial.py rename to netbox/extras/migrations/0001_squashed.py index 9b10f4a45f6..916dab7b446 100644 --- a/netbox/extras/migrations/0001_initial.py +++ b/netbox/extras/migrations/0001_squashed.py @@ -17,6 +17,10 @@ class Migration(migrations.Migration): ('contenttypes', '0002_remove_content_type_name'), ] + replaces = [ + ('extras', '0001_initial'), + ] + operations = [ migrations.CreateModel( name='Report', diff --git a/netbox/ipam/migrations/0001_initial.py b/netbox/ipam/migrations/0001_squashed.py similarity index 99% rename from netbox/ipam/migrations/0001_initial.py rename to netbox/ipam/migrations/0001_squashed.py index fe13dbf3a2e..17d2f812332 100644 --- a/netbox/ipam/migrations/0001_initial.py +++ b/netbox/ipam/migrations/0001_squashed.py @@ -19,6 +19,10 @@ class Migration(migrations.Migration): ('tenancy', '0001_initial'), ] + replaces = [ + ('ipam', '0001_initial'), + ] + operations = [ migrations.CreateModel( name='Aggregate',