> For the complete documentation index, see [llms.txt](https://rubrik.gitbook.io/rubrik-sdk-for-python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rubrik.gitbook.io/rubrik-sdk-for-python/doc-example-update/data-management-functions/on_demand_snapshot.md).

# on\_demand\_snapshot

Initiate an on-demand snapshot.

```python
def on_demand_snapshot(object_name, object_type, sla_name='current', fileset=None, host_os=None, sql_host=None, sql_instance=None, sql_db=None, timeout=15)
```

## Arguments

| Name         | Type | Description                                                    | Choices                     |
| ------------ | ---- | -------------------------------------------------------------- | --------------------------- |
| object\_name | str  | The name of the Rubrik object to take a on-demand snapshot of. |                             |
| object\_type | str  | The Rubrik object type you want to backup.                     | vmware, physical\_host, ahv |

## Keyword Arguments

| Name          | Type | Description                                                                                                                               | Choices        | Default |
| ------------- | ---- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------- |
| sla\_name     | str  | The SLA Domain name you want to assign the on-demand snapshot to. By default, the currently assigned SLA Domain will be used.             |                | current |
| fileset       | str  | The name of the Fileset you wish to backup. Only required when taking a on-demand snapshot of a physical host.                            |                | None    |
| host\_os      | str  | The operating system for the physical host. Only required when taking a on-demand snapshot of a physical host.                            | Linux, Windows | None    |
| sql\_host     | str  | The name of the SQL Host hosting the specified database. Only required when taking a on-demand snapshot of a MSSQL DB.                    | None           | None    |
| sql\_instance | str  | The name of the SQL Instance hosting the specified database. Only required when taking a on-demand snapshot of a MSSQL DB.                | None           | None    |
| sql\_db       | str  | TThe name of the SQL DB. Only required when taking a on-demand snapshot of a MSSQL DB.                                                    | None           | None    |
| hostname      | str  | The host name, or one of the host names in the cluster, that the Oracle database is running. Required when the object\_type is oracle\_db | None           | None    |
| force\_full   | bool | If True will force a new full image backup of an Oracle database. Used when the object\_type is oracle\_db                                | True, False    | False   |
| timeout       | int  | The number of seconds to wait to establish a connection the Rubrik cluster before returning a timeout error.                              |                | 15      |

## Returns

| Type  | Return Value                                                                                                                                                                                                  |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tuple | When object\_type is vmware, the full API response for `POST /v1/vmware/vm/{ID}/snapshot` and the job status URL which can be used to monitor progress of the snapshot. (api\_response, job\_status\_url)     |
| tuple | When object\_type is physical\_host, the full API response for `POST /v1/fileset/{}/snapshot` and the job status URL which can be used to monitor progress of the snapshot. (api\_response, job\_status\_url) |

## Example

### VMware

```python
import rubrik_cdm

rubrik = rubrik_cdm.Connect()


vsphere_vm_name = "python-sdk-demo"
object_type = "vmware"

snapshot = rubrik.on_demand_snapshot(vsphere_vm_name, object_type)
```

### AHV

```python
import rubrik_cdm

rubrik = rubrik_cdm.Connect()

ahv_vm_name = "python-sdk-demo"
object_type = "ahv"
snapshot = rubrik.on_demand_snapshot(ahv_vm_name, object_type)
```

### Physical Host

```python
import rubrik_cdm

rubrik = rubrik_cdm.Connect()

physical_host_name = "python-sdk-physical-demo"
object_type = "physical_host"
sla = "Gold"
fileset = "/etc"
host_os = "Linux"

snapshot = rubrik.on_demand_snapshot(physical_host_name, object_type, sla, fileset, host_os)
```

### MSSQL DB

```python
import rubrik_cdm

rubrik = rubrik_cdm.Connect()

# MSSQL DB Snapshot
object_name = "AdventureWorks2014"
object_type = "mssql_db"

snapshot = rubrik.on_demand_snapshot(object_name, object_type, sql_host="hostname.rubrik.com", sql_instance="MSSQLSERVER", sql_db="AdventureWorks2014")
```

### Oracle DB

```python
import rubrik_cdm

rubrik = rubrik_cdm.Connect()

object_name = "oratestdb"
object_type = "oracle_db"
host = "ora_host_01"
sla = "OracleTest"

snapshot = rubrik.on_demand_snapshot(object_name, object_type, sla_name=sla, hostname=host, force_full=False )
```
