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)