nautobot 2.4.5__py3-none-any.whl → 2.4.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nautobot/core/api/mixins.py +10 -0
- nautobot/core/celery/encoders.py +2 -2
- nautobot/core/forms/fields.py +21 -5
- nautobot/core/forms/utils.py +1 -0
- nautobot/core/jobs/bulk_actions.py +1 -1
- nautobot/core/management/commands/generate_test_data.py +1 -1
- nautobot/core/models/name_color_content_types.py +9 -0
- nautobot/core/models/validators.py +7 -0
- nautobot/core/settings.py +0 -14
- nautobot/core/settings.yaml +0 -28
- nautobot/core/tables.py +6 -1
- nautobot/core/templates/generic/object_retrieve.html +1 -1
- nautobot/core/testing/api.py +18 -0
- nautobot/core/tests/nautobot_config.py +0 -2
- nautobot/core/tests/runner.py +17 -140
- nautobot/core/tests/test_api.py +4 -4
- nautobot/core/tests/test_authentication.py +83 -4
- nautobot/core/tests/test_forms.py +11 -8
- nautobot/core/tests/test_graphql.py +9 -0
- nautobot/core/tests/test_jobs.py +7 -0
- nautobot/core/ui/object_detail.py +31 -0
- nautobot/dcim/factory.py +2 -0
- nautobot/dcim/filters/__init__.py +5 -0
- nautobot/dcim/forms.py +17 -1
- nautobot/dcim/migrations/0068_alter_softwareimagefile_download_url.py +19 -0
- nautobot/dcim/migrations/0069_softwareimagefile_external_integration.py +25 -0
- nautobot/dcim/models/devices.py +9 -2
- nautobot/dcim/tables/devices.py +1 -0
- nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +4 -0
- nautobot/dcim/tests/test_api.py +74 -31
- nautobot/dcim/tests/test_filters.py +2 -0
- nautobot/dcim/tests/test_models.py +65 -0
- nautobot/dcim/tests/test_views.py +3 -0
- nautobot/extras/forms/forms.py +7 -3
- nautobot/extras/plugins/marketplace_manifest.yml +18 -0
- nautobot/extras/tables.py +4 -5
- nautobot/extras/templates/extras/inc/panel_changelog.html +1 -1
- nautobot/extras/templates/extras/inc/panel_jobhistory.html +1 -1
- nautobot/extras/templates/extras/status.html +1 -37
- nautobot/extras/tests/integration/test_notes.py +1 -1
- nautobot/extras/tests/test_api.py +22 -7
- nautobot/extras/tests/test_changelog.py +4 -4
- nautobot/extras/tests/test_customfields.py +3 -0
- nautobot/extras/tests/test_plugins.py +19 -13
- nautobot/extras/tests/test_relationships.py +9 -0
- nautobot/extras/tests/test_tags.py +2 -2
- nautobot/extras/tests/test_views.py +15 -6
- nautobot/extras/urls.py +1 -30
- nautobot/extras/views.py +10 -54
- nautobot/ipam/tables.py +6 -2
- nautobot/ipam/templates/ipam/namespace_retrieve.html +0 -41
- nautobot/ipam/templates/ipam/service.html +2 -46
- nautobot/ipam/templates/ipam/service_edit.html +1 -17
- nautobot/ipam/templates/ipam/service_retrieve.html +7 -0
- nautobot/ipam/tests/migration/__init__.py +0 -0
- nautobot/ipam/tests/migration/test_migrations.py +510 -0
- nautobot/ipam/tests/test_api.py +66 -36
- nautobot/ipam/tests/test_filters.py +0 -10
- nautobot/ipam/tests/test_views.py +44 -2
- nautobot/ipam/urls.py +2 -47
- nautobot/ipam/utils/migrations.py +185 -152
- nautobot/ipam/utils/testing.py +177 -0
- nautobot/ipam/views.py +95 -157
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +47 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +18 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +63 -0
- nautobot/project-static/docs/development/apps/api/testing.html +0 -87
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +1 -1
- nautobot/project-static/docs/development/core/best-practices.html +3 -3
- nautobot/project-static/docs/development/core/getting-started.html +78 -107
- nautobot/project-static/docs/development/core/release-checklist.html +1 -1
- nautobot/project-static/docs/development/core/style-guide.html +1 -1
- nautobot/project-static/docs/development/core/testing.html +24 -198
- nautobot/project-static/docs/media/user-guide/administration/getting-started/nautobot-cloud.png +0 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +1 -1
- nautobot/project-static/docs/release-notes/version-2.4.html +226 -1
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +290 -290
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +2 -48
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +71 -0
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +3 -1
- nautobot/project-static/docs/user-guide/administration/installation/index.html +257 -16
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +1 -1
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +2 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +4 -0
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +11 -11
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +8 -8
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +1 -0
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +40 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +4 -4
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +1 -1
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +77 -5
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +1 -1
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +0 -1
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -1
- nautobot/project-static/docs/user-guide/index.html +89 -2
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +207 -122
- nautobot/virtualization/forms.py +20 -0
- nautobot/virtualization/templates/virtualization/clustergroup.html +1 -39
- nautobot/virtualization/templates/virtualization/clustertype.html +1 -0
- nautobot/virtualization/tests/test_api.py +14 -3
- nautobot/virtualization/tests/test_views.py +10 -2
- nautobot/virtualization/urls.py +10 -93
- nautobot/virtualization/views.py +33 -72
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/METADATA +6 -5
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/RECORD +113 -108
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/WHEEL +1 -1
- nautobot/core/tests/performance_baselines.yml +0 -8900
- nautobot/ipam/tests/test_migrations.py +0 -462
- /nautobot/ipam/templates/ipam/{namespace_ipaddresses.html → namespace_ip_addresses.html} +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/NOTICE +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.6.dist-info}/entry_points.txt +0 -0
|
@@ -18,7 +18,7 @@ from nautobot.virtualization.models import (
|
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
|
21
|
+
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase, ViewTestCases.BulkEditObjectsViewTestCase):
|
|
22
22
|
model = ClusterGroup
|
|
23
23
|
|
|
24
24
|
@classmethod
|
|
@@ -30,8 +30,12 @@ class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
|
|
30
30
|
"description": "A new cluster group",
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
cls.bulk_edit_data = {
|
|
34
|
+
"description": "New description",
|
|
35
|
+
}
|
|
36
|
+
|
|
33
37
|
|
|
34
|
-
class ClusterTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
|
38
|
+
class ClusterTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase, ViewTestCases.BulkEditObjectsViewTestCase):
|
|
35
39
|
model = ClusterType
|
|
36
40
|
|
|
37
41
|
@classmethod
|
|
@@ -48,6 +52,10 @@ class ClusterTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
|
|
48
52
|
"description": "A new cluster type",
|
|
49
53
|
}
|
|
50
54
|
|
|
55
|
+
cls.bulk_edit_data = {
|
|
56
|
+
"description": "New description",
|
|
57
|
+
}
|
|
58
|
+
|
|
51
59
|
|
|
52
60
|
class ClusterTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
53
61
|
model = Cluster
|
nautobot/virtualization/urls.py
CHANGED
|
@@ -1,105 +1,20 @@
|
|
|
1
1
|
from django.urls import path
|
|
2
2
|
|
|
3
|
+
from nautobot.core.views.routers import NautobotUIViewSetRouter
|
|
3
4
|
from nautobot.extras.views import ObjectChangeLogView, ObjectDynamicGroupsView, ObjectNotesView
|
|
4
5
|
from nautobot.ipam.views import ServiceEditView
|
|
5
6
|
|
|
6
7
|
from . import views
|
|
7
|
-
from .models import Cluster,
|
|
8
|
+
from .models import Cluster, VirtualMachine, VMInterface
|
|
8
9
|
|
|
9
10
|
app_name = "virtualization"
|
|
11
|
+
|
|
12
|
+
router = NautobotUIViewSetRouter()
|
|
13
|
+
router.register("cluster-groups", views.ClusterGroupUIViewSet)
|
|
14
|
+
router.register("cluster-types", views.ClusterTypeUIViewSet)
|
|
15
|
+
|
|
16
|
+
|
|
10
17
|
urlpatterns = [
|
|
11
|
-
# Cluster types
|
|
12
|
-
path("cluster-types/", views.ClusterTypeListView.as_view(), name="clustertype_list"),
|
|
13
|
-
path(
|
|
14
|
-
"cluster-types/add/",
|
|
15
|
-
views.ClusterTypeEditView.as_view(),
|
|
16
|
-
name="clustertype_add",
|
|
17
|
-
),
|
|
18
|
-
path(
|
|
19
|
-
"cluster-types/import/",
|
|
20
|
-
views.ClusterTypeBulkImportView.as_view(), # 3.0 TODO: remove, unused
|
|
21
|
-
name="clustertype_import",
|
|
22
|
-
),
|
|
23
|
-
path(
|
|
24
|
-
"cluster-types/delete/",
|
|
25
|
-
views.ClusterTypeBulkDeleteView.as_view(),
|
|
26
|
-
name="clustertype_bulk_delete",
|
|
27
|
-
),
|
|
28
|
-
path(
|
|
29
|
-
"cluster-types/<uuid:pk>/",
|
|
30
|
-
views.ClusterTypeView.as_view(),
|
|
31
|
-
name="clustertype",
|
|
32
|
-
),
|
|
33
|
-
path(
|
|
34
|
-
"cluster-types/<uuid:pk>/edit/",
|
|
35
|
-
views.ClusterTypeEditView.as_view(),
|
|
36
|
-
name="clustertype_edit",
|
|
37
|
-
),
|
|
38
|
-
path(
|
|
39
|
-
"cluster-types/<uuid:pk>/delete/",
|
|
40
|
-
views.ClusterTypeDeleteView.as_view(),
|
|
41
|
-
name="clustertype_delete",
|
|
42
|
-
),
|
|
43
|
-
path(
|
|
44
|
-
"cluster-types/<uuid:pk>/changelog/",
|
|
45
|
-
ObjectChangeLogView.as_view(),
|
|
46
|
-
name="clustertype_changelog",
|
|
47
|
-
kwargs={"model": ClusterType},
|
|
48
|
-
),
|
|
49
|
-
path(
|
|
50
|
-
"cluster-types/<uuid:pk>/notes/",
|
|
51
|
-
ObjectNotesView.as_view(),
|
|
52
|
-
name="clustertype_notes",
|
|
53
|
-
kwargs={"model": ClusterType},
|
|
54
|
-
),
|
|
55
|
-
# Cluster groups
|
|
56
|
-
path(
|
|
57
|
-
"cluster-groups/",
|
|
58
|
-
views.ClusterGroupListView.as_view(),
|
|
59
|
-
name="clustergroup_list",
|
|
60
|
-
),
|
|
61
|
-
path(
|
|
62
|
-
"cluster-groups/add/",
|
|
63
|
-
views.ClusterGroupEditView.as_view(),
|
|
64
|
-
name="clustergroup_add",
|
|
65
|
-
),
|
|
66
|
-
path(
|
|
67
|
-
"cluster-groups/import/",
|
|
68
|
-
views.ClusterGroupBulkImportView.as_view(), # 3.0 TODO: remove, unused
|
|
69
|
-
name="clustergroup_import",
|
|
70
|
-
),
|
|
71
|
-
path(
|
|
72
|
-
"cluster-groups/delete/",
|
|
73
|
-
views.ClusterGroupBulkDeleteView.as_view(),
|
|
74
|
-
name="clustergroup_bulk_delete",
|
|
75
|
-
),
|
|
76
|
-
path(
|
|
77
|
-
"cluster-groups/<uuid:pk>/",
|
|
78
|
-
views.ClusterGroupView.as_view(),
|
|
79
|
-
name="clustergroup",
|
|
80
|
-
),
|
|
81
|
-
path(
|
|
82
|
-
"cluster-groups/<uuid:pk>/edit/",
|
|
83
|
-
views.ClusterGroupEditView.as_view(),
|
|
84
|
-
name="clustergroup_edit",
|
|
85
|
-
),
|
|
86
|
-
path(
|
|
87
|
-
"cluster-groups/<uuid:pk>/delete/",
|
|
88
|
-
views.ClusterGroupDeleteView.as_view(),
|
|
89
|
-
name="clustergroup_delete",
|
|
90
|
-
),
|
|
91
|
-
path(
|
|
92
|
-
"cluster-groups/<uuid:pk>/changelog/",
|
|
93
|
-
ObjectChangeLogView.as_view(),
|
|
94
|
-
name="clustergroup_changelog",
|
|
95
|
-
kwargs={"model": ClusterGroup},
|
|
96
|
-
),
|
|
97
|
-
path(
|
|
98
|
-
"cluster-groups/<uuid:pk>/notes/",
|
|
99
|
-
ObjectNotesView.as_view(),
|
|
100
|
-
name="clustergroup_notes",
|
|
101
|
-
kwargs={"model": ClusterGroup},
|
|
102
|
-
),
|
|
103
18
|
# Clusters
|
|
104
19
|
path("clusters/", views.ClusterListView.as_view(), name="cluster_list"),
|
|
105
20
|
path("clusters/add/", views.ClusterEditView.as_view(), name="cluster_add"),
|
|
@@ -266,3 +181,5 @@ urlpatterns = [
|
|
|
266
181
|
name="virtualmachine_bulk_add_vminterface",
|
|
267
182
|
),
|
|
268
183
|
]
|
|
184
|
+
|
|
185
|
+
urlpatterns += router.urls
|
nautobot/virtualization/views.py
CHANGED
|
@@ -4,18 +4,18 @@ from django.db.models import Prefetch
|
|
|
4
4
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
5
5
|
from django.urls import reverse
|
|
6
6
|
from django.utils.functional import cached_property
|
|
7
|
-
from django_tables2 import RequestConfig
|
|
8
7
|
|
|
9
8
|
from nautobot.core.ui import object_detail
|
|
10
9
|
from nautobot.core.ui.choices import SectionChoices
|
|
11
10
|
from nautobot.core.utils.requests import normalize_querydict
|
|
12
11
|
from nautobot.core.views import generic
|
|
13
|
-
from nautobot.core.views.
|
|
12
|
+
from nautobot.core.views.viewsets import NautobotUIViewSet
|
|
14
13
|
from nautobot.dcim.models import Device
|
|
15
14
|
from nautobot.dcim.tables import DeviceTable
|
|
16
15
|
from nautobot.extras.views import ObjectConfigContextView
|
|
17
16
|
from nautobot.ipam.models import IPAddress, Service
|
|
18
17
|
from nautobot.ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable, VRFDeviceAssignmentTable
|
|
18
|
+
from nautobot.virtualization.api import serializers
|
|
19
19
|
|
|
20
20
|
from . import filters, forms, tables
|
|
21
21
|
from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface
|
|
@@ -25,15 +25,15 @@ from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterf
|
|
|
25
25
|
#
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
class
|
|
28
|
+
class ClusterTypeUIViewSet(NautobotUIViewSet):
|
|
29
|
+
bulk_update_form_class = forms.ClusterTypeBulkEditForm
|
|
30
|
+
filterset_class = filters.ClusterTypeFilterSet
|
|
31
|
+
filterset_form_class = forms.ClusterTypeFilterForm
|
|
32
|
+
form_class = forms.ClusterTypeForm
|
|
33
|
+
serializer_class = serializers.ClusterTypeSerializer
|
|
34
|
+
table_class = tables.ClusterTypeTable
|
|
29
35
|
queryset = ClusterType.objects.all()
|
|
30
|
-
filterset = filters.ClusterTypeFilterSet
|
|
31
|
-
filterset_form = forms.ClusterTypeFilterForm
|
|
32
|
-
table = tables.ClusterTypeTable
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
class ClusterTypeView(generic.ObjectView):
|
|
36
|
-
queryset = ClusterType.objects.all()
|
|
37
37
|
object_detail_content = object_detail.ObjectDetailContent(
|
|
38
38
|
panels=(
|
|
39
39
|
object_detail.ObjectFieldsPanel(
|
|
@@ -48,79 +48,40 @@ class ClusterTypeView(generic.ObjectView):
|
|
|
48
48
|
table_filter="cluster_type",
|
|
49
49
|
exclude_columns=["cluster_type"],
|
|
50
50
|
),
|
|
51
|
-
)
|
|
51
|
+
)
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
class ClusterTypeEditView(generic.ObjectEditView):
|
|
56
|
-
queryset = ClusterType.objects.all()
|
|
57
|
-
model_form = forms.ClusterTypeForm
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class ClusterTypeDeleteView(generic.ObjectDeleteView):
|
|
61
|
-
queryset = ClusterType.objects.all()
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class ClusterTypeBulkImportView(generic.BulkImportView): # 3.0 TODO: remove, unused
|
|
65
|
-
queryset = ClusterType.objects.all()
|
|
66
|
-
table = tables.ClusterTypeTable
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class ClusterTypeBulkDeleteView(generic.BulkDeleteView):
|
|
70
|
-
queryset = ClusterType.objects.all()
|
|
71
|
-
table = tables.ClusterTypeTable
|
|
72
|
-
filterset = filters.ClusterTypeFilterSet
|
|
73
|
-
|
|
74
|
-
|
|
75
55
|
#
|
|
76
56
|
# Cluster groups
|
|
77
57
|
#
|
|
78
58
|
|
|
79
59
|
|
|
80
|
-
class
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
class ClusterGroupView(generic.ObjectView):
|
|
60
|
+
class ClusterGroupUIViewSet(NautobotUIViewSet):
|
|
61
|
+
bulk_update_form_class = forms.ClusterGroupBulkEditForm
|
|
62
|
+
filterset_class = filters.ClusterGroupFilterSet
|
|
63
|
+
filterset_form_class = forms.ClusterGroupFilterForm
|
|
64
|
+
form_class = forms.ClusterGroupForm
|
|
65
|
+
serializer_class = serializers.ClusterGroupSerializer
|
|
66
|
+
table_class = tables.ClusterGroupTable
|
|
88
67
|
queryset = ClusterGroup.objects.all()
|
|
89
68
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
class ClusterGroupEditView(generic.ObjectEditView):
|
|
107
|
-
queryset = ClusterGroup.objects.all()
|
|
108
|
-
model_form = forms.ClusterGroupForm
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
class ClusterGroupDeleteView(generic.ObjectDeleteView):
|
|
112
|
-
queryset = ClusterGroup.objects.all()
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
class ClusterGroupBulkImportView(generic.BulkImportView): # 3.0 TODO: remove, unused
|
|
116
|
-
queryset = ClusterGroup.objects.all()
|
|
117
|
-
table = tables.ClusterGroupTable
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
class ClusterGroupBulkDeleteView(generic.BulkDeleteView):
|
|
121
|
-
queryset = ClusterGroup.objects.all()
|
|
122
|
-
table = tables.ClusterGroupTable
|
|
123
|
-
filterset = filters.ClusterGroupFilterSet
|
|
69
|
+
object_detail_content = object_detail.ObjectDetailContent(
|
|
70
|
+
panels=(
|
|
71
|
+
object_detail.ObjectFieldsPanel(
|
|
72
|
+
weight=100,
|
|
73
|
+
section=SectionChoices.LEFT_HALF,
|
|
74
|
+
fields="__all__",
|
|
75
|
+
),
|
|
76
|
+
object_detail.ObjectsTablePanel(
|
|
77
|
+
weight=100,
|
|
78
|
+
section=SectionChoices.RIGHT_HALF,
|
|
79
|
+
table_class=tables.ClusterTable,
|
|
80
|
+
table_filter="cluster_group",
|
|
81
|
+
exclude_columns=["cluster_group"],
|
|
82
|
+
),
|
|
83
|
+
)
|
|
84
|
+
)
|
|
124
85
|
|
|
125
86
|
|
|
126
87
|
#
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nautobot
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.6
|
|
4
4
|
Summary: Source of truth and network automation platform.
|
|
5
5
|
Home-page: https://nautobot.com
|
|
6
6
|
License: Apache-2.0
|
|
7
7
|
Keywords: Nautobot
|
|
8
8
|
Author: Network to Code
|
|
9
9
|
Author-email: opensource@networktocode.com
|
|
10
|
-
Requires-Python: >=3.9,<3.13
|
|
10
|
+
Requires-Python: >=3.9.2,<3.13
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
19
|
Provides-Extra: all
|
|
20
20
|
Provides-Extra: ldap
|
|
21
21
|
Provides-Extra: mysql
|
|
@@ -29,6 +29,7 @@ Requires-Dist: Markdown (>=3.6,<3.7)
|
|
|
29
29
|
Requires-Dist: Pillow (>=11.0.0,<11.1.0)
|
|
30
30
|
Requires-Dist: PyYAML (>=6.0.2,<6.1.0)
|
|
31
31
|
Requires-Dist: celery (>=5.3.6,<5.4.0)
|
|
32
|
+
Requires-Dist: cryptography (>=44.0.2,<44.1.0)
|
|
32
33
|
Requires-Dist: django-ajax-tables (>=1.1.1,<1.2.0)
|
|
33
34
|
Requires-Dist: django-auth-ldap (>=5.1.0,<5.2.0) ; extra == "all" or extra == "ldap"
|
|
34
35
|
Requires-Dist: django-celery-beat (>=2.6.0,<2.7.0)
|
|
@@ -57,12 +58,12 @@ Requires-Dist: graphene-django (>=2.16.0,<2.17.0)
|
|
|
57
58
|
Requires-Dist: graphene-django-optimizer (>=0.8.0,<0.9.0)
|
|
58
59
|
Requires-Dist: jsonschema (>=4.7.0,<5.0.0)
|
|
59
60
|
Requires-Dist: kombu (>=5.4.2,<5.5.0)
|
|
60
|
-
Requires-Dist: kubernetes (>=32.0.
|
|
61
|
+
Requires-Dist: kubernetes (>=32.0.1,<33.0.0)
|
|
61
62
|
Requires-Dist: mysqlclient (>=2.2.7,<2.3.0) ; extra == "all" or extra == "mysql"
|
|
62
63
|
Requires-Dist: napalm (>=4.1.0,<6.0.0) ; extra == "all" or extra == "napalm"
|
|
63
64
|
Requires-Dist: netaddr (>=1.3.0,<1.4.0)
|
|
64
65
|
Requires-Dist: netutils (>=1.6.0,<2.0.0)
|
|
65
|
-
Requires-Dist: nh3 (>=0.2.
|
|
66
|
+
Requires-Dist: nh3 (>=0.2.21,<0.3.0)
|
|
66
67
|
Requires-Dist: packaging (>=23.1)
|
|
67
68
|
Requires-Dist: prometheus-client (>=0.20.0,<0.21.0)
|
|
68
69
|
Requires-Dist: psycopg2-binary (>=2.9.10,<2.10.0)
|