@@ -265,6 +265,25 @@ void Recorder::recordFlushFdbEntriesResponse(
265
265
recordLine (" F|" + sai_serialize_status (status));
266
266
}
267
267
268
+ void Recorder::recordQueryAttributeCapability (
269
+ _In_ const std::string& key,
270
+ _In_ const std::vector<swss::FieldValueTuple>& arguments)
271
+ {
272
+ SWSS_LOG_ENTER ();
273
+
274
+ recordLine (" q|attribute_capability|" + key + " |" + joinFieldValues (arguments));
275
+ }
276
+
277
+ void Recorder::recordQueryAttributeCapabilityResponse (
278
+ _In_ sai_status_t status,
279
+ _In_ const std::vector<swss::FieldValueTuple>& arguments)
280
+ {
281
+ SWSS_LOG_ENTER ();
282
+
283
+ recordLine (" Q|attribute_capability|" + sai_serialize_status (status) + " |" + joinFieldValues (arguments));
284
+ }
285
+
286
+
268
287
void Recorder::recordQueryAttributeEnumValuesCapability (
269
288
_In_ const std::string& key,
270
289
_In_ const std::vector<swss::FieldValueTuple>& arguments)
@@ -886,6 +905,76 @@ void Recorder::recordObjectTypeGetAvailabilityResponse(
886
905
recordObjectTypeGetAvailabilityResponse (status, values);
887
906
}
888
907
908
+ void Recorder::recordQueryAttributeCapability (
909
+ _In_ sai_object_id_t switchId,
910
+ _In_ sai_object_type_t objectType,
911
+ _In_ sai_attr_id_t attrId,
912
+ _Out_ sai_attr_capability_t *Capability)
913
+ {
914
+ SWSS_LOG_ENTER ();
915
+
916
+ auto meta = sai_metadata_get_attr_metadata (objectType, attrId);
917
+
918
+ if (meta == NULL )
919
+ {
920
+ SWSS_LOG_ERROR (" Failed to find attribute metadata: object type %s, attr id %d" ,
921
+ sai_serialize_object_type (objectType).c_str (), attrId);
922
+ return ;
923
+ }
924
+
925
+ auto key = sai_serialize_object_type (SAI_OBJECT_TYPE_SWITCH) + " :" + sai_serialize_object_id (switchId);
926
+
927
+ auto object_type_str = sai_serialize_object_type (objectType);
928
+ const std::string attr_id_str = meta->attridname ;
929
+ const std::vector<swss::FieldValueTuple> values =
930
+ {
931
+ swss::FieldValueTuple (" OBJECT_TYPE" , object_type_str),
932
+ swss::FieldValueTuple (" ATTR_ID" , attr_id_str)
933
+ };
934
+
935
+ SWSS_LOG_DEBUG (" Query arguments: switch %s, object_type: %s, attribute: %s" ,
936
+ key.c_str (),
937
+ object_type_str.c_str (),
938
+ meta->attridname );
939
+
940
+ recordQueryAttributeCapability (key, values);
941
+ }
942
+
943
+
944
+ void Recorder::recordQueryAttributeCapabilityResponse (
945
+ _In_ sai_status_t status,
946
+ _In_ sai_object_type_t objectType,
947
+ _In_ sai_attr_id_t attrId,
948
+ _In_ const sai_attr_capability_t * capability)
949
+ {
950
+ SWSS_LOG_ENTER ();
951
+
952
+ auto meta = sai_metadata_get_attr_metadata (objectType, attrId);
953
+
954
+ if (meta == NULL )
955
+ {
956
+ SWSS_LOG_ERROR (" Failed to find attribute metadata: object type %s, attr id %d" ,
957
+ sai_serialize_object_type (objectType).c_str (), attrId);
958
+ return ;
959
+ }
960
+
961
+ auto object_type_str = sai_serialize_object_type (objectType);
962
+ const std::string attr_id_str = meta->attridname ;
963
+ const std::string create_str = (status == SAI_STATUS_SUCCESS ? (capability->create_implemented ? " true" :" false" ): " false" );
964
+ const std::string set_str = (status == SAI_STATUS_SUCCESS ? (capability->set_implemented ? " true" :" false" ): " false" );
965
+ const std::string get_str = (status == SAI_STATUS_SUCCESS ? (capability->get_implemented ? " true" :" false" ): " false" );
966
+ const std::vector<swss::FieldValueTuple> values =
967
+ {
968
+ swss::FieldValueTuple (" OBJECT_TYPE" , object_type_str),
969
+ swss::FieldValueTuple (" ATTR_ID" , attr_id_str),
970
+ swss::FieldValueTuple (" CREATE_IMP" , create_str),
971
+ swss::FieldValueTuple (" SET_IMP" , set_str),
972
+ swss::FieldValueTuple (" GET_IMP" , get_str)
973
+ };
974
+
975
+ recordQueryAttributeCapabilityResponse (status, values);
976
+ }
977
+
889
978
void Recorder::recordQueryAattributeEnumValuesCapability (
890
979
_In_ sai_object_id_t switchId,
891
980
_In_ sai_object_type_t objectType,
0 commit comments