blob: 5e4eb5570ea826d5c643fe228feb95b7564c37cc [file] [log] [blame]
Vadim Ioseviche76832c2017-11-05 09:09:14 +02001/*
2* Copyright (c) 2017, The Linux Foundation. All rights reserved.
3*
4* Redistribution and use in source and binary forms, with or without
5* modification, are permitted provided that the following conditions are
6* met:
7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above
10* copyright notice, this list of conditions and the following
11* disclaimer in the documentation and/or other materials provided
12* with the distribution.
13* * Neither the name of The Linux Foundation nor the names of its
14* contributors may be used to endorse or promote products derived
15* from this software without specific prior written permission.
16*
17* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*/
29
30#ifndef _FILESYSTEMOSABSTRACTION_H_
31#define _FILESYSTEMOSABSTRACTION_H_
32
33#include <string>
34#include <memory>
35#include "HostDefinitions.h"
36
37class FileSystemOsAbstraction
38{
39public:
40
41 /*
42 GetHostIps
43 Returns host's personal IP and broadcast IP
44 @param: none
45 @return: HostIps - host's personal IP and broadcast IP
46 */
47 static HostIps GetHostIps();
48
49 /*
50 ReadFile
51 Gets a file name and reads its context.
52 @param: fileName - full file name
53 @return: file's content
54 */
55 static bool ReadFile(std::string fileName, std::string& data);
56
57 /*
58 WriteFile
59 Gets a file name and the required content, and write the content to the file (overrides the old content if exists)
60 @param: fileName - full file name
61 @param: content - the new file's content
62 @return: true for successful write operation, false otherwise
63 */
64 static bool WriteFile(const std::string& fileName, const std::string& content);
65
66 /*
67 GetConfigurationFilesLocation
68 Returns the host directory location for configuration files
69 @param: none
70 @return: string - host directory location for configuration files
71 */
72 static std::string GetConfigurationFilesLocation();
73
74 /*
75 GetTemplateFilesLocation
76 The directory in which all the extra files of host_manger would be in
77 @param: none
78 @return: string - directory in which all the extra files of host_manger would be in
79 */
80 static std::string GetTemplateFilesLocation();
81
82 /*
83 ReadHostOsAlias
84 Returns the host's alias as defined in persistency
85 @param: a reference to a string that will be updated with the host's alias
86 @return: bool - status - true for successful operation, false otherwise
87 */
88 static bool ReadHostOsAlias(std::string& alias);
89
90 static bool DoesFolderExist(std::string path);
91
92 static bool CreateFolder(std::string path);
93
94 static bool MoveFileToNewLocation(std::string oldFileLocation, std::string newFileLocation);
95
96 static std::string GetDirectoriesDilimeter();
97
98 static bool IsFileExists(std::string path);
99
100 static const std::string LOCAL_HOST_IP; // default IP address
101
102private:
103 static bool FindEthernetInterface(struct ifreq& ifr, int& fd);
104
105};
106
107#endif