Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
zone-provision.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Mateusz Malicki <m.malicki2@samsung.com>
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 
26 #ifndef SERVER_ZONE_PROVISION_HPP
27 #define SERVER_ZONE_PROVISION_HPP
28 
30 
31 #include <string>
32 #include <vector>
33 #include <list>
34 
35 namespace vasum {
36 
37 
43 
44 public:
53  ZoneProvision(const std::string& rootPath,
54  const std::string& configPath,
55  const std::string& dbPath,
56  const std::string& dbPrefix,
57  const std::vector<std::string>& validLinkPrefixes);
59 
60  ZoneProvision(const ZoneProvision&) = delete;
61  ZoneProvision& operator=(const ZoneProvision&) = delete;
62  ZoneProvision(ZoneProvision&&) = default;
63 
67  std::string declareFile(const int32_t& type,
68  const std::string& path,
69  const int32_t& flags,
70  const int32_t& mode);
74  std::string declareMount(const std::string& source,
75  const std::string& target,
76  const std::string& type,
77  const int64_t& flags,
78  const std::string& data);
82  std::string declareLink(const std::string& source,
83  const std::string& target);
84 
85  void start() noexcept;
86  void stop() noexcept;
87 
91  std::vector<std::string> list() const;
92 
98  void remove(const std::string& item);
99 
100 private:
102  std::string mRootPath;
103  std::string mDbPath;
104  std::string mDbPrefix;
105  std::vector<std::string> mValidLinkPrefixes;
106  std::list<ZoneProvisioningConfig::Provision> mProvisioned;
107 
108  void saveProvisioningConfig();
109  std::string declareProvision(ZoneProvisioningConfig::Provision&& provision);
110 
111  void mount(const ZoneProvisioningConfig::Mount& config);
112  void umount(const ZoneProvisioningConfig::Mount& config);
113  void file(const ZoneProvisioningConfig::File& config);
114  void link(const ZoneProvisioningConfig::Link& config);
115 
116  static std::string getId(const ZoneProvisioningConfig::File& file);
117  static std::string getId(const ZoneProvisioningConfig::Mount& mount);
118  static std::string getId(const ZoneProvisioningConfig::Link& link);
119  static std::string getId(const ZoneProvisioningConfig::Provision& provision);
120 };
121 
122 } // namespace vasum
123 
124 #endif // SERVER_ZONE_PROVISION_HPP
ZoneProvision & operator=(const ZoneProvision &)=delete
std::vector< std::string > mValidLinkPrefixes
Definition: zone-provision.hpp:105
Declaration of the class for storing zone provisioning configuration.
ZoneProvisioningConfig mProvisioningConfig
Definition: zone-provision.hpp:101
std::string mRootPath
Definition: zone-provision.hpp:102
std::vector< std::string > list() const
List all provisioned resources.
Definition: zone-provision.cpp:158
Definition: zone-provision-config.hpp:40
static std::string getId(const ZoneProvisioningConfig::File &file)
Definition: zone-provision.cpp:261
Definition: zone-provision-config.hpp:86
Definition: zone-provision-config.hpp:37
std::string declareLink(const std::string &source, const std::string &target)
Declare link that will be created while zone startup.
Definition: zone-provision.cpp:114
std::string declareMount(const std::string &source, const std::string &target, const std::string &type, const int64_t &flags, const std::string &data)
Declare mount that will be created while zone startup.
Definition: zone-provision.cpp:102
Definition: zone-provision-config.hpp:56
void start() noexcept
Definition: zone-provision.cpp:123
std::string mDbPath
Definition: zone-provision.hpp:103
ZoneProvision(const std::string &rootPath, const std::string &configPath, const std::string &dbPath, const std::string &dbPrefix, const std::vector< std::string > &validLinkPrefixes)
ZoneProvision constructor.
Definition: zone-provision.cpp:50
void saveProvisioningConfig()
Definition: zone-provision.cpp:68
char data[368]
Definition: initctl.cpp:41
void umount(const ZoneProvisioningConfig::Mount &config)
Definition: zone-provision.cpp:231
void file(const ZoneProvisioningConfig::File &config)
Definition: zone-provision.cpp:183
void link(const ZoneProvisioningConfig::Link &config)
Definition: zone-provision.cpp:240
Class is responsible for prepare filesystem for zone It allows to create directories, files, mount points and copying files from host.
Definition: zone-provision.hpp:42
std::list< ZoneProvisioningConfig::Provision > mProvisioned
Definition: zone-provision.hpp:106
void stop() noexcept
Definition: zone-provision.cpp:142
std::string declareProvision(ZoneProvisioningConfig::Provision &&provision)
Definition: zone-provision.cpp:73
~ZoneProvision()
Definition: zone-provision.cpp:63
void mount(const ZoneProvisioningConfig::Mount &config)
Definition: zone-provision.cpp:218
std::string declareFile(const int32_t &type, const std::string &path, const int32_t &flags, const int32_t &mode)
Declare file, directory or pipe that will be created while zone startup.
Definition: zone-provision.cpp:91
std::string mDbPrefix
Definition: zone-provision.hpp:104