Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This is something I am we are building out incrementally starting with a few customers migrating to Iguana X. It’s not finished yet but is proving evolving and proving very helpful in helping us figure out how we can streamline the conversion process through finding the key use case patterns and how they can be brought over in a smooth and safe fashion.

Reminder: Reach out to work with us - support@interfaceware.com. We’ve successfully helped a few customers use the converter. It’s been extremely helpful in quickly identifying issues we need to address to help them port over.

Expand
titleYou need to be running Mac OS X or have an adventurous spirit in porting code.

I have only tested the code on Mac OS X for now. To get the code working on windows will require refactoring the code to handle directory separators the way windows does them \ instead of / characters.

Windows support will come after a few more iterations.

Expand
titleCreate a component using +FROM URL - use git@bitbucket.org:interfaceware/iguanaconverter.git
Code Block
git@bitbucket.org:interfaceware/iguanaconverter.git

This the component repository:

https://bitbucket.org/interfaceware/iguanaconverter/src/main/

Expand
title'll need 10.1.81 or newer - this video shows how the converter is meant to run
converter.mp4
Expand
titleSTEP 1: Add Iguana 6 Channel Importer to IguanaX using + Component

Clickthe Iguana 6 Channel Importer and ADD.

Image Added
Expand
titleSTEP 2: Edit the custom GitRepo component property to point to a channel export from Iguana 6

The default for this is currently

Code Block
git@github.com:interfaceware/iguana-tools.git

Funnily enough most of the ‘tools’ in this repo no longer make sense in the context of Iguana X. But it’s a helpful starting point for my conversion prototype work. Another interesting repo to try is:

Code Block
git@bitbucket.org:interfaceware/export.git
Expand
titleRun it once to get the _Import URL

After the first run it will create a repo called _Import.

Expand
titleRun it a second time to create components

We need the source repo _Import before we can iterate through and create Iguana X components for all the parts of an Iguana 6 Channel.

Expand
titleRun it a third time to copy the code and establish connections

The components representing the translators in the channel cannot be populated until they exist. In this phase the translator code should be copied.

You can test with the default repo included in the component OR you can import your own channels by using your own repository with Iguana 6.1 channels exported! SeeGetting Started for how to export your channels to your own repository.

Edit the GitRepo custom field with your Git repository link. Click the check mark to save your change.

Image Added

Tip! To get your git repository link from Bitbucket, click clone and copy the SSH link provided.

Image Added
Expand
titleSTEP 3: Run the component to import and convert all the Iguana 6 channels into components.

It should generate and link a number of components corresponding to the channels in the repository.

All components imported with contain the #imported tag. Use this to filter your dashboard and view all imported components.

Info

Note: If the Importer is erroring with the message below it may be due to the repository privacy settings changing from public to private. To remediate the issue, refresh your Git Cache, wait for the refresh to complete, then rerun the Importer component.

Code Block
Stopping component with runtime error:
main.lua:18: Could not create _bitbucket-org:test-iguana6channels-git. fatal: could not read Username for 'https://bitbucket.org': terminal prompts disabled
Git url: git@bitbucket.org:test/iguana6channels.git

Inside the Channel Importer Tool:

Expand
titleFrom reading the code of the converter, how could a more detailed map of LLP server components be done?

You can see clearly how the channel structure is converted into IguanaX components in the CHAN library.

Go have a look at CHAN/CHANllpSource.lua. This code has the mapping of configuration information from Iguana 6 into IguanaX.

I am
Expand
titleExpect a lot of things not to work at this stage

This is a work in progress. Some of the pieces I am working on are:

  • Get channel connections done

  • From HTTP(S) channels don’t work - we haven’t got the backwardly compatible APIs yet

  • DBS conversion is a work in progress.

  • LLP and File components are partly converted - the Iguana X equivalent components are much simpler

  • Plugin components are converted with placeholder components - contact me directly if you are wondering how about how to deal with plugins

Expand
titleWhere is this going?
How does the iguana_shim module work?

The shim module in the CHAN library allows us to simulate API functions which don’t exist under IguanaX that used to be under Iguana 6.

This includes things like iguana.channelName() which don’t make sense for IguanaX which no longer has channels. See Shim functions.

Expand
titleHow can we deal with obsolete Iguana 6 APIs?

Since the shim module is designed to be a temporary solution during your migration, what are some strategies to deal with the missing obsolete Iguana 6 APIs in your new IguanaX environment?

Our team is experimenting with streamlining this with A library to recreate Iguana 6 APIs for easier porting of code.

Expand
titleHow do we convert legacy python based VMDs?

The Channel Importer tool uses our vmd_tool to convert legacy VMDs to an XML format IguanaX can ingest. If you are migrating any Iguana v6 legacy channels that use VMDs, you’ll need to ensure you have the Iguana 6.1.5 installed on the server as the vmd_tool is packaged within.

See How to convert legacy Python Based VMD channels.

Expand
titleEvolving the Channel Importer Tool

We are optimistic we can automate most of the work in converting Iguana 6 to Iguana X IguanaX code. Doing the conversion in this way is very powerful since it will give final control to each customer to go the last mile in terms of doing the conversion in manner which helps you each get the best conversion possible.

It makes it possible to customize the script to target specific problems that might only have an impact on your user use cases of Iguana. More to say about that later.

For now I am we are working with a few early adopters number of customers to use this script as a tool to speed up our accelerate the process of identifying and eliminating gaps and making IguanaX a practical platform to migrate to.

Scaling out channel conversion.