anchor.diff:  [Example configure_networks.go](https://github.com/cppforlife/bosh-warden-cpi-release/blob/master/src/github.com/cppforlife/bosh-warden-cpi/action/configure_networks.go)
   
   ---
  +### <a id="calculate-vm-cloud-properties"></a> `calculate_vm_cloud_properties`
  +
  +Returns a hash that can be used in a Cloud Config's `vm_types`'s
  +`cloud_properties` section; it describes the IaaS instance type closest to the
  +arguments passed.
  +
  +The cloud_properties returned are IaaS-specific. For example, when querying the
  +AWS CPI for a VM with the parameters `{ cpu: 1, ram: 512, ephemeral_disk_size:
  +1024 }`, it will return the following, which includes a `t2.nano` instance
  +type which has 1 CPU and 512MB RAM:
  +
  +```yaml
  +{ 'instance_type' => 't2.nano',
  +  'ephemeral_disk' =>
  +    {
  +      'size' => 1024
  +    }
  +}
  +```
  +
  +`calculate_vm_cloud_properties` returns the minimum resources that satisfy the
  +parameters, which may result in a larger machine than expected. For example,
  +when querying the AWS CPI for a VM with the parameters `{ cpu: 1, ram: 8192,
  +ephemeral_disk_size: 4096}`, it will return an `m4.large` instance type (which
  +has 2 CPUs) because it is the smallest instance type which has at least 8 GiB
  +RAM.
  +
  +If a parameter is set to a value greater than what is available (e.g. 1024
  +CPUs), an error is raised.
  +
  +#### Arguments
  +
  +- **desired_instance_size** [Hash]: Parameters of the desired size of the VM
  +  consisting of the following keys:
  +  - **cpu** [Integer]: Number of virtual cores desired
  +  - **ram** [Integer]: Amount of RAM, in MiB (i.e. `4096` for 4 GiB)
  +  - **ephemeral_disk_size** [Integer]: Size of ephemeral disk, in MB
  +
  +##### Example
  +
  +```yaml
  +{
  +  'ram' => 1024,
  +  'cpu' => 2,
  +  'ephemeral_disk_size' => 2048
  +}
  +```
  +
  +#### Returned
  +
  +- **cloud_properties** [Hash]: an IaaS-specific set of cloud properties that define
  +  the size of the VM.
  +
  +[Example configure_networks.go](https://github.com/cppforlife/bosh-warden-cpi-release/blob/master/src/github.com/cppforlife/bosh-warden-cpi/action/configure_networks.go)
  +
  +---
   ## <a id="disk"></a> Disk management
   
   ### <a id="create-disk"></a> `create_disk`
  
positive.code: 
  #### Agent settings
  
  For the Agent to eventually format, partition and mount attached disk, it needs to somehow identify the disk attachment from inside the OS. The Agent can currently identify attached disk based on either device path, disk's ID, or SCSI volume ID. For example settings below show that CPI attached a disk `vol-7447851` at `/dev/sdd`:
  
  ```yaml
  {
  
negative.code: 
  Detaches disk from the VM.
  
  If the persistent disk is attached to a VM that will be deleted, it's more likely `delete_vm` CPI method will be called without a call to `detach_disk` with an expectation that `delete_vm` will make sure disks are disassociated from the VM upon its deletion.
  
  Agent settings should have been updated to remove information about given disk.
  
  