Migration — MARV Robotics 19.04.0 documentation

# Migration

Before doing any migration you might want to check the Configuration and Deployment sections.

## 18.07 -> 19.02.0

Support for ipdb has been dropped in favour of pdb++. Use `PDB=1 marv run` instead of `marv-ipdb run`. For more information see Debugging.

## 18.05 -> 18.07

The way inputs are handled has changed. Inputs selecting an individual topic are now optional. See Optional inputs for more information.

## 18.03 -> 18.04

The list of system dependencies is updated and the installation has significantly changed. We recommend that you re-read the Installation instructions. The database has not changed and existing sites continue to function without migration.

MARV now supports offloading the delivery of files to nginx. In case you are not using nginx as reverse-proxy, yet, you should seriously consider to change that now. See reverse_proxy and uWSGI behind NGINX.

MARV now supports access control lists (ACLs). The default ACL requires authentication to read anything, tag and comment; and only members of the group admin may discard datasets. For users of the Enterprise Edition this corresponds to the same behaviour as before. The `marv_webapi.acls.public()` closely resembles the previous Community Edition default, apart from requiring admin group membership to discard datasets. See acl to change the effective ACL.

## 18.02 -> 18.03

With this release:

- geojson property object has changed.

To update the store to the new format rerun the trajectory nodes using:

    marv run --node trajectory --force --force-dependent --collection=*

## 17.11 -> 18.02

With this release:

- message definitions are read from bag files instead of being expected on the system
- marv allows mixing message types per topic.

As part of this the topics section has been renamed to `connections_section` and the `bagmeta` node has changed a bit. Please update your configuration along the lines of:

    diff --git a/docs/config/marv.conf b/docs/config/marv.conf
    index 0e44b19..31dfe57 100644
    --- a/docs/config/marv.conf
    +++ b/docs/config/marv.conf
    @@ -24,7 +24,7 @@ nodes =
         marv_robotics.detail:summary_keyval
         marv_robotics.detail:bagmeta_table
         # detail sections
    -    marv_robotics.detail:topics_section
    +    marv_robotics.detail:connections_section
         marv_robotics.detail:images_section
         marv_robotics.detail:video_section
         marv_robotics.detail:gnss_section
    @@ -43,8 +43,8 @@ filters =
         start_time | Start time    | lt le eq ne ge gt | datetime   | (get "bagmeta.start_time")
         end_time   | End time      | lt le eq ne ge gt | datetime   | (get "bagmeta.end_time")
         duration   | Duration      | lt le eq ne ge gt | timedelta  | (get "bagmeta.duration")
    -    topics     | Topics        | any all           | subset     | (get "bagmeta.topics[:].name")
    -    msg_types  | Message types | any all           | subset     | (get "bagmeta.msg_types[:].name")
    +    topics     | Topics        | any all           | subset     | (get "bagmeta.topics")
    +    msg_types  | Message types | any all           | subset     | (get "bagmeta.msg_types")

     listing_columns =
         # id       | Heading    | formatter | value function
    @@ -69,7 +69,7 @@ detail_summary_widgets =
         bagmeta_table

     detail_sections =
    -    topics_section
    +    connections_section
         images_section
         video_section
         gnss_section

And then rerun the bagmeta node and the new connections section.

    marv run --node bagmeta --node connections_section --force --collection=*

Now, nodes can be run, that were previously missing message type definitions. `gnss_plots` for example works differently, if it cannot find navsat orientations. To rerun it and all nodes depending on it:

    marv run --node gnss_plots --force --force-dependent --collection=*

## 16.10 -> 17.11

In the old site:

1. Make sure you have a backup of your old site!

2. Dump database of old marv:

       curl -LO https://gist.githubusercontent.com/chaoflow/02a1be706cf4948a9f4d7f1fd66d6c73/raw/de4feab88bcfa756abfb6c7f5a8ccaef7f25b36d/marv-16.10-dump.py
       python2 marv-16.10-dump.py > /tmp/dump.json

For and in the new instance:

3. Follow Installation and Tutorial: Setup basic site to setup a basic site.

4. Replace `marv.conf` with the default Configuration and adjust as needed (e.g. scanroot).

5. Initialize site with new configuration:

       marv init

6. If your scanroot has moved, adjust paths as needed:

       sed -i -e 's,/old/scanroot/,/path/to/new/scanroot/,g' /tmp/dump.json

7. Restore database in new marv:

       marv restore /tmp/dump.json

8. Set password for each user:

       marv user pw <username>

9. Run nodes:

       marv query -0 --collection=bags |xargs -0 -L25 -P4 marv run --keep-going

10. Run again sequentially to see if there are nodes producing errors:

>     marv run --collection=bags