doc/book/en/admin/pyro.rst
author Julien Cristau <julien.cristau@logilab.fr>
Thu, 12 Jun 2014 12:28:10 +0200
branchstable
changeset 9925 aee99876eb10
parent 8985 be04a3e01ac9
permissions -rw-r--r--
[test] Add missing attribute 'add' permission in test schema Silences yams warning.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8032
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
     1
.. _UsingPyro:
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
     2
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     3
Working with a distributed client (using Pyro)
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     4
==============================================
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     5
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     6
In some circumstances, it is practical to split the repository and
7813
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
     7
web-client parts of the application for load-balancing reasons. Or
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     8
one wants to access the repository from independant scripts to consult
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
     9
or update the database.
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    10
7813
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    11
Prerequisites
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    12
-------------
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    13
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    14
For this to work, several steps have to be taken in order.
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    15
7813
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    16
You must first ensure that the appropriate software is installed and
8032
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    17
running (see :ref:`ConfigEnv`)::
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    18
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    19
  pyro-nsd -x -p 6969
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    20
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    21
Then you have to set appropriate options in your configuration. For
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    22
instance::
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    23
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    24
  pyro-server=yes
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    25
  pyro-ns-host=localhost:6969
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    26
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    27
  pyro-instance-id=myinstancename
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    28
7813
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    29
Connect to the CubicWeb repository from a python script
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    30
-------------------------------------------------------
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    31
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    32
Assuming pyro-nsd is running and your instance is configured with ``pyro-server=yes``,
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    33
you will be able to use :mod:`cubicweb.dbapi` api to initiate the connection.
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    34
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    35
.. note::
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    36
    Regardless of whether your instance is pyro activated or not, you can still
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    37
    achieve this by using cubicweb-ctl shell scripts in a simpler way, as by default
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    38
    it creates a repository 'in-memory' instead of connecting through pyro. That
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    39
    also means you've to be on the host where the instance is running.
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    40
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    41
Finally, the client (for instance a python script) must connect specifically
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    42
as in the following example code:
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    43
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    44
.. sourcecode:: python
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    45
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    46
    from cubicweb import dbapi
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    47
7813
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    48
    cnx = dbapi.connect(database='instance-id', user='admin', password='admin')
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    49
    cnx.load_appobjects()
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    50
    cur = cnx.cursor()
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    51
    for name in (u'Personal', u'Professional', u'Computers'):
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    52
        cur.execute('INSERT Tag T: T name %(n)s', {'n': name})
89ab98c4aaab [book] merge pyro chapter with faq entry with connexion snippet
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4749
diff changeset
    53
    cnx.commit()
4749
1560d51385f0 [book/admin/pyro] fix pyro options, give a small setup example
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
diff changeset
    54
8032
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    55
Calling :meth:`cubicweb.dbapi.load_appobjects`, will populate the
8985
be04a3e01ac9 [doc] typo
Dimitri Papadopoulos <dimitri.papadopoulos@cea.fr>
parents: 8032
diff changeset
    56
cubicweb registries (see :ref:`VRegistryIntro`) with the application
8032
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    57
objects installed on the host where the script runs. You'll then be
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    58
allowed to use the ORM goodies and custom entity methods and views. Of
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    59
course this is optional, without it you can still get the repository
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    60
data through the connection but in a roughly way: only RQL cursors
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    61
will be available, e.g. you can't even build entity objects from the
bcb87336c7d2 [doc] fix most of ReST compilation errors and warnings
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 7813
diff changeset
    62
result set.