diff --git a/docs/dcim.md b/docs/dcim.md index 99fc31653..0b42cc6d9 100644 --- a/docs/dcim.md +++ b/docs/dcim.md @@ -59,12 +59,12 @@ Note that assignment of components from templates occurs only at the time of dev # Devices -Every piece of hardware which is installed within a rack exists in NetBox as a device. Devices are measured in rack units (U) and whether they are full depth. 0U devices which can be installed in a rack but don't consume vertical rack space (such as a vertically-mounted power distribution unit) can also be defined. +Every piece of hardware which is installed within a rack exists in NetBox as a device. Devices are measured in rack units (U) and depth. 0U devices which can be installed in a rack but don't consume vertical rack space (such as a vertically-mounted power distribution unit) can also be defined. + +When assigning a multi-U device to a rack, it is considered to be mounted in the lowest-numbered rack unit which it occupies. For example, a 3U device which occupies U8 through U10 shows as being mounted in U8. A device is said to be "full depth" if its installation on one rack face prevents the installation of any other device on the opposite face within the same rack unit(s). This could be either because the device is physically too deep to allow a device behind it, or because the installation of an opposing device would impede air flow. -Each device has a physical device type (make and model), which is discussed below. - ### Roles NetBox allows for the definition of arbitrary device roles by which devices can be organized. For example, you might create roles for core switches, distribution switches, and access switches. In the interest of simplicity, device can only belong to one device role. diff --git a/docs/getting-started.md b/docs/getting-started.md index 0ddccd2c9..08eb07e04 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -15,7 +15,7 @@ The following packages are needed to install PostgreSQL: * python-psycopg2 ``` -# apt-get install postgresql libpq-dev python-psycopg2 +# sudo apt-get install -y postgresql libpq-dev python-psycopg2 ``` ## Configuration @@ -61,7 +61,7 @@ NetBox requires following dependencies: * graphviz ``` -# apt-get install python2.7 python-dev git python-pip libxml2-dev libxslt1-dev libffi-dev graphviz +# sudo apt-get install -y python2.7 python-dev git python-pip libxml2-dev libxslt1-dev libffi-dev graphviz ``` You may opt to install NetBox either from a numbered release or by cloning the master branch of its repository on GitHub. @@ -90,13 +90,13 @@ Create the base directory for the NetBox installation. For this guide, we'll use If `git` is not already installed, install it: ``` -# sudo apt-get install git +# sudo apt-get install -y git ``` -Next, clone the NetBox git repository into the current directory: +Next, clone the **master** branch of the NetBox GitHub repository into the current directory: ``` -# git clone https://github.com/digitalocean/netbox.git . +# git clone -b master https://github.com/digitalocean/netbox.git . Cloning into '.'... remote: Counting objects: 1994, done. remote: Compressing objects: 100% (150/150), done. @@ -111,7 +111,7 @@ Checking connectivity... done. Install the necessary Python packages using pip. (If you encounter any compilation errors during this step, ensure that you've installed all of the required dependencies.) ``` -# pip install -r requirements.txt +# sudo pip install -r requirements.txt ``` ## Configuration @@ -166,6 +166,7 @@ You may use the script located at `netbox/generate_secret_key.py` to generate a Before NetBox can run, we need to install the database schema. This is done by running `./manage.py migrate` from the `netbox` directory (`/opt/netbox/netbox/` in our example): ``` +# cd /opt/netbox/netbox/ # ./manage.py migrate Operations to perform: Apply all migrations: dcim, sessions, admin, ipam, utilities, auth, circuits, contenttypes, extras, secrets, users @@ -234,7 +235,7 @@ If the test service does not run, or you cannot reach the NetBox home page, some We'll set up a simple HTTP front end using [gunicorn](http://gunicorn.org/) for the purposes of this guide. For web servers, we provide example configurations for both [nginx](https://www.nginx.com/resources/wiki/) and [Apache](http://httpd.apache.org/docs/2.4). (You are of course free to use whichever combination of HTTP and WSGI services you'd like.) We'll also use [supervisord](http://supervisord.org/) for service persistence. ``` -# apt-get install gunicorn supervisor +# sudo apt-get install -y gunicorn supervisor ``` ## nginx Configuration @@ -242,7 +243,7 @@ We'll set up a simple HTTP front end using [gunicorn](http://gunicorn.org/) for The following will serve as a minimal nginx configuration. Be sure to modify your server name and installation path appropriately. ``` -# apt-get install nginx +# sudo apt-get install -y nginx ``` Once nginx is installed, proceed with the following configuration: @@ -285,7 +286,11 @@ Restart the nginx service to use the new configuration. ``` ## Apache Configuration -The following configuration should work for Apache. Be sure to modify the `ServerName` appropriately. +``` +# sudo apt-get install -y apache2 +``` + +Once Apache is installed, proceed with the following configuration (Be sure to modify the `ServerName` appropriately): ``` @@ -321,7 +326,7 @@ Save the contents of the above example in `/etc/apache2/sites-available/netbox.c ## gunicorn Configuration -Save the following configuration file in the root netbox installation path (in this example, `/opt/netbox/`.) as `gunicorn_config.py`. Be sure to verify the location of the gunicorn executable (e.g. `which gunicorn`) and to update the `pythonpath` variable if needed. +Save the following configuration file in the root netbox installation path (in this example, `/opt/netbox/`) as `gunicorn_config.py`. Be sure to verify the location of the gunicorn executable (e.g. `which gunicorn`) and to update the `pythonpath` variable if needed. ``` command = '/usr/bin/gunicorn' @@ -357,10 +362,10 @@ Please keep in mind that the configurations provided here are bare minimums requ To add SSL support to the installation we'll start by installing the arbitrary precision calculator language. ``` -# sudo apt-get -y bc +# sudo apt-get install -y bc ``` -Next we'll clone Let’s Encrypt in to /opt +Next we'll clone Let's Encrypt into /opt/: ``` # sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index e9b2f9dac..65b6e77cb 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -326,10 +326,10 @@ class DeviceForm(forms.ModelForm, BootstrapMixin): display_field='display_name', attrs={'filter-for': 'position'} )) - position = forms.TypedChoiceField(required=False, empty_value=None, widget=APISelect( - api_url='/api/dcim/racks/{{rack}}/rack-units/?face={{face}}', - disabled_indicator='device', - )) + position = forms.TypedChoiceField(required=False, empty_value=None, + help_text="For multi-U devices, this is the lowest occupied rack unit.", + widget=APISelect(api_url='/api/dcim/racks/{{rack}}/rack-units/?face={{face}}', + disabled_indicator='device')) manufacturer = forms.ModelChoiceField(queryset=Manufacturer.objects.all(), widget=forms.Select(attrs={'filter-for': 'device_type'})) device_type = forms.ModelChoiceField(queryset=DeviceType.objects.all(), label='Model', widget=APISelect( diff --git a/netbox/ipam/fields.py b/netbox/ipam/fields.py index d8478e980..098f753c9 100644 --- a/netbox/ipam/fields.py +++ b/netbox/ipam/fields.py @@ -10,7 +10,13 @@ from .lookups import ( ) +def prefix_validator(prefix): + if prefix.ip != prefix.cidr.ip: + raise ValidationError("{} is not a valid prefix. Did you mean {}?".format(prefix, prefix.cidr)) + + class BaseIPField(models.Field): + default_validators = [prefix_validator] def python_type(self): return IPNetwork diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index fed0c2fd7..7e4a22378 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -11,7 +11,7 @@ except ImportError: "the documentation.") -VERSION = '1.0.6' +VERSION = '1.0.7' # Import local configuration for setting in ['ALLOWED_HOSTS', 'DATABASE', 'SECRET_KEY']: diff --git a/netbox/templates/_base.html b/netbox/templates/_base.html index 1d5fa1ad5..bb6d8bd8f 100644 --- a/netbox/templates/_base.html +++ b/netbox/templates/_base.html @@ -13,9 +13,16 @@