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.toolLectures:
curl -X POST --header 'Content-Type: application/json' --data '{"course": "2DV50E"}' \
https://unitime.jherrlin.se/api/lectures/ | python -mjson.toolAll courses in a list:
curl -X GET --header 'Content-Type: application/json' \
https://unitime.jherrlin.se/api/courses/ | python -mjson.toolBy default this project is running Docker and docker-compose.
To start the development environment, enter the project directory and run the following:
docker-compose upPOST 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.ymlIf 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 bootstrapTo 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-dockerIf 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 rollbackNow, 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.201This 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