Skip to content
No description, website, or topics provided.
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
hostpolicy Implement logging for hostpolicy module. Nov 8, 2019
mreg
mregsite
.coveragerc Ignore all migrations. Sep 20, 2019
.gitignore
.travis.yml No need to run coverage when we don't use it. Jan 6, 2020
API_hosts.md
API_zones.md Wrote more API specification Jun 24, 2018
LICENSE
README.md Add myself as author. Oct 28, 2019
local-docker-psql.MD Add citext to template1 database Nov 13, 2019
manage.py
requirements.txt Bump to Django 3 and only list what is needed. Jan 13, 2020
tox.ini Ignore some hostpolicy paths. Sep 20, 2019

README.md

mreg

mreg is an API (intended to be as RESTful as possible) for managing DNS. An associated project for a command line interface using the mreg API is available at: mreg-cli

Getting Started

Prerequisites

Fork the project from github. You need a terminal, python3, and access to a package manager that can install the necessary requirements from requirements.txt. We use pip.

Installing

A step by step series of examples that tell you how to get a development env running

When you've got your copy of the mreg directory, setup you virtual environment.

> python3 -m venv venv
> source venv/bin/activate

Then install the required packages

> pip install -r requirements.txt

Perform database migrations

> python manage.py migrate

Load sample data from fixtures into the now migrated database

> python manage.py loaddata mreg/fixtures/fixtures.json

And finally, run the server.

> python manage.py runserver

You should now be able to open up a browser and go to http://localhost:8000/hosts/ and see a list of hosts provided by the sample data. Or, you could perform a GET request to see the returned data.

> curl -X GET http://localhost:8000/hosts/
[{"name":"ns1.uio.no"},{"name":"ns2.uio.no"},{"name":"lucario.uio.no"},{"name":"stewie.uio.no"},{"name":"vepsebol.uio.no"}

Running the tests

To run the tests for the system, simply run

> python manage.py test

Built With

Additional modules

Logging

API Documentation

Local Settings

To override entries in mregsite/settings.py, create a file mregsite/local_settings.py and add the entries there. For example, the default database setup in settings.py uses sqlite3, but if you set up your postgres database you'll want to override this when testing. To to this, just add the following to your local_settings.py file:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mreg_sample',
        'USER': 'mreg_user',
        'PASSWORD': 'mregdbpass',
        'HOST': 'localhost',
    }
}

Contributing

Authors

  • Øyvind Hagberg
  • Øyvind Kolbu
  • Geir Ulvik
  • Nils Hiorth
  • Nicolay Mohebi
  • Magnus Hirth

License

This project is licensed under the GPL-3.0 License - see the LICENSE.md file for details

Acknowledgments

=================================================

Grunnlag for prosjektet:

Kravspec for MREG fra hostmaster

Spesifikasjon for Hostpolicy-modulen

Kort om dnsinfo ved USIT

Dokumentasjon(kravspesifikasjon):

API

Nyttige lenker:

Typer DNS-records

Setup av sample-database i postgres (tar utgangspunkt i Fedora og python3)

Trenger pakkene 'postgresql', 'postgresql-server', deretter initialiserer vi databaseclusteret og bygger sampledatabasen fra samples/sample_data_dump

  • Antar root
dnf update
dnf install postgresql postgresql-server
postgresql-setup --initdb
service postgresql start

Nå som postgresql er oppe og går, trenger vi å klone (ev. forke) git-repoet og sette opp databasen med psql

dnf install git
git clone git@github.com:usit-gd/mreg.git
cp mreg/samples/sample_data_dump /tmp
su - postgres
psql -f /tmp/sample_data_dump postgres

Etter at dette har kjørt, er det på tide å få på plass ymse django dependencies. I repoet ligger det en fil 'requirements.txt' som inneholder alle pakkene som trengs for å sette i gang. Før den filen kommer til nytte, må vi ha på plass en package-manager for python som kan lese den. Her bruker vi pip. I tillegg setter vi opp et virtual environment for python-pakkene, så de ikke interagerer med eventuelt andre pakker som må være installert på systemet. Det kan python3 selv sette opp med 'venv'-kommandoen sammen med -m flagget. Her legger vi virtual-environmentet i mappen 'venv' inni repoet.

dnf install python-pip
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt

For at django skal connecte til lokal database, og for å kunne gjøre testing lokalt uten å måtte gjøre endringer i djangos settings-filer, kan man opprette en fil 'local_settings.py' i mappen 'mregsite'. Djangos egen settings.py leter gjennom denne filen etter definisjoner som overskriver djangos egne. For å connecte til lokal database kan man legge inn følgende:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mreg_sample',
        'USER': 'mreg_user',
        'PASSWORD': 'mregdbpass',
        'HOST': 'localhost',
    }
}

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': 'mreg_sample',
#     }
# }

Den utkommenterte DATABASES definisjonen brukes gjerne for å kjøre tester når man endrer noe i datamodellene, så slipper man å kjøre migreringer til ekstern database etc. før man vet at det funker. For at django skal få connecta til databasen må vi inn i en config-fil og gjøre et par små endringer. I filen '/var/lib/pgsql/data/pg_hba.conf' må 'METHOD' for IPv4 og IPv6 local connections endres fra 'ident' til 'md5', slik at den bruke passordautentisering. (Linjene er i bunn av filen)

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

postgresql må restartes for at endringen skal tre i kraft

sudo service postgresql restart

Start django-serveren ved å kjøre

python manage.py runserver

psycopg2-pakken vil antagelig mase litt om en kommende rename. Det vil bli tatt høyde for senere. Du skal nå kunne gå til en browser og videre til http://localhost:8000/ressurs/ for å bl.a se på hva API'et har av info, der 'ressurs' er f.eks 'hosts' eller 'subnets'.

You can’t perform that action at this time.