diff options
author | 2019-06-17 14:55:16 +0200 | |
---|---|---|
committer | 2019-06-17 15:27:32 +0200 | |
commit | b7b52e85c1b05a456119c11b9cf8e79d660194cc (patch) | |
tree | 3c218784e367bfdb43363fd2b04a4254d48c13a9 /src/gnmi/sysrepoapi.h | |
parent | ec995e056d985f9ef54f92adbcbe626967912592 (diff) |
[gnmi] Remove gNMI from sweetcomb
Reasons for removing it:
-This gNMI server has been upgraded to a more stable form.
-It should live in a separate project because gNMI server is only
dependant of sysrepo not of VPP or sweetcomb.
-There were strange dependencies to this implementation like an XML parser
library.
-Capabilities RPC was answering wrong version number (1001 instead of
0.7.0) and encodings (ASCII vs JSON).
-Error codes were not return to client in case of problem of configuration.
Typically for element not found.
-This server uses sysrepo C API though bindings for C++ can be obtained.
-Documentation was missing.
-Set RPC could not identify a key in a YANG list because a YANG library
must be used for this not just a JSON parser.
-It would be difficult to adapt this server to support more encodings
than JSON. The new gNMI server offers an easier way to add encodings.
-Log control level has been implemented in the new gNMI server.
-Subscribe RPC has been added to the new server.
Link to the new gNMI server:
https://github.com/YohanPipereau/sysrepo_gnxi
Change-Id: If57ab23c776430552d9d70fea6681db1b56af525
Signed-off-by: YohanPipereau <ypiperea@cisco.com>
Diffstat (limited to 'src/gnmi/sysrepoapi.h')
-rw-r--r-- | src/gnmi/sysrepoapi.h | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/src/gnmi/sysrepoapi.h b/src/gnmi/sysrepoapi.h deleted file mode 100644 index 8ebcf95..0000000 --- a/src/gnmi/sysrepoapi.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef SYSREPOAPI_H -#define SYSREPOAPI_H - -#include "gnmidata.h" -#include "eventreciverbase.h" - -#include <sysrepo.h> -#include <sysrepo/values.h> -#include <string> -#include <list> - -#include <iostream> - -struct SysrepoValue -{ - void setXPath(const std::string &str) { - std::string tmp = str; - std::size_t pos = 0; - - while (std::string::npos != (pos = tmp.find(":", pos))) { - tmp.replace(pos, std::string(":").length(), "/"); - } - - xpath = tmp; - } - - std::string xpath; - std::string value; -}; - -struct SysrepSchema -{ - std::string moduleName; - std::string revision; -}; - -/** - * @todo write docs - */ -class SysrepoAPI : public virtual BaseSender<SysrepoAPI> -{ -public: - /** - * Default constructor - */ - SysrepoAPI(); - - /** - * Destructor - */ - ~SysrepoAPI(); - - void setSysrepoName(const std::string &sysrepo_name); - - void connect(); - void createSession(sr_datastore_e sesType = SR_DS_RUNNING); - void closeSession(); - void commit(); - - void addData(const gNMIData &data); - void getItemMessage(); - void setItemMessage(); - void rpcSend(const std::string &xpath, sr_val_t &input); - void eventSubscribeMessage(); - const std::list<SysrepSchema> &getSchemas(); -// void print_value(); - - std::list<gNMIData> getOutputData() const; - void cleanData(); - -private: - friend void event_notif_cb(const sr_ev_notif_type_t notif_type, - const char *xpath, const sr_val_t *values, - const size_t value_cnt, time_t timestamp, - void *private_ct); - enum sr_type_e convergNMITypeToSysrepo(gNMIData::ValueType type); - gNMIData::ValueType convergSysrepoTypeTogNMI(sr_type_e type); - void setSrVal(sr_val_t &value, const gNMIData &gData); - void setOutVal(const sr_val_t &value); - -private: - std::string sysrepo_name = "app"; - sr_conn_ctx_t *conn = nullptr; - sr_session_ctx_t *sess = nullptr; - sr_subscription_ctx_t *subscription = nullptr; - - std::list<gNMIData> inputData; - std::list<gNMIData> outpuData; - std::list<SysrepSchema> schemaList; - -}; - -#endif // SYSREPOAPI_H |