diff --git a/src/ifmap/client/config_cass2json_adapter.cc b/src/ifmap/client/config_cass2json_adapter.cc index 2d3fcfe6a99..938d68fd17f 100644 --- a/src/ifmap/client/config_cass2json_adapter.cc +++ b/src/ifmap/client/config_cass2json_adapter.cc @@ -44,8 +44,7 @@ bool ConfigCass2JsonAdapter::assert_on_parse_error_; do { \ if (condition) \ break; \ - IFMAP_WARN(ConfigurationMalformed ## t, c.key, c.value, type_, uuid_, \ - obj_type); \ + IFMAP_WARN(ConfigurationMalformed ## t, c.key, c.value, type_, uuid_); \ if (assert_on_parse_error_) \ assert(false); \ return; \ @@ -219,7 +218,7 @@ void ConfigCass2JsonAdapter::CreateJsonString(const string &obj_type, } } - if (type_ == "") { + if (type_.empty()) { IFMAP_WARN(ConfigurationMissingType, uuid_, obj_type); return; } diff --git a/src/ifmap/client/config_cass2json_adapter.h b/src/ifmap/client/config_cass2json_adapter.h index 2a48822b6b9..d2d38d239cb 100644 --- a/src/ifmap/client/config_cass2json_adapter.h +++ b/src/ifmap/client/config_cass2json_adapter.h @@ -34,18 +34,25 @@ class ConfigCass2JsonAdapter { ConfigCassandraClient *cassandra_client, const std::string &obj_type, const CassColumnKVVec &cdvec); - const contrail_rapidjson::Document &document() { return json_document_; } + const contrail_rapidjson::Document &document() const { + return json_document_; + } + static bool assert_on_parse_error() { return assert_on_parse_error_; } static void set_assert_on_parse_error(bool flag) { assert_on_parse_error_ = flag; } + const std::string &uuid() const { return uuid_; } + const std::string &type() const { return type_; } private: void CreateJsonString(const std::string &obj_type, const CassColumnKVVec &cdvec); - void AddOneEntry(contrail_rapidjson::Value *jsonObject, const std::string &obj_type, + void AddOneEntry(contrail_rapidjson::Value *jsonObject, + const std::string &obj_type, const JsonAdapterDataType &c, contrail_rapidjson::Document::AllocatorType &a); - static std::string GetJsonString(const contrail_rapidjson::Value &attr_value); + static std::string GetJsonString( + const contrail_rapidjson::Value &attr_value); ConfigCassandraClient *cassandra_client_; std::string uuid_; diff --git a/src/ifmap/client/config_cassandra_client.cc b/src/ifmap/client/config_cassandra_client.cc index 8271005532a..713a78e8bdc 100644 --- a/src/ifmap/client/config_cassandra_client.cc +++ b/src/ifmap/client/config_cassandra_client.cc @@ -331,10 +331,10 @@ bool ConfigCassandraClient::ParseRowAndEnqueueToParser(const string &obj_type, ConfigCass2JsonAdapter ccja(uuid_key, this, obj_type, cass_data_vec); // Enqueue Json document to the parser here. - parser_->Receive(uuid_key, ccja.document(), IFMapOrigin::CASSANDRA); + parser_->Receive(ccja, IFMapOrigin::CASSANDRA); } else { IFMAP_WARN(IFMapGetRowError, "Parsing row response failed for table", - kUuidTableName); + kUuidTableName, uuid_key); return false; } @@ -401,7 +401,8 @@ bool ConfigCassandraClient::ReadUuidTableRow(const string &obj_type, } } else { HandleCassandraConnectionStatus(false); - IFMAP_WARN(IFMapGetRowError, "GetRow failed for table", kUuidTableName); + IFMAP_WARN(IFMapGetRowError, "GetRow failed for table", kUuidTableName, + uuid_key); // // Task is rescheduled to read the request queue // Due to a bug CQL driver from datastax, connection status is @@ -459,7 +460,7 @@ bool ConfigCassandraClient::ReadAllFqnTableRows() { } else { HandleCassandraConnectionStatus(false); IFMAP_WARN(IFMapGetRowError, "GetAllRows failed for table. Retry !", - kFqnTableName); + kFqnTableName, ""); sleep(kInitRetryTimeSec); } } diff --git a/src/ifmap/client/config_client_manager.cc b/src/ifmap/client/config_client_manager.cc index 19ae721717e..d27f2d02e16 100644 --- a/src/ifmap/client/config_client_manager.cc +++ b/src/ifmap/client/config_client_manager.cc @@ -139,7 +139,7 @@ IFMapTable::RequestKey *ConfigClientManager::CloneKey( } string ConfigClientManager::GetLinkName(const string &left, - const string &right) const { + const string &right) const { LinkNameMap::const_iterator it = link_name_map_.find(make_pair(left, right)); if (it == link_name_map_.end()) @@ -148,7 +148,7 @@ string ConfigClientManager::GetLinkName(const string &left, } bool ConfigClientManager::IsLinkWithAttr(const string &left, - const string &right) const { + const string &right) const { LinkNameMap::const_iterator it = link_name_map_.find(make_pair(left, right)); if (it == link_name_map_.end()) diff --git a/src/ifmap/client/config_json_parser.cc b/src/ifmap/client/config_json_parser.cc index 0ae67487962..faf17864baa 100644 --- a/src/ifmap/client/config_json_parser.cc +++ b/src/ifmap/client/config_json_parser.cc @@ -7,12 +7,27 @@ #include "config_cassandra_client.h" +#include "ifmap_log.h" +#include "base/autogen_util.h" +#include "client/config_log_types.h" +#include "ifmap/client/config_cass2json_adapter.h" #include "ifmap/ifmap_log.h" #include "ifmap/ifmap_log_types.h" using namespace contrail_rapidjson; using namespace std; +#define CONFIG_PARSE_ASSERT(t, condition, key, value) \ + do { \ + if (condition) \ + break; \ + IFMAP_WARN(ConfigurationMalformed ## t, key, value, adapter.type(), \ + adapter.uuid()); \ + if (ConfigCass2JsonAdapter::assert_on_parse_error()) \ + assert(false); \ + return false; \ + } while (false) + ConfigJsonParser::ConfigJsonParser(ConfigClientManager *mgr) : mgr_(mgr) { } @@ -28,19 +43,25 @@ void ConfigJsonParser::MetadataClear(const string &module) { metadata_map_.clear(); } -bool ConfigJsonParser::ParseNameType(const Document &document, +bool ConfigJsonParser::ParseNameType(const ConfigCass2JsonAdapter &adapter, IFMapTable::RequestKey *key) const { // Type is the name of the document. - Value::ConstMemberIterator itr = document.MemberBegin(); - assert(itr->name.IsString()); + Value::ConstMemberIterator itr = adapter.document().MemberBegin(); + CONFIG_PARSE_ASSERT(Type, autogen::ParseString(itr->name, &key->id_type), + "Name", "Bad name"); + key->id_type = itr->name.GetString(); // Name is the fq_name field in the document. const Value &value_node = itr->value; - assert(value_node.HasMember("fq_name")); + CONFIG_PARSE_ASSERT(FqName, value_node.HasMember("fq_name"), key->id_type, + "Missing FQ name"); const Value &fq_name_node = value_node["fq_name"]; - assert(fq_name_node.IsArray()); - assert(fq_name_node.Size() != 0); + CONFIG_PARSE_ASSERT(FqName, fq_name_node.IsArray(), key->id_type, + "FQ name is not an array"); + CONFIG_PARSE_ASSERT(FqName, fq_name_node.Size(), + key->id_type, "FQ name array is empty"); + size_t i = 0; // Iterate over all items except the last one. @@ -53,9 +74,9 @@ bool ConfigJsonParser::ParseNameType(const Document &document, return true; } -bool ConfigJsonParser::ParseOneProperty(const Value &key_node, - const Value &value_node, const IFMapTable::RequestKey &key, - IFMapOrigin::Origin origin, +bool ConfigJsonParser::ParseOneProperty(const ConfigCass2JsonAdapter &adapter, + const Value &key_node, const Value &value_node, + const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const { string metaname = key_node.GetString(); MetadataParseMap::const_iterator loc = metadata_map_.find(metaname); @@ -64,78 +85,80 @@ bool ConfigJsonParser::ParseOneProperty(const Value &key_node, } auto_ptr pvalue; bool success = (loc->second)(value_node, &pvalue); - if (!success) { - cout << "Parsing value node for " << metaname << " failed" << endl; - return false; - } - + CONFIG_PARSE_ASSERT(Property, success, metaname, + "No entry in metadata map"); std::replace(metaname.begin(), metaname.end(), '_', '-'); config_mgr()->InsertRequestIntoQ(origin, "", "", metaname, pvalue, key, true, req_list); - return true; } -bool ConfigJsonParser::ParseProperties(const Document &document, +bool ConfigJsonParser::ParseProperties(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const { - Value::ConstMemberIterator doc_itr = document.MemberBegin(); + Value::ConstMemberIterator doc_itr = adapter.document().MemberBegin(); const Value &value_node = doc_itr->value; for (Value::ConstMemberIterator itr = value_node.MemberBegin(); itr != value_node.MemberEnd(); ++itr) { - ParseOneProperty(itr->name, itr->value, key, origin, + ParseOneProperty(adapter, itr->name, itr->value, key, origin, req_list); } return true; } -bool ConfigJsonParser::ParseRef(const Value &ref_entry, - IFMapOrigin::Origin origin, const string &to_underscore, - const IFMapTable::RequestKey &key, +bool ConfigJsonParser::ParseRef(const ConfigCass2JsonAdapter &adapter, + const Value &ref_entry, IFMapOrigin::Origin origin, + const string &refer, const IFMapTable::RequestKey &key, ConfigClientManager::RequestList *req_list) const { const Value& to_node = ref_entry["to"]; string from_underscore = key.id_type; std::replace(from_underscore.begin(), from_underscore.end(), '-', '_'); string link_name = - config_mgr()->GetLinkName(from_underscore, to_underscore); - if (link_name.empty()) - return false; + config_mgr()->GetLinkName(from_underscore, refer); + CONFIG_PARSE_ASSERT(Reference, !link_name.empty(), refer, + "Link name is empty"); string metaname = link_name; std::replace(metaname.begin(), metaname.end(), '-', '_'); MetadataParseMap::const_iterator loc = metadata_map_.find(metaname); - if (loc == metadata_map_.end()) { - cout << metaname << " not found in metadata map" << endl; - return false; - } + CONFIG_PARSE_ASSERT(Reference, loc != metadata_map_.end(), metaname, + "No entry in metadata map"); auto_ptr pvalue; if (ref_entry.HasMember("attr")) { const Value& attr_node = ref_entry["attr"]; bool success = (loc->second)(attr_node, &pvalue); - if (!success) { - cout << "Parsing link attribute for " << metaname << " failed" - << endl; - return false; - } + CONFIG_PARSE_ASSERT(ReferenceLinkAttributes, success, metaname, + "Link attribute parse error"); } string neigh_name; neigh_name += to_node.GetString(); - config_mgr()->InsertRequestIntoQ(origin, to_underscore, neigh_name, + config_mgr()->InsertRequestIntoQ(origin, refer, neigh_name, link_name, pvalue, key, true, req_list); return true; } -bool ConfigJsonParser::ParseLinks(const Document &document, +bool ConfigJsonParser::ParseOneRef(const ConfigCass2JsonAdapter &adapter, + const Value &arr, const IFMapTable::RequestKey &key, + IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list, + const string &key_str, size_t pos) const { + string refer = key_str.substr(0, pos); + CONFIG_PARSE_ASSERT(Reference, arr.IsArray(), refer, "Invalid referene"); + for (size_t i = 0; i < arr.Size(); ++i) + ParseRef(adapter, arr[i], origin, refer, key, req_list); + return true; +} + +bool ConfigJsonParser::ParseLinks(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const { - Value::ConstMemberIterator doc_itr = document.MemberBegin(); + Value::ConstMemberIterator doc_itr = adapter.document().MemberBegin(); const Value &properties = doc_itr->value; for (Value::ConstMemberIterator itr = properties.MemberBegin(); itr != properties.MemberEnd(); ++itr) { @@ -146,17 +169,14 @@ bool ConfigJsonParser::ParseLinks(const Document &document, } size_t pos = key_str.find("_refs"); if (pos != string::npos) { - string to_underscore = key_str.substr(0, pos); - const Value& arr = itr->value; - assert(arr.IsArray()); - for (size_t i = 0; i < arr.Size(); ++i) { - ParseRef(arr[i], origin, to_underscore, - key, req_list); - } + ParseOneRef(adapter, itr->value, key, origin, req_list, key_str, + pos); + continue; } if (key_str.compare("parent_type") == 0) { const Value& ptype_node = itr->value; - assert(ptype_node.IsString()); + CONFIG_PARSE_ASSERT(Parent, ptype_node.IsString(), key_str, + "Invalid parent type"); pos = key.id_name.find_last_of(":"); if (pos != string::npos) { string parent_type = ptype_node.GetString(); @@ -164,6 +184,8 @@ bool ConfigJsonParser::ParseLinks(const Document &document, string parent_name = key.id_name.substr(0, pos); string metaname = config_mgr()->GetLinkName(parent_type,key.id_type); + CONFIG_PARSE_ASSERT(Parent, !metaname.empty(), parent_type, + "Missing link name"); auto_ptr pvalue; config_mgr()->InsertRequestIntoQ(origin, parent_type, parent_name, metaname, pvalue, key, true, req_list); @@ -176,46 +198,46 @@ bool ConfigJsonParser::ParseLinks(const Document &document, return true; } -bool ConfigJsonParser::ParseDocument(const Document &document, +bool ConfigJsonParser::ParseDocument(const ConfigCass2JsonAdapter &adapter, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list, IFMapTable::RequestKey *key) const { // Update the name and the type into 'key'. - if (!ParseNameType(document, key)) { + if (!ParseNameType(adapter, key)) { return false; } // For each property, we will clone 'key' to create our DBRequest's i.e. // 'key' will never become part of any DBRequest. - if (!ParseProperties(document, *key, origin, req_list)){ + if (!ParseProperties(adapter, *key, origin, req_list)){ return false; } - if (!ParseLinks(document, *key, origin, req_list)) { + if (!ParseLinks(adapter, *key, origin, req_list)) { return false; } return true; } -bool ConfigJsonParser::Receive(const string &uuid, - const contrail_rapidjson::Document &document, +bool ConfigJsonParser::Receive(const ConfigCass2JsonAdapter &adapter, IFMapOrigin::Origin origin) { ConfigClientManager::RequestList req_list; - if (document.HasParseError() || !document.IsObject()) { - size_t pos = document.GetErrorOffset(); + if (adapter.document().HasParseError() || !adapter.document().IsObject()) { + size_t pos = adapter.document().GetErrorOffset(); // GetParseError returns const char * IFMAP_WARN(IFMapJsonLoadError, "Error in parsing JSON message at position", pos, "with error description", - boost::lexical_cast(document.GetParseError())); + boost::lexical_cast( + adapter.document().GetParseError()), adapter.uuid()); return false; } else { auto_ptr key(new IFMapTable::RequestKey()); - if (!ParseDocument(document, origin, &req_list, key.get())) + if (!ParseDocument(adapter, origin, &req_list, key.get())) return false; - config_mgr()->config_db_client()->FormDeleteRequestList(uuid, &req_list, - key.get(), true); + config_mgr()->config_db_client()->FormDeleteRequestList( + adapter.uuid(), &req_list, key.get(), true); config_mgr()->EnqueueListToTables(&req_list); } return true; diff --git a/src/ifmap/client/config_json_parser.h b/src/ifmap/client/config_json_parser.h index 45004c1bc2f..3c1edac9936 100644 --- a/src/ifmap/client/config_json_parser.h +++ b/src/ifmap/client/config_json_parser.h @@ -20,6 +20,7 @@ #include struct AutogenProperty; +class ConfigCass2JsonAdapter; class ConfigJsonParser { public: @@ -32,30 +33,38 @@ class ConfigJsonParser { void MetadataRegister(const std::string &metadata, MetadataParseFn parser); void MetadataClear(const std::string &module); - bool Receive(const std::string &uuid, const contrail_rapidjson::Document &document, + bool Receive(const ConfigCass2JsonAdapter &adapter, IFMapOrigin::Origin origin); ConfigClientManager *config_mgr() const { return mgr_; } ConfigClientManager *config_mgr() { return mgr_; } private: - bool ParseDocument(const contrail_rapidjson::Document &document, + bool ParseDocument(const ConfigCass2JsonAdapter &adapter, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list, IFMapTable::RequestKey *key) const; - bool ParseNameType(const contrail_rapidjson::Document &document, + bool ParseNameType(const ConfigCass2JsonAdapter &adapter, IFMapTable::RequestKey *key) const; - bool ParseProperties(const contrail_rapidjson::Document &document, + bool ParseProperties(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const; - bool ParseOneProperty(const contrail_rapidjson::Value &key_node, + bool ParseOneProperty(const ConfigCass2JsonAdapter &adapter, + const contrail_rapidjson::Value &key_node, const contrail_rapidjson::Value &value_node, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const; - bool ParseLinks(const contrail_rapidjson::Document &document, + bool ParseLinks(const ConfigCass2JsonAdapter &adapter, const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, ConfigClientManager::RequestList *req_list) const; - bool ParseRef(const contrail_rapidjson::Value &ref_entry, - IFMapOrigin::Origin origin, const std::string &to_underscore, - const IFMapTable::RequestKey &key, ConfigClientManager::RequestList *req_list) const; + bool ParseRef(const ConfigCass2JsonAdapter &adapter, + const contrail_rapidjson::Value &ref_entry, + IFMapOrigin::Origin origin, const std::string &refer, + const IFMapTable::RequestKey &key, + ConfigClientManager::RequestList *req_list) const; + bool ParseOneRef(const ConfigCass2JsonAdapter &adapter, + const contrail_rapidjson::Value &arr, + const IFMapTable::RequestKey &key, IFMapOrigin::Origin origin, + ConfigClientManager::RequestList *req_list, const std::string &key_str, + size_t pos) const; ConfigClientManager *mgr_; MetadataParseMap metadata_map_; diff --git a/src/ifmap/client/config_log.sandesh b/src/ifmap/client/config_log.sandesh index 565ebfc7f47..5856fb4d6c5 100644 --- a/src/ifmap/client/config_log.sandesh +++ b/src/ifmap/client/config_log.sandesh @@ -24,8 +24,6 @@ systemlog sandesh ConfigurationMalformedProperty { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -44,8 +42,6 @@ trace sandesh ConfigurationMalformedPropertyTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -64,8 +60,6 @@ systemlog sandesh ConfigurationMalformedPropertyList { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -84,8 +78,6 @@ trace sandesh ConfigurationMalformedPropertyListTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -104,8 +96,6 @@ systemlog sandesh ConfigurationMalformedPropertyMap { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -124,8 +114,6 @@ trace sandesh ConfigurationMalformedPropertyMapTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -144,8 +132,6 @@ systemlog sandesh ConfigurationMalformedReference { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -164,8 +150,6 @@ trace sandesh ConfigurationMalformedReferenceTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -184,8 +168,6 @@ systemlog sandesh ConfigurationMalformedReferenceLinkAttributes { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -204,8 +186,6 @@ trace sandesh ConfigurationMalformedReferenceLinkAttributesTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -224,8 +204,6 @@ systemlog sandesh ConfigurationMalformedParent { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -244,8 +222,6 @@ trace sandesh ConfigurationMalformedParentTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -264,8 +240,6 @@ systemlog sandesh ConfigurationMalformedFqName { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -284,8 +258,6 @@ trace sandesh ConfigurationMalformedFqNameTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -304,8 +276,6 @@ systemlog sandesh ConfigurationMalformedType { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -324,8 +294,6 @@ trace sandesh ConfigurationMalformedTypeTrace { 3: string type /** UUID of the object */ 4: string uuid - /** Object Type */ - 5: string object_type } /** @@ -338,7 +306,7 @@ trace sandesh ConfigurationMalformedTypeTrace { systemlog sandesh ConfigurationMissingType { /** UUID of the object */ 1: string uuid - 2: string object_type + 2: string type } /** @@ -351,5 +319,5 @@ systemlog sandesh ConfigurationMissingType { trace sandesh ConfigurationMissingTypeTrace { /** UUID of the object */ 1: string uuid - 2: string object_type + 2: string type } diff --git a/src/ifmap/ifmap_log.sandesh b/src/ifmap/ifmap_log.sandesh index 7b27d797d96..c7955af23a4 100644 --- a/src/ifmap/ifmap_log.sandesh +++ b/src/ifmap/ifmap_log.sandesh @@ -428,6 +428,8 @@ systemlog sandesh IFMapJsonLoadError { 3: string message2 /** Parse error string */ 4: string parse_error + /** UUID of the erroneous object */ + 5: string uuid } /** @@ -439,6 +441,7 @@ systemlog sandesh IFMapJsonLoadError { systemlog sandesh IFMapGetRowError { 1: string message 2: string table_name + 3: string uuid } /** @@ -778,11 +781,13 @@ trace sandesh IFMapJsonLoadErrorTrace { 2: u32 position 3: string message2 4: string parse_error + 5: string uuid } trace sandesh IFMapGetRowErrorTrace { 1: string message 2: string table_name + 3: string uuid } trace sandesh IFMapUSSplitBlocked { diff --git a/src/ifmap/testdata/cli1_vn2_np2_add.json b/src/ifmap/testdata/cli1_vn2_np2_add.json index cafd3e340e6..10f9f51f52d 100644 --- a/src/ifmap/testdata/cli1_vn2_np2_add.json +++ b/src/ifmap/testdata/cli1_vn2_np2_add.json @@ -248,8 +248,7 @@ "fq_name": "[\"default-domain\",\"demo\",\"vn27-1\",\"vn27-1\"]", "type": "\"access_control_list\"", "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"13935178601269511746\",\"uuid_lslong\":\"11377206404689361865\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}", - "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-12T04:08:44-07:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"6\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27-2\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}", - "ref:route_target:cf6d14c2-3cb3-4646-8993-25c5d8099e72": "{\"attr\":{}}" + "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-12T04:08:44-07:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"6\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27-2\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27-1\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}" }, "ce8ded65-0f6f-43f6-8c0b-fe47cc54897a": { "fq_name": "[\"default-domain\",\"default-project\"]", diff --git a/src/ifmap/testdata/cli2_vn2_np2_add.json b/src/ifmap/testdata/cli2_vn2_np2_add.json index fd8d7ee002e..5b5919369b7 100644 --- a/src/ifmap/testdata/cli2_vn2_np2_add.json +++ b/src/ifmap/testdata/cli2_vn2_np2_add.json @@ -228,8 +228,7 @@ "fq_name": "[\"default-domain\",\"demo\",\"vn28\",\"vn28\"]", "type": "\"access_control_list\"", "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"10563343763093933190\",\"uuid_lslong\":\"13770361196780085728\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}", - "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-12T01:39:53-07:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"1\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"1\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"17\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}", - "ref:route_target:b1b8d34b-8218-402d-8867-2993ae560c18": "{\"attr\":{}}" + "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-12T01:39:53-07:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"1\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"1\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"17\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn27\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}" }, "25ed293b-2518-4b41-bb49-450a906d7297": { "fq_name": "[\"default-domain\",\"default-project\",\"default-network-ipam\"]", diff --git a/src/ifmap/testdata/cli2_vn2_vm2_add.json b/src/ifmap/testdata/cli2_vn2_vm2_add.json index 3a4196b350d..cac7276d1b0 100644 --- a/src/ifmap/testdata/cli2_vn2_vm2_add.json +++ b/src/ifmap/testdata/cli2_vn2_vm2_add.json @@ -112,9 +112,7 @@ "fq_name": "[\"default-domain\",\"demo\",\"vn104\",\"vn104\"]", "type": "\"access_control_list\"", "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"15950641374838737117\",\"uuid_lslong\":\"13281250333323002245\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}", - "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-05T01:11:18-08:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}", - "ref:routing_instance:dab68f1a-d18d-444c-8f1d-acab3325c1ac": "{\"attr\":{}}", - "ref:route_target:de658fbb-847d-47ea-89c3-4d41c9c7cba7": "{\"attr\":{}}" + "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"api-server-1--0000000001-1\",\"ifmap_timestamp\":\"2013-03-05T01:11:18-08:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn28\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:demo:vn104\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}" }, "ed6bd469-f0ae-42ad-8135-5faca54f202e": { "fq_name": "[\"default-domain\",\"admin\",\"default-virtual-network\"]", diff --git a/src/ifmap/testdata/vn_propagation_1.json b/src/ifmap/testdata/vn_propagation_1.json index c625a412574..845ce282fc4 100644 --- a/src/ifmap/testdata/vn_propagation_1.json +++ b/src/ifmap/testdata/vn_propagation_1.json @@ -106,8 +106,7 @@ "9ca367f6-f7d1-452e-8a63-b9178dd43e50": { "fq_name": "[\"default-domain\",\"b47d0eacc9c446eabc9b4eea3d6f6133\",\"default-virtual-network\",\"default-virtual-network\"]", "type": "\"access_control_list\"", - "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"11286979401537897774\",\"uuid_lslong\":\"9972017510743293520\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}", - "ref:route_target:c5a74861-8caf-4cf0-bb3d-904a840c362c": "{\"attr\":{}}" + "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"11286979401537897774\",\"uuid_lslong\":\"9972017510743293520\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}" }, "ba8570be-2ac9-4782-8e87-718b18a0142c": { "fq_name": "[\"default-domain\",\"b47d0eacc9c446eabc9b4eea3d6f6133\",\"vn1\",\"vn1\"]", @@ -133,8 +132,6 @@ "4be42e19-186e-418d-80af-57ea19735039": { "fq_name": "[\"default-domain\",\"b47d0eacc9c446eabc9b4eea3d6f6133\",\"vn2\",\"vn2\"]", "type": "\"access_control_list\"", - "ref:route_target:d22a92c3-1779-42d4-bc33-c9a944fce74d": "{\"attr\":{}}", - "ref:routing_instance:ba8570be-2ac9-4782-8e87-718b18a0142c": "{\"attr\":{}}", "prop:id_perms": "{\"permissions\":{\"owner\":\"cloud-admin\",\"owner_access\":\"7\",\"group\":\"cloud-admin-group\",\"group_access\":\"7\",\"other_access\":\"7\"},\"uuid\":{\"uuid_mslong\":\"5468546532853563789\",\"uuid_lslong\":\"9272726820740091961\"},\"enable\":\"true\",\"created\":null,\"last_modified\":null}", "prop:access_control_list_entries": "{\"xmlns:contrail\":\"http://www.contrailsystems.com/vnc_cfg.xsd\",\"ifmap_cardinality\":\"singleValue\",\"ifmap_publisher_id\":\"test--1870931913-1\",\"ifmap_timestamp\":\"2012-11-11T19:16:33-05:00\",\"acl_rule\":[{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn2\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn1\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn1\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn2\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}},{\"match_condition\":{\"protocol\":\"any\",\"src_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn2\"},\"src_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"},\"dst_address\":{\"virtual_network\":\"default-domain:b47d0eacc9c446eabc9b4eea3d6f6133:vn2\"},\"dst_port\":{\"start_port\":\"-1\",\"end_port\":\"-1\"}},\"action_list\":{\"simple_action\":\"pass\"}}]}" },