OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vncapi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __VNC_API_H__
6 #define __VNC_API_H__
7 
8 #include "http_client.h"
9 #include "http_curl.h"
10 #include "io/event_manager.h"
11 #include <string>
12 #include <rapidjson/document.h>
13 #include <rapidjson/stringbuffer.h>
14 #include <boost/algorithm/string.hpp>
15 #include <boost/enable_shared_from_this.hpp>
16 
17 struct VncApiConfig {
18  std::string api_srv_ip;
21  std::string api_keyfile;
22  std::string api_certfile;
23  std::string api_cafile;
24  std::string ks_srv_ip;
26  std::string ks_protocol;
27  std::string ks_user;
28  std::string ks_password;
29  std::string ks_tenant;
30  std::string ks_keyfile;
31  std::string ks_certfile;
32  std::string ks_cafile;
33 };
34 
35 class RespBlock {
36  public:
37  RespBlock(HttpConnection *c, std::string uri,
38  boost::function<void(contrail_rapidjson::Document&,
39  boost::system::error_code&, std::string, int, std::string,
40  std::map<std::string, std::string>*)> cb);
42  void AddBody(std::string s);
43  void Clear(HttpConnection *c=0);
44  std::string GetBody();
45  std::string GetUri();
46  void ShowDetails();
47  boost::function<void(contrail_rapidjson::Document&,
48  boost::system::error_code&, std::string, int, std::string,
49  std::map<std::string, std::string>*)> GetCallBack();
50  private:
52  std::string uri_;
53  boost::function<void(contrail_rapidjson::Document&,
54  boost::system::error_code&, std::string, int, std::string,
55  std::map<std::string, std::string>*)> cb_;
56  std::string body_;
57 };
58 
59 
60 class VncApi : public boost::enable_shared_from_this<VncApi> {
61  private:
65  std::vector<std::string> hdr_;
66  std::vector<std::string> kshdr_;
67 
68  void hex_dump(std::string s);
69  void Reauthenticate(RespBlock *orb);
70  void Add2URI(std::ostringstream &uri, std::string &qadded, std::string key,
71  std::vector<std::string> data);
72  std::string MakeUri(std::string type, std::vector<std::string> ids,
73  std::vector<std::string> filters, std::vector<std::string> parents,
74  std::vector<std::string> refs, std::vector<std::string> fields);
75  void KsRespHandler(RespBlock *rb, RespBlock *orb, std::string &str,
76  boost::system::error_code &ec);
77  bool CondTest(std::string s);
78  public:
80  virtual ~VncApi() { Stop(); }
81  void Stop();
82  void GetConfig(std::string type, std::vector<std::string> ids,
83  std::vector<std::string> filters, std::vector<std::string> parents,
84  std::vector<std::string> refs, std::vector<std::string> fields,
85  boost::function<void(contrail_rapidjson::Document&,
86  boost::system::error_code &ec, std::string version, int status,
87  std::string reason,
88  std::map<std::string, std::string> *headers)> cb);
89  void RespHandler(RespBlock *rb, std::string &str,
90  boost::system::error_code &ec);
91  std::string GetToken(RespBlock *rb) const;
92 };
93 #endif
std::string GetUri()
Definition: vncapi.cc:61
std::string GetToken(RespBlock *rb) const
Definition: vncapi.cc:146
std::vector< std::string > hdr_
Definition: vncapi.h:65
std::string ks_cafile
Definition: vncapi.h:32
void Clear(HttpConnection *c=0)
Definition: vncapi.cc:47
std::string ks_user
Definition: vncapi.h:27
std::string api_cafile
Definition: vncapi.h:23
EventManager * evm_
Definition: vncapi.h:62
void hex_dump(std::string s)
Definition: vncapi.cc:83
void RespHandler(RespBlock *rb, std::string &str, boost::system::error_code &ec)
Definition: vncapi.cc:306
void GetConfig(std::string type, std::vector< std::string > ids, std::vector< std::string > filters, std::vector< std::string > parents, std::vector< std::string > refs, std::vector< std::string > fields, boost::function< void(contrail_rapidjson::Document &, boost::system::error_code &ec, std::string version, int status, std::string reason, std::map< std::string, std::string > *headers)> cb)
Definition: vncapi.cc:279
std::string uri_
Definition: vncapi.h:52
void AddBody(std::string s)
Definition: vncapi.cc:41
bool api_use_ssl
Definition: vncapi.h:20
std::string MakeUri(std::string type, std::vector< std::string > ids, std::vector< std::string > filters, std::vector< std::string > parents, std::vector< std::string > refs, std::vector< std::string > fields)
Definition: vncapi.cc:223
std::string api_keyfile
Definition: vncapi.h:21
std::string body_
Definition: vncapi.h:56
void ShowDetails()
Definition: vncapi.cc:67
std::string ks_password
Definition: vncapi.h:28
std::vector< std::string > kshdr_
Definition: vncapi.h:66
uint8_t type
Definition: load_balance.h:109
boost::function< void(contrail_rapidjson::Document &, boost::system::error_code &, std::string, int, std::string, std::map< std::string, std::string > *)> cb_
Definition: vncapi.h:55
std::string api_certfile
Definition: vncapi.h:22
std::string ks_protocol
Definition: vncapi.h:26
void Add2URI(std::ostringstream &uri, std::string &qadded, std::string key, std::vector< std::string > data)
Definition: vncapi.cc:207
virtual ~VncApi()
Definition: vncapi.h:80
HttpConnection * GetConnection()
Definition: vncapi.cc:35
RespBlock(HttpConnection *c, std::string uri, boost::function< void(contrail_rapidjson::Document &, boost::system::error_code &, std::string, int, std::string, std::map< std::string, std::string > *)> cb)
Definition: vncapi.cc:26
std::string GetBody()
Definition: vncapi.cc:55
boost::function< void(contrail_rapidjson::Document &, boost::system::error_code &, std::string, int, std::string, std::map< std::string, std::string > *)> GetCallBack()
Definition: vncapi.cc:75
Definition: vncapi.h:60
int ks_srv_port
Definition: vncapi.h:25
HttpConnection * conn_
Definition: vncapi.h:51
int api_srv_port
Definition: vncapi.h:19
std::string ks_tenant
Definition: vncapi.h:29
std::string ks_srv_ip
Definition: vncapi.h:24
VncApi(EventManager *evm, VncApiConfig *cfg)
Definition: vncapi.cc:239
std::string api_srv_ip
Definition: vncapi.h:18
HttpClient * client_
Definition: vncapi.h:64
void KsRespHandler(RespBlock *rb, RespBlock *orb, std::string &str, boost::system::error_code &ec)
Definition: vncapi.cc:169
void Reauthenticate(RespBlock *orb)
Definition: vncapi.cc:116
void Stop()
Definition: vncapi.cc:267
bool CondTest(std::string s)
Definition: vncapi.cc:140
VncApiConfig * cfg_
Definition: vncapi.h:63
std::string ks_keyfile
Definition: vncapi.h:30
static EventManager evm
std::string ks_certfile
Definition: vncapi.h:31