'Reboots a node.
ex_cloud_service_name parameter is used to scope the request
to a specific Cloud Service. This is a required parameter as
nodes cannot exist outside of a Cloud Service nor be shared
between a Cloud Service within Azure.
:param      ex_cloud_service_name: Cloud Service name
:type       ex_cloud_service_name: ``str``
:param      ex_deployment_slot: Options are "production" (default)
or "Staging". (Optional)
:type       ex_deployment_slot: ``str``
:rtype: ``bool``'

def reboot_node(self, node, ex_cloud_service_name=None, ex_deployment_slot=None):

    if (ex_cloud_service_name is None):
        if (node.extra is not None):
            ex_cloud_service_name = node.extra.get('ex_cloud_service_name')
    if (not ex_cloud_service_name):
        raise ValueError('ex_cloud_service_name    is    required.')
    if (not ex_deployment_slot):
        ex_deployment_slot = 'Production'
    _deployment_name = self._get_deployment(service_name=ex_cloud_service_name, deployment_slot=ex_deployment_slot).name
    try:
        response = self._perform_post((((self._get_deployment_path_using_name(ex_cloud_service_name, _deployment_name) + '/roleinstances/') + _str(node.id)) + '?comp=reboot'), '')
        self.raise_for_response(response, 202)
        if self._parse_response_for_async_op(response):
            return True
        else:
            return False
    except Exception:
        return False
