Go to main content

Oracle I/O Domain Administration Guide

Exit Print View

Updated: September 2021
 
 

Example: I/O Domain Group JSON File

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