{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "_copyright": "Copyright (c) 2014 Juniper Networks, Inc. All rights reserved.",
    "properties": {
        "base_image_id": {
            "description": "Id of base image OS that the server will be reimaged with.",
            "type": "string"
        },
        "cluster_id": {
            "description": "Id of the cluster that the server belongs to.",
            "type": "string"
        },
        "contrail": {
            "properties": {
                "control_data_interface": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "domain": {
            "description": "The domain that the server belongs to.",
            "type": "string"
        },
        "email": {
            "type": "string"
        },
        "id": {
            "description": "The id of the server. Mandatory",
            "type": "string"
        },
        "ipmi_address": {
            "description": "Address of the IPMI Interface for this server (if available)",
            "pattern": "^$|^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])?$",
            "type": "string"
        },
        "ipmi_interface": {
            "type": "string"
        },
        "ipmi_password": {
            "description": "The password to login to IPMI interface",
            "type": "string"
        },
        "ipmi_username": {
            "description": "The username to login to IPMI interface",
            "type": "string"
        },
        "network": {
            "properties": {
                "interfaces": {
                    "description": "Description of the interface config for this server",
                    "items": {},
                    "type": "array"
                },
                "management_interface": {
                    "description": "The name of the interface to be set as the management interface for this server",
                    "type": "string"
                },
                "provisioning": {
                    "description": "Provisioning method",
                    "type": "string"
                }
            },
            "required": [
                "management_interface"
            ],
            "type": "object"
        },
        "package_image_id": {
            "description": "Id of Contrail package that the server will be provisioned with.",
            "type": "string"
        },
        "parameters": {
            "properties": {
                "partition": {
                    "description": "Disk name on which to install the OS. Only this disk will be part of the LVM. By default ALL disks on the node will be part of the LVM.",
                    "type": "string"
                },
                "provision": {
                    "properties": {
                        "contrail": {
                            "properties": {
                                "storage": {
                                    "properties": {
                                        "storage_chassis_id": {
                                            "description": "If server has storage-compute role this field should contain value of storage chassis id. This value along with server id and configuration from other storage-compute nodes is used to calculate storage_chassis_config",
                                            "type": "string"
                                        },
                                        "storage_chassis_id_input": {
                                            "type": "string"
                                        },
                                        "storage_osd_disks": {
                                            "description": "If server has storage-compute role, specify list of disks that are used for storage.",
                                            "items": {},
                                            "type": "array"
                                        },
                                        "storage_repo_id": {
                                            "description": "If server has storage compute or master role configured, the storage repo id should be specified. mandatory if storage role is configured. SM does not calculate the value.",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "type": "object"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "password": {
            "description": "Root password for this server",
            "type": "string"
        },
        "roles": {
            "items": {
                "type": "string"
            },
            "type": "array"
        },
        "tag": {
            "properties": {},
            "type": "object"
        },
        "top_of_rack": {
            "properties": {
                "switches": {
                    "items": {},
                    "type": "array"
                }
            },
            "type": "object"
        }
    },
    "required": [
        "id",
        "ipmi_address",
        "password"
    ],
    "type": "object"
}