-
Notifications
You must be signed in to change notification settings - Fork 390
/
instance_manager_adapter.h
61 lines (50 loc) · 1.9 KB
/
instance_manager_adapter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#ifndef __AGENT_OPER_INSTANCE_MANAGER_ADAPTER_H__
#define __AGENT_OPER_INSTANCE_MANAGER_ADAPTER_H__
#include <string>
#include <boost/uuid/uuid.hpp>
#include "oper/service_instance.h"
#include "oper/instance_task.h"
class InstanceManagerAdapter {
public:
enum CmdType {
START = 1,
STOP
};
virtual ~InstanceManagerAdapter() {}
virtual InstanceTask* CreateStartTask(
const ServiceInstance::Properties &props, bool update) = 0;
virtual InstanceTask* CreateStopTask(
const ServiceInstance::Properties &props) = 0;
virtual bool isApplicable(const ServiceInstance::Properties &props) = 0;
};
class DockerInstanceAdapter : public InstanceManagerAdapter {
public:
DockerInstanceAdapter(const std::string &docker_cmd,Agent *agent)
: docker_cmd_(docker_cmd), agent_(agent) {}
InstanceTask* CreateStartTask(const ServiceInstance::Properties &props,
bool update);
InstanceTask* CreateStopTask(const ServiceInstance::Properties &props);
bool isApplicable(const ServiceInstance::Properties &props);
private:
std::string docker_cmd_;
Agent *agent_;
};
class NetNSInstanceAdapter : public InstanceManagerAdapter {
public:
NetNSInstanceAdapter(const std::string &netns_cmd,
const std::string &loadbalancer_config_path,
Agent *agent)
: netns_cmd_(netns_cmd),
loadbalancer_config_path_(loadbalancer_config_path),
agent_(agent)
{}
InstanceTask* CreateStartTask(const ServiceInstance::Properties &props,
bool update);
InstanceTask* CreateStopTask(const ServiceInstance::Properties &props);
bool isApplicable(const ServiceInstance::Properties &props);
private:
std::string netns_cmd_;
std::string loadbalancer_config_path_;
Agent *agent_;
};
#endif