Bluemix IaaS (旧SoftLayer) で Custom Model の仮想サーバーを注文する回避策

#内容
最近、Flavor Model が導入されたことにあたり、調査した内容を記事にします。
従来のモデルでも注文できる方法を記載します。
（いつ無効化されるかわかりませんので、今のうちだけかもしれません！）

>参考
<a href="https://www.ibm.com/blogs/bluemix/2017/09/virtual-server-enhancements-compute/" >Kick up your compute power with three new virtual server enhancements - Bluemix Blog</a>

#Flavor Model の導入

2017年9月11日の Flavor Model の導入により、Bluemix の Public 仮想サーバーは、「Flavor」と呼ばれる固定インスタンスモデルから選ぶ方式となりました。
この事前定義モデルにより、高速で使いやすくなりました。

![Kobito.EcbHy6.png](https://qiita-image-store.s3.amazonaws.com/0/101361/71be0ace-5740-fbbd-1af9-fc0c308e0cf9.png "Kobito.EcbHy6.png")

- Balanced
	- CPU と メモリ のバランスがとれたモデル
- Balanced Local Storage
	- CPU と メモリ のバランスがとれたモデル のローカルストレージ（オールフラッシュモデルあり）
- Compute
	- CPU と メモリ が1対1のモデル
- Meomory
	- メモリ比率が大きいモデル

#従来の Custom Model との比較（個人的調査）

## Custom Model
従来のモデルでは、柔軟にコアとメモリを選ぶことができました。
![Kobito.SSF57N.png](https://qiita-image-store.s3.amazonaws.com/0/101361/2f28f379-2657-8bba-6684-6da763ac759e.png "Kobito.SSF57N.png")

## Flavor Model
それに対して今回導入されたモデルでは、偏ったモデルは廃止され、バランスをとって集約率をあげていく狙いと思われます。
![Kobito.x0zZoQ.png](https://qiita-image-store.s3.amazonaws.com/0/101361/834abb14-ee01-f328-78da-99979f0eafd1.png "Kobito.x0zZoQ.png")

#カスタマイズモデルのオーダー方法
ただ、今まで使っていたモデルが注文できなくなるのは不便ですよね。
現時点では、まだ従来モデルでも注文できる方法をみつけたので記載します。

##オーダー時に Dedicated Virtual Server を選ぶ
![スクリーンショット 2017-09-19 10.37.27.png](https://qiita-image-store.s3.amazonaws.com/0/101361/1d72b441-5da1-6aff-a694-273041f973e3.png "スクリーンショット 2017-09-19 10.37.27.png")

##Dedicated Virtual Server の配置方式を「Auto Assign」とする
![スクリーンショット 2017-09-19 10.39.55.png](https://qiita-image-store.s3.amazonaws.com/0/101361/ee1d2647-9164-15a0-7b6e-9cb9b4ad36b3.png "スクリーンショット 2017-09-19 10.39.55.png")

##インスタンスタイプを「Public Instance」にする
と注文できました！！！（2017年9月19日時点で検証済み）
![スクリーンショット 2017-09-19 10.40.05.png](https://qiita-image-store.s3.amazonaws.com/0/101361/303144c9-cef4-293b-6af2-53cb613e40a1.png "スクリーンショット 2017-09-19 10.40.05.png")

#さいごに
一時的な回避方法としては、有効かと思いますので、ぜひお試しあれ！

#追加：API経由での注文も回避策のひとつです。

```
$ python CreateVSI-win2k16-private-only.py khayama-test01
{'domain': 'bluemix.com', 'maxMemory': 1024, 'uuid': '476accf4-5932-41ad-b9b7-9fc9e4176e75', 'maxCpu': 1, 'metricPollDate': '', 'createDate': '2017-10-04T17:13:57+09:00', 'hostname': 'khayama-test01', 'startCpus': 1, 'lastPowerStateId': '', 'lastVerifiedDate': '', 'statusId': 1001, 'globalIdentifier': 'e2fdd691-759b-435b-ad33-fa70a0eb0718', 'provisionDate': '', 'maxCpuUnits': 'CORE', 'modifyDate': '', 'accountId': xxxxxx, 'id': 41000693, 'fullyQualifiedDomainName': 'khayama-test01.bluemix.com'}
```

```
$ cat CreateVSI-win2k16-private-only.py
from __future__ import print_function
import SoftLayer
from SoftLayer.managers.vs import VSManager
import sys
parm=sys.argv
hostName=parm[1]

def create_vsi():
    #Create a client to the SoftLayer_Account API service.
    #Note: currently set without the user ID and API key since
    #it will by default use the values set in the CLI
    #to use other values use SoftLayer.Client(sl_username, sl_api_key)
    client = SoftLayer.Client()
    vsi_mgr = VSManager(client)

    # uncomment to display create options
    # print(vsi_mgr.get_create_options())

    # common values
    datacenter = 'tok02' # the data center code
    domain = 'bluemix.com' # the domain name suffix for the host
    os_code = 'WIN_2016-STD_64' # the operating system code
    local_disk = True # local disk or SAN
    hourly = True # hourly or monthly billing
    dedicated = False # multi-tenant or single tenant
    nic_speed = 100 # speed of network device
    disks = [100] # size of the disks 100 or 25
    private = True # private networking only or include public internet networking as well

    # server properties
    hostname = hostName
    cpus = 1
    memory = 1024

    # code that can verify the create operation without actually doing it
    # template = vsi_mgr.verify_create_instance(hostname=hostname, domain=domain,
    #                                 cpus=cpus, memory=memory, datacenter=datacenter,
    #                                 os_code=os_code, local_disk=local_disk,
    #                                 hourly=hourly, dedicated=dedicated,
    #                                 private_vlan=private_vlan, disks=disks,
    #                                 nic_speed=nic_speed, private=private,
    #                                 ssh_keys=ssh_keys, tags=tags)
    # print(template)

    result = vsi_mgr.create_instance(hostname=hostname, domain=domain,
                                     cpus=cpus, memory=memory, datacenter=datacenter,
                                     os_code=os_code, local_disk=local_disk,
                                     hourly=hourly, dedicated=dedicated,
                                     disks=disks,
                                     nic_speed=nic_speed, private=private
                                     )
    print(result)

if __name__ == '__main__':
    create_vsi()
```