8 #include <boost/bind.hpp>
9 #include <boost/assign.hpp>
10 #include <boost/foreach.hpp>
52 std::string
Description()
const {
return "RestServerGetVmCfgTask"; }
87 const std::string& port_id = (*data.
match)[1];
101 const std::string& port_id = (*data.
match)[1];
160 const std::string &vm_uuid = (*data.
match)[1];
174 std::string url = (*data.
match)[0];
175 bool vmi_uuid_presence =
false;
177 std::size_t vmi_uuid_pos = url.find(
"/", pos);
178 if (vmi_uuid_pos != std::string::npos) {
179 vmi_uuid_presence =
true;
181 std::string vm_uuid = url.substr(pos, vmi_uuid_pos);
182 std::string vmi_uuid =
"";
183 if (vmi_uuid_presence) {
184 vmi_uuid = url.substr(vmi_uuid_pos+1, std::string::npos);
214 const std::string& port_id = (*data.
match)[1];
229 const std::string& port_id = (*data.
match)[1];
243 boost::assign::list_of
254 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
259 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
276 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
281 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
286 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/"
287 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
291 regex(
"/vm-cfg/(.*)"),
295 regex(
"/enable-port/"
296 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
300 regex(
"/disable-port/"
301 "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"),
321 std::string path = request->
UrlPath();
void VmPortDeleteHandler(const struct RESTData &)
friend class RestServerGetVmCfgTask
void HandleRequest(HttpSession *session, const HttpRequest *request)
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
bool DeletePort(const string &url, string &err_msg)
void VmPortDisableHandler(const struct RESTData &data)
bool GetVmVnCfgPort(const string &vm, string &info) const
bool GetPortInfo(const std::string &uuid_str, std::string &info) const
void SendResponse(HttpSession *session, const std::string &msg, int status_code, std::string context)
virtual ~RestServerGetVmCfgTask()
bool DelVgwFromJson(const std::string &json, std::string &err_msg) const
PortIpcHandler * port_ipc_handler() const
bool GetVmVnPort(const std::string &vm_uuid, const std::string &vmi_uuid, std::string &info) const
const std::string & Body() const
const HttpRequest * request
void GatewayDeleteHandler(const struct RESTData &data)
static const std::vector< HandlerSpecifier > RESTHandlers_
const boost::smatch * match
void VmPortGetHandler(const struct RESTData &)
uint16_t rest_port() const
void VmPortEnableHandler(const struct RESTData &data)
bool EnablePort(const string &url, string &err_msg)
void VmVnPortGetHandler(const struct RESTData &)
static std::string get_client_context(std::string const &s)
void VmPortSyncHandler(const struct RESTData &data)
bool AddVmVnPort(const std::string &json, bool check_port, std::string &err_msg, bool write_file)
bool DeleteVmVnPort(const boost::uuids::uuid &vmi_uuid, string &err_msg)
void GatewayPostHandler(const struct RESTData &data)
static bool regex_match(const std::string &input, const regex ®ex)
const PortIpcHandler * pih_
std::string Description() const
bool DisablePort(const string &url, string &err_msg)
void VmPortPostHandler(const struct RESTData &)
static TaskScheduler * GetInstance()
void Enqueue(Task *task)
Enqueues a task for running. Starts task if all policy rules are met else puts task in waitq...
void VmVnPortDeleteHandler(const struct RESTData &)
static const uint16_t PortIpcVrouterAgentPort()
void SendErrorResponse(HttpSession *session, const std::string &error_msg, int status_code, std::string context)
contrail::regex request_regex
HttpServer * http_server_
static void DeleteServer(TcpServer *server)
AgentParam * params() const
static bool regex_search(const std::string &input, const regex ®ex)
static bool set_client_context(std::string const &s, const std::string &ctx)
http_method GetMethod() const
RestServerGetVmCfgTask(PortIpcHandler *pih, const struct RestServer::RESTData &data)
#define HTTP_WILDCARD_ENTRY
void VmVnPortPostHandler(const struct RESTData &)
virtual bool Run()
Code to execute. Returns true if task is completed. Return false to reschedule the task...
struct RestServer::RESTData & data_
DISALLOW_COPY_AND_ASSIGN(RestServerGetVmCfgTask)
virtual bool Initialize(unsigned short port)
bool AddPortFromJson(const string &json, bool check_port, string &err_msg, bool write_file)
void VmVnPortCfgGetHandler(const struct RESTData &data)
void RegisterHandler(const std::string &path, HttpHandlerFn handler)
Task is a wrapper over tbb::task to support policies.
std::string UrlPath() const
bool cat_is_agent_mocked() const
bool AddVgwFromJson(const std::string &json, std::string &err_msg) const
const std::string context_