MPools.h
1 /*****************************************************************************
2  **
3  ** Header file for Muster API Pools object
4  **
5  ** Name : MPools.h
6  ** Author : Leonardo Bernardini
7 ** Version : Alpha 9.0 Wed May 17th 2017
8  **
9  ** Copyright 2000-2017, Virtual Vertex
10  ** All Rights Reserved.
11  **
12  ** This file contains UNPUBLISHED PROPRIETARY SOURCE CODE.
13  ** The contents of this file may not be disclosed to third parties, copied
14  ** or duplicated in any form, in whole or in part, without the prior written
15  ** permission of the author.
16  **
17  *****************************************************************************/
18 #ifndef MPOOLS_H
19 #define MPOOLS_H
20 
21 #ifdef WIN32
22 // Windows definitions
23 #ifdef MCLIENTLIB_EXPORTS
24 #define MCLIENTLIB_API __declspec(dllexport)
25 #else
26 #define MCLIENTLIB_API __declspec(dllimport)
27 #endif
28 #else
29 
30 #ifndef MCLIENTLIB_EXPORTS
31 #ifdef LINUX
32 #define MCLIENTLIB_API
33 #else
34 #define MCLIENTLIB_API
35 #endif
36 #else
37 #define MCLIENTLIB_API
38 #endif
39 #endif
40 
41 #include <MClientLib/MTimeRule.h>
42 
43 // Disable STL Export warning, member is private, we don't need direct access from the DLL client
44 #if defined(_WIN32)
45 #pragma warning(disable: 4251)
46 #endif // _WIN32
47 
48 #include <string>
49 #include <list>
50 #include <vector>
51 #include <map>
52 #include <set>
53 
54 namespace MClientLib {
55 
56  class MPool;
57 
68  class MCLIENTLIB_API MPoolItem {
69  private:
70  std::string hostName;
71  std::string hostIp;
72  MPool* parent;
73  public:
74 #ifndef SWIG
75  MPoolItem& operator=( const MPoolItem& src );
76  MPoolItem( const MPoolItem& src );
77 #endif
78  MPoolItem();
79  MPoolItem(MPool* parent);
80  virtual ~MPoolItem();
81  virtual std::string getHostName() const ;
82  virtual void setHostName(const std::string& _hostName);
83  virtual std::string getHostIp() const;
84  virtual void setHostIp(const std::string& _hostIp);
85  virtual MPool* getParent();
86  virtual void setParent(MPool* parent);
88  static std::vector<MPoolItem> Unmarshall(const std::string& items);
89  static std::string Marshall(const std::vector<MPoolItem>& childs);
90  void castedRelease();
93  };
94 
100  class MCLIENTLIB_API MPool {
101  private:
102  std::string poolName;
103  int nodesPriority;
104  int jobsPriority;
105  long id;
106  bool hasNodesPriority;
107  bool hasJobsPriority;
108  std::string autoPoolIpFilter;
109  std::string autoPoolHostnameFilter;
110  std::vector<MPoolItem> childs;
111  std::vector<MClientLib::MTimeRule> timeRules;
112 
113 
114  public:
115  MPool();
116  virtual ~MPool();
117 #ifndef SWIG
118  MPool& operator=( const MPool& src );
119  MPool(const MPool &src);
120  virtual std::vector<MClientLib::MPoolItem>* getInnerNodesContainer();
121  virtual void setNodes(std::vector<MClientLib::MPoolItem>);
122  virtual std::vector<MClientLib::MPoolItem> getNodes();
123  virtual int indexOfNode(MClientLib::MPoolItem node);
124  virtual std::vector<MClientLib::MTimeRule> getTimeRules();
125  virtual void setTimeRules(std::vector<MClientLib::MTimeRule>);
126 #endif
127  virtual long getId();
128  virtual void setId(long _id);
129  virtual std::string getName();
130  virtual void setName(const std::string& _name);
131  virtual int getNodesPriority();
132  virtual void setNodesPriority(int _nodesPriority);
133  virtual int getJobsPriority();
134  virtual void setJobsPriority(int _jobsPriority);
135  virtual bool getHasNodesPriority();
136  virtual void setHasNodesPriority(bool _hasNodesPriority);
137  virtual bool getHasJobsPriority();
138  virtual void setHasJobsPriority(bool _hasJobsPriority);
139  virtual std::string getAutoPoolIpFilter();
140  virtual void setAutoPoolIpFilter(const std::string& _autoPoolIpFilter);
141  virtual std::string getAutoPoolHostnameFilter();
142  virtual void setAutoPoolHostnameFilter(const std::string& _autoPoolHostnameFilter);
143 
144  virtual bool containsNode(const std::string& hostName, const std::string& hostIp);
145  virtual bool containsNodeName(const std::string& hostName);
146  virtual bool containsNodeIp(const std::string& hostIp);
147 
148  virtual bool removeNode(const std::string& hostName, const std::string& hostIp);
149  virtual void addNode(const std::string& hostName, const std::string& hostIp);
150  virtual int indexOfNode(const std::string& hostName, const std::string& hostIp);
151  virtual MClientLib::MPoolItem nodeAtIndex(int index);
152  virtual bool removeNodeAtIndex(int index);
153  virtual int getNodesCount();
154 
155  virtual void addTimeRule(const MClientLib::MTimeRule& rule);
156  virtual MClientLib::MTimeRule getTimeRuleAtIndex(int index);
157  virtual void setTimeRuleAtIndex(int index,const MClientLib::MTimeRule& rule);
158  virtual bool removeTimeRuleAtIndex(int index);
159  virtual int getTimeRulesCount();
161  virtual bool Unmarshall(const std::vector<std::string>& items);
162  virtual const std::string Marshall();
163  void castedRelease();
166  };
167 
173  class MCLIENTLIB_API MPools {
174  private:
175  std::vector<MPool*> pools;
176  std::map<std::string,MPool*> poolsNames;
177  public:
178 #ifndef SWIG
179  MPools(const MPools &src);
180  MPools& operator=( const MPools& src );
181  virtual std::vector<MPool*>* getInnerPoolsContainer();
182 #endif
183  MPools();
184  virtual ~MPools();
185 
186  virtual std::vector<std::string> groupOf(const std::string& hostName, const std::string& ipAddress);
187 
188  virtual bool containsNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
189  virtual bool containsNodeName(const std::string& poolName,const std::string& hostName);
190  virtual bool containsNodeIp(const std::string& poolName,const std::string& hostIp);
191 
192  virtual bool removeNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
193  virtual void addNode(const std::string& poolName,const std::string& hostName, const std::string& hostIp);
194 
195  virtual void addPool(const std::string& poolName);
196  virtual bool removePool(const std::string& poolName);
197  virtual bool containsPool(const std::string& poolName);
198  virtual int indexOfPool(const std::string& poolName);
199  virtual MPool* getPool(const std::string& pool);
200 
201  virtual void addPool(MPool* pool);
202  virtual bool removePool(MPool* pool);
203  virtual int indexOfPool(MPool* pool);
204  virtual bool updatePool(MPool* pool);
205  virtual bool renamePool(MPool* pool, const std::string& newName);
206 
207  virtual std::vector<MPool> getPools();
208  virtual void clear();
209 
210  virtual int getPoolsCount();
211 
212  };
213 
215 }
216 
217 #endif
Class holding the pools configuration.
Definition: MPools.h:173
Class holding a pool configuration.
Definition: MPools.h:100
Class holding a pool item entry (an instance)
Definition: MPools.h:68