Migrating Anaconda Repository 4.x packages¶
To migrate from Anaconda Repository 4.x to Anaconda Enterprise involves exporting a site-dump of all packages, then importing into Anaconda Enterprise.
Export all packages¶
You can use the command anaconda-server-admin export-site to
create a dump of all the packages and information regarding
owners and permissions of those packages.
This command creates a directory structure containing all files and user information from Repository.
Example:
site-dump/
├── anaconda-user-1
│ ├── 59921152446b5703f430383f--moto
│ ├── 5992115f446b5703fa30383e--pysocks
│ └── meta.json
├── anaconda-organization
│ ├── 5989fbd1446b575b99032652--future
│ ├── 5989fc1d446b575b99032786--iso8601
│ ├── 5989fc1f446b575b990327a8--simplejson
│ ├── 5989fc26446b575b99032802--six
│ ├── 5989fc31446b575b990328b0--xz
│ ├── 5989fc35446b575b990328c6--zlib
│ └── meta.json
└── anaconda-user-2
└── meta.json
Each subdirectory of site-dump contains the contents of a user.
For example anaconda-user-1 has two packages, moto and
pysocks. Inside the package directories, which are prefixed
with the id of the database, are the package files. There is
a meta.json in the user directories and the package
directories with different metadata. The user’s meta.json
contains information regarding which groups the user belongs
to (end users) or what groups the user has
(organizations).
NOTE: Other files included in the site-dump such as projects and envs are NOT imported by the package import tool.
Importing packages¶
You can choose to import packages by username or directory, by all packages or by organization.
For all methods, log into the command line interface:
anaconda-enterprise-cli login
Then follow the instructions for the method you want to use.
Import by username or directory¶
The packages for each user is in a separate directory in the site-dump file, so the import process is the same for each username or directory.
Import a single directory from the site-dump with the command:
anaconda-enterprise-cli admin import site-dump/NAME
Where NAME is the name of the directory you want to import.
Import all packages¶
Then to import all packages, run the command:
anaconda-enterprise-cli admin import site-dump/*
As you can see from the glob operator (site-dump/*) you
must pass a list of users you want to import.
What this script does:
For every user in a 4.x Repository, it will create a new channel for each label the user has, using the username as a prefix.
EXAMPLE:
Let’s say the user anaconda-user-1 has the following packages:
moto-0.4.31-2.tar.bz2with label “main”pysocks-1.6.6-py35_0.tar.bz2with label “test”
For this user, the script creates the following channels:
anaconda-user-1with filemoto-0.4.31-2.tar.bz2anaconda-user-1/testwith filepysocks-1.6.6-py35_0.tar.bz2
The default label “main” is dropped in preference of just keeping the username as channel name.
Import an organization¶
For each organization you want to import, the script adds the organization groups to the channel name it creates.
EXAMPLE:
Let’s say anaconda-organization has a group called “Devs” and
there are packages there such as xz-5.2.2-1.tar.bz2 which has
label “Test”.
This script creates the following channels:
- anaconda-organization - This contains everything the Owner group has
- anaconda-organization/Devs - This contains everything that is available for the Dev group
- anaconda-organization/Devs/Test - This contains everything in the Dev group with label “Test”.
So for an organization, group, and label a new channel is created. The default labels “main” and group “Owner” are dropped in preference of shortening names.
After everything is uploaded, the channels are shared
with the users. That is the channel anaconda-user-1 is
made read-writable by anaconda-user-1. The members of
a group are given read permission on the organization’s
channel.