'Does a rollback of an existing transaction.
Args:
backend: name of a backend to rollback, or None
If a backend is specified the rollback will affect only that backend, if no
backend is specified the rollback will affect the current app version.'

def _Rollback(self, backend=None):

    if os.path.isdir(self.basepath):
        module_yaml = self._ParseAppInfoFromYaml(self.basepath)
    else:
        file_name = os.path.basename(self.basepath)
        self.basepath = os.path.dirname(self.basepath)
        if (not self.basepath):
            self.basepath = '.'
        module_yaml = self._ParseAppInfoFromYaml(self.basepath, os.path.splitext(file_name)[0])
    appversion = AppVersionUpload(self._GetRpcServer(), module_yaml, module_yaml_path='app.yaml', backend=backend)
    appversion.in_transaction = True
    force_rollback = False
    if hasattr(self.options, 'force_rollback'):
        force_rollback = self.options.force_rollback
    appversion.Rollback(force_rollback)
