'Shuts down the specified virtual machine.
service_name:
The name of the service.
deployment_name:
The name of the deployment.
role_name:
The name of the role.
post_shutdown_action:
Specifies how the Virtual Machine should be shut down. Values are:
Stopped
Shuts down the Virtual Machine but retains the compute
resources. You will continue to be billed for the resources
that the stopped machine uses.
StoppedDeallocated
Shuts down the Virtual Machine and releases the compute
resources. You are not billed for the compute resources that
this Virtual Machine uses. If a static Virtual Network IP
address is assigned to the Virtual Machine, it is reserved.'

def shutdown_role(self, service_name, deployment_name, role_name, post_shutdown_action='Stopped'):

    _validate_not_none('service_name', service_name)
    _validate_not_none('deployment_name', deployment_name)
    _validate_not_none('role_name', role_name)
    _validate_not_none('post_shutdown_action', post_shutdown_action)
    return self._perform_post(self._get_role_instance_operations_path(service_name, deployment_name, role_name), _XmlSerializer.shutdown_role_operation_to_xml(post_shutdown_action), async=True)
