The following JSON payload demonstrates one possible use of the I/O Domain deployment API. The example creates two Application Domains and two Oracle Database Domains. The Oracle Database Domains use the specified SCAN addresses (optional). Only a minimal number of fields are required to describe an I/O Domain, but optional available fields exist to manually set properties of the I/O Domain which would, if left out, be automatically assigned by the SuperCluster Virtual Assistant.
This example data can be sent to either of the /api/iodomain/create/ or /api/iodomain/create_and_deploy/ interfaces. The former allocates the I/O Domain for later deployment, and the latter deploys the I/O Domain onto the system.
{
"domains": [
{
"compute_node": 1,
"exa_priv_hostname": "mysys-priv1",
"exa_priv_ipaddr": "203.0.113.61",
"flavour_token": "db",
"rac_cluster_id": 10,
"install_bundle_name": "solaris-minimal-server",
"mgmt_hostname": "myssc45",
"mgmt_ipaddr": "198.51.100.187",
"network_recipe": {
"domain_name": "us.example.com",
"gateway": "198.51.100.1",
"name_servers": "192.0.2.197 192.0.2.198",
"time_servers": "192.0.2..11 192.0.2.12 192.0.2.13",
"time_zone": "America/Los_Angeles"
},
"primary_hostname": "myssc45.us.example.com",
"recipe_id": 4,
"teng_hostname": "myssc45-client",
"teng_ipaddr": "198.51.100.85",
"vip_hostname": "myssc45-vip",
"vip_ipaddr": "198.51.100.86"
},
{
"compute_node": 1,
"exa_priv_hostname": "myssc45-priv1-app",
"exa_priv_ipaddr": "203.0.113.61",
"flavour_token": "11",
"install_bundle_name": "solaris-minimal-server",
"mgmt_hostname": "myssc45-app",
"mgmt_ipaddr": "192.0.2.187",
"network_recipe": {
"domain_name": "us.example.com",
"gateway": "192.0.2.1",
"name_servers": "192.0.2.197 192.0.2.198",
"time_servers": "192.0.2.11 192.0.2.12 192.0.2.13",
"time_zone": "America/Los_Angeles"
},
"primary_hostname": "myssc45-app.us.example.com",
"recipe_id": 1,
"teng_hostname": "myssc45-client-app",
"teng_ipaddr": "198.51.100.85",
"vip_hostname": "myssc45-vip",
"vip_ipaddr": "198.51.100.86"
},
{
"compute_node": 2,
"exa_priv_hostname": "myssc46-priv1",
"exa_priv_ipaddr": "203.0.113.62",
"flavour_token": "db",
"rac_cluster_id": 10,
"install_bundle_name": "solaris-minimal-server",
"mgmt_hostname": "myssc46",
"mgmt_ipaddr": "192.0.2.180",
"network_recipe": {
"domain_name": "us.example.com",
"gateway": "192.0.2.1",
"name_servers": "192.0.2.197 192.0.2.198",
"time_servers": "192.0.2.11 192.0.2.12 192.0.2.13",
"time_zone": "America/Los_Angeles"
},
"primary_hostname": "myssc46.us.example.com",
"recipe_id": 4,
"teng_hostname": "myssc46-client",
"teng_ipaddr": "198.51.100.90",
"vip_hostname": "myssc46-vip",
"vip_ipaddr": "198.51.100.91"
},
{
"compute_node": 2,
"exa_priv_hostname": "myssc46-priv1-app",
"exa_priv_ipaddr": "201.0.113.62",
"flavour_token": "11",
"install_bundle_name": "solaris-minimal-server",
"mgmt_hostname": "myssc46-app",
"mgmt_ipaddr": "192.0.2.180",
"network_recipe": {
"domain_name": "us.example.com",
"gateway": "192.0.2.1",
"name_servers": "192.0.2.197 192.0.2.198",
"time_servers": "192.0.2.11 192.0.2.12 192.0.2.13",
"time_zone": "America/Los_Angeles"
},
"primary_hostname": "myssc46-app.us.example.com",
"recipe_id": 1,
"teng_hostname": "myssc46-client-app",
"teng_ipaddr": "198.51.100.90",
"vip_hostname": "myssc46-vip",
"vip_ipaddr": "198.51.100.91"
}
],
"scan_address_groups": [
{
"scan_addresses": [
{
"ip_address": "198.51.100.89"
},
{
"ip_address": "198.51.100.88"
},
{
"ip_address": "198.51.100.87"
}
],
"scan_hostname": "myssc-io-scan-3",
"rac_cluster_id": 10
}
]
}
The following screen shows the full set of required and optional arguments.
These fields are equivalent and mutually exclusive:
flavour_id & flavour_token
install_bundle_id & install_bundle_name
network_recipe_id & network_recipe
recipe_id & recipe
SCCSDomainSerializer():
id = IntegerField(read_only=True)
compute_node = IntegerField(required=True)
mgmt_network_id = IntegerField(required=False)
mgmt_hostname = CharField(allow_blank=False, max_length=67, required=True)
mgmt_ipaddr = IPAddressField(required=False)
teng_network_id = IntegerField(required=False)
teng_hostname = CharField(allow_blank=False, max_length=67, required=False)
teng_ipaddr = IPAddressField(required=False)
teng_vlanid = IntegerField(required=False)
stor_ib_network_id = IntegerField(required=False)
stor_ib_hostname = CharField(allow_blank=False, max_length=67, required=False)
stor_ib_ipaddr = IPAddressField(required=False)
exa_priv_network_id = IntegerField(required=False)
exa_priv_hostname = CharField(allow_blank=False, max_length=67, required=False)
exa_priv_ipaddr = IPAddressField(required=False)
vip_hostname = CharField(allow_blank=False, max_length=67, required=False)
vip_ipaddr = IPAddressField(required=False)
primary_hostname = CharField(max_length=32, required=False)
flavour_id = IntegerField(required=False)
flavour_token = CharField(allow_blank=False, max_length=32, required=False)
install_bundle_id = IntegerField(required=False)
install_bundle_name = CharField(allow_blank=False, max_length=64, required=False)
rac_cluster_id = IntegerField(required=False)
network_recipe_id = IntegerField(required=False)
network_recipe = CustomNetworkRecipeModelSerializer(required=False):
id = IntegerField(label='ID', read_only=True)
domain_name = CharField(max_length=128, validators=[<function validate_domain>])
name_servers = CharField(help_text='List of the IP addresses of the name resolution servers.
Valid delimiters are commas or spaces', max_length=128, validators=[<function validate_sever_list>])
time_servers = CharField(help_text='List of the IP addresses of the time servers. Valid delimiters are commas or spaces',
max_length=128, validators=[<function validate_sever_list>])
time_zone = CharField(max_length=128)
recipe_id = IntegerField(required=False)
recipe = CustomIODomainRecipeModelSerializer(required=False):
core_max = IntegerField(help_text='Maximum number of cores assignable.', label='Maximum Number of Cores', max_value=2147483647,
min_value=-2147483648, validators=[<function validate_positive>])
memory_max = IntegerField(help_text='Maximum assignablememory in gigabytes', label='Maximum Memory', max_value=2147483647,
min_value=-2147483648, validators=[<function validate_positive>])
ib_vf_max = IntegerField(help_text='Maximum number of assignable IB Virtual Functions', label='Maximum IB VFs', max_value=2147483647,
min_value=-2147483648, validators=[<function validate_positive>])
xgb_vf_max = IntegerField(help_text='Maximum number of assignable 10GB Virtual Functions', label='Maximum 10GB VFs', max_value=2147483647,
min_value=-2147483648, validators=[<function validate_positive>])