sbuild  1.7.2
fsunion.h
1 /* Copyright © 2008-2013 Jan-Marek Glogowski <glogow@fbihome.de>
2  * Copyright © 2005-2013 Roger Leigh <rleigh@debian.org>
3  *
4  * schroot is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * schroot is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see
16  * <http://www.gnu.org/licenses/>.
17  *
18  *********************************************************************/
19 
20 #ifndef SBUILD_CHROOT_FACET_FSUNION_H
21 #define SBUILD_CHROOT_FACET_FSUNION_H
22 
23 #include <sbuild/chroot/chroot.h>
24 #include <sbuild/chroot/facet/facet.h>
25 #include <sbuild/chroot/facet/session-setup.h>
26 #include <sbuild/chroot/facet/source-setup.h>
27 
28 namespace sbuild
29 {
30  namespace chroot
31  {
32  namespace facet
33  {
34 
44  class fsunion : public facet,
45  public session_setup,
46  public source_setup
47  {
48  public:
51  {
55  };
56 
59 
61  typedef std::shared_ptr<fsunion> ptr;
62 
64  typedef std::shared_ptr<const fsunion> const_ptr;
65 
66  private:
68  fsunion ();
69 
70  public:
72  virtual ~fsunion ();
73 
79  static ptr
80  create ();
81 
82  virtual facet::ptr
83  clone () const;
84 
85  std::string const&
86  get_name () const;
87 
93  bool
94  get_union_configured () const;
95 
102  virtual std::string const&
103  get_union_type () const;
104 
112  virtual void
113  set_union_type (const std::string& union_type);
114 
121  virtual std::string const&
122  get_union_mount_options () const;
123 
136  virtual void
137  set_union_mount_options (const std::string& union_mount_options);
138 
144  virtual std::string const&
146 
152  virtual void
153  set_union_overlay_directory (const std::string& directory);
154 
160  virtual std::string const&
162 
168  virtual void
169  set_union_underlay_directory (const std::string& directory);
170 
171  virtual void
172  setup_env (environment& env) const;
173 
174  virtual session_flags
175  get_session_flags () const;
176 
177  virtual void
178  get_details (format_detail& detail) const;
179 
180  virtual void
181  get_used_keys (string_list& used_keys) const;
182 
183  virtual void
184  get_keyfile (keyfile& keyfile) const;
185 
186  virtual void
187  set_keyfile (const keyfile& keyfile);
188 
189  virtual void
190  chroot_session_setup (const chroot& parent,
191  const std::string& session_id,
192  const std::string& alias,
193  const std::string& user,
194  bool root);
195 
196  virtual void
197  chroot_source_setup (const chroot& parent);
198 
199  private:
201  std::string union_type;
203  std::string union_mount_options;
208  };
209 
210  }
211  }
212 }
213 
214 #endif /* SBUILD_CHROOT_FACET_FSUNION_H */
215 
216 /*
217  * Local Variables:
218  * mode:C++
219  * End:
220  */
virtual void set_union_type(const std::string &union_type)
Set the filesystem union type.
Definition: fsunion.cc:143
virtual session_flags get_session_flags() const
Get the session flags of the chroot.
Definition: fsunion.cc:195
error_code
Error codes.
Definition: fsunion.h:50
Debian source builder components.
Definition: ctty.cc:31
Unknown filesystem union type.
Definition: fsunion.h:52
Union underlay must have an absolute path.
Definition: fsunion.h:54
virtual ~fsunion()
The destructor.
Definition: fsunion.cc:76
virtual void get_details(format_detail &detail) const
Get detailed information about the chroot for output.
Definition: fsunion.cc:206
virtual std::string const & get_union_mount_options() const
Get the filesystem union mount options (branch configuration).
Definition: fsunion.cc:167
Container of environment variables.
Definition: environment.h:38
virtual std::string const & get_union_type() const
Get the filesystem union type.
Definition: fsunion.cc:137
std::string union_underlay_directory
Union read-only underlay directory.
Definition: fsunion.h:207
virtual void set_union_mount_options(const std::string &union_mount_options)
Set the filesystem union mount options (branch configuration).
Definition: fsunion.cc:174
Common chroot data.
Definition: chroot.h:50
A chroot located in the filesystem.
Definition: directory.h:41
virtual void setup_env(environment &env) const
Set environment.
Definition: fsunion.cc:180
bool get_union_configured() const
Get fs union configured state.
Definition: fsunion.cc:99
std::shared_ptr< const fsunion > const_ptr
A shared_ptr to a const chroot facet object.
Definition: fsunion.h:64
std::string union_overlay_directory
Union read-write overlay directory.
Definition: fsunion.h:205
std::string const & get_name() const
Get the name of the chroot facet.
Definition: fsunion.cc:93
session_flags
Chroot session properties.
Definition: facet.h:54
virtual void chroot_source_setup(const chroot &parent)
Set up a newly-cloned source chroot.
Definition: fsunion.cc:314
Chroot support for filesystem union based sessions.
Definition: fsunion.h:44
Base class for all facets.
Definition: facet.h:50
virtual void get_keyfile(keyfile &keyfile) const
Copy the chroot properties into a keyfile.
Definition: fsunion.cc:233
std::vector< std::string > string_list
A string vector.
Definition: types.h:38
virtual void chroot_session_setup(const chroot &parent, const std::string &session_id, const std::string &alias, const std::string &user, bool root)
Set up a newly-cloned session chroot.
Definition: fsunion.cc:289
Common chroot data.
Definition: session-setup.h:41
Custom error.
Definition: custom-error.h:31
Common chroot data.
Definition: source-setup.h:41
Format names and values for output.
Definition: format-detail.h:38
virtual void get_used_keys(string_list &used_keys) const
Get a list of the keys used during keyfile parsing.
Definition: fsunion.cc:224
virtual void set_union_overlay_directory(const std::string &directory)
Set the union overlay directory.
Definition: fsunion.cc:112
static ptr create()
Create a chroot facet.
Definition: fsunion.cc:81
std::string union_type
filesystem union type.
Definition: fsunion.h:201
Configuration file parser.
Definition: keyfile.h:46
Union overlay must have an absolute path.
Definition: fsunion.h:53
custom_error< error_code > error
Exception type.
Definition: fsunion.h:58
fsunion()
The constructor.
Definition: fsunion.cc:68
std::shared_ptr< facet > ptr
A shared_ptr to a chroot facet object.
Definition: facet.h:63
virtual std::string const & get_union_overlay_directory() const
Get the union overlay directory.
Definition: fsunion.cc:105
virtual std::string const & get_union_underlay_directory() const
Get the union underlay directory.
Definition: fsunion.cc:121
std::shared_ptr< fsunion > ptr
A shared_ptr to a chroot facet object.
Definition: fsunion.h:61
virtual void set_union_underlay_directory(const std::string &directory)
Set the union underlay directory.
Definition: fsunion.cc:128
virtual facet::ptr clone() const
Copy the chroot facet.
Definition: fsunion.cc:87
virtual void set_keyfile(const keyfile &keyfile)
Set the chroot properties from a keyfile.
Definition: fsunion.cc:258
std::string union_mount_options
Union mount options (branch configuration).
Definition: fsunion.h:203