2017-03-27 21:12:05 +03:00
/*
* Copyright ( C ) 2017 Red Hat , Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin St , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
# pragma once
# include <ostree.h>
# include "rpmostreed-types.h"
/* Used by the upgrader to hold a strong ref temporarily to a base commit */
# define RPMOSTREE_TMP_BASE_REF "rpmostree / base / tmp"
2017-06-08 17:41:36 +03:00
/* Diretory that is defined to have 0700 mode always, used for checkouts */
# define RPMOSTREE_TMP_PRIVATE_DIR "extensions / rpmostree / private"
2017-03-27 21:12:05 +03:00
/* Where we check out a new rootfs */
2017-06-08 17:41:36 +03:00
# define RPMOSTREE_TMP_ROOTFS_DIR RPMOSTREE_TMP_PRIVATE_DIR " / commit"
/* The legacy dir, which we will just delete if we find it */
# define RPMOSTREE_OLD_TMP_ROOTFS_DIR "extensions / rpmostree / commit"
2017-03-27 21:12:05 +03:00
gboolean
rpmostree_syscore_cleanup ( OstreeSysroot * sysroot ,
OstreeRepo * repo ,
GCancellable * cancellable ,
GError * * error ) ;
2017-03-22 17:17:47 +03:00
OstreeDeployment * rpmostree_syscore_get_origin_merge_deployment ( OstreeSysroot * self , const char * osname ) ;
gboolean rpmostree_syscore_bump_mtime ( OstreeSysroot * self , GError * * error ) ;
2017-11-07 21:45:49 +03:00
gboolean
rpmostree_syscore_get_pkgcache_repo ( OstreeRepo * parent ,
OstreeRepo * * out_pkgcache ,
GCancellable * cancellable ,
GError * * error ) ;
Introduce `ex livefs`
There are a few different use cases here. First, for layering new packages,
there's no good reason for us to force a reboot. Second, we want some support
for cherry-picking security updates and allowing admins to restart services. Finally,
at some point we should offer support for entirely replacing the running tree
if that's what the user wants.
Until now we've been very conservative, but there's a spectrum here. In
particular, this patch changes things so we push a rollback before we start
doing anything live. I think in practice, many use cases would be totally fine
with doing most changes live, and falling back to the rollback if something went
wrong.
This initial code drop *only* supports live layering of new packages. However,
a lot of the base infrastructure is laid for future work.
For now, this will be classified as an experimental feature, hence `ex livefs`.
Part of: https://github.com/projectatomic/rpm-ostree/issues/639
Closes: #652
Approved by: jlebon
2017-03-01 01:16:48 +03:00
# define RPMOSTREE_LIVE_INPROGRESS_XATTR "user.rpmostree-live-inprogress"
# define RPMOSTREE_LIVE_REPLACED_XATTR "user.rpmostree-live-replaced"
gboolean rpmostree_syscore_deployment_get_live ( OstreeSysroot * sysroot ,
OstreeDeployment * deployment ,
char * * out_inprogress_checksum ,
char * * out_livereplaced_checksum ,
GError * * error ) ;
gboolean rpmostree_syscore_deployment_is_live ( OstreeSysroot * sysroot ,
OstreeDeployment * deployment ,
gboolean * out_is_live ,
GError * * error ) ;
2017-03-27 23:58:04 +03:00
GPtrArray * rpmostree_syscore_filter_deployments ( OstreeSysroot * sysroot ,
const char * osname ,
gboolean remove_pending ,
gboolean remove_rollback ) ;
2017-08-24 00:52:55 +03:00
gboolean rpmostree_syscore_write_deployment ( OstreeSysroot * sysroot ,
OstreeDeployment * new_deployment ,
OstreeDeployment * merge_deployment ,
gboolean pushing_rollback ,
GCancellable * cancellable ,
GError * * error ) ;