docs: def update_view_data(self, properties=None):
          """Update the local object from the server-side object.
          
          >>> vm = VirtualMachine.find_one(client, filter={"name": "genesis"})
          >>> # Update all properties
          >>> vm.update_view_data()
          >>> # Update the config and summary properties
          >>> vm.update_view_data(properties=["config", "summary"]
  
          :param properties: A list of properties to update.
          :type properties: list
  
          """
          if properties is None:
              properties = []
          logger.info("Updating view data for object of type %s",
                      self._mo_ref._type)
          property_spec = self._client.create('PropertySpec')
          property_spec.type = str(self._mo_ref._type)
          # Determine which properties to retrieve from the server
          if properties is None:
              properties = []
          else:
              if properties == "all":
                  logger.debug("Retrieving all properties")
                  property_spec.all = True
              else:
                  logger.debug("Retrieving %s properties", len(properties))
                  property_spec.all = False
                  property_spec.pathSet = properties
  
          object_spec = self._client.create('ObjectSpec')
          object_spec.obj = self._mo_ref
  
          pfs = self._client.create('PropertyFilterSpec')
          pfs.propSet = [property_spec]
          pfs.objectSet = [object_spec]
  
          # Create a copy of the property collector and call the method
          pc = self._client.sc.propertyCollector
          object_content = pc.RetrieveProperties(specSet=pfs)[0]
          if not object_content:
              # TODO: Improve error checking and reporting
              logger.error("Nothing returned from RetrieveProperties!")
  
          self._set_view_data(object_content)