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>])