This is the new Unitime 2.0 branch.
It is still under development but it’s getting stable.
Course:
curl -X POST --header 'Content-Type: application/json' --data '{"course": "2DV50E"}' \
https://unitime.jherrlin.se/api/course/ | python -mjson.tool
Lectures:
curl -X POST --header 'Content-Type: application/json' --data '{"course": "2DV50E"}' \
https://unitime.jherrlin.se/api/lectures/ | python -mjson.tool
All courses in a list:
curl -X GET --header 'Content-Type: application/json' \
https://unitime.jherrlin.se/api/courses/ | python -mjson.tool
By default this project is running Docker
and docker-compose
.
To start the development environment, enter the project directory and run the following:
docker-compose up
POST http://localhost:8000/api/course/
User-Agent: Emacs Restclient
Content-Type: application/json
{
"course": "2DV50E"
}
{
"code": "2DV50E",
"name": "Degree Project at Bachelor Level",
"speed": "50%",
"points": "15 hp",
"syllabus": "http://api.kursinfo.lnu.se/GenerateDocument.ashx?templatetype=coursesyllabus&code=2DV50E&documenttype=pdf&lang=en"
}
POST http://localhost:8000/api/lectures/
User-Agent: Emacs Restclient
Content-Type: application/json
{
"course": "2DV50E"
}
[
{
"start_datetime": "2018-01-30T10:15:00",
"end_datetime": "2018-01-30T12:00:00",
"teacher": "Jesper Andersson",
"info": "Seminar",
"description": "",
"room": {
"name": "D1167",
"floor": null,
"lat": null,
"lon": null
}
},
...
{
"start_datetime": "2018-05-29T10:15:00",
"end_datetime": "2018-05-29T12:00:00",
"teacher": "Jesper Andersson",
"info": "Seminar",
"description": "",
"room": {
"name": "D1167",
"floor": 1,
"lat": 1.203,
"lon": 0.34530
}
}
]
GET http://localhost:8000/api/courses/
User-Agent: Emacs Restclient
Content-Type: application/json
[
{
"code": "5SP01E",
"name": "Master's Thesis in Spanish",
"speed": "50%",
"points": "30 hp",
"syllabus": "http://api.kursinfo.lnu.se/GenerateDocument.ashx?templatetype=coursesyllabus&code=5SP01E&documenttype=pdf&lang=en"
},
...
{
"code": "2SA606",
"name": "Vulnerability, conditions and interventions on individual, group and society level",
"speed": "100%",
"points": "15 hp",
"syllabus": "http://api.kursinfo.lnu.se/GenerateDocument.ashx?templatetype=coursesyllabus&code=2SA606&documenttype=pdf&lang=en"
}
]
To be able to use the application or deploy it you need to have Docker
and
docker-compose
. This instrictions are only for GNU/Linux systems. If you use
something else I am sure there are ways to translate the instruction to you OS.
Start a new Debian (yes it must be Debian) server somewhere. I mostly use digitalocean. Log in to the server first via SSH as it will ask you to set a new password for the root user.
to your local machine.
Navigate to the secrets folder within the project directory. Take a look at the files
and what they contains. Generate a new SSH key. Move the public key to ansible users
filder. This key will be used for deploy. If it asks you to overwrite the existing
file, choose y
. Dont enter a passphrase.
cd <PROJECTDIR>/secrets ssh-keygen -t ed25519 -f unitime-deploy-user -C unitime-deploy-user cp unitime-deploy-user.pub ../ansible/roles/users/files/authorized_keys
In secrets/inventory
you shall now update some secrets.
Change the ansible_ssh_host
variable to your servers IP.
Change the ansible_ssh_pass
variable to your server root password account.
In secrets/production.json
change:
unix->password
to a new random password
postgres->password
to a new random password
To configure the server run:
docker build -t unians:0.1 -f Dockerfile-ansible .
docker run -it -v $PWD:/app --rm -w /app/ansible unians:0.1 ansible-playbook -e @../secrets/production.json main.yml
If all things went fine (no red output).
This will apply the code from the project and start the services.
docker build -t unifab:0.1 -f Dockerfile-fabric .
docker run -it -v $PWD:/app --rm -w /app unifab:0.1 fab bootstrap
To update the application use the following to update it by specifying a branch.
docker build -t unifab:0.1 -f Dockerfile-fabric .
docker run -it -v $PWD:/app --rm -w /app unifab:0.1 fab deploy:branch=celery-docker
If a deploy fails you can do a rollback, this will rollback to the codebase that was before the deploy. This wont handle database rollbacks!
docker build -t unifab:0.1 -f Dockerfile-fabric .
docker run -it -v $PWD:/app --rm -w /app unifab:0.1 fab rollback
Now, try to access the API with a course
curl -i -X GET --header 'Content-Type: application/json' --data '{"course": "2DV50E"}' http://46.101.162.201/api/course/
If you are using Emacs orgmode restclient and reading this documentation from orgmode. Here is a src block for you:
GET http://46.101.162.201/api/course/
User-Agent: Emacs Restclient
Content-Type: application/json
{
"course": "2DV50E"
}
This will log you in to the server with the deploy
user.
cd <PROJECT>
ssh -i secrets/unitime-deploy-user deploy@46.101.162.201
This will log you in to the server with the root
user. You find the password in
secrets/inventory
. The default is: SERVERROOTPASSWORD
ssh root@46.101.162.201
- [ ] Server NTP time, Ansible
- [ ] SSL/TLS, Ansible
- [ ] Unattended updates, Ansible
- [ ] iptables, Ansible