removeMode = 'ONLY_ME' | 'INCLUDING_DESCENDANTS' | 'DESCENDANTS_ONLY' | 'WHOLE_VTREE'
        Using kwargs it will be possible to tell delete_volume() to unmap all SDCs before delting. Not working yet

def delete_volume(self, volObj, removeMode='ONLY_ME', **kwargs):
        """
        removeMode = 'ONLY_ME' | 'INCLUDING_DESCENDANTS' | 'DESCENDANTS_ONLY' | 'WHOLE_VTREE'
        Using kwargs it will be possible to tell delete_volume() to unmap all SDCs before delting. Not working yet
        """
        if kwargs:
            for key, value in kwargs.iteritems():
                if key =='autoUnmap' and value ==True:
                    # Find all mapped SDS to this volObj
                    # Call unmap for all of them
                    if self.get_volume_all_sdcs_mapped(volObj):
                        try:
                            self.conn.cluster.unmap_volume_from_sdc(volObj, enableMapAllSdcs=False)
                        except:
                            raise RuntimeError("delete_volume() - enableMapAllSdcs error")
                    else: # All SDS not enabled so loop through all mapped SDCs of volume and remove one by one                        
                        for sdc in self.get_sdc_for_volume(volObj):
                            try:
                                self.unmap_volume_from_sdc(volObj, self.get_sdc_by_id(sdc['sdcId']))
                            except:
                                raise RuntimeError("delete_volume() - unmap_volume_from_sdc() error")
        # TODO:
        # Check if object parameters are the correct ones, otherwise throw error
        self.conn.connection._check_login()
        deleteVolumeDict = {'removeMode': removeMode}
        try:
            response = self.conn.connection._do_post("{}/{}{}/{}".format(self.conn.connection._api_url, "instances/Volume::", volObj.id, 'action/removeVolume'), json=deleteVolumeDict)
        except:
            raise RuntimeError("delete_volume() - Communication error with ScaleIO Gateway")
        return response