Need help upgrading from Indico 0.98

Hello,

My name is Rafael Perez and I am the Indico admin at Brookhaven National Lab. We are running Indico version 0.98: https://indico.bnl.gov

With the 2.0 (stable) release of Indico we would like to upgrade to the latest version. As I understand it, we would have to upgrade to version 1.2 before migrating to 2.0.

I have set up a test indico server that is a copy of our production instance. On the test system, I am trying to test the upgrade process from 0.98 -> 1.2 following the instructions here: https://getindico.io/legacy-docs/wiki/Admin/Installation1.html
and here: https://getindico.io/legacy-docs/wiki/Releases/Indico1-2.html#Download

When running the following easy_install command, the installer fails to find a suitable distribution for indico==1.2.2 (?). Here is the output:

[root@indico-test indico-1.2.0]# easy_install 'indico==1.2.2'
Searching for indico==1.2.2
Reading http://pypi.python.org/simple/indico/
Couldn't retrieve index page for 'indico'
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
No local packages or download links found for indico==1.2.2
error: Could not find suitable distribution for Requirement.parse('indico==1.2.2')

I then manually downloaded indico-1.2.2.tar.gz (from http://pypi.python.org/simple/indico/), extracted and ran ā€˜python setup.py installā€™. This started to compile and copy the various components until it reached the hiredis package. Here is that error:

...
Installed /usr/lib/python2.6/site-packages/indico-1.2.2-py2.6.egg
Processing dependencies for indico==1.2.2
Searching for hiredis==0.1.3
Reading https://github.com/indico/indico-fonts/releases/
Reading http://pypi.python.org/simple/hiredis/
Couldn't find index page for 'hiredis' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
No local packages or download links found for hiredis==0.1.3
error: Could not find suitable distribution for Requirement.parse('hiredis==0.1.

Now, when I run easy_install 'indico==1.2.2', I receive the same error during the installation:

[root@indico-test opt]# easy_install 'indico==1.2.2'
Searching for indico==1.2.2
Best match: indico 1.2.2
Processing indico-1.2.2-py2.6.egg
indico 1.2.2 is already the active version in easy-install.pth
Installing indico_ctl script to /usr/bin
Installing indico_admin script to /usr/bin
Installing indico_shell script to /usr/bin
Installing indico_livesync script to /usr/bin
Installing indico_initial_setup script to /usr/bin
Installing indico_scheduler script to /usr/bin

Using /usr/lib/python2.6/site-packages/indico-1.2.2-py2.6.egg
Processing dependencies for indico==1.2.2
Searching for hiredis==0.1.3
Reading https://github.com/indico/indico-fonts/releases/
Reading http://pypi.python.org/simple/hiredis/
Couldn't find index page for 'hiredis' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
No local packages or download links found for hiredis==0.1.3
error: Could not find suitable distribution for Requirement.parse('hiredis==0.1.3')

Any help would be greatly appreciated.

Thanks,
Rafael

TL;DR: Working commands are down there at ā€œSo, letā€™s try installing it from Gitā€.

Looks like easy_install broke when PyPI switched to SSL-only (itā€™s a legacy tool that usually nobody should be using anymore).

I just played around a bit in a CentOS6 docker container and the Python packaging infrastructure seems to be utterly broken on 2.6 - but this makes sense, since Python 2.6 has reached EOL quite some time ago, the core utilities (like setuptools and pip) are dropping support for it, and the only thing that keeps it from being completely dead is some enterprise distributions still supporting it - and usually when you use 2.6 or older there, you donā€™t use the Python package infrastructure but just install packages using your OSā€™ package manager.

My recommendation would be to use a less ancient system (e.g. CentOS 7). Even if itā€™s just a temporary test machine to do the migration, you will save yourself lots of headaches that way.

My approach (inside a centos 7 docker container) was this, and it initially looked good

yum install -y python-virtualenv
virtualenv /tmp/indico-env
source /tmp/indico-env/bin/activate
pip install -U setuptools pip distribute
pip install indico==1.2.2

Unfortunately one of our legacy dependencies is broken beyond repair: cssmin-0.1.4 pulls in an ancient version of distribute that hardcodes a http:// URL for PyPI - but PyPI switched to SSL-only some time ago, so it simply doesnā€™t work anymore. So, back to installing the archive manually:

yum install -y python-virtualenv wget gcc libxml2-devel libxslt-devel
virtualenv /tmp/indico-env
source /tmp/indico-env/bin/activate
pip install -U setuptools pip distribute
wget https://pypi.python.org/packages/ef/07/b8307e72a251e6080fdadf9aa8fea91d11f4a7d426aac40531337386dcf6/indico-1.2.2.tar.gz
tar xvzf indico-1.2.2.tar.gz
cd indico-1.2.2
sed -i -E "s/cssmin==.*/cssmin/" requirements.txt
pip install .

By patching requirements.txt we install the latest cssmin version which does not install the broken distribute version - and since Indico 1.2 is only needed to migrate the 0.98 database to 1.2, it doesnā€™t really matter which version it is since you will (hopefully) never run that old Indico version but just take its migrated database and go straight to 2.0.

Butā€¦ while all the commands succeed, indico_initial_setup will fail because pip does not install some of the example files since they are outside the package, and nowadays Python packages should not install non-package files (I think there were already some issues with installing legacy indico using pip in the past).

So, letā€™s try installing it from Git:

yum install -y python-virtualenv git gcc libxml2-devel libxslt-devel
virtualenv /tmp/indico-env
source /tmp/indico-env/bin/activate
pip install -U setuptools pip distribute
git clone https://github.com/indico/indico/
cd indico
git checkout v1.2.2
sed -i -E "s/cssmin==.*/cssmin/" requirements.txt
pip install -r requirements.txt
python setup.py develop_config

When asked where to install it, provide e.g. /opt/indico. After that you can edit/create/copy the config files in ./etc/, then start ZODB with zdaemon -C ./etc/zdctl.conf start and then hopefully run the migration with python ./bin/migration/migrate.py --prev-version 0.98

1 Like

Thanks for the detailed response. I have something to work with now. Iā€™m going to stand up a RHEL7 VM and port the current version of Indico over to that to test the migration to 1.2.

Question- what is the best way to copy Indico without breaking it from RHEL6 -> RHEL7? Would copying over /opt/indico and the apache configs work? Iā€™ll try to do this now.

Rafael

You donā€™t need to copy anything besides the database (/opt/indico/db/Data.fs) and the materials (/opt/indico/archive). You could copy the config files as well to save some time (/opt/indico/etc/{indico,zodb,zdctl}.conf) though.

Eventually, to update from 1.2 to 2.0, you only need the archive folder and Data.fs.

Hi,

I have indico 1.2.2 installed following your instructions (installed from Git). So, Iā€™m up to the point where I start ZODB and attempt the migration to 1.2. When I try to start ZODB with ā€˜zdaemon -C ./etc/zdctl.conf startā€™, Iā€™m receiving the following permission error:

(indico-env)[root@indico-test indico]# zdaemon -C ./etc/zdctl.conf start
. Traceback (most recent call last):
  File "/tmp/indico-env/bin/zdaemon", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3147, in <module>
    @_call_aside
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3131, in _call_aside
    f(*args, **kwargs)
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3175, in _initialize_master_working_set
    for dist in working_set
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3175, in <genexpr>
    for dist in working_set
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2699, in activate
    for pkg in self._get_metadata('namespace_packages.txt'):
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2689, in _get_metadata
    for line in self.get_metadata_lines(name):
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1497, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1493, in get_metadata
    value = self._get(self._fn(self.egg_info, name))
  File "/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1605, in _get
    with open(path, 'rb') as stream:
IOError: [Errno 13] Permission denied: '/tmp/indico-env/lib/python2.7/site-packages/zc.queue-1.3-py2.7.egg/EGG-INFO/namespace_packages.txt'
. . . . . . . . . . 
daemon manager not running

Any ideas?

Thanks!
Rafael

That package has some very broken permissions which are preserved when installing it; this command should fix it:

chmod -R 755 /tmp/indico-env/lib/python2.7/site-packages/zc.queue-1.3-py2.7.egg

Ok, I got passed that error. Here is another one:

(indico-env)[root@indico-test indico]# zdaemon -C ./etc/zdctl.conf start
. Traceback (most recent call last):
  File "/tmp/indico-env/bin/zdaemon", line 11, in <module>
    load_entry_point('zdaemon', 'console_scripts', 'zdaemon')()
  File "/tmp/indico-env/lib/python2.7/site-packages/zdaemon-3.0.5-py2.7.egg/zdaemon/zdctl.py", line 610, in main
    return zdaemon.zdrun.main(args)
  File "/tmp/indico-env/lib/python2.7/site-packages/zdaemon-3.0.5-py2.7.egg/zdaemon/zdrun.py", line 699, in main
    d.main(args)
  File "/tmp/indico-env/lib/python2.7/site-packages/zdaemon-3.0.5-py2.7.egg/zdaemon/zdrun.py", line 227, in main
    self.run()
  File "/tmp/indico-env/lib/python2.7/site-packages/zdaemon-3.0.5-py2.7.egg/zdaemon/zdrun.py", line 231, in run
    self.opensocket()
  File "/tmp/indico-env/lib/python2.7/site-packages/zdaemon-3.0.5-py2.7.egg/zdaemon/zdrun.py", line 253, in opensocket
    sock.bind(tempname)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied
. . . . . . . . . . 
daemon manager not running

My guess is that the directory where your ZODB Data.fs is is not writable; Iā€™d check that.

Ok, I was able to get past the permission errors and start ZODB. The latest was fixed by changing the user from apache to root in the zdctl.conf:

[root@indico-test etc]# cat zdctl.conf
<runner>
  program       runzeo -C /opt/indico/etc/zodb.conf
  user		root
  daemon        true
  directory     /opt/indico/db
  socket-name   /opt/indico/db/zdsock
</runner>
<environment>
  PYTHON_EGG_CACHE /opt/indico/tmp/egg-cache
</environment>

Iā€™m running the migration script now.

Thanks for your help so far!
Rafael

Update: I kicked off the migration script and it seems to be stuck at this point:

(indico-env)[root@indico-test indico]# python ./bin/migration/migrate.py --prev-version 0.98
/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py:193: RuntimeWarning: You have iterated over the result of pkg_resources.parse_version. This is a legacy behavior which is inconsistent with the new version class introduced in setuptools 8.0. In most cases, conversion to a tuple is unnecessary. For comparison of versions, sort the Version instances directly. If you have another use case requiring the tuple, please file a bug with the setuptools project describing that need.
  stacklevel=1,

This script will migrate your Indico DB to a new version. We recommend that
this operation be executed while the web server is down, in order to avoid
concurrency problems and DB conflicts.


Are you sure you want to execute the migration now? [y/N] y

Executing migration...

Probing DB connection... DONE!

# Reloading all plugins (0.97)
  DONE

# Create category date index without visibility. (0.98.1)
  DONE

# Initializing/updating index catalog (0.98b)

I can see some db connection errors in /opt/indico/log/other.log:

[root@indico-test log]# tail other.log
2018-01-25 15:50:25,451 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:25,451 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:25,452 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:25,453 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-25 15:50:55,474 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-25 15:50:55,475 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-25 15:50:55,476 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:55,477 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:55,477 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-25 15:50:55,478 ZEO.zrpc        : WARNING  - (32562) CW: error connecting to ('::1', 9676): ECONNREFUSED

Is your ZODB still running? If the database crashed for some reason this would explain why it just hands (ZODB is quite bad and if the DB is not running it hangs forever instead of quickly throwing an error)

It does appear to be running. According to output above, the pid should be 32552 on my server:

[root@indico-test log]# ps -ef|grep 32552
root     32552 32550  0 15:17 ?        00:00:10 /tmp/indico-env/bin/python /tmp/indico-env/bin/runzeo -C /opt/indico/etc/zodb.conf
root     32706 31959  0 16:02 pts/1    00:00:00 grep --color=auto 32552

Should I kill and restart?

Yesā€¦ letā€™s try that.

BTW, when posting shell output, errors, etc. here please wrap them in triple-backtick fences for monospace formatting:

```
stuff here
more stuff
```

Ok, thanks for the tip (I was wondering how to do that).

I killed and restarted ZODB but the migration script still seems stuck and the ECONNREFUSED errors are still showing up in the /opt/indico/log/other.log.

[root@indico-test log]# kill 32552
[root@indico-test log]# ps -ef|grep 32552
root     32716 31959  0 16:09 pts/1    00:00:00 grep --color=auto 32552

[root@indico-test indico]# source /tmp/indico-env/bin/activate
(indico-env)[root@indico-test indico]# which zdaemon 
/tmp/indico-env/bin/zdaemon
(indico-env)[root@indico-test indico]# zdaemon -C ./etc/zdctl.conf start
. 
daemon process started, pid=32738

The original migration script is still running in a separate shell (stuck at the same spot). Should I kill that and restart too?

Yes, you need to restart the migration script as well, and most likely also use a backup of Data.fs (make sure zodb is stopped when copying the backup file) since it may be inconsistent after running a migration script just halfway.

Also, while your DB is probably small and the migration script should not take very long, you could keep it running for a bit longer the next time in case it does take long for whatever reason.

Hello,
Here is an update:

I stopped zodb and killed the migration script from my first attempt. I deleted everything under /opt/indico/db and copied the database (Data.fs) over from the production instance again. I restarted the DB and tried running the migration script again. It seems to be stuck in the exact same spot and Iā€™m seeing repeated ā€œECONNREFUSEDā€ errors in /opt/indico/log/other.log. Apparently, this is the only log file that is being touched right now. Itā€™s been about 10-15 minutes and no progress. Note that I waited about 45 minutes the first time with the same result. I do see the DB is still running.

(indico-env)root@indico-test indico # python ./bin/migration/migrate.py --prev-version 0.98
/tmp/indico-env/lib/python2.7/site-packages/pkg_resources/__init__.py:193: RuntimeWarning: You have iterated over the result of pkg_resources.parse_version. This is a legacy behavior which is inconsistent with the new version class introduced in setuptools 8.0. In most cases, conversion to a tuple is unnecessary. For comparison of versions, sort the Version instances directly. If you have another use case requiring the tuple, please file a bug with the setuptools project describing that need.
  stacklevel=1,

This script will migrate your Indico DB to a new version. We recommend that
this operation be executed while the web server is down, in order to avoid
concurrency problems and DB conflicts.


Are you sure you want to execute the migration now? [y/N] y

Executing migration...

Probing DB connection... DONE!

# Reloading all plugins (0.97)
  DONE

# Create category date index without visibility. (0.98.1)
  DONE

# Initializing/updating index catalog (0.98b)

(indico-env)root@indico-test indico # ls -ltr log
total 524
-rw-r--r--. 1 root root   3066 Jan 26 13:44 zeo.log
-rw-r--r--. 1 root root   4492 Jan 26 13:51 indico.log
-rw-r--r--. 1 root root 508151 Jan 26 14:06 other.log

(indico-env)root@indico-test indico # tail log/other.log
2018-01-26 14:06:14,826 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-26 14:06:14,826 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-26 14:06:14,827 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-26 14:06:14,827 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-26 14:06:44,858 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-26 14:06:44,858 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-26 14:06:44,858 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('::1', 9676): ECONNREFUSED
2018-01-26 14:06:44,859 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-26 14:06:44,859 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('127.0.0.1', 9676): ECONNREFUSED
2018-01-26 14:06:44,859 ZEO.zrpc        : WARNING  - (4389) CW: error connecting to ('::1', 9676): ECONNREFUSED

Can you post the contents of the two zodb config files?

Sure thing.

(indico-env)root@indico-test indico # cat etc/zodb.conf
<zeo>
address localhost:9675
monitor-address localhost:8091
</zeo>

<filestorage 1>
path /opt/indico/db/Data.fs
</filestorage>

<eventlog>
<logfile>
path /opt/indico/log/zeo.log
format %(asctime)s %(message)s
</logfile>
</eventlog>

(indico-env)root@indico-test indico # cat etc/zdctl.conf
<runner>
  program       runzeo -C /opt/indico/etc/zodb.conf
  user          root
  daemon        true
  directory     /opt/indico/db
  socket-name   /opt/indico/db/zdsock
</runner>
<environment>
  PYTHON_EGG_CACHE /opt/indico/tmp/egg-cache
</environment>

Are you using port 9676 somewhere in your indico.conf instead of 9675 which is used by your ZODB?

I just checked the indico.conf and 9676 is not used or set anywhere in the file. Here is the indico.conf file:

(indico-env)[root@indico-test indico]# cat etc/indico.conf

#--------------------------
# Indico configuration file
#--------------------------
#
# This file is read on Apache startup. If you change any value you will need to
# restart Apache afterwards to have its changes take effect.
#
# Lines starting with "#" are comments and they will be ignored by Indico.

#------------------------------------------------------------------------------
# ZODB
#------------------------------------------------------------------------------

DBConnectionParams   = ('localhost', 9675)
DBUserName           = ""
DBPassword           = ""
DBRealm              = ""


#------------------------------------------------------------------------------
# SECURITY
#------------------------------------------------------------------------------
# Possible values of SanitizationLevel:
#    0: Escape all HTML tags
#    1: Raise error if styles are used
#    2: Raise error if SCRIPT tag is used
#    3: No input filtering is done (DANGEROUS!)

SanitizationLevel    = 2

# AuthenticatedEnforceSecure controls whether HTTPS should be enforced for
# authentication and while logged in.
AuthenticatedEnforceSecure = "yes"


#------------------------------------------------------------------------------
# URLs
#------------------------------------------------------------------------------
# BaseURL is the url where Indico will be accessed:

BaseURL              = "https://indico-test.bnl.gov"

# BaseSecureURL is the HTTPS location of Indico. Set empty string if you want to use http.

BaseSecureURL        = "https://indico-test.bnl.gov"


# If you are using a custom user authentication system (see below) uncomment
# the following lines and specify the new URLs.
#
#   LoginURL             = ""
#   RegistrationURL      = ""


# You can use "fancy" URLs when giving out links to Indico's events and
# categories. The format of the final links must be:
#
#   BaseURL + ShortEventTag + Event Id
#   BaseURL + ShortEventTag + Category Id
#
# For example if a conference id is 5, your BaseURL is
# http://example.com/ and you specify ShortEventTag = "/event/" then you can
# use the url http://example.com/event/5 to access the conference.
#
# ShortEventTag and ShortCategTag _must_ be different, they must contain only
# alphanumeric characters and they need to end with a forward slash.
#
ShortEventTag        = "event/"
ShortCategTag        = "categ/"


#------------------------------------------------------------------------------
# DIRECTORIES
#------------------------------------------------------------------------------
ArchiveDir           = "/opt/indico/archive"
BinDir               = "/opt/indico/bin"
ConfigurationDir     = "/opt/indico/etc"
DocumentationDir     = "/opt/indico/doc"
HtdocsDir            = "/opt/indico/htdocs"
LogDir               = "/opt/indico/log"
UploadedFilesTempDir = "/opt/indico/tmp"
XMLCacheDir          = "/opt/indico/cache"
# You can use 'memcached' or 'files'. The files backend caches objects in
# XMLCacheDir while the Memcached backend uses one or more memcached servers
#CacheBackend         = 'files'
# When using memcached, provide a tuple containing 'ip:port' entries for the
# memcached servers. Do not forget to firewall those servers as memcached has no
# authentication at all!
#MemcachedServers     = ('127.0.0.1:11211',)

#------------------------------------------------------------------------------
# SMTP
#------------------------------------------------------------------------------
SmtpServer           = ('localhost', 25)
SmtpLogin            = ""
SmtpPassword         = ""

# If your SMTP server is using TLS write "yes", otherwise write "no"

SmtpUseTLS           = "no"

#------------------------------------------------------------------------------
# EMAIL ADDRESSES
#------------------------------------------------------------------------------
# SupportEmail is the email address where all automatically generated
# application errors will be sent to.

#SupportEmail         = "root@localhost"
SupportEmail         = "rjperez@bnl.gov"


# PublicSupportEmail is an email address that will be shown in Indico and where
# users are expected to find help when they have using the website.

#PublicSupportEmail   = "root@indico.bnl.gov"
PublicSupportEmail   = "rjperez@bnl.gov"

# NoReplyEmail is the email address showed when we do not want the users to answer
# an automatically generated email.

NoReplyEmail	     = "noreply@indico.bnl.gov"


#------------------------------------------------------------------------------
# APACHE
#------------------------------------------------------------------------------
# If you change either ApacheUser or ApacheGroup after installation and you
# are on Linux you need to chown -R the directories pointed at by
#   - LogDir
#   - UploadedFilesTempDir

# ApacheUser is the user that Apache runs as (Look for "User" inside httpd.conf)

ApacheUser = "apache"

# ApacheGroup is the group that Apache runs as (Look for "Group" inside httpd.conf)

ApacheGroup = "apache"

#------------------------------------------------------------------------------
# INDICO SEARCH
#------------------------------------------------------------------------------
# Indico doesn't come with a search engine. The only supported search server at
# this time is CDS Invenio. If you have a running instance of CDS Invenio you
# can write its hostname in IndicoSearchServer and Indico will then provide
# search capabilities for it.
#
# You can download CDS Invenio at:
#
#    http://cdsware.cern.ch/invenio/
#
#
# If you want to write your own adapter for another search engine you can
# use indico/MaKaC/search/invenioSEA.py as a starting point.
#
##IndicoSearchServer   = "invenio.bnl.gov"
##IndicoSearchClass    = "MaKaC.search.invenioSEA.InvenioSEA"

#------------------------------------------------------------------------------
# FILE UPLOAD
#------------------------------------------------------------------------------
# Here you can limit the maximum size of all the uploaded files (in MB) in a
# request
# default: 0 (unlimited)

MaxUploadFilesTotalSize = 0

# Here you can limit the maximum size of an uploaded file (in MB)
# default: 0 (unlimited)

MaxUploadFileSize = 0

#------------------------------------------------------------------------------
# FILE CONVERSION
#------------------------------------------------------------------------------
# Indico has an interface to interact with an external file conversion system
# to convert from some formats to others but right now there is no publicly
# available file conversion software.
#
# If you are interested in this feature please contact us at:
#   indico-team@cern.ch
#
# FileConverter        = {"conversion_server": "localhost", "response_url": "http://localhost/getConvertedFile.py"}


#------------------------------------------------------------------------------
# X-SENDFILE
#------------------------------------------------------------------------------
# Indico supports the use of the X-Sendfile header:
#
# http://blog.lighttpd.net/articles/2006/07/02/x-sendfile
#
# If your webserver supports this feature and you want to activate it,
# you should set it to 'yes'. Default value is 'no'
#
#     UseXSendFile = "yes"

UseXSendFile = "no"


#------------------------------------------------------------------------------
# AUTHENTICATION
#------------------------------------------------------------------------------
# Indico ships with a fully working user authentication system (Local) but you
# can use an external system.
#
# If you want to have all users authenticate only to an external user management
# system (for example: MyAuthSystem) you should write:
#
#     AuthenticatorList = ['MyAuthSystem']
#
# If you want to authenticate users against more than one authentication system
# you can write them like this (systems will be queried about users from left
# to right):
#
#     AuthenticatorList = ['Local', 'LDAP', 'MyAuthSystem']
#
# The default configuration will use only Indico's authentication system.

AuthenticatorList    = ['Local']

# Uncomment/customize the following lines if you want to use LDAP authentication
#
# LDAPConfig = {'host': 'myldapserver.example.com',
#
#               # use TLS (do so, if your server allows)
#               'useTLS': True,
#
#               # filter parameters for users, base DN to use
#               'peopleDNQuery': ('uid={0}', 'DC=example,DC=com'),
#
#               # filter parameters for groups, base DN to use
#               'groupDNQuery': ('cn={0}', 'OU=Groups,DC=example,DC=com'),
#
#               # query used to infer membership of a group
#               'membershipQuery': 'memberof={0}',
#
#               # access credentials of a user with read access
#               'accessCredentials': ('CN=user,OU=Users,DC=example,DC=com','secret_password')
# }

#------------------------------------------------------------------------------
# STYLING
#------------------------------------------------------------------------------
# If you want to customize how Indico l like you can create your own
# CSS stylesheet, copy it to the folder "css" inside the HtdocsDir directory
# and then put the name of the file here (without the .css).
#
# If you just want to modify small parts you can put at the beginning of your
# stylesheet the following line:
#
#   @import "Default.css"
#
# And then just add the few changes that you want to make.

CssStylesheetName    = "Default"


#------------------------------------------------------------------------------
# OFFSITE PACKAGES CREATION
#------------------------------------------------------------------------------
# **** THIS FEATURE IS TEMPORARILY DISABLED ****
# Indico allows users to download all the information and materials associated
# with a conference through the 'Offline Website Package' command.
#
# The PublicFolder variable points to a directory that must live inside htdocs
# and it is the directory that Indico will use to store this offline website
# packages to allow users to download them.
#
# This directory needs to be writeable by the Apache user.

# PublicFolder         = "/opt/indico/htdocs/results"


#------------------------------------------------------------------------------
# DATA EXPORT PARAMETERS
#------------------------------------------------------------------------------

# Categories that you want to limit to certain IPs (RSS, iCal, export.py)
ExportACL = {}

ExportACL = {}
ExportACL = {}
ExportACL = {}

Thanks.