Metadata-Version: 2.0
Name: CloudFerry
Version: 1.45.0
Summary: Openstack cloud workload migration tool
Home-page: https://github.com/MirantisWorkloadMobility/CloudFerry
Author: Mirantis Inc.
Author-email: workloadmobility@mirantis.com
License: Apache-2
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: OpenStack
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Requires-Dist: PyMySQL (==0.6.7)
Requires-Dist: SQLAlchemy-Utils (==0.32.1)
Requires-Dist: alembic (==0.8.5)
Requires-Dist: cliff (==2.0.0)
Requires-Dist: colorlog (==2.6.1)
Requires-Dist: fabric (==1.10.2)
Requires-Dist: ipaddr (==2.1.11)
Requires-Dist: jmespath (==0.9.0)
Requires-Dist: marshmallow (==2.4.2)
Requires-Dist: oslo.config (==3.9.0)
Requires-Dist: oslo.utils (==3.5.0)
Requires-Dist: paramiko (==1.16.0)
Requires-Dist: pika (==0.9.14)
Requires-Dist: pyOpenSSL (==16.0.0)
Requires-Dist: pycrypto (==2.6.1)
Requires-Dist: python-cinderclient (==1.3.1)
Requires-Dist: python-glanceclient (==1.1.0)
Requires-Dist: python-keystoneclient (==1.6.0)
Requires-Dist: python-neutronclient (==2.6.0)
Requires-Dist: python-novaclient (==2.25.0)
Requires-Dist: python-swiftclient (==2.3.1)
Requires-Dist: pywbem (==0.7.0)
Requires-Dist: pyyaml (==3.11)
Requires-Dist: redis (==2.10.5)
Requires-Dist: sqlalchemy (==1.0.12)
Requires-Dist: taskflow (==1.30.0)

﻿CloudFerry
==========

# Overview

CloudFerry is a tool for resources and workloads migration between two 
OpenStack clouds. 


# Supported OpenStack Releases

 - Grizzly
 - Icehouse
 - Juno


# Objects Supported for Migration

## Keystone

 - Tenants
 - User roles

## Neutron

 - Networks
     * Private
     * Public
     * Shared
 - Subnets
 - Ports
 - Floating IPs
 - Security groups
 - Routers
 - LBaaS objects
 - Quotas

## Glance

 - Images

## Cinder

 - Volumes
 - Quotas

## Nova

 - VMs
 - VM's ephemeral storage
 - Flavors
 - User quotas
 - Tenant quotas
 - Key pairs

# User documentation

End-user documentation is available in `docs` folder, to compile in HTML run:

```
sphinx-build docs/ sphinx-build
```

# Requirements

 - Connection to source and destination clouds through external (public) 
   network from host with CloudFerry.
 - Valid private ssh-key for both clouds which will be using by CloudFerry for
   data transferring.
 - Admin keystone access (typically admin access point lives on 35357 port).
 - sudo/root access on compute and controller nodes.
 - Openstack MySQL DB write access.
 - Credentials of global cloud admin for both clouds.
 - All the Python requirements are listed in requirements.txt.


# Installation
CloudFerry can be installed as docker container or it can be installed as a 
python package by pip

## Installation with pip
```
pip install git+git://github.com/MirantisWorkloadMobility/CloudFerry.git
```

## Installation with docker
### Building the docker container
```
docker build --build-arg cf_commit_or_branch=origin/master -t <username>/cf-in-docker .
```

### Start container
```
docker run -it <username>/cf-in-docker
```

### Saving and loading the container files
```
docker save --output=/path/to/save/CloudFerry.img <username>/cf-in-docker
docker load --input=/path/to/save/CloudFerry.img
```

# Usage

## Overview

CloudFerry tool is used by running python `cloudferry` executable from the 
command line.

All available commands can be viewed with:
```
# see list of available commands
cloudferry list
```

## Configuration

Sample config can be generated with
```
oslo-config-generator --namespace cloudferry
```

Configuration process is quite complex and mostly manual try-and-see-if-works
process.

## Whole cloud migration

Make sure you have `migrate_whole_cloud` option in `migrate` section of config
is set to `True`.

Use `migrate` command with config file specified:

```
cloudferry migrate <config file>
```

## Migrating specific instances

In order to migrate specific VMs, one should use filters. This is done through
modifying filters file (`configs/filter.yaml` by default).

Edit `configs/filter.yaml`:

```
instances:
    id:
        - 7c53a6ab-0149-4232-80b3-b2d7ce02995a
        - f0fea76a-0a7d-4c25-ab9e-f048dbc7365d
```

Run migration as usual:
```
cloudferry migrate configuration.ini --debug
```

## Playground

See QUICKSTART.md for the quickest way of running your first successful migration.



