6 #include <vnc_cfg_types.h>
7 #include <agent_types.h>
19 using namespace autogen;
36 std::ostringstream buffer;
42 AgentQosConfigSandeshResp *resp =
43 static_cast<AgentQosConfigSandeshResp *
>(sresp);
44 AgentQosConfigSandeshData data;
50 data.set_type(
"vhost");
52 data.set_type(
"fabric");
54 data.set_type(
"default");
57 std::vector<QosForwardingClassSandeshPair> dscp_list;
58 AgentQosConfig::QosIdForwardingClassMap::const_iterator it =
61 QosForwardingClassSandeshPair pair;
62 pair.set_qos_value(it->first);
63 pair.set_forwarding_class_id(it->second);
64 dscp_list.push_back(pair);
67 std::vector<QosForwardingClassSandeshPair> vlan_priority_list;
70 QosForwardingClassSandeshPair pair;
71 pair.set_qos_value(it->first);
72 pair.set_forwarding_class_id(it->second);
73 vlan_priority_list.push_back(pair);
76 std::vector<QosForwardingClassSandeshPair> mpls_exp_list;
79 QosForwardingClassSandeshPair pair;
80 pair.set_qos_value(it->first);
81 pair.set_forwarding_class_id(it->second);
82 mpls_exp_list.push_back(pair);
85 data.set_dscp_list(dscp_list);
86 data.set_vlan_priority_list(vlan_priority_list);
87 data.set_mpls_exp_list(mpls_exp_list);
90 std::vector<AgentQosConfigSandeshData> &list =
91 const_cast<std::vector<AgentQosConfigSandeshData>&
>(resp->get_qc_list());
108 AgentQosIdForwardingClassMap::const_iterator it = data_map.begin();
109 for (; it != data_map.end(); it++) {
113 if (map != new_map) {
139 if (deleted ==
false) {
164 req.
data.reset(qos_data);
171 if (deleted ==
false) {
196 req.
data.reset(qos_data);
273 DB *db,
const std::string &name):
284 (
static_cast<DBTable *
>(qos_table))->Init();
288 std::unique_ptr<DBEntry>
293 return std::unique_ptr<DBEntry>(
static_cast<DBEntry *
>(fc));
303 Allocate(rkey).get())->index();
308 return static_cast<DBEntry *
>(qc);
350 autogen::QosConfig *cfg = static_cast <autogen::QosConfig *> (node->
GetObject());
352 autogen::IdPermsType id_perms = cfg->id_perms();
353 CfgUuidSet(id_perms.uuid.uuid_mslong, id_perms.uuid.uuid_lslong, u);
373 autogen::QosConfig *cfg = static_cast <autogen::QosConfig *> (node->
GetObject());
375 std::vector<QosIdForwardingClassPair>::const_iterator it =
376 cfg->dscp_entries().begin();
377 for(; it != cfg->dscp_entries().end(); it++) {
378 qcd->
dscp_map_[it->key] = it->forwarding_class_id;
381 for(it = cfg->vlan_priority_entries().begin();
382 it != cfg->vlan_priority_entries().end(); it++) {
386 for(it = cfg->mpls_exp_entries().begin();
387 it != cfg->mpls_exp_entries().end(); it++) {
392 if (cfg->type() ==
"vhost") {
394 }
else if (cfg->type() ==
"fabric") {
407 const std::string &context) {
413 void AgentQosConfigSandeshReq::HandleRequest()
const {
415 get_name(), get_id()));
416 sand->DoSandesh(sand);
419 void AddQosConfig::HandleRequest()
const {
420 QosResponse *resp =
new QosResponse();
421 resp->set_context(context());
424 sprintf(str,
"00000000-0000-0000-0000-00%010x", get_uuid());
430 get_dscp_forwarding_class_id()));
432 get_vlan_priority_forwarding_class_id()));
434 get_mpls_exp_forwarding_class_id()));
435 data->
name_ = get_name();
437 if (get_type() ==
"vhost") {
439 }
else if (get_type() ==
"fabric") {
450 req.
data.reset(data);
452 resp->set_resp(
"Success");
456 void DeleteQosConfig::HandleRequest()
const {
457 QosResponse *resp =
new QosResponse();
458 resp->set_context(context());
461 sprintf(str,
"00000000-0000-0000-0000-00%010x", get_uuid());
468 req.
data.reset(NULL);
470 resp->set_resp(
"Success");
void EraseVhostQosConfig(const boost::uuids::uuid &uuid)
AgentQosIdForwardingClassMap dscp_map_
AgentQosConfigNameMap name_map_
virtual bool IsLess(const DBEntry &rhs) const
static Agent * GetInstance()
static boost::uuids::uuid StringToUuid(const std::string &str)
static void CfgUuidSet(uint64_t ms_long, uint64_t ls_long, boost::uuids::uuid &u)
std::string GetString(const std::string &key) const
DBTableBase * get_table() const
IFMapAgentTable * cfg_global_qos_table() const
ConfigManager * config_manager() const
AgentQosConfig(const boost::uuids::uuid uuid)
std::unique_ptr< DBRequestData > data
boost::shared_ptr< ResourceKey > KeyPtr
void HandleGlobalQosConfig(const AgentQosConfigData *data)
const std::string & vhost_interface_name() const
static const uint32_t kInvalidIndex
InterfaceTable * interface_table() const
bool Enqueue(DBRequest *req)
virtual bool IFNodeToUuid(IFMapNode *node, boost::uuids::uuid &u)
KeyPtr GetDBRequestKey() const
virtual void SetKey(const DBRequestKey *key)
uint32_t default_forwarding_class_
virtual bool IFNodeToReq(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
adjacency_iterator end(DBGraph *graph)
std::string ToString() const
static std::string UuidToString(const boost::uuids::uuid &id)
virtual bool Change(const DBRequest *req)
AgentQosIdForwardingClassMap vlan_priority_map_
AgentQosConfigData * BuildData(IFMapNode *node)
std::pair< uint32_t, uint32_t > AgentQosIdForwardingClassPair
virtual ~AgentQosConfig()
std::unique_ptr< DBRequestKey > KeyPtr
virtual bool ProcessConfig(IFMapNode *node, DBRequest &req, const boost::uuids::uuid &u)
bool VerifyLinkToGlobalQosConfig(const Agent *agent, const AgentQosConfigData *data)
std::pair< uint32_t, uint32_t > QosIdForwardingClassPair
const DBGraph * GetGraph() const
void Remove(size_t index)
uint32_t default_forwarding_class_
virtual bool DBEntrySandesh(Sandesh *resp, std::string &name) const
void ReleaseIndex(AgentQosConfig *qc)
void InsertVhostQosConfig(const boost::uuids::uuid &uuid)
QosIdForwardingClassMap dscp_map_
AgentQosIdForwardingClassMap mpls_exp_map_
IndexVector< AgentQosConfig * > index_table_
const std::string & fabric_interface_name() const
std::unique_ptr< DBRequestKey > key
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
virtual bool OperDBResync(DBEntry *entry, const DBRequest *req)
const std::string & name() const
void HandleVhostQosConfig(const Agent *agent, const AgentQosConfigData *data, bool deleted)
void EraseFabricQosConfig(const boost::uuids::uuid &uuid)
const boost::uuids::uuid GetActiveFabricQosConfig()
IFMapNode * ifmap_node() const
QosIdForwardingClassMap mpls_exp_map_
virtual DBEntry * OperDBAdd(const DBRequest *req)
IFMapObject * GetObject()
AgentQosConfigTable(Agent *agent, DB *db, const std::string &name)
const Agent * agent() const
void AddQosConfigNode(IFMapNode *node)
void HandleFabricQosConfig(const Agent *agent, const AgentQosConfigData *data, bool deleted)
AgentQosConfigTable * qos_config_table() const
virtual void Delete(const DBRequest *req)
boost::uuids::uuid uuid() const
virtual bool OperDBDelete(DBEntry *entry, const DBRequest *req)
const boost::uuids::uuid GetActiveVhostQosConfig()
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
virtual bool OperDBOnChange(DBEntry *entry, const DBRequest *req)
std::map< uint32_t, uint32_t > AgentQosIdForwardingClassMap
AgentConfig * cfg() const
static DBTableBase * CreateTable(Agent *agent, DB *db, const std::string &name)
void InsertFabricQosConfig(const boost::uuids::uuid &uuid)
virtual ~AgentQosConfigTable()
adjacency_iterator begin(DBGraph *graph)
virtual std::unique_ptr< DBEntry > AllocEntry(const DBRequestKey *k) const
bool HandleQosForwardingMapChange(const Agent *agent, QosIdForwardingClassMap &map, const AgentQosIdForwardingClassMap &data_map)
QosIdForwardingClassMap vlan_priority_map_
AgentQosConfig::Type type_
ResourceManager * resource_manager() const
void set_agent(Agent *agent)
size_t InsertAtIndex(uint32_t index, EntryType entry)
std::pair< std::string, AgentQosConfig * > AgentQosConfigNamePair
std::map< uint32_t, uint32_t > QosIdForwardingClassMap