Bug 227416 - [NEW PORT] net-mgmt/netbox: IPAM and DCIM management tool
Summary: [NEW PORT] net-mgmt/netbox: IPAM and DCIM management tool
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Martin Wilke
URL: https://github.com/digitalocean/netbox
Keywords:
Depends on: 227032 227297 227310 227344 228229
Blocks:
  Show dependency treegraph
 
Reported: 2018-04-10 12:51 UTC by Kai Knoblich
Modified: 2018-05-26 18:06 UTC (History)
3 users (show)

See Also:


Attachments
netbox.shar (35.86 KB, text/plain)
2018-04-10 12:51 UTC, Kai Knoblich
no flags Details
updates py-djangorestframework to 3.8.1 (1.88 KB, patch)
2018-04-10 12:52 UTC, Kai Knoblich
no flags Details | Diff
Adds www/py-drf-yasg to the ports tree (3.21 KB, text/plain)
2018-04-10 12:53 UTC, Kai Knoblich
no flags Details
assigns www/py-django-cors-headers to Django 1.11 (464 bytes, patch)
2018-04-10 12:54 UTC, Kai Knoblich
no flags Details | Diff
assigns www/py-mptt to Django 1.11 (566 bytes, patch)
2018-04-10 12:54 UTC, Kai Knoblich
no flags Details | Diff
assigns www/py-django-js-asset to Django 1.11 (495 bytes, patch)
2018-04-10 12:55 UTC, Kai Knoblich
no flags Details | Diff
assigns www/py-django-tables2 to Django 1.11 (1.53 KB, patch)
2018-04-10 12:55 UTC, Kai Knoblich
no flags Details | Diff
netbox-v2.3.3.shar (36.67 KB, text/plain)
2018-05-22 17:02 UTC, Kai Knoblich
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kai Knoblich freebsd_committer 2018-04-10 12:51:23 UTC
Created attachment 192380 [details]
netbox.shar

Hello,

attached is the shar file of netbox, a IP address management (IPAM) and data
center infrastructure management (DCIM) tool. Some of the features:

- IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs
- Equipment racks - Organized by group and site
- Devices - Types of devices and where they are installed
- Connections - Network, console, and power connections among devices
- Virtualization - Virtual machines and clusters
- Data circuits - Long-haul communications circuits and providers
- Secrets - Encrypted storage of sensitive credentials
- Optional support for net-mgmt/py-napalm (Network automation) and LDAP


QA (combined with attached patches):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- poudriere (11.1-RELEASE amd64 + i386) -> OK
- portlint -> OK


Dependencies, that needs to be resolved beforehand:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- add the Django REST Framework 3.8.x to the ports tree (see also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227319)
- update py-django-tables2 (see also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227297)
- update py-markdown (see also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227310)

There are still a few ports that are bound to Django v1.8 at the moment and
should use Django v1.11 instead (if applicable):

- www/py-django-cors-headers
- www/py-django-mptt
- www/py-django-js-asset (see also: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227032) 

From my point of view there are at the moment two options to make netbox for FreeBSD available:

Option A:
- Separate PRs will be created for the affected Django packages
  www/py-django-cors-headers and py-django-mptt to bring those ports to Django
  v1.11 (if applicable)
- ETA: netbox could be available in the head ports tree to end of Q2

Option B:
- The porting of netbox will rely completely on the implementation for a
  default version of Django in combination with a new macro, e.g. "django" for USE_PYTHON. See also PRs (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222724 and https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227149)
- ETA: unknown  

I have not yet opened separate PRs for Option A as described above to reduce the noise in Bugzilla. I'll wait in that case for your feedback.

To test netbox anyway, I added some patches for your convenience. I'll
update/obsolete them when necessary in due course.

At last but not least: Netbox runs as a service, therefore it might be necessary to reserve an UID and GID for it.
Comment 1 Kai Knoblich freebsd_committer 2018-04-10 12:52:40 UTC
Created attachment 192381 [details]
updates py-djangorestframework to 3.8.1
Comment 2 Kai Knoblich freebsd_committer 2018-04-10 12:53:18 UTC
Created attachment 192382 [details]
Adds www/py-drf-yasg to the ports tree
Comment 3 Kai Knoblich freebsd_committer 2018-04-10 12:54:18 UTC
Created attachment 192383 [details]
assigns www/py-django-cors-headers to Django 1.11
Comment 4 Kai Knoblich freebsd_committer 2018-04-10 12:54:45 UTC
Created attachment 192384 [details]
assigns www/py-mptt to Django 1.11
Comment 5 Kai Knoblich freebsd_committer 2018-04-10 12:55:16 UTC
Created attachment 192385 [details]
assigns www/py-django-js-asset to Django 1.11
Comment 6 Kai Knoblich freebsd_committer 2018-04-10 12:55:41 UTC
Created attachment 192386 [details]
assigns www/py-django-tables2 to Django 1.11
Comment 7 Kai Knoblich freebsd_committer 2018-04-16 12:02:44 UTC
Comment on attachment 192386 [details]
assigns www/py-django-tables2 to Django 1.11

>diff -ruN py-django-tables2.orig/Makefile py-django-tables2/Makefile
>--- py-django-tables2.orig/Makefile	2017-11-30 16:50:30.000000000 +0100
>+++ py-django-tables2/Makefile	2018-04-10 13:39:27.020915000 +0200
>@@ -2,23 +2,23 @@
> # $FreeBSD: head/www/py-django-tables2/Makefile 455210 2017-11-30 15:50:30Z mat $
> 
> PORTNAME=	django-tables2
>-PORTVERSION=	1.2.9
>+DISTVERSION=	1.21.2
> CATEGORIES=	www python
> MASTER_SITES=	CHEESESHOP
> PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
> 
>-MAINTAINER=	kozlov.sergey.404@gmail.com
>+MAINTAINER=	freebsd_ports@k-worx.org
> COMMENT=	Table/data-grid framework for Django
> 
> LICENSE=	BSD2CLAUSE
> LICENSE_FILE=	${WRKSRC}/LICENSE
> 
>-RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django18>=0:www/py-django18@${FLAVOR} \
>+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django111>=0:www/py-django111@${FLAVOR} \
> 		${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${FLAVOR}
> 
> NO_ARCH=	yes
> 
> USES=		python
>-USE_PYTHON=	autoplist distutils
>+USE_PYTHON=	distutils autoplist
> 
> .include <bsd.port.mk>
>diff -ruN py-django-tables2.orig/distinfo py-django-tables2/distinfo
>--- py-django-tables2.orig/distinfo	2017-01-16 20:20:12.000000000 +0100
>+++ py-django-tables2/distinfo	2018-04-08 18:08:37.520161000 +0200
>@@ -1,3 +1,3 @@
>-TIMESTAMP = 1484091913
>-SHA256 (django-tables2-1.2.9.tar.gz) = bcc16718017a3b4eb2a2aec10f54695c1d0f41f4daf26f00659706759ec328ef
>-SIZE (django-tables2-1.2.9.tar.gz) = 1929912
>+TIMESTAMP = 1523203717
>+SHA256 (django-tables2-1.21.2.tar.gz) = c5c979201b7a2f7e88f2784dcd478e0c809d3a2053dea576cb71ce51676bbf7a
>+SIZE (django-tables2-1.21.2.tar.gz) = 2680587
Comment 8 Kai Knoblich freebsd_committer 2018-04-16 12:11:46 UTC
(In reply to Kai from comment #7)

Sorry for the full quote when I obsoleted the patch for www/py-django-tables2 . That patch has been added yesterday to the ports tree and is no longer needed in this PR (thanks to pi for committing it).

The Python package textproc/py-markdown has been also updated meanwhile (thanks to koobs for committing it). I ran new builds and both were fine:

poudriere (11.1-RELEASE amd64 + i386) -> OK
Comment 9 Kurt Jaeger freebsd_committer 2018-04-17 20:20:49 UTC
testbuilds@work
Comment 10 Kai Knoblich freebsd_committer 2018-04-17 20:45:31 UTC
Comment on attachment 192381 [details]
updates py-djangorestframework to 3.8.1

Django REST Framework v3.8.2 has been added to the ports tree so this patch is now obsolete.
Comment 11 Kai Knoblich freebsd_committer 2018-04-17 20:47:22 UTC
Comment on attachment 192382 [details]
Adds www/py-drf-yasg to the ports tree

www/py-drf-yasg has been also added to the ports tree so this patch is now obsolete. (thanks to @pi)
Comment 12 Kurt Jaeger freebsd_committer 2018-04-18 04:13:27 UTC
Testbuilds of netbox with those reassignments to django 1.11 are fine.

To be honest, I have no idea how those reassignments from django 1.8 to 1.11 relate to other ports. Can something break ? How would that be tested ?

I'll be traveling until sunday, so it has to wait a bit.
Comment 13 Kai Knoblich freebsd_committer 2018-04-18 10:09:01 UTC
(In reply to Kurt Jaeger from comment #12)

Thank you very much for the testbuilds, I'm positively surprised because I have not expected that this PR would come so far in such a short time and there's no hurry. A bit work is still needed to do before netbox can be added to the ports tree. 

An possible approach follows (option A from my initial comment in this PR) for the ports

- www/py-django-cors-headers
- www/py-django-mptt
- www/py-django-js-asset

and their respective dependencies that needs to be adjusted/updated.

At first here's an overview of the current situation (the dependendies that are not related/bound to Django were left out for the sake of brevity):

Dependencies with www/py-django-cors-headers:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For port www/py-django-cors-headers:

> www/py-django-annotations (TODO: assign to www/py-django111 and www/djangorestframework, upstream project seems stale...)
> |
> +--www/py-django-cors-headers (TODO: assign to www/py-django111)
> |
> +--www/py-djangorestframework36
> |
> +--devel/py-django-rq (TODO: assign to www/py-django111)
> |  |
> |  `--www/py-django18
> |
> `--devel/py-django-rq-dashboard (TODO: update to 0.3.3)
>    |
>    `--devel/py-django-rq

Proposed plan for www/py-django-cors-headers (1 or 2 patches) would be roughly:

1. update devel/py-django-rq-dashboard to 0.3.3 (requires maintainer feedback -> swills)
2. - change RUN_DEPENDS of devel/py-django-rq and www/py-django-cors-headers -> www/py-django111
   - change RUN_DEPENDS of www/py-django-annotations -> www/py-djangorestframework


Dependencies with www/py-django-mptt and www/py-django-js-asset:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

For port www/py-django-cms:

> www/py-django-cms (TODO: update to 3.5.2 and assign to www/py-django111)
> |
> +--www/py-django18 
> |
> +--www/py-django-classy-tags (TODO: assign to/py-django18)
> |     |
> |     `--www/py-django18
> |
> +--www/py-django-mptt  (TODO: assign to www/py-django111 and www/py-django-js-asset)
> |  |
> |  +--www/py-django18
> |  |
> |  `--www/py-django-js-asset (TODO: assign to www/py-django111)
> |     |
> |     `--www/py-django18
> |
> |
> `--www/py-django-sekizai (TODO: update to 0.10.0 and assign to www/py-django111)
>    |
>    +--devel/py-django18
>    |
>    `--www/py-django-classy-tags (TODO: assign to www/py-django18)
>       |
>       `--www/py-django18


For port www/py-django-dpaste:

> www/py-django-dpaste (TODO: update to 2.13a and assign to www/py-django111)
> |
> +--www/py-django18
> |
> `--www/py-django-mptt (TODO: assign to www/py-django111 and www/py-django-js-asset)
>    |
>    +--www/py-django18
>    |
>    `--www/py-django-js-asset (TODO: assign to www/py-django111)
>       |
>       `--www/py-django18


Proposed plan for www/py-django-cms and www/py-django-dpaste (one whole patch) would be roughly:

1. - update www/py-django-sekizai to 0.10.0 and change RUN_DEPENDS to www/py-django111 (requires maintainer feedback -> xenophon+fbsdports@irtnog.org)
   - change RUN_DEPENDS of www/py-django-classy-tags to www/py-django111
   - change RUN_DEPENDS of www/py-django-mptt to www/py-django111
   - change RUN_DEPENDS of www/py-django-js-asset to www/py-django111 and www/py-django-mptt
   - update www/py-django-cms to 3.5.2 and change RUN_DEPENDS to www/py-django111 (requires maintainer feedback -> cs)
   - update www/py-django-dpaste to 2.13a and change RUN_DEPENDS to www/py-django111 (requires maintainer feedback -> koobs)


If the whole approach sounds reasonable for all parties I would create the appropriate patches (and PRs, if required) for it.
Comment 14 Martin Wilke freebsd_committer 2018-05-08 00:25:43 UTC
Hi Kurt,

Any update from your side? I am looking forward to see this port landing.

Thanks.
Comment 15 Martin Wilke freebsd_committer 2018-05-11 14:32:09 UTC
Taking that over with approval from Kurt via Private Mail.
Comment 16 Kai Knoblich freebsd_committer 2018-05-21 16:11:16 UTC
Comment on attachment 192384 [details]
assigns www/py-mptt to Django 1.11

www/py-django-mptt has been reassigned to Django 1.11 in r470555 so this patch is now obsolete. 

Thanks to miwi@ and yuri@ .
Comment 17 Kai Knoblich freebsd_committer 2018-05-21 16:12:21 UTC
Comment on attachment 192385 [details]
assigns www/py-django-js-asset to Django 1.11

www/py-django-js-asset has been reassigned to Django 1.11 in r470555 so this patch is now obsolete. 

Thanks again to miwi@ and yuri@.
Comment 18 Kai Knoblich freebsd_committer 2018-05-22 17:02:31 UTC
Created attachment 193620 [details]
netbox-v2.3.3.shar

Meanwhile netbox has been updated to 2.3.3. Attached is the new shar file.

Changes to the port:
- improvements for the intructions given in the pkg-message file

QA (still with the patch applied for www/py-django-cors-headers):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- poudriere (11.1-RELEASE amd64 + i386) -> OK
- portlint -> OK
Comment 19 Kai Knoblich freebsd_committer 2018-05-24 13:18:00 UTC
Comment on attachment 192383 [details]
assigns www/py-django-cors-headers to Django 1.11

The remaining patch is no longer required since www/py-django-cors-headers has been switched to Django 1.11 in r470769 . Thanks to swills@ and rene@ !

QA (without any patches):
~~~~~~~~~~~~~~~~~~~~~~~~~
- poudriere (11.1-RELEASE amd64 + i386) -> OK
- portlint -> OK
Comment 20 Martin Wilke freebsd_committer 2018-05-26 18:06:17 UTC
Thank you all for the amazing team work, Committed Thanks!
Comment 21 commit-hook freebsd_committer 2018-05-26 18:06:43 UTC
A commit references this bug:

Author: miwi
Date: Sat May 26 18:06:30 UTC 2018
New revision: 470937
URL: https://svnweb.freebsd.org/changeset/ports/470937

Log:
  NetBox is an open source web application designed to help manage and document
  computer networks. Initially conceived by the network engineering team at
  DigitalOcean, NetBox was developed specifically to address the needs of network
  and infrastructure engineers. It encompasses the following aspects of network
  management:

  - IP address management (IPAM) - IP networks and addresses, VRFs, and VLANs
  - Equipment racks - Organized by group and site
  - Devices - Types of devices and where they are installed
  - Connections - Network, console, and power connections among devices
  - Virtualization - Virtual machines and clusters
  - Data circuits - Long-haul communications circuits and providers
  - Secrets - Encrypted storage of sensitive credentials

  WWW: https://github.com/digitalocean/netbox

  PR:		227416
  Submitted by:	freebsd_ports@k-worx.org
  Sponsored by:	iXsystems Inc.

Changes:
  head/net-mgmt/Makefile
  head/net-mgmt/netbox/
  head/net-mgmt/netbox/Makefile
  head/net-mgmt/netbox/distinfo
  head/net-mgmt/netbox/files/
  head/net-mgmt/netbox/files/pkg-message.in
  head/net-mgmt/netbox/pkg-descr
  head/net-mgmt/netbox/pkg-plist