by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 25 12:52

    anthonygego on fix_edit_audience

    (compare)

  • Sep 25 12:52

    anthonygego on master

    It seems that default behaviour… Merge pull request #572 from UC… (compare)

  • Sep 25 12:52
    anthonygego closed #572
  • Sep 25 12:23
    SuperLanceur commented #509
  • Sep 25 12:05
    Drumor review_requested #572
  • Sep 25 12:05
    Drumor opened #572
  • Sep 25 12:05

    Drumor on fix_edit_audience

    It seems that default behaviour… (compare)

  • Sep 24 15:27
    ogoletti opened #571
  • Sep 20 10:50
    jy95 opened #570
  • Sep 20 09:25
    zootos closed #438
  • Sep 15 12:44
    vvandenschrieck opened #569
  • Sep 14 14:23
    Drumor opened #568
  • Sep 14 14:23

    Drumor on dev_doc

    adding submission workflow expl… (compare)

  • Sep 11 08:20
    vvandenschrieck commented #567
  • Sep 11 08:19
    vvandenschrieck edited #567
  • Sep 11 08:16
    vvandenschrieck commented #566
  • Sep 11 07:34

    anthonygego on master

    Task: return correct fs (compare)

  • Sep 11 07:09

    anthonygego on master

    Pass taskfs to task problems (compare)

  • Sep 10 13:41
    anthonygego commented #566
  • Sep 10 12:54
    vvandenschrieck commented #566
Itamar Dori
@doriitamar
If you can provide any logs it'll be helpful :smile:
Shlomi Hod
@shlomihod
@doriitamar it didnt work
this is the httpd's error_log
[Sat Oct 21 21:46:45.705587 2017] [wsgi:error] [pid 2974] 2017-10-21 21:46:45,704 - inginious.agent.docker - ERROR - Cannot make con
tainer temp directory! [Errno 2] No such file or directory: './agent_tmp/tmp8xgohumt'
[Sat Oct 21 21:46:45.705597 2017] [wsgi:error] [pid 2974] Traceback (most recent call last):
[Sat Oct 21 21:46:45.705598 2017] [wsgi:error] [pid 2974]   File "/lib/python3.5/site-packages/inginious/agent/docker_agent.py", lin
e 327, in handle_new_job
[Sat Oct 21 21:46:45.705600 2017] [wsgi:error] [pid 2974]     container_path = tempfile.mkdtemp(dir=self.tmp_dir)
[Sat Oct 21 21:46:45.705602 2017] [wsgi:error] [pid 2974]   File "/lib64/python3.5/tempfile.py", line 368, in mkdtemp
[Sat Oct 21 21:46:45.705603 2017] [wsgi:error] [pid 2974]     _os.mkdir(file, 0o700)
[Sat Oct 21 21:46:45.705606 2017] [wsgi:error] [pid 2974] FileNotFoundError: [Errno 2] No such file or directory: './agent_tmp/tmp8x
gohumt'
this directory exists in /var/www/INGInious
Itamar Dori
@doriitamar
@shlomihod It seems that tmp_dir is still set to it's default value. I don't know how to assist you if the value is properly set in your configuration file, but try to verify that.
Shlomi Hod
@shlomihod

I made some progress, but still similar error:


[Mon Oct 23 06:30:16.049216 2017] [wsgi:error] [pid 851] 2017-10-23 06:30:16,048 - inginious.agent.docker - INFO - Received request for jobid (b'\\x00\\xe2UX\\xec', '1cb712d5-5d79-4cda-8c29-64321ab6220a')
[Mon Oct 23 06:30:16.050976 2017] [wsgi:error] [pid 851] 2017-10-23 06:30:16,049 - inginious.agent.docker - ERROR - Cannot make container temp directory! [Errno 13] Permission denied: '/var/www/INGInious/agent_tmp/tmp1qx06_7a'
[Mon Oct 23 06:30:16.050986 2017] [wsgi:error] [pid 851] Traceback (most recent call last):
[Mon Oct 23 06:30:16.050988 2017] [wsgi:error] [pid 851]   File "/lib/python3.5/site-packages/inginious/agent/docker_agent.py", line 327, in handle_new_job
[Mon Oct 23 06:30:16.050990 2017] [wsgi:error] [pid 851]     container_path = tempfile.mkdtemp(dir=self.tmp_dir)
[Mon Oct 23 06:30:16.050991 2017] [wsgi:error] [pid 851]   File "/lib64/python3.5/tempfile.py", line 368, in mkdtemp
[Mon Oct 23 06:30:16.050993 2017] [wsgi:error] [pid 851]     _os.mkdir(file, 0o700)
[Mon Oct 23 06:30:16.050996 2017] [wsgi:error] [pid 851] PermissionError: [Errno 13] Permission denied: '/var/www/INGInious/agent_tmp/tmp1qx06_7a'
[Mon Oct 23 06:30:16.050999 2017] [wsgi:error] [pid 851]

This one part from `configuration.yaml:

local-config:
    tmp_dir: /var/www/INGInious/agent_tmp

and this is the /var/www/INGInious permissions:

drwxrwxrwx.  2 apache apache     6 Oct 22 22:34 agent_tmp
-rw-r--r--.  1 apache apache   398 Oct 22 20:20 configuration.yaml
-rw-rw-r--.  1 apache apache 34520 Jan 19  2017 LICENSE
-rw-rw-r--.  1 apache apache   131 Jan 19  2017 README.rst
drwxrwxr-x. 12 apache apache   239 Jan 19  2017 tutorial
Any ideas?
Shlomi Hod
@shlomihod
It seems it was the SELinux in CentOS 7
Now I've put it in permissive instead of enforcing, I'll check in the future how I should allow access to this directory
Shlomi Hod
@shlomihod
@anthonygego There is any way to run INGInious as LTI and still to have access to the webapp as admin?
Daniel Castro Alvarado
@0xDCA

Hello,

Is there any way to get the information about memory consumption and time taken from something run with run_student? I'm not sure if I can just measure the memory consumption of the run_student process because of the sandboxing stuff done there

Anthony Gégo
@anthonygego
@shlomihod Yes, you can make both the apps share the same task folder and set up the course as not accessible in the webapp, it will remain remain accessible via LTI. If you want to manage the LTI users via the webapp interface, you can pull the latest master version, but it is not yet documented
@0xDCA All the processes use the same kernel so you should be able to monitor the process consumption as for any other process
Shlomi Hod
@shlomihod
@anthonygego thanks! another question: It seems that no grade is returned to moodle, any idea what might cause for that? or how should i debug it? tnx!
this is the error logs from the apache:
[Mon Oct 30 05:36:40.608000 2017] [wsgi:error] [pid 15401] Traceback (most recent call last):
[Mon Oct 30 05:36:40.608002 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/inginious/frontend/lti/lis_outcome_manager.py", line 59, in run
[Mon Oct 30 05:36:40.608004 2017] [wsgi:error] [pid 15401]     if lti.post_message(self._lti_consumers, consumer_key, service_url, xml):
[Mon Oct 30 05:36:40.608006 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/inginious/common/customlibs/pylti.py", line 231, in post_message
[Mon Oct 30 05:36:40.608019 2017] [wsgi:error] [pid 15401]     content_type,
[Mon Oct 30 05:36:40.608021 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/inginious/common/customlibs/pylti.py", line 198, in _post_patched_request
[Mon Oct 30 05:36:40.608023 2017] [wsgi:error] [pid 15401]     headers={'Content-Type': content_type})
[Mon Oct 30 05:36:40.608024 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/oauth2/__init__.py", line 687, in request
[Mon Oct 30 05:36:40.608026 2017] [wsgi:error] [pid 15401]     connection_type=connection_type)
[Mon Oct 30 05:36:40.608027 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/httplib2/__init__.py", line 1322, in request
[Mon Oct 30 05:36:40.608029 2017] [wsgi:error] [pid 15401]     (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
[Mon Oct 30 05:36:40.608031 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/httplib2/__init__.py", line 1072, in _request
[Mon Oct 30 05:36:40.608032 2017] [wsgi:error] [pid 15401]     (response, content) = self._conn_request(conn, request_uri, method, body, headers)
[Mon Oct 30 05:36:40.608034 2017] [wsgi:error] [pid 15401]   File "/lib/python3.5/site-packages/httplib2/__init__.py", line 995, in _conn_request
[Mon Oct 30 05:36:40.608035 2017] [wsgi:error] [pid 15401]     conn.connect()
[Mon Oct 30 05:36:40.608037 2017] [wsgi:error] [pid 15401]   File "/lib64/python3.5/http/client.py", line 849, in connect
[Mon Oct 30 05:36:40.608038 2017] [wsgi:error] [pid 15401]     (self.host,self.port), self.timeout, self.source_address)
[Mon Oct 30 05:36:40.608040 2017] [wsgi:error] [pid 15401]   File "/lib64/python3.5/socket.py", line 712, in create_connection
[Mon Oct 30 05:36:40.608041 2017] [wsgi:error] [pid 15401]     raise err
[Mon Oct 30 05:36:40.608043 2017] [wsgi:error] [pid 15401]   File "/lib64/python3.5/socket.py", line 703, in create_connection
[Mon Oct 30 05:36:40.608044 2017] [wsgi:error] [pid 15401]     sock.connect(sa)
[Mon Oct 30 05:36:40.608047 2017] [wsgi:error] [pid 15401] TimeoutError: [Errno 110] Connection timed out
cmneville
@cmneville
Hi, I am trying to figure out how I want to host my INGInious site. I initially tried private hosting from an old computer at my house but I would prefer to use offsite webhosting. Just wondering if anyone had any help for where I should go for webhosting services. I cannot find a webhosting service that allows root access through ssh which, unless I am mistaken, is required to install the dependencies for INGInious as well as the platform itself. Any ideas?
Daniel Castro Alvarado
@0xDCA
@cmneville: Have you tried Digital Ocean?
Daniel Castro Alvarado
@0xDCA
@anthonygego Hello again.
We are currently working on a "taskbank". The idea is that we can have some sort of reference tasks that teachers can use for their courses. We would like to implement it as a plugin. As we don't want to duplicate the task management UI, we plan to use some courses as banks, and implement a UI to query them effectively. I have some questions about this:
  1. Is a similar feature in your plans?
  2. We would like to tag each task. We could implement a separate UI, but we think it would be better if we could add a new tab to the task creation form. Currently, there is no hook to do this from a plugin. Do you plan to add this? We were thinking about adding hooks like this to the codebase, and maybe we could send a PR if that seems useful for the base project.
  3. Currently, both tasks and courses are read from the file system. This makes it harder to query them (by name or tags, for example), as we would have to fetch everything in memory (which would be potentially inefficient). Is the idea (in the long term) to keep all this data in the filesystem only? Or do you plan to move some information to the database? We could implement this from the plugin, but I think it would be useful to have some hooks that are called when a task or course is created, modified or deleted. Would this be useful for you too?
Arne
@Arnei
Hey there,
we're trying to set the INGInious webapp up, but ran into a weird problem. We've created a course with tasks, but when we login as a student, we cannot register for the course. The error message reads: "Registration failed. Please check that you properly typed the password.", but the course requires not password. We tried to make the course settings as lenient as possible (always open, no access control), to no avail. Any idea what might be wrong?
Some pictures to describe what we're seeing
alt
alt
Markus
@Kingmakke
In addition to the course problem mentioned above:
If we create a user in the configuration file with the role as a student everything works fine. The problem occurs with users that registered and activated an account via mail.
Ohad Perry
@ohadperry9_twitter
UCL-INGI/INGInious#263 please help in debugging
Arne
@Arnei
Ok, we managed to resolve our problem. Apparently having multiple different authentication plugins active can cause one of the plugins to behave weirdly. We removed the demo_auth plugin and now the db_auth plugin works fine.
cmneville
@cmneville
Hi there, I have gotten my server setup and I am now trying to configure SSL using letsencrypt and I am having a lot of trouble. Is there a specific way that I should be doing things to use SSL with INGInious?
Anthony Gégo
@anthonygego
@shlomihod you can get "connection timed out" error message if https/ssl is announced in the headers by the webserver but the port is closed in the firewall rules
@cmneville to use letsencrypt you should make sure that the /.well-known path is served statically by the webserver and not redirected to inginious-webapp. Once you have such a directory statically accessible through the web, installing letsencrypt should be a piece of cake. You'll probably want to setup an automatic certificate renewal afterwards
Anthony Gégo
@anthonygego
@0xDCA Yes we'll probably offer a problem bank in the future but this will probably be a in a separated codebase. Yes you can add hooks and make PRs. We'll probably accept such PRs very easily as this allows to add features without using a different codebase. We are still thinking about a new task format to avoid putting frontend-related stuff in yaml files but keep the common things to make them usable without the db and easily redistributable.
Anthony Gégo
@anthonygego
@Kingmakke Probably an exception raised somewhere. Are you able to register the student manually as admin ? Do you have any idea of the username, realname, email tuple for this user ? Did you setup several auth methods that could have led to username clash ?
OK it seems it was the case
Itamar Dori
@doriitamar
Hey! I've developed a (simple, as of yet) run file generator. I've published it on github, feel free to use and contribute! https://github.com/doriitamar/INGI-RunGenerator
Anthony Gégo
@anthonygego
@doriitamar Nice contribution ! :)
Tom Bell
@tstrokes
Has anyone run INGInious using nginx and uwsgi
Tom Bell
@tstrokes
Switch to apache so no need to answer about nginx and uwsgi. Is the lti launch URL still the same in version 0.5.
Switched*
I can seem to get it to work.
can't*
Anthony Gégo
@anthonygego
@tstrokes the docs are not yet updated for this version. I recommend you to read this : UCL-INGI/INGInious#272
James Robb
@jamesrobb
When will the next official release of INGinious come out?
Can someone expect what is in the master branch to work if they install it today?
Anthony Gégo
@anthonygego

@jamesrobb PR #275 will probably be merged before the release. There are no other big change planned for this. Documentation update will then be necessary as well as an update script. Actually, you can use what is in the master branch, but you'll face the following difficulties : docs are not updated and migration from v0.4 may be tricky.

First of all, to solve the potentiel username clash of two authentication methods and better integrate other methods, every user now has an INGInious account in database for which he can choose his/her username, and link this account to its authentication method login. If you did not use the database authentication method, want to keep current data and be sure v0.5 usernames will still match the v0.4 ones, you will have to create the user accounts in database with the appropriate binding. I will see If I can rewrite and publish the script I wrote for UCLouvain in order to make this process automatic.

Secondly, LTI has been integrated into the webapp. The launch URL is now : http[s]://your_hostname/lti/courseid/taskid and you have to put the key and secrets into the course settings. Users using INGInious trough LTI will have to bind their webapp account the first time. This binding is definitive for the student and there is still no way to delete this binding from the webapp interface. This should not be a common issue.

Thirdly, in case you're using it, SAML authentication method ACS link has changed, so you'll need to update the metadata at the IdP side...

Fourthly, tasks subproblem types has been renamed from 'multiple-choice' to 'multiple_choice', 'code-single-line' to 'code_single_line' and 'code-file' to 'file'. This can be changed easily using sed -i 's/old/new/g' **/**/task.yaml.

Eventually, submissions input are now stored in binary instead of base64, the update is currently made at the inginious-webapp startup, but can be stopped by some servers like uwsgi on heavy databases, which detect the update process as a non-responding script and do a timeout...

Anthony Gégo
@anthonygego
As long as the next version is not released, you will also need to build the base container manually
James Robb
@jamesrobb

@anthonygego when do you expect to next released to come out?

what is the new ACS link for SAML?

where do I find the necessary stuff to build the base container?

On an unrelated note too, it seems that the gitter link is no longer on the front page of the inginious site, nor on the github page. I think those looking for support might have a hard time finding this page.
Anthony Gégo
@anthonygego

@jamesrobb Probably by the end of the month. The new link to the ACS is /auth/callback/<auth_method_id>. Each auth plugin now require an id field in the configuration.yaml file. The base container files are available on Github in the base-containers folder. You can build them by using docker build -t ingi/inginious-c-base . in the base folder and so one for other containers.

The new inginious.org site is still under work. I'm putting back some additional info as soon as I can.

Tom Bell
@tstrokes
Can problems of type: code and type: multiple_choice be used in the same task?
James Robb
@jamesrobb

@anthonygego cool, I might just wait to install (again) when you actually release. We had an iffy debut at my university with inginious when I tried to do postgres containers (so each student would have an isolated instance of postgres to code against). Not sure if it was my setup or what, but the file system on my VM would fill up entirely with the docker storage layer files until there was no space left, and often the inginious messaging system for running containers would stop working.

I'm optimistic with a fresh VM and a new version I can do some proper testing and hopefully figure out what went wrong. We really like the inginious and are eager to have our students using it.

Anthony Gégo
@anthonygego
@tstrokes Yes, but you'll have to parse the multiple choice input inside the run script. It can be accessed as any other code problem.
Anthony Gégo
@anthonygego
@jamesrobb Was it the INGInious run containers that filled the docker storage ?