SoftLayer APIパッケージのPyPI版とGitHub版の違い

SoftLayer CLIを含むSoftLayer APIのパッケージは、リリース版がPyPIから、開発版がGitHubから提供されています。

- [Python Package Index : SoftLayer 3.3.1](https://pypi.python.org/pypi/SoftLayer/)
- [GitHub : softlayer/softlayer-python](https://github.com/softlayer/softlayer-python)


GitHub版では、CLIがモジュールごとのファイルではなくてコマンド毎のファイルになるなど、ライブラリの構成が変わっています。機能を追加したり管理したりしやすくするためでしょう。
また、GitHub版の方が開発版で新しいはずなのですが、バージョン番号が古くなっていたりします。謎です。


## PyPI版

### インストール

```bash
$ sudo pip install softlayer
```

### バージョン表示
```bash
$ sl --version
v3.3.1
```

### Usage

```bash
$ sl <module> [<args>...]
```

### ファイル

```bash
$ ls -l CLI/modules/
total 544
-rw-r--r--@ 1 user  staff    356 Nov  3 23:14 __init__.py
-rw-r--r--@ 1 user  staff   5679 Nov  3 23:14 cdn.py
-rw-r--r--@ 1 user  staff   6459 Nov  3 23:14 config.py
-rwxr-xr-x@ 1 user  staff  10400 Nov  3 23:14 dns.py*
-rw-r--r--@ 1 user  staff    925 Nov  3 23:14 filters.py
-rwxr-xr-x@ 1 user  staff  14813 Nov  3 23:14 firewall.py*
-rw-r--r--@ 1 user  staff   5193 Nov  3 23:14 globalip.py
-rw-r--r--@ 1 user  staff    908 Nov  3 23:14 help.py
-rw-r--r--@ 1 user  staff   5913 Nov  3 23:14 image.py
-rw-r--r--@ 1 user  staff   6057 Nov  3 23:14 iscsi.py
-rwxr-xr-x@ 1 user  staff  20026 Nov  3 23:14 loadbal.py*
-rw-r--r--@ 1 user  staff  16126 Nov  3 23:14 messaging.py
-rw-r--r--@ 1 user  staff   6261 Nov  3 23:14 metadata.py
-rw-r--r--@ 1 user  staff   1484 Nov  3 23:14 nas.py
-rw-r--r--@ 1 user  staff   3376 Nov  3 23:14 rwhois.py
-rw-r--r--@ 1 user  staff  39683 Nov  3 23:14 server.py
-rw-r--r--@ 1 user  staff   4582 Nov  3 23:14 snapshot.py
-rw-r--r--@ 1 user  staff   4757 Nov  3 23:14 sshkey.py
-rwxr-xr-x@ 1 user  staff   5185 Nov  3 23:14 ssl.py*
-rw-r--r--@ 1 user  staff   9760 Nov  3 23:14 subnet.py
-rw-r--r--@ 1 user  staff   1240 Nov  3 23:14 summary.py
-rw-r--r--@ 1 user  staff   8155 Nov  3 23:14 ticket.py
-rw-r--r--@ 1 user  staff   5015 Nov  3 23:14 vlan.py
-rwxr-xr-x@ 1 user  staff  42295 Nov  3 23:14 vs.py*
```

## GitHub版

### インストール

```bash
$ sudo pip install git+git://github.com/softlayer/softlayer-python.git
```

### バージョン表示

```bash
$ sl --version
SoftLayer Command-line Client, version v3.3.0
```

### Usage

```bash
$ sl [OPTIONS] COMMAND [ARGS]...
```

### ファイル

```bash
$ ls -l CLI/
total 136
-rw-r--r--   1 user  staff   215 Jan 14 05:04 __init__.py
drwxr-xr-x   6 user  staff   204 Jan 14 05:04 billing/
-rw-r--r--   1 user  staff  2449 Jan 14 05:04 call_api.py
drwxr-xr-x  10 user  staff   340 Jan 14 05:04 cdn/
drwxr-xr-x   5 user  staff   170 Jan 14 05:04 config/
-rw-r--r--   1 user  staff  6463 Jan 14 05:04 core.py
drwxr-xr-x  12 user  staff   408 Jan 14 05:04 dns/
-rw-r--r--   1 user  staff  4202 Jan 14 05:04 environment.py
-rw-r--r--   1 user  staff  1289 Jan 14 05:04 exceptions.py
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 firewall/
-rw-r--r--   1 user  staff  9540 Jan 14 05:04 formatting.py
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 globalip/
-rw-r--r--   1 user  staff  1390 Jan 14 05:04 helpers.py
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 image/
drwxr-xr-x   7 user  staff   238 Jan 14 05:04 iscsi/
drwxr-xr-x  19 user  staff   646 Jan 14 05:04 loadbal/
-rw-r--r--   1 user  staff  2402 Jan 14 05:04 metadata.py
drwxr-xr-x  20 user  staff   680 Jan 14 05:04 mq/
drwxr-xr-x   5 user  staff   170 Jan 14 05:04 nas/
-rw-r--r--   1 user  staff  9675 Jan 14 05:04 routes.py
drwxr-xr-x   5 user  staff   170 Jan 14 05:04 rwhois/
drwxr-xr-x  16 user  staff   544 Jan 14 05:04 server/
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 snapshot/
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 sshkey/
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 ssl/
drwxr-xr-x   8 user  staff   272 Jan 14 05:04 subnet/
-rw-r--r--   1 user  staff  1282 Jan 14 05:04 summary.py
-rw-r--r--   1 user  staff  1937 Jan 14 05:04 template.py
drwxr-xr-x   9 user  staff   306 Jan 14 05:04 ticket/
drwxr-xr-x  17 user  staff   578 Jan 14 05:04 virt/
drwxr-xr-x   5 user  staff   170 Jan 14 05:04 vlan/
```

それぞれのフォルダの下に、モジュールごとのコマンドに対応したファイルがあります。例えば```sl vs list```であれば、CLI/virt/list.pyというファイルが対応しています。
```CLI/routes.py```にインポートされるモジュールが記載されているので、モジュールを追加する際はこのファイルを編集します。

```bash
$ ls -l CLI/virt/
total 144
-rw-r--r--  1 user  staff   1124 Jan 14 05:04 __init__.py
-rw-r--r--  1 user  staff    652 Jan 14 05:04 cancel.py
-rw-r--r--  1 user  staff   1330 Jan 14 05:04 capture.py
-rw-r--r--  1 user  staff  10393 Jan 14 05:04 create.py
-rw-r--r--  1 user  staff   3383 Jan 14 05:04 create_options.py
-rw-r--r--  1 user  staff    705 Jan 14 05:04 credentials.py
-rw-r--r--  1 user  staff   4426 Jan 14 05:04 detail.py
-rw-r--r--  1 user  staff   3556 Jan 14 05:04 dns.py
-rw-r--r--  1 user  staff   1562 Jan 14 05:04 edit.py
-rw-r--r--  1 user  staff   2589 Jan 14 05:04 list.py
-rw-r--r--  1 user  staff    787 Jan 14 05:04 network.py
-rw-r--r--  1 user  staff   3379 Jan 14 05:04 power.py
-rw-r--r--  1 user  staff    665 Jan 14 05:04 ready.py
-rw-r--r--  1 user  staff   1129 Jan 14 05:04 reload.py
-rw-r--r--  1 user  staff   1505 Jan 14 05:04 upgrade.py
```