docs: def update_properties(self, properties, email_to_addresses=None,
                            email_cc_addresses=None, email_insert=None):
          """
          Update writeable properties of this storage volume on the HMC, and
          optionally send emails to storage administrators requesting
          modification of the storage volume on the storage subsystem and of any
          resources related to the storage volume.
  
          This method performs the "Modify Storage Group Properties" operation,
          requesting modification of the volume.
  
          Authorization requirements:
  
          * Object-access permission to the storage group owning this storage
            volume.
          * Task permission to the "Configure Storage - System Programmer" task.
  
          Parameters:
  
            properties (dict): New property values for the volume.
              Allowable properties are the fields defined in the
              "storage-volume-request-info" nested object for the "modify"
              operation. That nested object is described in section "Request body
              contents" for operation "Modify Storage Group Properties" in the
              :term:`HMC API` book.
  
              The properties provided in this parameter will be copied and then
              amended with the `operation="modify"` and `element-uri` properties,
              and then used as a single array item for the `storage-volumes`
              field in the request body of the "Modify Storage Group Properties"
              operation.
  
            email_to_addresses (:term:`iterable` of :term:`string`): Email
              addresses of one or more storage administrator to be notified.
              If `None` or empty, no email will be sent.
  
            email_cc_addresses (:term:`iterable` of :term:`string`): Email
              addresses of one or more storage administrator to be copied
              on the notification email.
              If `None` or empty, nobody will be copied on the email.
              Must be `None` or empty if `email_to_addresses` is `None` or empty.
  
            email_insert (:term:`string`): Additional text to be inserted in the
              notification email.
              The text can include HTML formatting tags.
              If `None`, no additional text will be inserted.
              Must be `None` or empty if `email_to_addresses` is `None` or empty.
  
          Raises:
  
            :exc:`~zhmcclient.HTTPError`
            :exc:`~zhmcclient.ParseError`
            :exc:`~zhmcclient.AuthError`
            :exc:`~zhmcclient.ConnectionError`
          """
  
          volreq_obj = copy.deepcopy(properties)
          volreq_obj['operation'] = 'modify'
          volreq_obj['element-uri'] = self.uri
          body = {
              'storage-volumes': [volreq_obj],
          }
          if email_to_addresses:
              body['email-to-addresses'] = email_to_addresses
              if email_cc_addresses:
                  body['email-cc-addresses'] = email_cc_addresses
              if email_insert:
                  body['email-insert'] = email_insert
          else:
              if email_cc_addresses:
                  raise ValueError("email_cc_addresses must not be specified if "
                                   "there is no email_to_addresses: %r" %
                                   email_cc_addresses)
              if email_insert:
                  raise ValueError("email_insert must not be specified if "
                                   "there is no email_to_addresses: %r" %
                                   email_insert)
  
          self.manager.session.post(
              self.manager.storage_group.uri + '/operations/modify',
              body=body)
  
          self.properties.update(copy.deepcopy(properties))